Другие языки программирования и технологии

Язык С. Как поменять местами элементы???

Вот программа: // Lab5. Задача 1.cpp : Defines the entry point for the console application. // Задан двумерный массив float a[4][5]. Поменять местами max среди отрицательных элементов и min среди положительных #include "stdafx.h" #include "conio.h" int _tmain(int argc, _TCHAR* argv[]) { float a[4][5],MaxOtr,MinPol, temp; int i,j,k1,k2,l1,l2; MaxOtr=-1.0e20; MinPol=1.0e20; k1=0; k2=0; l1=0; l2=0; temp=0; printf("Vvedite ishodnyj massiv: \n"); for(i=0;i<4;i++) {for(j=0;j<5;j++) {scanf("%f", &a[j]); } } printf("\n"); for(i=0;i<4;i++) {for(j=0;j<5;j++) {if(a[j]>0 && a[j]<minpol)>[j]; k1=i; l1=j; } if(a[j]<0 && a[j]>MaxOtr) { MaxOtr=a[j]; k2=i; l2=j; } } for(i=0;i<4;i++) {for(j=0;j<5;j++) temp=MaxOtr; MaxOtr=MinPol; MinPol=temp; } printf("Konechnyj massiv:\n"); for(i=0;i<4;i++) {for(j=0;j<5;j++) {printf("%3.1f ", a[j]); } printf("\n"); } } getch(); return 0; } Пожалуйста, помогите, мне сегодня сдавать...
Mher Rimyan
Mher Rimyan
171
Разбираться в твоей программе не буду, тем паче что движок сайта покоробил ее текст, но алгоритм совершенно ясен: находим максимальный отрицательный и минимальный положительный элементы, каждый раз при нахождении нового значения максимума или минимума запоминаем их индексы. После этого прохода по массиву у нас останутся индексы элементов, у которых надо обменять значения. Обменяем их и возрадуемся :).
Владимир Степанец
Владимир Степанец
22 474
Лучший ответ
float a[4][5];
int iMax = -1, jMax = -1, iMin = -1; jMin = -1; // индексы элементов, пока не найдены = -1

for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 5; j++)
{
if ( a[ i ][ j ] < 0 && ( iMax == -1 || jMax == -1 || a[ i ][ j ] > a[ iMax ][ jMax] )) { iMax = i, jMax = j; }
if ( a[ i ][ j ] > 0 && ( iMin == -1 || jMin == -1 || a[ i ][ j ] < a[ iMin ][ jMin] )) { iMin = i, jMin = j; }
}
}

if (iMax < 0 || jMax < 0 || iMin < 0 || jMin < 0)
{
prinf("Не найдена требуемая пара\n");
}
else
{
float t = a[iMin][jMin];
a[iMin][jMin] = a[iMax][jMax];
a[iMax][jMax] = t;
}
Mansur Musaev
Mansur Musaev
21 360

Похожие вопросы