Мне нужно найти min в строке матрицы Элемент кода
int max = INT_MIN;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] > max) max = a[i][j];
}
cout << max << endl;
max = INT_MIN;
}
код сам
#include
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,a[5][5];
cout<<"N="; //ввод количества строк
cin>>N;
cout<<"M="; //ввод количества столбцов
cin>>M;
cout<<"Ввод матрицы A \n";
//цикл по переменной i, в которой перебираем строки матрицы
for (i=0; ia[i][j]; //ввод очередного элемента матрицы
cout<<"Матрица А \n";
for (i=0; i
C/C++
Подскажите пожалуйста куда подставить данный элемент кода в С++
у тебя половину кода съел местный сайт
Не смею навязывать решение, но предложил бы Вам представить Вашу матрицу ввиде эквивалентного ей одномерного массива.
Представить такой массив легко: он получается, если все строки матрицы выложить в одну строку.
Т. к. размеры Вашей матрицы = n строк по m элементов, то размер эквивалентного одномерного массива = nm элементов.
Тогда и предложение Андрея (см. выше) вполне реализуемо. Только я бы проходил по массиву не с помощью индекса, а с помощью указателя (в C++ возможен инкремент указателя).
По разумению память для массива лучше всего выделять динамически:
int * a = new int [n * m];
◉ Важно! Указатель a следует сохранить неизменным для того, чтобы можно было освободить память по delete [] a;
Можно воспользоваться вспомогательной переменной:
int * ap = a + 1;
Инициализация временного максимума:
int max = (*a);
Пересмотр временного максимума:
if (max < (*ap)) max = (*ap); // этот оператор должен быть в теле цикла!
А вот в заголовке цикла всё же придётся использовать целочисленный счётчик, чтобы ограничить количество итераций реальным размером массива.
Вас интересует, в какое место кода вставить блок поиска максимума. Я бы предложил Вам оформить блок поиска ввиде независимой функции, тогда Вам было бы проще выбрать точку вызова этой функции.
Представить такой массив легко: он получается, если все строки матрицы выложить в одну строку.
Т. к. размеры Вашей матрицы = n строк по m элементов, то размер эквивалентного одномерного массива = nm элементов.
Тогда и предложение Андрея (см. выше) вполне реализуемо. Только я бы проходил по массиву не с помощью индекса, а с помощью указателя (в C++ возможен инкремент указателя).
По разумению память для массива лучше всего выделять динамически:
int * a = new int [n * m];
◉ Важно! Указатель a следует сохранить неизменным для того, чтобы можно было освободить память по delete [] a;
Можно воспользоваться вспомогательной переменной:
int * ap = a + 1;
Инициализация временного максимума:
int max = (*a);
Пересмотр временного максимума:
if (max < (*ap)) max = (*ap); // этот оператор должен быть в теле цикла!
А вот в заголовке цикла всё же придётся использовать целочисленный счётчик, чтобы ограничить количество итераций реальным размером массива.
Вас интересует, в какое место кода вставить блок поиска максимума. Я бы предложил Вам оформить блок поиска ввиде независимой функции, тогда Вам было бы проще выбрать точку вызова этой функции.
Александр Белевич
БЛОК ВВОДА МАТРИЦЫ ПРОСТ:
можно использовать два индекса с целью их применения в текстовых подсказках пользователю. Но перемещаться по массиву опять же с помощью временного указателя.
int * inp = a;
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j, inp++) {
cout << "A[" << i << "][" << j << "] = ";
cin >> (*inp);
}
БЛОК ВЫВОДА МАТРИЦЫ ПОЛУЧАЕТСЯ ИЗ БЛОКА ВВОДА ПУТЁМ НЕБОЛЬШИХ ТРАНСФОРМАЦИЙ.
можно использовать два индекса с целью их применения в текстовых подсказках пользователю. Но перемещаться по массиву опять же с помощью временного указателя.
int * inp = a;
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j, inp++) {
cout << "A[" << i << "][" << j << "] = ";
cin >> (*inp);
}
БЛОК ВЫВОДА МАТРИЦЫ ПОЛУЧАЕТСЯ ИЗ БЛОКА ВВОДА ПУТЁМ НЕБОЛЬШИХ ТРАНСФОРМАЦИЙ.
Александр Белевич
✓ ВСТРЕЧНЫЙ ВОПРОС!!!
Цитирую Вас: „Поиск мах (мин) элемента и его номера в матрице”.
Поясните, пожалуйста, что Вы имеете ввиду под номером в матрице? Ведь матрица по определению двумерная!
Цитирую Вас: „Поиск мах (мин) элемента и его номера в матрице”.
Поясните, пожалуйста, что Вы имеете ввиду под номером в матрице? Ведь матрица по определению двумерная!
Вот что я не могу понять: почему int max = INT_MIN? Вот кто это придумал? Почему не сделать int max = a[0][0] и не начинать с след. элемента? Незначительное, но ускорение.
А, лол, на двумерном не сработает. Да похер
А, лол, на двумерном не сработает. Да похер
Похожие вопросы
- Дайте совет пожалуйста.Скажите привычку чтобы запомнить коды и алгоритмы
- Скажите пожалуйста что не так с кодом?
- Программа на c++ не работает. Написать структуру и прочее. Подскажите, пожалуйста, что я делаю не так.
- Скажите пожалуйста, как решать данную задачу на с++(хотя бы просто алгоритм действий)
- Подскажите, пожалуйста, что значит эта строка n+=l?a[--l]-'0':0 c++?
- С++, функция tolower не работает с кириллицей... Подскажите пожалуйста можно ли это исправить? если можно то как?
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Написать фрагмент кода, где формируется двумерный массив, элементы которого могут быть тру и фолс
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Оптимизировать данный код
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,a[5][5];
cout<<"N="; //ввод количества строк
cin>>N;
cout<<"M="; //ввод количества столбцов
cin>>M;
cout<<"Ввод матрицы A \n";
//цикл по переменной i, в которой перебираем строки матрицы
for (i=0; i<N; i++)
//цикл по переменной j, в котором перебираем элементы внутри строки
for (j=0; j>a[i][j]; //ввод очередного элемента матрицы
cout<<"Матрица А \n";
for (i=0; i<N; i++)
{
//цикл по переменной i, в котором перебираем строки матрицы
for (j=0; j<M; j++)
cout<<a[i][j]<<"\t"; //вывод очередного элемента матрицы
cout.width(5); // ширина поля
cout<<endl; //переход на новую строку после вывода всех элементов строки
}
return 0;
}
Вот он
вот к примеру из твоего кода:
for (j=0; j>a[i][j]; //ввод очередного элемента матрицы