Здравствуйте, помогите с заданием/ (С++) Написать программу,меняющую местами в...

0 голосов
53 просмотров

Здравствуйте, помогите с заданием/ (С++) Написать программу,меняющую местами в произвольной квадратной матрице столбец, содержащий минимальный элемент и строку,содержащую максимальный элемент матрицы. Написать функции: -заполнения двумерного массива случайными числами из диапазона [-200;+200] ; -вывода двумерного массива; -поиска индексов минимального и максимального элемента матрицы; -обмена значениями элементов произвольного столбца и произвольной строки квадратной матрицы.


Информатика (149 баллов) | 53 просмотров
0

Если бы в задании было произвольной строки и столбца(то есть они равны) - то это понятно. НО тут указано произваольная строка и произвольный столбец

0

В самом начале ведь сказано, что мы переставляем числа между столбцом с МИНИМАЛЬНЫМ числом и строкой с МАКСИМАЛЬНЫМ числом

0

Господи. Мой косяк

0

Сейчас быстро исправим

0

А стоп. Что это мне дает.

0

Ничего. Либо я просто действительно не понимаю, что требуется. Ведь может возникнуть такая ситуация, что столбец будет допустим первый, а строка четвертая. И опять - что ставить на пересечении

0

По логике, число, на котором они пересекаются, нужно оставить на месте, а остальные значения переставить

0

Это если рассматривать ситуацию, когда ты меняешь равный по счету столбец со строкой. Тогда у столбца, тот элемент на котором они пересекаются, по счету такой же как и у строки. (Мне интересно, я вообще понятно объясняю, или ничего не понятно?)

0

Вот, расчерчи сейчас матрицу, допустим 4 на 4. Произвольные числами. и попробуй поменять 1 строку с 3 столбцом

0

Тогда элемент A(1.3) остается на месте, а оставшиеся значения в стобце и строке можно переставить на произвольные места

Дан 1 ответ
0 голосов

#include "iostream"

#include "stdlib.h"

#include "locale.h"

#include "time.h"

using namespace std;

void create(int** arr, int n);

void show(int** arr, int n);

void max_quarter(int** arr, int n);

void find_min_max(int** arr, int n, int &pos_max_row, int &pos_min_col);

void change_row_column(int** arr, int n, int &pos_max_row, int &pos_min_col);

int main()

{

srand(time(NULL));

setlocale(LC_ALL, "russian");

bool flag = false;

int pos_max_row = 0, pos_min_col = 0;

   int n=0;

int answer = 100;

int **A = 0;

A = (int**)malloc(n*sizeof(int));

if(!A)

{

    int** A = (int**)malloc(n*sizeof(int));  

}

while (answer != 0)

{

 system("cls");

 cout

 cout

 cout

 cout

 cout

 cout

 cout

 while (!(cin >> answer)) {     //делаем проверку на ввод букв символов итд  

 cout

 cin.clear();

 fflush(stdin);

 }

 system("cls");

 switch (answer)

 {

 case 1:

 {  

     cout

     while (!(cin >> n))

        {     //делаем проверку на ввод букв символов итд  

 cout

 cin.clear();

 fflush(stdin);

     }

        create(A, n);

 cout

 system("pause");

 break;

 }

 case 2:

 {

 if(n != 0){

   cout

   show(A, n);

 }else cout

 system("pause");

 break;

 }

 case 3:

 {

 if(n != 0){

   flag = true;

   cout

   find_min_max(A,n, pos_max_row, pos_min_col);

 }else cout

 system("pause");

 break;

 }

 case 4:

 {

 if(flag == true)

 {

   cout

   change_row_column(A,n, pos_max_row, pos_min_col);

 }else cout

 system("pause");

 break;

 }

 system("pause");

 return 0;

 }

}

}

void create(int **arr, int n)

{

for(int i=0; i

{

    arr[i]=(int*)malloc(n*sizeof(int));

    if(!arr[i])

    {

     arr[i]=(int*)malloc(n*sizeof(int));

    }

 for(int j=0; j

 {

 arr[i][j]= -200 + rand()%401;

 }  

}

}

void show(int **arr, int n)

{

for (int i=0; i

{

 for(int j=0; j

 {

 printf("%7d", arr[i][j]);

 }

 printf("\n");

}

}

void find_min_max(int** arr, int n, int &pos_max_row, int &pos_min_col){

int min = arr[0][0];

int max = arr[0][0];

for(int i = 0; i < n; i++){

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

 if(arr[i][j] > max)

 {

   max = arr[i][j];

   pos_max_row = i;

 }

 if(arr[i][j] < min)

 {

   min = arr[i][j];

   pos_min_col = j;

 }  

 }

}

cout

cout

}

void change_row_column(int** arr,int n, int &pos_max_row, int &pos_min_col){

cout

show(arr,n);

cout

for(int i = 0; i < n; i++){

 int temp = arr[i][pos_min_col];  

 arr[i][pos_min_col] = arr[pos_max_row][i];

 arr[pos_max_row][i] = temp;

}

cout

show(arr,n);

}


(3.4k баллов)
0

Оооой, компилятор ругается на это решение, там за 200 ошибок при построении

0

У меня все отлично компилируется

0

В чем вы открываете?

0

Открываю в Visual Studio 2012

0

#include "stdafx.h" в начале прописали?

0

Я работаю в dev-c++. Тогда указывали бы свою платформу