составить программу обмена местами максимального и минимального элементов главной диагонали матрицы. на языке либо в СИ или С++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int b[50][50];
int a, m, s, n, maxs=0, mins=0,minc=0, maxc=0;
cin>>n;
srand(time(NULL));
for (int c=0; c<n; c++)
{
for(int s=0; s<n; s++)
{
b[c][s]=rand()%100;
cout <<b[c][s]<<" ";
}
cout<<endl;
}
cout<<endl;
for (int c=0; c<n; c++)
{
for (int s=0; s<n; s++)
{
cout<<b[c][s]<<" ";
}
cout<<endl;
if (b[maxc][maxs]<b[c][s])
{
maxc=c;
maxs=s;
}
if (b[minc][mins]>b[c][s])
{
minc=c;
mins=s;
}
a=b[maxc][maxs];
b[maxc][maxs]=b[minc][mins];
b[minc][mins]=a;
}
}
C/C++
Помогите с информатикой. не могу найти ошибку в коде
#include < iostream >
using namespace std;
int main()
{
int b[50][50];
int n, max = 0, min = 0;
cin >> n;
srand(time(NULL));
//заполнение массива
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
b[c][s] = rand() % 100;
}
}
//вывод массива
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
cout << b[c][s] << " ";
}
cout << endl;
}
//поиск мин/макс по главной диагонали
for (int c = 0; c < n; c++)
{
if (b[c][c] > b[max][max]) max = c;
if (b[c][c] < b[min][min]) min = c;
}
//замена минимального и максимального элементов местами
swap(b[max][max], b[min][min]);
cout << endl;
//печать результата
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
cout << b[c][s] << " ";
}
cout << endl;
}
}
Нет необходимости хранить min и max отдельно для столбцов и строк, ибо в диагонали они связаны. Для главной диагонали с = s. По этой же причине нет смысла выполнять проверку на минимум и максимум в полном цикле. Достаточно одного цикла по строкам (столбцам).
Не принято в одном цикле заполнять массив и сразу же выполнять над ним какое либо действие, к примеру вывод. К тому же можно запутаться. У вас так и получилось. Переменная s используется после выхода из цикла s, из за чего невозможна сборка.
using namespace std;
int main()
{
int b[50][50];
int n, max = 0, min = 0;
cin >> n;
srand(time(NULL));
//заполнение массива
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
b[c][s] = rand() % 100;
}
}
//вывод массива
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
cout << b[c][s] << " ";
}
cout << endl;
}
//поиск мин/макс по главной диагонали
for (int c = 0; c < n; c++)
{
if (b[c][c] > b[max][max]) max = c;
if (b[c][c] < b[min][min]) min = c;
}
//замена минимального и максимального элементов местами
swap(b[max][max], b[min][min]);
cout << endl;
//печать результата
for (int c = 0; c < n; c++)
{
for (int s = 0; s < n; s++)
{
cout << b[c][s] << " ";
}
cout << endl;
}
}
Нет необходимости хранить min и max отдельно для столбцов и строк, ибо в диагонали они связаны. Для главной диагонали с = s. По этой же причине нет смысла выполнять проверку на минимум и максимум в полном цикле. Достаточно одного цикла по строкам (столбцам).
Не принято в одном цикле заполнять массив и сразу же выполнять над ним какое либо действие, к примеру вывод. К тому же можно запутаться. У вас так и получилось. Переменная s используется после выхода из цикла s, из за чего невозможна сборка.
при компиляции ошибки есть ?
вообще код нужно выладывать
на pastebin.com/
а сюда ссылку.
На ответах код не читается - потеря форматирования
вообще код нужно выладывать
на pastebin.com/
а сюда ссылку.
На ответах код не читается - потеря форматирования
Похожие вопросы
- Помогите найти ошибку в коде
- Помогите найти ошибки в коде на C++, не выводится последняя строчка
- Помогите найти ошибку в коде
- С++. Помогите найти ошибку в коде.
- Помогите найти ошибку в коде!!!
- Помогите найти ошибки в коде c++
- Помогите найти ошибку в коде
- Найдите ошибку в коде(С++)
- Найдите ошибки в коде пожалуйста, С++ Не работает
- Помогите найти ошибку.Где ошибка в коде не могу найти язык СИ
// добавлять