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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 21:43   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию С++, матрица - минимум и максимум всех диагоналей

Дорогие форумчане, я окончательно запуталась с задачей на матрицы.
Идея в том, что надо найти минимальный элемент каждой диагонали, паралельной главной, начиная с диагонали с одним элементом. Тут слава Богу, все считается правильно, проблема как изящнее можно подать сам вывод результата. Все должно начинаться с элемента А 1,м, а у меня наоборот -я начинаю менять, он просто тогда перестает делать отчет с эдиничного элемента, а начинает отсчитывать с главной диагонали.

А вот со второй частью у меня проблема - нужно чтобы вычислялся максимум каждой диагонали, паралельной побочной. Так же все должно начинаться с диагонали с одним элементом А11. А он у меня как узрел один максимальный элемент ниже побочной диагонали так и повторяет этот максимум для каждой из диагоналей. Я тут за 2 дня с этой задачей запутулусь окончательно и такое ощущение, что зависимость прописана неправильно.

В общем, нужна помощь аудитории.
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <limits.h>


using namespace std;

int main ()


{
srand( (unsigned)time( NULL ) );

{
	for (i=0; i<M; i++)
	{
		for (j=0; j<M; j++)
			{  
				A[i][j]=rand()%10;
				cout<<A[i][j]<<"  ";
				
			}
		cout<<endl;
	}
}

cout<<"***********************************************"<<endl;
cout<<endl;

//Минимум - в паралелях главной диагонали
//mimimum nize glavnoy diagonali

for (int k = M-1; k>0; k--)

{

	int Min1=INT_MAX;
	for (i=M-1; i>=0; i--)
	{
		for (j=0; j<M; j++)
		{

			if ((i-j)==k)
				{
					if(A[i][j]<Min1)
					{
					Min1=A[i][j];
					}
					
				}
}
}
cout << "Minimum v diagonali "<<k<<" nize glavnoy= "<< Min1<<endl;

}



for (int k = 0; k<M; k++)

{int Min2=INT_MAX;
  for(i=0; i<M-1; i++)
  {
        for ( j=M-1; j>0; j--)
		{
        if ((j-i)==k)
			{
                if (A[i][j]<Min2)
				{
                                Min2=A[i][j];
				}
            }
		}
  }
cout << "Minimum v diagonali "<<k<<" vishe glavnoy= "<< Min2<<endl;

  }


///////Максимум - по  паралелям побочной диагонали


//Maximum v podochnih diaganaljah
//Treugolnik nize pobochnoy diaganali
for (int x = M-1; x>0; x--)

{ int Max1=INT_MIN;
for (i=0; i<M; i++)
	{ 
		for (j=M-1; j>0; j--)
		{
			if(j==M-i)
			{
				if (A[i][j]>Max1)
				{
                                Max1=A[i][j];
				}
            }
		}
  }
cout << "Maximum v  diagonali "<<x<<" nize pobochnoy= "<< Max1<<endl;

  }

//Treugolnik vishe pobochnoy diagonali
for (int x = 0; x<M-1; x++)
{int Max2=INT_MIN;
	for (i=M-1; i>=0; i--)
		{for (j=0; j<M; j++)
			{if(i==M-j)
			{
				if (A[i][j]>Max2)
				{
                                Max2=A[i][j];
				}
            }
		}
  }
cout << "Maximum v  diagonali "<<x<<" vishe pobochnoy= "<< Max2<<endl;

  }

_getch();
return 0;
}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 19.04.2011, 23:49   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

В принципе, минимумы и максимумы намного проще можно искать так:
Код:
//Минимум - в паралелях главной диагонали
//mimimum nize glavnoy diagonali
for (int k = M-1; k>0; k--)
{
	int Min1=A[k][0];
	for (i=k; i<M; i++)
					if(A[i][i-k]<Min1)
					Min1=A[i][i-k];
cout << "Minimum v diagonali "<<k<<" nize glavnoy= "<< Min1<<endl;
}

for (int k = M-1; k>0; k--)
{
	int Min1=A[0][k];
	for (i=k; i<M; i++)
					if(A[i-k][i]<Min1)
					Min1=A[i-k][i];
	cout << "Minimum v diagonali "<<k<<" vishe glavnoy= "<< Min1<<endl;
}

///////Максимум - по  паралелям побочной диагонали
//Maximum v podochnih diaganaljah
//Treugolnik nize pobochnoy diaganali
for (int k = M-1; k>0; k--)
{
	int max1=A[k][M-1];
	for (i=k; i<M; i++)
					if(A[i][M-1-(i-k)]>max1)
					max1=A[i][M-1-(i-k)];
	cout << "Maximum v  diagonali "<<k<<" nize pobochnoy= "<< max1<<endl;
}


for (int k = 0; k<M-1; k++)
{
	int Max1=A[0][k];
	for (i=k; i>=0; i--)
					if(A[k-i][i]>Max1)
					Max1=A[k-i][i];
	cout << "Maximum v  diagonali "<<k<<" vishe pobochnoy= "<< Max1<<endl;
}
Компилятора, правда, под рукой нет, мог ошибиться, проверяй )
Son Of Pain вне форума Ответить с цитированием
Старый 20.04.2011, 00:01   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо, буду смотреть)) Я просто запуталась в этих зависимостях - с главной диагональю как-то попроще, а вот с побочной.....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 20.04.2011, 00:44   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Да, он работает))))) Буду думать над оформлением))))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 20.04.2011, 00:57   #5
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А что не так с оформлением? )
Son Of Pain вне форума Ответить с цитированием
Старый 22.04.2011, 13:52   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ой, прошу прощения, что поздно отвечаю.... Пока еще не решена головоломка о красоте вывода и о соблюдении условий - чтобы минимум выводился с элемента А 1,м, а у меня наоборот - начинаю менять, и у меня все путается(((
Тоже и с максимумом - вывод должен начинаться с диагонали с одним элементом А11.
И как поизящнее написать - а то путаница - диагональ на 3 или 4 выше главной.... У них, этих диагоналей, наверное научные названия есть.... индексы....
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Максимум, минимум, DBGrid. Карташов А.А. Помощь студентам 3 26.12.2010 20:26
Матрица - минимум-максимум Freeman-des Помощь студентам 8 22.12.2010 23:34
Максимум-минимум Freeman-des Помощь студентам 8 22.12.2010 20:13
Минимум и максимум в Delphi artemavd Общие вопросы Delphi 5 28.05.2010 09:34
Матрица. Поменять местами максимум и минимум. delphi ilnar Помощь студентам 3 18.01.2010 16:54