Форум программистов, компьютерный форум CyberForum.ru

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

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

. Использование указателей при работе с одномерными и двумерными массивами. C++
C++ Использование указателей при работе с одномерными массивами
C++ Использование указателей при работе с одномерными и двумерными массивами.
Указатели при работе с одномерными и двумерными массивами C++
C++ Использование функций для работы с одномерными и двухмерными массивами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
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;
}
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
18.02.2013, 23:07  [ТС]     Использование функций при работе с двумерными массивами #3
благодарю, все так понятно объяснили, что сразу все понятно
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
24.02.2013, 19:02  [ТС]     Использование функций при работе с двумерными массивами #4
Цитата Сообщение от daslex Посмотреть сообщение
srand(time(NULL));
что означает эта строчка??? и почему пишется что она не определена в функции???
afonya_jan
Сообщений: n/a
24.02.2013, 19:20     Использование функций при работе с двумерными массивами #5
Цитата Сообщение от bilochka Посмотреть сообщение
что означает эта строчка??? и почему пишется что она не определена в функции???
Заполнение случайными числами

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

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

Верните строчку на место, повторите действия, описанные выше и скорее всего, что это такое хорошо поймете.
Yandex
Объявления
24.02.2013, 19:48     Использование функций при работе с двумерными массивами
Ответ Создать тему
Опции темы

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru