1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

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

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

    o1ps Гость

    Репутация:
    0
    Недавно начал изучать С и 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;
    }
    }
    }
    
    
    }
    Возникла проблема с реализацией упорядочивания. Сделал ее методом пузырька. Но основной вопрос - как организовать вывод на экран уже упорядоченного массива? Подскажите пожалуйста, бууд очень признателен.
     
  2. European

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

    o1ps Гость

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

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

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

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