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

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

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

функции,поправьте код пожалуста. - C++

07.11.2009, 12:20. Просмотров 740. Ответов 11
Метки нет (Все метки)

Задание : описать функцию Repl(A,B), меняющую местами максимальные элементы матриц А и В произвольного порядка.
Считать, что в каждой матрице только один элемент.

Я написал код для определенных значений столбца.По другому
не получается.....Нужно сделать как в задании.
Ещё проблема с обменом максимальных элементов.))))))))))))


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
104
105
106
107
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
 
//Прототип функции, меняющей местами максимальные элементы матриц A и B
//произвольного порядка.
 
void Repl(int A[][4],int n, int B[][7], int m);
 
 void main()
 {
//Вызываем функцию несколько раз.
 int A[4][4];
 int B[7][7];
 Repl(A,4,B,7);
 getch ();
 }
void Repl(int A[][4],int n, int B[][7], int m)
 
{
int  i, j;
 
//Заполнение матриц в цикле посредством генератора случайных чисел.
cout << "Matrix Num1" << endl;
cout << endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
A[i][j] = rand() %120;
 
cout<< A[i][j] << '\t';
}
cout << endl;
}
cout << endl;
cout << "Matrix Num2" << endl;
cout << endl;
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
B[i][j] = rand() %150;
 
cout << B[i][j] << '\t';
 
}
cout << endl;
}
cout << endl;
 
//Поиск максимальных элементов матриц.
 
int max1 = A[0][0];
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if ((A[i][j]) > max1) max1=A[i][j];
}
}
cout << "Max.element of matrix Num1: " << max1 << endl;
cout << endl;
int max2 = B[0][0];
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
if ((B[i][j]) > max2) max2=B[i][j];
}
}
cout << "Max.element of matrix Num2: " << max2 <<endl;
cout << endl;
//Обмен максимальных элементов между матрицами.
 
{
int temp=A[i][j];
A[i][j]=B[i][j];
B[i][j]=temp;
}
 
 
//Вывод результата на экран.
 
cout << "Matrix Num1 with Max.element of matrix Num2" << endl;
cout << endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout << A[i][j] << '\t';
}
cout << endl;
}
cout << endl;
 
cout << "Matrix Num2 with Max.element of matrix Num1" << endl;
cout << endl;
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
cout << B[i][j] << '\t';
}
cout << endl;
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2009, 12:20     функции,поправьте код пожалуста.
Посмотрите здесь:

Поправьте код - C++
Снова где то портачу и не знаю где, поправьте кому не сложно #include &quot;iostream&quot; #include &lt;string.h&gt; using namespace std; ...

Поправьте код - C++
Мне нужно что бы в один файл записало рандомные числа с повторами, а потом из этого файла считывало в другой но уже с удаленными...

Поправьте код!!! - C++
Вчера весь вечер сидел, и не мог понять, почему программа выдает какой-то набор больших чисел? Вот код: #include &lt;iostream&gt; ...

Поправьте Код - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; int...

Поправьте код - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; float *N (float **A) { float min=A , sum; ...

Поправьте код... - C++
Помогите поправить код...не пойму в чем ошибка....программы разложения в ряд ln(x+1) #include &quot;iostream&quot; #include &quot;stdafx.h&quot; #include...

Поправьте код. - C++
Добрый вечер) не будите ли так любезны помочь с прогой ) нужно чтоб на экране были 10 планет ( нашей солнечной системы) у мну вылазиют...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 12:52     функции,поправьте код пожалуста. #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
//Поиск максимальных элементов матриц.
 
int max1 = A[0][0];
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if ((A[i][j]) > max1) max1=A[i][j];
}
}
cout << "Max.element of matrix Num1: " << max1 << endl;
cout << endl;
int max2 = B[0][0];
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
if ((B[i][j]) > max2) max2=B[i][j];
}
}
cout << "Max.element of matrix Num2: " << max2 <<endl;
cout << endl;
//Обмен максимальных элементов между матрицами.
 
