1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

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

Структуры и масивы

Тема в разделе "Вопросы новичков и не только", создана пользователем dimon131, 20 дек 2010.

  1. dimon131

    dimon131 Member

    Репутация:
    0
    Регистрация:
    8 дек 2010
    Сообщения:
    13
    Симпатии:
    0
    Дан масив который содержит данные про книги: фамилия автора, год издания, название книги.
    Вывести на экран в порядке возрастания года информацию про книги которые начинаются с "Inf". Если таких книг нет - сообщить об этом


    Алгоритм:
    Код:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #define N 5
    int main()
    {
    int i;
    char A[N];
    char *P;
    typedef struct danni			//Обьявление структуры
    {
    char fam[20];	//фамилия автора
    int god;		 //год издания
    char kniga[120]; //название книги
    }
    vedomost;
    for(i=0; i<N; i++)				 //заполнение масива
    {
    gets(vidomist.fam);
    scanf("%d",&vedomost.rik);
    gets(vedomost.kniga);
    }
    P=strstr("Inf",vedomost.kniga);		//поиск строки "Inf" в строке "книги"
    
    if(P!=NULL)			 //если такая строка существует, то мы переходим в конец строки "Inf" и продолжаем искать дальше
    {
    P+=3;
    P=strstr("Inf",vedomost.kniga)
    }
    else
    printf("Таких книг нет"):
    
    getch();
    return 0;
    }
     
  2. lazybiz

    lazybiz Well-Known Member

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    А что такое vedomost.rik и зачем нужен цикл?
     
  3. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    ну, не успел чел перевести на русский язык, волна русификации у нас только начинается :bequiet:
     
  4. ierofant

    ierofant Гость

    Репутация:
    0
    Если бы только это... У vedomost вообще нет никакого rik, по-крайней мере в данном коде.
     
  5. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
  6. ierofant

    ierofant Гость

    Репутация:
    0
    OKEN,
    Да, в украинском я не силён, но я бы вообще посоветовал имя year, для этой переменной, раз уж зашёл разговор.
     
  7. ierofant

    ierofant Гость

    Репутация:
    0
    Код:
    #include <stdio.h>
    #include <string.h>
    #define N 5
    
    typedef struct
    {
    char autor [20];
    int year;
    char book_name [120];
    } BookInfo;
    
    int main ()
    {
    BookInfo list [N];
    for (int i = 0; i < N; i++)
    {
    printf ("Автор: ");
    scanf ("%s", list [i].autor);
    
    printf ("Год издания: ");
    scanf ("%d", &list [i].year);
    
    printf ("Название: ");
    scanf ("%s", list [i].book_name);
    
    printf ("\n");
    }
    
    BookInfo* plist [N];
    int n = 0;
    for (int i = 0; i < N; i++)
    {
    char *p = strstr (list [i].book_name, "Inf");
    if (p != NULL && (p == list [i].book_name))
    {
    plist [i] = &(list [i]);
    n++;
    }
    }
    
    if (n == 0) printf ("Таких книг нет\n");
    else
    {
    for (int i = 0; i < n - 1; i++)
    {
    int ind = i;
    for (int ii = ind + 1; ii < n; ii++)
    if (plist [ii]->year < plist [ind]->year) ind = ii;
    
    BookInfo *temp = plist [i];
    plist [i] = plist [ind];
    plist [ind] = temp;
    }
    for (int i = 0; i < n; i++) printf ("%s\t%d\t%s\n", plist [i]->autor, plist [i]->year, plist [i]->book_name);
    }
    return 0;
    }
     
Загрузка...

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