Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> структуры, помогите плиз ваще не понимаю 
:(
    Опции темы
max123
Дата 14.3.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



задача:Написать программу для ввода и хранения информации по 10 книгам с помощью структуры, содержащей три поля: автор, название, год издания.
В составленную программу добавить возможность поиска книги по автору.
В программу пункта 1 добавить возможность удаления книги (книг) с указанным годом издания.
 

Код

#include "stdafx.h"

#include <stdio.h>

int main(void)
{

struct book {
    char title[10];    
    char author[10];    
    int year;        
};

struct book lib;


printf("Aaaaeoa iaeiaiiaaiea eieae: ");
scanf("%s",lib.title);
printf("Aaaaeoa aaoi?a eieae: ");
scanf("%s",lib.author);
printf("Aaaaeoa aia ecaaiey eieae: ");
scanf("%d",&lib.year);



    return 0;
}



подскажите плиз как дальше делать?а то я вобще не шарю...


M
JackYF
Пользуемся кнопкой "Код". И не забываем проверять содержимое скопипастенного на наличие кракозябр :)


Это сообщение отредактировал(а) JackYF - 14.3.2008, 21:12
PM MAIL   Вверх
bsa
Дата 14.3.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Сначала нужно создать массив из этих структур на десять элементов.
Затем нужно решить, как определять есть книга в массиве или нет. самый простой способ - ввести переменную, которая будет определять сколько книг в массиве.
Когда книга добавляется, то ты ее вводишь в следующее место за последней книгой и увеличиваешь счетчик книг.
Когда книга удаляется, то последняя книга массива копируется на место удаленной (если, конечно, удалена была не последняя книга), а счетчик количества книг уменьшается на 1.
Для поиска осуществляешь последовательный перебор массива.
PM   Вверх
max123
Дата 15.3.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



если есть,выложите чтонибудь подобное...

PM MAIL   Вверх
Christoph
Дата 15.3.2008, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



хм....идею не понял...можно кодом? smile  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
bsa
Дата 15.3.2008, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Примерно так:
Код
#include <stdio.h>
#include <string.h>

#define BOOKS_MAX 10

struct Book_struct
{
     char author[20];
     char title[20];
     unsigned year;
};
typedef struct Book_struct Book;

void inputBook(Book *book)
{
    printf("Input book author: ");
    scanf("%20s", book->author);
    printf("Input book title: ");
    scanf("%20s", book->title);
    printf("Input year: ");
    scanf("%u", &book->year);
}

int showMenu(void)
{
     int result = -1;
     do {
        printf("\n1. Input book\n");
        printf("2. Print books\n");
        printf("3. Find book by author\n");
        printf("4. Delete book by year\n");
        printf("\n0. Quit\n\n");
        printf("Make your selection: ");
        scanf("%d", &result);
     }while((result >= 0) && (result < 5))
     return result;
}

void printBook(const Book *book)
{
    printf("Title: %s\n", book->title);
    printf("Author: %s\n", book->author);
    printf("Year: %u\n\n", book->year);
}

void findBooksByAuthor(const Book *books, unsigned count)
{
     char author[20];
     printf("Input author's name: ");
     scanf("%20s", author);
     while(count) {
         if ( strcmp(books->author, author) == 0)
                 printBook(books);
         ++books;
         --count;
     }
}

unsigned deleteBooksByYear(Book *books, unsigned count)
{
     unsigned year;
     unsigned i;
     printf("Input year: ");
     scanf("%u", &year);
     for(i = 0; i < count; ++i) {
         if ( books[i].year == year) {
              if (i + 1 < count)
                   memmove(books + i, books + count - 1, sizeof(*book));
              --count;
              if (--i == 0)
                  break;
         }
     }
     return count;
}

int main()
{
    Book books[BOOKS_MAX];
    unsigned books_count = 0;
    unsigned i;
    while(1) {
         switch( showMenu() ) {
             case 0:
                 return 0; /* выход из программы */
             case 1:
                 if (books_count < BOOKS_MAX) {
                      inputBook(books + books_count);
                      ++books_count;
                 } else
                     printf("Already entered maximum number of books\n");
                 break;
             case 2:
                 for(i = 0; i < books_count; ++i)
                     printBook(book + i);
                 break;
             case 3:
                 findBooksByAthor(books, books_count);
                 break;
             case 4:
                 books_count = deleteBooksByYear(books, books_count);
                 break;
         }
    }
    return 0;
}

PM   Вверх
max123
Дата 15.3.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



bsa большое пасиба smile 
PM MAIL   Вверх
max123
Дата 15.3.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2008

Репутация: нет
Всего: нет



тока тёта он не работает...или я чёто не то делаю?
PM MAIL   Вверх
bsa
Дата 15.3.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



max123, думаю, ты должен отладить ее - я ее даже не компилировал.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.