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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2011, 10:40   #1
svim
 
Регистрация: 08.03.2011
Сообщений: 8
По умолчанию Двумерный массив

Задача на матрицы.
Заполняем массив 4*8
2 3 4 5 6 7 8 9
8 7 6 5 4 3 2 10
2 4 6 8 9 2 5 0
9 5 2 4 4 0 1 2

Отбираем из каждого столбца максимальный элемент
9 7 6 8 9 7 8 10

И из каждого макс. элемента вычитаем ему соответствующий столбец. Т.е.
из 9 вычитаем столбец 1.
из 7 вычитаем столбец 2.
из 6 вычитаем столбец 3.
И т.д.

Затем полученный результат записываем в новую матрицу. Чтобы на выходе получили следующее.
7 4 2 3 3 0 1
1 0 0 3 5 4 0
7 3 0 0 0 5 10
0 2 4 4 5 7 8

Исходник
Код HTML:
#include <iostream>
using namespace std;
int main()
{	
        int Matrix[4][8];
        int Mass_answer[4][8];
	int min = 0, n=0;
	int Main_min_Element=0;
	int Max_Element[8];
 	int Min_Element=0;
	int Max_answer_Element[4];
	int Main_Min_Element=0;
	int Mass_min[4];

		for(int i=0;i<4;i++) {
                	for(int j=0;j<8;j++) {
                        	cout<<"insert in MATRIX["<<i<<"]["<<j<<"]= ";    // Заполняем матрицу
                                cin>>Matrix[i][j];
                        }
                }
 
                for(int a=0;a<4;a++) {
                	for(int b=0;b<8;b++) {
                        	cout<<Matrix[a][b]<<"\t";		// Выводим содержимое
                        }
                    cout<<endl;
                }


		for(int t=0; t<8; t++)
		{
			Max_Element[t]=Matrix[n][t];
					
			for(int p=0;p<4;p++)
                                {
                                        if(Max_Element[t]<Matrix[p][t])
                                        {
                                                Max_Element[t]=Matrix[p][t];
                                        }
				}			

			if(n<4) 
			{
       			 n++;
			}
		}

		cout<<"\n";
		for(int y=0; y<8; y++) {
			cout<<Max_Element[y]<<"\t";
		}


		for(int e=0;e<4;e++) {
                	for(int d=0;d<8;d++) {
				Mass_answer[e][d] = Max_Element[d]-Matrix[e][d]; // Выполняем умножение и занесение результата в массив Mass_answer
			}
			cout<<endl;
		}


		for(int u=0;u<4;u++) {
                	for(int v=0;v<8;v++) {
                        	cout<<Mass_answer[u][v]<<"\t";		// Выводим содержимое массива Mass_answer
                        }
                    cout<<endl;
                }

	return 0;
}
На выходе получаю вот такую белебердень
Код HTML:
2	3	4	5	6	7	8	9	
8	7	6	5	4	3	2	10	
2	4	6	8	9	2	5	0	
9	5	2	4	4	0	1	2	

9	7	6	8	134514188	134521204	134520880	10	



7	4	2	3	134514182	134521197	134520872	1
1	0	0	3	134514184	134521201	134520878	0
7	3	0	0	134514179	134521202	134520875	10	
0	2	4	4	134514184	134521204	134520879	8
Если не учитывать хрень которую выдает в 5,6,7 столбцах, решение выполняется правильно. Могли бы пожалуйсто подсказать, в чём может быть проблема.
svim вне форума Ответить с цитированием
Старый 25.03.2011, 12:07   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Вот тут:
Цитата:
Код:
		for(int t=0; t<8; t++)
		{
			Max_Element[t]=Matrix[n][t];
					
			for(int p=0;p<4;p++)
                                {
                                        if(Max_Element[t]<Matrix[p][t])
                                        {
                                                Max_Element[t]=Matrix[p][t];
                                        }
				}			

			if(n<4) 
			{
       			 n++;
			}
		}
ошибка логики.

Так попробуй:
Код:
for (int i = 0; i < 8; i++)
        {
            Max_Element[i] = Matrix[0][i];
            for (int j = 0; j < 4; j++)
            {
                if(Max_Element[i] < Matrix[j][i])
                    Max_Element[i] = Matrix[j][i];
            }
        };
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 25.03.2011 в 12:10.
Mandrivnyk вне форума Ответить с цитированием
Старый 25.03.2011, 12:14   #3
AncientHero
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 18
По умолчанию

Не успел
Если мое сообщение вам чем-то помогло, нажмите на весы слева.
AncientHero вне форума Ответить с цитированием
Старый 25.03.2011, 13:32   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
                	for(int j=0;j<8;j++) {
                        	cout<<"insert in MATRIX["<<i<<"]["<<j<<"]= ";
                                cin>>Matrix[i][j] };

onewho вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив SkuLLL Помощь студентам 6 12.12.2010 16:24
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
массив двумерный Babur4iK Помощь студентам 1 10.11.2009 17:41
двумерный массив Ринат_1987 Помощь студентам 2 19.01.2009 15:43