Загрузка...

Задание на C

Тема в разделе C/C++ создана пользователем Muha665161 18 дек 2022. 200 просмотров

  1. Muha665161
    Muha665161 Автор темы 18 дек 2022 67 3 дек 2019
    Короче есть структура данных: "Название,начало,конец,вид,сложность,время" :

    Солнечный,Самара,Москва,водный,4,29
    Южный,Саратов,Адлер,горный,3,23
    Северный,Саратов,Саратов,пеший,1,13
    Западный,Саратов,Тольятти,водный,2,5
    Восточный,Саратов,Париж,пеший,5,50
    Июльский,Саратов,Тольятти,водный,3,30

    Нужно упорядочить данные во виду и времени. Как это сделать?
     
  2. Quelinelha
    Quelinelha 18 дек 2022 0 26 сен 2018
    Bubble sort пробуй
     
  3. KinetiK
    KinetiK 18 дек 2022 20 066 18 янв 2020
    C
    for (int i = 1; i < arr_size; i++) {
    for (int j = 0; j < arr_size - i; j++) {
    if (arr[j].time > arr[j+1].time){
    t_struc temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }
    }
    for (int i = 1; i < arr_size; i++) {
    for (int j = 0; j < arr_size - i; j++) {
    if (strcmp(arr[j].type, arr[j+1].type) > 0){
    t_struc temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }
    }
     
    1. vtlstolyarov
      stincs, есть смутное подозрение что решение неправильное
  4. olmovc
    olmovc 1 янв 2023 0 1 янв 2023
    C
    /*Короче есть структура данных: "Название,начало,конец,вид,сложность,время"
    Нужно упорядочить данные во виду и времени. Как это сделать?
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    typedef struct
    {
    char * mname;
    char * mbegin;
    char * mend;
    char * mkind;
    unsigned int mcomplicacy;
    unsigned int mtime;
    } mydata;

    int compare( const void *arg1, const void *arg2 );
    void print_struct(mydata data[], int n);

    int main()
    {
    mydata mdata[6] = {{"name1","begin1", "end1", "kind3",5,44},
    {"bgd", "NewYork","end2", "kind2",0,4 },
    {"name3","begin3", "Alabama","kind3",9,24},
    {"name4","begin4", "Rome", "kind2",2,94},
    {"name6","begin6", "tertt", "kind6",6,5},
    {"name5","begin5", "end5", "kind3",7,14}
    };

    int size = sizeof(mdata) / sizeof(mdata[0]);
    printf("size = %d\n",size);
    print_struct(mdata,6);
    printf("\n---------------------\n");
    /* Sort remaining args using Quicksort algorithm: */
    qsort( (void *)mdata, (size_t)size, sizeof( mdata[0] ), compare );
    print_struct(mdata,6);
    return 0;
    }

    void print_struct(mydata data[], int n)
    {
    for (int i = 0; i < n; i++)
    printf("%s,%s,%s,%s,%d,%d\n",
    data[i].mname,data[i].mbegin,data[i].mend,data[i].mkind,data[i].mcomplicacy,data[i].mtime);
    }

    int compare( const void *v1, const void *v2 )
    {
    const mydata *p1 = (mydata *)v1;
    const mydata *p2 = (mydata *)v2;
    int rc;
    if ((rc = strcmp(p1->mkind, p2->mkind)) < 0) //(p1->mkind < p2->mkind)
    return -1;
    else if (rc > 0)
    return +1;
    else if (p1->mtime > p2->mtime)
    return -1;
    else if (p1->mtime < p1->mtime)
    return +1;
    else
    return 0;
    }
     
Загрузка...
Top