{
int temp=A[i][j];
A[i][j]=B[i][j];
B[i][j]=temp;
}
Да, надо признаться что такой код находит сначала максимальный элемент в массиве A, затем находит максимальный элемент в массиве B. Но по окончании этого нахождения переменные i и j чему равны? А вы с их помощью делаете перемену значений в обоих массивах. Для того чтобы сделать нормальный обмен, Вам нужно не только вычислить максимальные элементы, но и запомнить их индексы, для того что бы потом нормально обменять элементы массивов.
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
07.11.2009, 16:03  [ТС]     функции,поправьте код пожалуста. #3
блиииин, и как это сделать????
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 16:31     функции,поправьте код пожалуста. #4
Max777, Создайте еще переменные i_A, j_A, i_B, j_B. Изначально присвойте им всем значение 0.
Когда Вы находите очередное максимальное число, то одновременно и запоминайте в эти переменные индексы текущего макимального числа. Например так:
Вместо
C++
1
if ((A[i][j]) > max1) max1=A[i][j];
напишите
C++
1
if ((A[i][j]) > max1){ max1=A[i][j]; i_A=i; j_A=j;}
а вместо
C++
1
if ((B[i][j]) > max2) max2=B[i][j];
напишите
C++
1
if ((B[i][j]) > max2){ max2=B[i][j]; i_B=i; j_B=j;}
по окончании поиска максимальных чисел в переменных _A, j_A, i_B, j_B будут находится индексы максимальных элементов.
Тогда обмен значениями будет таким:
C++
1
2
3
4
5
6
7
//Обмен максимальных элементов между матрицами.
 
{
int temp=A[i_A][j_A];
A[i_A][j_A]=B[i_B][j_B];
B[i_B][j_B]=temp;
}
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
07.11.2009, 16:42  [ТС]     функции,поправьте код пожалуста. #5
я пытался так же,только обнулить забыл)))и ничего не вышло....
теперь всё великолепно!!СПАСИБО!
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
07.11.2009, 18:58  [ТС]     функции,поправьте код пожалуста. #6
а как всё-таки избавиться от определённых значений столбца ? может кто подскажет?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 21:45     функции,поправьте код пожалуста. #7
а как всё-таки избавиться от определённых значений столбца ? может кто подскажет?
что значит избавится, заменить их на ноль или что-то другое?
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
07.11.2009, 21:59  [ТС]     функции,поправьте код пожалуста. #8
я немного неправильно выразился выше.........вообщем нужно что-то намудрить с указателями,чтобы размерность матриц задавать в самом вызове функции.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 22:14     функции,поправьте код пожалуста. #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
 const int n1=4, n2=7;
//Ïðîòîòèï ГґГіГ*êöèè, ìåГ*ГїГѕГ№ГҐГ© ìåñòГ*ìè Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûå ýëåìåГ*ГІГ» Г¬Г*òðèö A ГЁ B
//ïðîèçâîëüГ*îãî ïîðÿäêГ*.
 
void Repl(int A[][n1],int n, int B[][n2], int m);
 
 void main()
 {
//ÂûçûâГ*ГҐГ¬ ГґГіГ*êöèþ Г*åñêîëüêî Г°Г*Г§.
 int A[n1][n1];
 int B[n2][n2];
 Repl(A,n1,B,n2);
 getch ();
 }
void Repl(int A[][n1],int n, int B[][n2], int m)
 
