Загрузка...

Нужна помощь с задачей

Тема в разделе C/C++ создана пользователем EvdokiaA 19 ноя 2022. 163 просмотра

  1. EvdokiaA
    EvdokiaA Автор темы 19 ноя 2022 1 25 ноя 2019
    Первые десять элементов массива a[30] отсортировать в порядке возрастания, а последние десять в порядке убывания

    Препод сказал изменить что-то в циклах, но догнать не могу

    Код
    int main ()
    {
    srand(time(NULL));
    const int size= 30;
    int a[size];
    for (int i = 0; i < size; i++){
    a[i] = rand() % 100;
    }

    for (int i = 0; i < size; i++){
    cout << a[i] << " ";
    };

    int min;
    for (int i = 0; i < 10; i++){
    min=i;
    for (int j = i+1; j < size; j++){
    if (a[i] > a[j]){
    min=j;
    int buf = a[i];
    a[i] = a[min];
    a[min] = buf;

    }
    }
    }

    for(int i = 20;i<30;i++){
    for(int j = i+1;j<size;j++){
    if(a[i]<a[j]){
    int buf = a[i];
    a[i]=a[j];
    a[j]=buf;
    }
    }
    }

    cout << endl << endl;

    for (int i = 0; i < size; i++){
    cout <<a[i] << " ";


    }

    }
     
    19 ноя 2022 Изменено
  2. LVV
    прикрепи полный код

    [IMG]
    у тебя неверная логика сортировки.
    алгоритм такой: берешь первые 10 элементов и сортируешь, в твоем случае берутся больше почему то.
    и последние 10 элементов.

    код ниже прикреплю
     
    19 ноя 2022 Изменено
    1. EvdokiaA Автор темы
      LVV, Изменил
  3. LVV
    C
    #include <bits/stdc++.h>

    using namespace std;

    int main ()
    {
    srand(time(NULL));
    const int size = 30;
    int a[size];
    for (int i = 0; i < size; i++){
    a[i] = rand() % 100;
    }

    for (int i = 0; i < size; i++){
    cout << a[i] << " ";
    };

    int min;
    for (int i = 0; i < 10; i++){
    min=i;
    for (int j = i+1; j < 10; j++){
    if (a[i] > a[j]){
    min=j;
    int buf = a[i];
    a[i] = a[min];
    a[min] = buf;

    }
    }
    }

    for(int i = 20;i<30;i++){
    for(int j = i+1;j<30;j++){
    if(a[i]<a[j]){
    int buf = a[i];
    a[i]=a[j];
    a[j]=buf;
    }
    }
    }

    cout << endl << endl;

    for (int i = 0; i < size; i++){
    cout <<a[i] << " ";


    }

    return 0;
    }
    у тебя проблема в сортировке ты шел до сайза, нужно до 10 и с 20 по 30.
     
    1. LVV
Top
Загрузка...