Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
#1

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

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

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

Использование указателей при работе с одномерными и двумерными массивами. - C++
Кто может решить. Даны натуральное число n,действительные числа X1,...,Xn.Вычислить: (X1+X2+2Xn)(X2+X3+2Xn-1)...(Xn-1+Xn+X2) Язык...

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

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

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

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

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

5
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
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 / 0
Регистрация: 25.02.2017
24.02.2013, 19:20 #5
Цитата Сообщение от bilochka Посмотреть сообщение
что означает эта строчка??? и почему пишется что она не определена в функции???
Заполнение случайными числами

Добавлено через 6 минут
Цитата Сообщение от bilochka Посмотреть сообщение
и почему пишется что она не определена в функции???
#include<stdlib.h>
0
daslex
1286 / 530 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
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
Привет! Вот еще темы с ответами:

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

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

Использование функций для работы с одномерными и двухмерными массивами - C++
Всем привет=) Помогите с решением! Плиз, очень надо! Условие: Дана матрица размера M × N. Поменять местами столбцы, содержащие...

Использование функций для работы с одномерными и двухмерными массивами - C++
Привет всем!!!Помогите решить задачу=) Дано целое число N (&gt; 1), а также первый член A и знаменатель Q геометрической прогрессии....


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

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

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