Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 19:12   #1
bilochka
Пользователь
 
Регистрация: 10.02.2013
Сообщений: 12
По умолчанию C/C++ Использование функций при работе с двумерными массивами

Помогите пожалуйста, уже очень долгое время не могу понять в чем ошибка, вот условие:
1. Дана прямоугольная вещественная матрица [m x n]. Обнулить все четные столбцы и нечетные строки. В полученной матрице отсортировать по возрастанию каждую строку, оставляя нули на своих местах.
Вот код:

#include<iostream>
#include<time.h>
using namespace std;
/*Выделение памяти для массива*/
void funcinit(double **(&A),const int N,const int M)
{
A=new double*[N];
for (int i=0;i<N;i++) A[i]=new double[M];
}
/*Очистка памяти*/
void funcfree(double **(&A), const int N, const int M)
{
for (int i=0;i<N;i++) delete []A[i];
delete []A;
A=NULL;
}
/*Заполнение массива*/
void funcfill(double **(&A),const int N,const int M)
{
srand(time(NULL));
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
{
A[i][j]=(rand()%100-50);
}
}
}
/*Вывод массива на экран*/
void funcprint(double **A,const int N,const int M)
{
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
{
cout<<A[i][j]<<"\t";
}
cout<<"\n";
}
}
/*Обнулить все четные столбцы и нечетные строки*/
void funcnull(double **(&A),const int N,const int M)
{
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
{
if (!(i%2)) A[i][j]=0;
if (j%2) A[i][j]=0;
}
}
}
/*В полученной матрице отсортировать по возрастанию каждую строку, оставляя нули на своих местах.*/
void funcsort(const int k,double **(&Arr),const int N)
{
for (int i=1;i<N;i++)
{
for (int j=0;j<N-2;j++)
{
if ((Arr[k][j]>Arr[k][j+2])) swap(Arr[k][j],Arr[k][j+2]); //Если текущий элемент больше следующего, меняем их местами
}
}
}
int main()
{
system("chcp 1251"); //Это для отображения русских символов при шрифте Lusidia Console
double **Arr=NULL; //Основной массив
int N=10,M=20; //Колонки и строки
cout<<"N == ";cin>>N; //Ввод числа строк
cout<<"M == ";cin>>M; //Ввод числа колонок
funcinit(Arr,N,M); //Выделение памяти
funcfill(Arr,N,M); //Заполнение массива
cout<<"ИСХОДНЫЙ МАССИВ\n";
funcprint(Arr,N,M);
cout<<"\nВ массив записаны нули\n\n";
funcnull(Arr,N,M); //Запись в массив нулей
funcprint(Arr,N,M); //Вывод массива на экран
cout<<"\nСортированный массив\n";
for (int i=1;i<N;i+=2) funcsort(i,Arr,M); //Цикл сортировки массива по строкам
funcprint(Arr,N,M); //Вывод массива на экран
funcfree(Arr,N,M); //Очистка памяти
cin.get();
cin.get();
return 0;
}
bilochka вне форума Ответить с цитированием
Старый 24.02.2013, 21:27   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Что не работает, на какой строке выдает ошибку???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C/C++ Использование функций при работе с двумерными массивами bilochka Помощь студентам 0 23.02.2013 22:44
Указатели при работе с одномерными и двумерными массивами Credo4444 Помощь студентам 13 20.04.2011 20:04
Использование текстовых файлов для работы с двумерными массивами. bo-al Помощь студентам 3 08.02.2010 20:43
использование процедур и функций для работы с массивами.....Паскаль.... КиношкА Помощь студентам 6 13.01.2008 14:23