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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2017, 13:16   #1
quadrolol
 
Аватар для quadrolol
 
Регистрация: 23.09.2017
Сообщений: 4
Смущение В матрице поменять строки с наибольшим и наименьшим элементом. Элементы найдены, строки тоже:

Язык "Си"!
В матрице поменять строки с наибольшим и наименьшим элементом. Элементы найдены, строки тоже:
А чтобы заменить по идее в итоговом цикле нужно просто заменить
идентификатор строки с наибольшим на идентификатор строки с наименьшим элементом и обратно. А после печати элементов строки обратно поменять. в итогепечатает всякую ерунду а не массив
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 30

int main(){
int mas[5][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int mac[N],man[N],mag[N],max,min,p,m,o,dop,maxstr,minstr;

printf ("isxodniy massiv: \n");
for(p=0;p<5;p++){
for(m=0;m<5;m++)
printf("%i ",mas[p][m]);
printf ("\n");
}
dop=mas[0][0];
for(p=0;p<5;p++)
{
for(m=0;m<5;m++)
    {


    if (mas[p][m]>dop)
        {max=mas[p][m];
        maxstr = p;}
    else {min=mas[p][m];
        minstr = p;}

    }
}
printf ("\n");
printf ("itogovi massiv: \n");
for(p=0;p<5;p++)
   {
for(m=0;m<5;m++)
 {
   if (p == maxstr)
        {p=minstr;printf("%i ",mas[p][m]);printf ("\n");}

    if (p == minstr)
        {p=maxstr;printf("%i ",mas[p][m]);printf ("\n");}
    else
    printf("%i ",mas[p][m]);printf ("\n");;
 }
 {
   if (p == maxstr)
        {p=minstr;}
    if (p == minstr)
        {p=maxstr;}
    }

}
printf ("\n");
printf ("\n");
printf("max = %i\n",max);
printf("min = %i\n",min);
printf ("\n");
printf ("\n");
printf("maxstr = %i\n",maxstr);
printf("minstr = %i\n",minstr);
printf ("\n");
getch();
return 0;
}

Последний раз редактировалось quadrolol; 24.09.2017 в 13:18.
quadrolol вне форума Ответить с цитированием
Старый 24.09.2017, 14:47   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от quadrolol Посмотреть сообщение
Код:
if(mas[p][m] > dop)
{
    max=mas[p][m];
    maxstr = p;
}
else
{
    min=mas[p][m];
    minstr = p;
}
- вот это неправильное нахождение максимального и минимального элемента, потому что нужно находить вот так: переменная dop вообще не нужна, нужны переменные max и min:
Код:
max = mas[0][0];
min = mas[0][0];
for(p=0; p<5; p++)
{
for(m=1; m<5; m++)
    {
        if(mas[p][m] > max)
        {
            max = mas[p][m];
            maxstr = p;
        }
        if(mas[p][m] < min)
        {
            min = mas[p][m];
            minstr = p;
        }
    }
}
Ваша идя с заменой номеров строк при выводе - хорошая, но только потом ничего не надо менять - само поменяется автоматически.
Cuprum5 вне форума Ответить с цитированием
Старый 24.09.2017, 14:54   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от quadrolol Посмотреть сообщение
if(p == maxstr)
{
p = minstr;
printf("%i ", mas[p][m]);
printf ("\n");
}
if(p == minstr)
{
p=maxstr;
printf("%i ",mas[p][m]);
printf ("\n");
}
- вот это явно бредовый код. Если p == maxstr, то он становится minstr и потом, после печати, сразу же становится обратно maxstr и печатает еще раз элемент, который расположен в этом же столбце. Проработайте лучше программу. А, печать Вы убрали, но там все равно элемент конвертируется 2 раза, как я описал. Вот я изобрел способ менять строки при выдаче результата на экран:
Код:
for(p=0; p<5; p++)
{
    for(m=0;m<5;m++)
    {
        if(p == maxstr)        
            printf("%i ", mas[minstr][m]);
        if(p == minstr)        
            printf("%i ", mas[maxstr][m]);
    }
    printf("\n");
}

Последний раз редактировалось Cuprum5; 24.09.2017 в 15:24. Причина: Добавил код про замену строк при выводе.
Cuprum5 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В матрице поменять местами строки с max элементом и min элементом: объясните код, где какие действия выполняются (Паскаль). КонстантинКонстант Помощь студентам 0 08.01.2014 13:38
скалярное произведение строки с наибольшим элементом на столбец с наименьшим элементом Adika Помощь студентам 4 03.11.2011 19:12
В целочисленной квадратной матрице наибольший элемент каждой строки поменять местами с элементом главной диагонали DesignGenius C# (си шарп) 0 18.10.2011 20:22
скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом katya36 Помощь студентам 15 20.12.2008 17:48