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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2013, 21:00   #1
tanya61043
Пользователь
 
Регистрация: 25.04.2012
Сообщений: 16
По умолчанию Матрицы

11. Даны натуральное число n и квадратная матрица порядка n целочисленных элементов, где n≤12. Найти максимальный элемент и его индексы среди значений, лежащих на главной диагонали матрицы и выше нее.


Помогите,заранее спасибо!)
tanya61043 вне форума Ответить с цитированием
Старый 29.03.2013, 23:16   #2
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

Так необходимо сначала найти ету самую главную диагонать, а потом сравнить ее елементы. О главной диагонале, достаточно сказано в разделе помощи студентам---Работа с матрицами и списками.А сравнить елементы думаю труда не составит..хоть с помошью инструкции if...
Sergey_gorobets вне форума Ответить с цитированием
Старый 29.03.2013, 23:35   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Думаю этот код то что вам нужно:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define SIZE	12

int main()
{
	int i, j;
	int mass[SIZE][SIZE] = {0};
	int max;

	system("chcp 1251 > nul");

	printf("\n Массив случайных чисел: \n -----------------------\n\n");
	srand((unsigned)time(NULL));
	
	/* Заполнение массива случайными числами от 1 до 99 */
	for(i = 0; i < SIZE; i++)
	{
		for(j = 0; j < SIZE; j++)
		{
			mass[i][j] = rand()%99+1;
			printf(" %3d", mass[i][j]);
		}
		printf("\n\n");
	}
	/* Нахождение максимального числа */
	max = mass[0][0];
	for(i = 0; i < SIZE; i++)
	{
		for(j = i; j < SIZE; j++)
		{
			if(mass[i][j] > max)
				max = mass[i][j];
		}
	}
	printf(" -----------------------\n Результат: ");
			
	printf("MAX = %d\n", max);
	
	_getch();
	
	return 0;
}
Результат работы программы:

Массив.jpg

Если есть вопросы, СПРАШИВАЙТЕ
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.03.2013, 01:34   #4
DAVID973
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 16
По умолчанию

еще один вариант )))

Код:

    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <vector>
    #include <conio.h>
    #include <time.h>

    using namespace std;




template <typename Long = long> class MATRIX
{
public:

	#define matrix_size	  12

	typedef vector<Long> Long_Vector;
        typedef vector<Long_Vector> Long_Matrix;

	Long_Matrix Matrix;
	Long MAX_ELEMENT;
	Long one_index;
	Long two_index;
	Long SIZE;

	MATRIX (bool var)
	{
	        cout << "Введите размерность матрицы [?][?]    "; 
	        cin  >> SIZE; cout << endl;
	        if (!VERIFICATION()) 
	        {
		       cout << " Марица не может быть заполнена !!! " << endl;
		       return;
	        }

		if (!var) srand((unsigned)time(NULL));
	        cout << "Введите элементы матрицы: " << endl;

	        for (Long one=0, two, input; one<SIZE; one++)
	        {
		    Matrix.push_back(Long_Vector());
		    cout << endl;

		    for (two=0; two<SIZE; two++)
		    {
	                     cout << " ["<< one+1 << "][" << two+1 << "]   =   "; 
		             if (var) cin  >> input;
		             else 
		             {
				  input = rand()%99+1;
				  cout << input;
			     }
			     Matrix[one].push_back(input);
		     }
	        }

		if (!var) cout << endl;
		one_index = two_index = 0;
		MAX_ELEMENT = Matrix[one_index][two_index];
	}

	~MATRIX(){}

	void FIND_MAX_ELEMENT()
	{
	    for (Long one, two, free=0; free<SIZE; free++)
	    for (one=0, two=free; two<SIZE; one++, two++)
            if (Matrix[one][two] > MAX_ELEMENT) 
	    {
		MAX_ELEMENT = Matrix[one][two];
		one_index = one;
		two_index = two;
	    }
	}

	void OUTPUT_MAX_ELEMENT()
	{
		if (!VERIFICATION())
		{
			cout << " Поиск максимального элемента не возможен !!! " << endl;
			return;
		}
		else 
		{
			FIND_MAX_ELEMENT();
			cout << endl;
			cout << "максимальный элемент лежащий на главной диагонали матрицы и выше нее = " << MAX_ELEMENT << endl;
			cout << "первый индекс = " << one_index+1 << endl;
			cout << "второй индекс = " << two_index+1 << endl << endl << endl;
		}
	}

	bool VERIFICATION()
	{
		if (SIZE > matrix_size) 
		{
			cout << " Значение (SIZE) не соответствует заданному диапазону !!! " << endl;
			return false;
		}
		else return true;
	}

};



int main()
{
	setlocale(0,"Russian");
	
	// true - ручное_заполнение
	// false - автоматическое_заполнение

	MATRIX<> matrix_1(true);
	matrix_1.OUTPUT_MAX_ELEMENT();

	MATRIX<> matrix_2(false);
	matrix_2.OUTPUT_MAX_ELEMENT();

	_getch();
	return 0;
}

Последний раз редактировалось DAVID973; 30.03.2013 в 01:49.
DAVID973 вне форума Ответить с цитированием
Старый 02.04.2013, 22:20   #5
x0pek13
Новичок
Джуниор
 
Регистрация: 02.04.2013
Сообщений: 1
По умолчанию

Ребята,а на Pascal программку это не напишите?
Буду очень признателен.
x0pek13 вне форума Ответить с цитированием
Старый 03.04.2013, 08:19   #6
interacia
Пользователь
 
Аватар для interacia
 
Регистрация: 24.01.2013
Сообщений: 67
По умолчанию

Код:
program Matrix1;
var
j,i,N:integer;
jj,ii:integer;
a: array [1..12,1..12] of integer;
begin
write('Введите числа N (N<=12)');readln(N);
 for i:=1 to N do begin
 writeln;
 for j:=1 to N do
 begin
 a[i,j]:=random(100);
   write(a[i,j]:3,' ');
   end;
   end;
writeln;
writeln('Ответ');
jj:=1;
ii:=1;
 for i:=1 to N do
begin
 for j:=i to N do
 begin
 if a[i,j]>a[ii,jj] then
   begin
    ii:=i;jj:=j;
   end;
 end;
end;
Writeln('ii:=',ii);
Writeln('jj:=',jj);
Writeln('a[ii,jj]:=',a[ii,jj]);
end.
interacia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекодировать консолевкий код под оконное приложение в Билдер 6. Решаю матрицы Матрицы g.e.s Общие вопросы C/C++ 0 18.11.2012 20:21
В каждой строке матрицы А(n*n) найти наибольший и наименьший элементы матрицы и поменять их местами saha1994 Паскаль, Turbo Pascal, PascalABC.NET 2 15.05.2012 20:38
Первый элемент - размерность матрицы, остальные образуют строки этой матрицы Anastasiya_Pot Помощь студентам 2 10.04.2012 09:46
С++.три матрицы, упорядочить строки той матрицы у которой больше нулевых строк Ирина1992 Помощь студентам 12 20.11.2011 13:01
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19