Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
#1

Использование функций при работе с двумерными массивами

17.02.2013, 21:43. Просмотров 630. Ответов 5
Метки нет (Все метки)

Дана прямоугольная вещественная матрица [m x n]. Обнулить все четные столбцы и нечетные строки. В полученной матрице отсортировать по возрастанию каждую строку, оставляя нули на своих местах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 21:43
Ответы с готовыми решениями:

Использование указателей при работе с одномерными и двумерными массивами.
Кто может решить. Даны натуральное число n,действительные числа X1,...,Xn.Вычислить: ...

Использование указателей при работе с одномерными и двумерными массивами
Даны натуральное число n, действительные числа a1, ..., an. Преобразовать последова-тельность a1,...

Использование указателей при работе с одномерными и двумерными массивами
Даны натуральное число n, действительные числа A1......An . Если в последовательности A1.....An...

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя.
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между...

Ошибка с памятью при работе с двумерными массивами.
{ int i, j, c, kol; n=StrToInt(Edit1->Text); m=StrToInt(Edit2->Text); for(i=0; i<n; i++) { ...

5
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
18.02.2013, 02:13 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#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;
}
1
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
18.02.2013, 23:07  [ТС] #3
благодарю, все так понятно объяснили, что сразу все понятно
0
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
24.02.2013, 19:02  [ТС] #4
Цитата Сообщение от daslex Посмотреть сообщение
srand(time(NULL));
что означает эта строчка??? и почему пишется что она не определена в функции???
0
afonya_jan
0 / 0 / 1
Регистрация: 25.02.2017
24.02.2013, 19:20 #5
Цитата Сообщение от bilochka Посмотреть сообщение
что означает эта строчка??? и почему пишется что она не определена в функции???
Заполнение случайными числами

Добавлено через 6 минут
Цитата Сообщение от bilochka Посмотреть сообщение
и почему пишется что она не определена в функции???
#include<stdlib.h>
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
24.02.2013, 19:48 #6
afonya_jan,генерация случайного числа в 29 строчке и запись его в массив там же.
bilochka, поставьте маленькое число строк и колонок. Например 3 на 3. Временно уберите ту строчку, о которой спросили. И запустите программу раза 3.

Внимательно посмотрите на получаемые массивы. Исходный массив, который был создан первым, без этой строчки генерироваться заново не станет. Будут создаваться те же самые значения, что создались при прошлом запуске и ими заполнятся ячейки.
===============
Эта строчка как рычаг == давай мне разные значения при каждом новом запуске программы.

Верните строчку на место, повторите действия, описанные выше и скорее всего, что это такое хорошо поймете.
0
24.02.2013, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 19:48

Указатели при работе с одномерными и двумерными массивами
Помогите Даны натуральное число n, целые числа а1,...,аn . Выяснить, имеется ли среди чисел...

О работе с динамическими двумерными (многомерными) массивами
Всех с наступающим профессиональным праздником, многоуважаемые гуру С++! задачка простая - работа...

Использование показателей при работе с массивами
Даны a1,...,an действительные числа, n* натуральное число. Если в этой последовательности...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru