Сортировка массива (реализация вывода)

  • Автор темы o1ps
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

o1ps

Гость
#1
Недавно начал изучать С и C++, так что пожалуйста не корите строго за непонимание, с новичками бывает B)
Возникла небольшая проблема и я буду очень благодарен, если вы поможите ее решить.
Существует задача : В массиве вещественных чисел {aij} (i=1,2,....n; j=1,2,...,m) найти наибольшие элементы по строкам, упорядочить их по убыванию и напечатать вместе с исходными индексами строк.
Вот код того, что я смог сделать:
Код:
#include <stdio.h> 
main()
{
const n=4;

bool p; 
int i, j, l, ll, jj;
float baf, k, a[n][n], b[n];
char otw;
begin: i=0;
printf ("Vvedite matricu razmernosti %d",n), printf(":\n");

while (i<=n-1)
{
for (j=0; j<=n-1; j++)
{
printf (")(%d", j+1), printf (")=");
scanf ("%f", &a[i][j]);
};
i++;
};
p=0;
l=0;
ll=0;
jj=0;
for (i=0; i<=n-1; i++)
{
printf ("\n");
{
for (j=0; j<=n-1; j++)
printf ("%f", a[i][j]), printf (" ");
};
}

int STROKA = 0; 
bool flag = true;
float buf_temp, row;

while(flag)
{

flag = false;
for (i=0;i<row-1;i++)
{
if(a[STROKA][i] > a[STROKA][i+1])
{
flag = true;
buf_temp = a[STROKA][i+1];
a[STROKA][i+1] = a[STROKA][i];
a[STROKA][i] = buf_temp;
}
}
}


}
Возникла проблема с реализацией упорядочивания. Сделал ее методом пузырька. Но основной вопрос - как организовать вывод на экран уже упорядоченного массива? Подскажите пожалуйста, бууд очень признателен.
 
O

o1ps

Гость
#3
Подсказали другую реализацию, но элементы упорядочиваются не по строкам. Подскажите как можно испраить, буду очень благодарен и признателен.
Код:
#include <stdio.h>

#define N 4

int main()
{

int arr[N][N],i,j,tmp;

printf("Введите матрицк размера %dx%d\n",N,N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("n(%d,%d)=",i,j);
scanf("%d",&(arr[i][j]));
}

for(i=0;i<N*N;i++)
for(j=0;j<N*N;j++)
{
if(arr[i/N][i-i/N*N]>arr[j/N][j-j/N*N])
{
tmp=arr[i/N][i-i/N*N];
arr[i/N][i-i/N*N]=arr[j/N][j-j/N*N];
arr[j/N][j-j/N*N]=tmp;
}

}

printf("Результат\n:");

for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("n(%d,%d)=%d\t",i,j,arr[i][j]);		
}
printf("\n");
}

//while(!kbhit());
return 0;
}
 
O

o1ps

Гость
#4
Подскажите, пожалуйста, где кроется ошибка в коде. Массив вещественных чисел выводит, но не упорядочивает. Помогите пожалуйста, буду очень благодарен.

Код:
#include <stdio.h>


void main()

{
int i, j, minx=0, miny=0, k=0, l=0;
float ar[200][200], pr_row=1, pr_col=1;
// îïðåäåëÿåì ïåðåìåííûå

printf ("Vvedite razmernost massiva (x, y):\n");
scanf("%d %d", &i, &j);
// ââîäèì ðàçìåðíîñòü ìàññèâà

printf("I=%d\nJ=%d\n", i, j);
// âûâîäèì å¸ ïîëüçîâàòåëþ




for(k=0; k<i; k++) {
for (l=0; l<j; l++) {
printf("Vvedite element [%d; %d]: ", k, l);
scanf("%f", &ar[k][l]);
}
}
// ââîäèì ýëåìåíòû ìàòðèöû

for(k = 0;k < i;k++){
for(l = 0;l<j;l++)
printf("%f \t",ar[k][l]);
printf("\n\n");
}


printf("\n\n");
bool flag = true;

float temp;

// ************************************************

while(flag)
{
flag = false;
for(l = 0; l < j;l++){
for(k = 0; k < i - 1;k++)
if (ar[l][k] < ar[l][k + 1]) 
{
flag = true;
temp = ar[k][l];
ar[k][l] = ar[k][l + 1];
ar[k][l + 1] = temp;
}
}	
}
for(k = 0;k < i;k++)
{
for(l = 0;l < j;l++)
printf("%f \t",ar[k][l]);
printf("\n\n");
}
}
 
Статус
Закрыто для дальнейших ответов.