Другие языки программирования и технологии
Язык С. Как поменять местами элементы???
Вот программа: // 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; } Пожалуйста, помогите, мне сегодня сдавать...
Разбираться в твоей программе не буду, тем паче что движок сайта покоробил ее текст, но алгоритм совершенно ясен: находим максимальный отрицательный и минимальный положительный элементы, каждый раз при нахождении нового значения максимума или минимума запоминаем их индексы. После этого прохода по массиву у нас останутся индексы элементов, у которых надо обменять значения. Обменяем их и возрадуемся :).
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;
}
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;
}
Похожие вопросы
- ПОМОГИТЕ ОЧЕНЬ НУЖНА ПОМОЩ Поменять местами элементы, расположенные симметрично относительно побочной диагонали
- . Дан массив из N чисел. Поменять местами элементы, равноудаленные от произвольно задаваемого К-го элемента.
- поменяйте местами наибольший элемент данного одномерного массива с первым элементом и найменьший с последним ( язык си)
- Поменять местами первый и последний отрицательные элементы массива B (18). (Язык Си) (Язык Си)
- Написать в С++.В заданной матрице A[1:N,1:M] поменять местами следующие два элемента:
- кто может сделать прогу в C++ которая поменяет местами в каждом столбце минимальный и максимальные элементы в матрице??
- кто-нибудь знает как поменять местами столбцы с максимальным и минимальным элементами матрицы (в паскале), очень нужно..
- Как поменять местами минимальный и первый элемент матрицы в паскале?
- Поменять местами 2 Nod'a в TreeView C# (Visual Studio)
- Как поменять местами столбцы в матрице. C++