{// дальше продолжается код
Вот это нужно?
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
07.11.2009, 22:37  [ТС]     функции,поправьте код пожалуста. #10
нет,мне нужно как бы передать в функцию 6 параметров: указатели на матрицы и 4 параметра размерностей матриц, а как это сделать я не догоняю.....
простите за наглость, я непонимаю и поэтому прошу помощи у вас......если это поможет,то нужно сделать как тут написано:
http://s60.***********/i169/0911/4d/7c2a63cf2caf.bmp
http://i075.***********/0911/e3/1f5c0282c24e.bmp
http://s04.***********/i177/0911/c2/b64e173b5344.bmp
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2009, 22:55     функции,поправьте код пожалуста. #11
http://www.cyberforum.ru/cpp-beginne...read53355.html
Даю ссылку, там недавно обсуждалась эта проблема. Вы попробуйте приведенные там примеры на Вашем компиляторе.
P.S. Если вы хотите создавать массивы в процессе выполнения программы (т.е. в процессе выполнения программы Вы будете задавать размеры массивов, то нужно использовать динамический метод создания массивов)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2009, 00:07     функции,поправьте код пожалуста.
Еще ссылки по теме:

Поправьте пожалуйста код - C++
Выясните, какая из букв первая или последняя встречается в заданном слове чаще. #include &lt;iostream.h&gt; #include &lt;string.h&gt; ...

Поправьте пожалуйста код. - C++
Всем доброго времени суток! Вот написал программу, а на защиту мнезадали её переделать, использую dorehile. вот собственно текст программы ...

Поправьте пожалуйста код - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char*...

Поправьте пожалуйста код ... - C++
Вычислите длину самого короткого слова в предложении из трёх слов, разделённых пробелами. #include &lt;iostream.h&gt; #include...

Поправьте код, а то чего-то возмущается... - C++
Поправьте код, а то чего-то возмущается. int Sum(int x, int step, int n) { if (n==1) return(x); else return(Sum(x,...


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

Или воспользуйтесь поиском по форуму:
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
17.11.2009, 00:07  [ТС]     функции,поправьте код пожалуста. #12
что не так?


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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream.h>
#include <stdlib.h>
 
 
 
void Repl(int** A, int** B, int n, int m)
 
{
int  i, j;
 
//Заполнение матриц в цикле посредством генератора случайных чисел.
cout << "Matrix Num1" << endl;
cout << endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
A[i][j] = rand() %120;
 
cout<< A[i][j] << '\t';
}
cout << endl;
}
cout << endl;
cout << "Matrix Num2" << endl;
cout << endl;
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
B[i][j] = rand() %150;
 
cout << B[i][j] << '\t';
 
}
cout << endl;
}
cout << endl;
 
//Поиск максимальных элементов матриц.
 
int max1 = A[0][0];
int i_A=0, j_A=0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if ((A[i][j]) > max1) {max1=A[i][j]; i_A=i; j_A=j;}
}
}
cout << "Max.element of matrix Num1: " << max1 << endl;
cout << endl;
int max2 = B[0][0];
int i_B=0, j_B=0;
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
if ((B[i][j]) > max2) {max2=B[i][j]; i_B=i; j_B=j;}
}
}
cout << "Max.element of matrix Num2: " << max2 <<endl;
cout << endl;
//Обмен максимальных элементов между матрицами.
 
{
int temp=A[i_A][j_A];
A[i_A][j_A]=B[i_B][j_B];
B[i_B][j_B]=temp;
}
 
 
//Вывод результата на экран.
 
cout << "Matrix Num1 with Max.element of matrix Num2" << endl;
cout << endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout << A[i][j] << '\t';
}
cout << endl;
}
cout << endl;
 
cout << "Matrix Num2 with Max.element of matrix Num1" << endl;
cout << endl;
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
cout << B[i][j] << '\t';
}
cout << endl;
 
}
}
 
 
 int main()
 {
int n = 6 ;
int m = 5 ;
 
    int **A = new int*[n] ;
    for (int i=0; i<n; i++)
        A[i] = new int[m] ;
 
     int **B = new int*[m] ;
    for (int i=0; i<m; i++)
        B[i] = new int[n] ;
 
    Repl(A, B, n, m) ;
 
    for(int i=0; i<n; i++)
 
    delete [] A[i] ;
delete [] A ;
  for(int i=0; i<m; i++)
 
 delete [] B[i] ;
delete [] B ;
 return 0;
 }
Yandex
Объявления
17.11.2009, 00:07     функции,поправьте код пожалуста.
Ответ Создать тему
Опции темы

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