Új hozzászólás Aktív témák

  • skylaner

    senior tag

    válasz Geresics #3932 üzenetére

    Nem tudom, mennyire kell "hülye biztosra" írni a programot, de van benne 1-2 ellenőrzés.
    Ha valami nem világos kérdezz nyugodtan.

    #include <stdio.h>

    typedef struct mydate
    {
    int year;
    int month;
    int day;
    } mydate_t;

    typedef struct book
    {
    char title[30];
    char writer[30];
    mydate_t published_date;
    } Book_t;

    void print_book_info(Book_t book)
    {
    printf("Konyv cime: %s",book.title);
    printf("Konyv szerzoje: %s",book.writer);
    printf("Konyv kiadasi datuma: %d-%d-%d\n",book.published_date.year,book.published_date.month,book.published_date.day);
    }

    void input_stream_cleaner()
    {
    char c;

    while (c != '\n' && c != EOF) { c = getchar(); }
    }

    int main(int argv,char* argc[])
    {
    Book_t books[10];
    int i,books_count,min;
    int min_years[10], min_months[10];
    int min_years_count,min_months_count,min_day_idx;

    printf("Mennyi konyvet akarsz tarolni:");
    scanf("%d",&books_count);
    input_stream_cleaner();
    if ((books_count > 10) || (books_count < 1))
    {
    printf("Hiba! Minimum 1 es Maximum 10 kony adatait tudom tarolni!\n");
    return 0;
    }
    for(i=0;i<books_count;i++)
    {
    printf("%d. konyv cime:",i+1);
    fgets(books[i].title,30,stdin);
    printf("%d. konyv szerzoje:",i+1);
    fgets(books[i].writer,30,stdin);
    printf("%d. konyv kiadasi datuma (YYYY-MM-DD):",i+1);
    if (scanf("%d-%d-%d",&(books[i].published_date.year),&(books[i].published_date.month),&(books[i].published_date.day)) != 3)
    {
    printf("Hibas datum formatum!\n");
    return 0;
    }
    input_stream_cleaner();
    }
    /*** Legkisebb ev keresese ***/
    min = books[0].published_date.year;
    for(i=1;i<books_count;i++)
    {
    if (books[i].published_date.year < min) min = books[i].published_date.year;
    }
    /*** Legkisebb evbol van-e tobb ***/
    min_years_count=0;
    for(i=0;i<books_count;i++)
    {
    if (books[i].published_date.year == min)
    {
    min_years[min_years_count]=i; //books tomb indexet taroljuk
    min_years_count++;
    }
    }
    if (min_years_count < 2) print_book_info(books[min_years[0]]);
    else /*** Tobb konyv azonos evvel ***/
    {
    /*** Legkisebb honap keresese ***/
    min = books[min_years[0]].published_date.month;
    for(i=1;i<min_years_count;i++)
    {
    if (books[min_years[i]].published_date.month < min) min = books[min_years[i]].published_date.month;
    }
    /*** Legkisebb honapbol van-e tobb ***/
    min_months_count=0;
    for(i=0;i<min_years_count;i++)
    {
    if (books[min_years[i]].published_date.month == min)
    {
    min_months[min_months_count]=min_years[i];
    min_months_count++;
    }
    }
    if (min_months_count < 2) print_book_info(books[min_months[0]]);
    else /*** Tobb konyv azonos evvel es honappal ***/
    {
    /*** Legkisebb nap keresese ****/
    /*** Tobb azonos nap eseten a legeloszor bei­rt az eredmeny ***/
    min = books[min_months[0]].published_date.day;
    min_day_idx = 0;
    for(i=1;i<min_months_count;i++)
    {
    if (books[min_months[i]].published_date.day < min)
    {
    min = books[min_months[i]].published_date.day;
    min_day_idx = i;
    }
    }
    print_book_info(books[min_months[min_day_idx]]);
    }
    }

    return 0;
    }

Új hozzászólás Aktív témák