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

Тема в разделе "Общие вопросы по С и С++", создана пользователем o1ps, 13 сен 2007.

Статус темы:
Закрыта.
  1. o1ps

    o1ps Гость

    Недавно начал изучать С и C++, так что пожалуйста не корите строго за непонимание, с новичками бывает B)
    Возникла небольшая проблема и я буду очень благодарен, если вы поможите ее решить.
    Существует задача : В массиве вещественных чисел {aij} (i=1,2,....n; j=1,2,...,m) найти наибольшие элементы по строкам, упорядочить их по убыванию и напечатать вместе с исходными индексами строк.
    Вот код того, что я смог сделать:
    Код (Text):
    #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;
    }
    }
    }


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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
  3. o1ps

    o1ps Гость

    Подсказали другую реализацию, но элементы упорядочиваются не по строкам. Подскажите как можно испраить, буду очень благодарен и признателен.
    Код (Text):
    #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;
    }
     
  4. o1ps

    o1ps Гость

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

    Код (Text):
    #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");
    }
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей