Консультация № 144880
24.09.2008, 14:19
0.00 руб.
0 7 3
Здравствуйте!!!
Dev-C++ 4
Сформировать матрицу А6х6 случайных целых чисел в диапазоне от 0 до 30. Напечатать матрицу. Найти и напечатать «столбец» матрицы наибольших элементов строк. При печати указывать номер строки и столбца, в котором находится очередной элемент.

Обсуждение

Неизвестный
24.09.2008, 14:56
общий
это ответ
Здравствуйте, Dragonlio!
#include <iostream.h>
#include <stdlib.h>
int main()
int a[5][5];
for( int i = 0; i < 6; ++i )
{ for( int j = 0; j < 6; ++j )
{ a[i][j] = random(30);
}
}

for( int i = 0; i < 6; ++i )
{ for( int j = 0; j < 6; ++j )
{ cout << a[i][j] << " ";
}
cout << endl;
}

int max = -1,
nom = 0;
for( int i = 0; i < 6; ++i )
{ for( int j = 0; j < 6; ++j )
{ if( a[i][j] > max )
{ max = a[i][j];
nom = j;
}
}
}
cout << "max =" << max;
cout << "j =" << j;

return 0;
Неизвестный
24.09.2008, 17:10
общий
это ответ
Здравствуйте, Dragonlio!
Код в приложени.. Нумерация при выводе результата начинается с 1.

Приложение:
#include <iostream>
#include <iomanip>
#include <stdlib.h>

using namespace std;

int main()
{
uint32_t array[6][6];
for(uint8_t i = 0; i < 6; ++i)
{
for(uint8_t j = 0; j < 6; ++j)
{
array[i][j] = rand()%31;
cout<<setw(4)<<array[i][j];
}
cout<<endl;
}

uint32_t m_index;
for(uint8_t i = 0; i < 6; ++i)
{
m_index = 0;
for(uint32_t j = 0; j < 6; ++j)
if(array[i][j] > array[i][m_index])
m_index = j;

cout << "[" << i+1 << ":" << m_index+1 << "] = " << array[i][m_index] << endl;
}
return 0;
}
Неизвестный
24.09.2008, 17:22
общий
ошибки:
uint32_t array[6][6];
9 untitled1.cpp
`uint32_t' undeclared (first use this function)
9 untitled1.cpp
(Each undeclared identifier is reported only once
Неизвестный
24.09.2008, 17:30
общий
пользуйте компиляторы, которые поддерживают стандарты. поделки от мс не поддерживают, к слову.
замените все uint32_t на int и все uint8_t на short.
Неизвестный
24.09.2008, 17:39
общий
работает, спасибо!!!!
теперь комментарий еще можете добавить, буду очень вам благодарен!
Неизвестный
24.09.2008, 17:47
общий
Ещё я забыл добавить "перемешивание" случайных чисел =)
надо добавить #include <time.h> и в
Код:
int main()  
{
...//объявление
srand(time(0));
...//рабоча часть программы...
}


Ну коментов там минимум.Первые 2 for заполняют и выводят на экран массив. Вторые 2 for - пробегаем по каждой строке матрицы (собственно форы) и ищем индекс максимального элемента (единственный if). Ну и вывод на экран через стандартный поточный вывод..
Неизвестный
24.09.2008, 21:14
общий
это ответ
Здравствуйте, Dragonlio!
В приложении находится код, который выполняет требуемые действия. Только нет возможности учета нескольких одинаковых элементов в строке. Если встретится несколько одинаковых элементов, то максимальным все-равно останется первый.


Приложение:
//Подключен для ввода-вывода
#include <iostream>

//Подключены для использования функции rand()
#include <time.h>
#include <stdlib.h>

//Определяем стандартное пространство имен
using namespace std;

int main()
{
srand(time(NULL));

//Ввод размера массива m x n
const int m=6,n=6;
int arr[m][n];

//Создание массива указателей,заполнение его случайными значениями и вывод на экран
for (int i=0;i<m;i++){
for (int j=0;j<n;j++){
//Заполнение массива
arr[i][j]=rand()%31-0;
//Вывод массива
cout<<arr[i][j]<<"\t";
}
cout<<endl;
}

cout<<endl;

//Указатель на максимальный элемент в строке
int *pMax;

//Указатели для хранения индексов максимального элемента строки
int* a=new int;
int* b=new int;

//Поиск максимального элемента в строке
for(int i=0;i<n;i++){

//Вначале максимальным является первый элемент строки
pMax=&arr[i][0];

for(int j=0;j<m;j++){

if(arr[i][j]>*pMax){
pMax=&arr[i][j];
*a=i;
*b=j;
}
}

//Вывод столбца максимального элемента
cout<<"MAKCuMAJIbHIbU EJIEMEHT HAXODITC9I B "<<*b+1<<" CTOJIbCE\n";
for(int i=0;i<m;i++){
cout<<arr[i][*b]<<"\t"<<"["<<i+1<<"]["<<*b+1<<"]\n";
}
cout<<"\n";
}

//Освоблждение памяти
delete a;
delete b;
delete pMax;

return 0;
}
Форма ответа