Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

diaz85

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

#include <alloc.h>
#include <stdio.h>
#include <string.h>
#include <process.h>
#include <mem.h>
 
typedef struct
{
int uid;
char author[100];
char genre[50];
char date[11];
char cover[20];
}  book;
 
typedef struct
{
char fio[100];
char date[11];
} indication;
 
 
void add_new_book(book* b, indication* i, int cur_n)
{
   b[cur_n].uid=cur_n;
 
   printf("\nVvedite imya avtora:\n");
   scanf("%s", &(*(b+cur_n)->author));
 
   printf("Vvedite janr:\n");
   scanf("%s", &(*(b+cur_n)->genre));
 
   printf("Vvedite datu (naprimer 01.01.01):\n");
   scanf("%s", &(*(b+cur_n)->date));
 
   printf("Vvedite pereplet:\n");
   scanf("%s", &(*(b+cur_n)->cover));
 
   printf("\nZapolnite kartochku vidachi! Esli kniga vidana to zapolnite vse polya, esli ne vidana, to v pole FIO postavte *\n");
   printf("Vvedite FIO:\n");
   scanf("%s", &(*(i+cur_n)->fio));
   if (!strstr(&(*(i+cur_n)->fio), "*"))
        {
       printf("Vvedite datu:\n");
    scanf("%s", &(*(i+cur_n)->date));
    }
};
 
void print_all(book* b, indication* i, int cur_n)
{
int j=0;
while(j<=cur_n)
  {
   printf("\n*****Kniga nomer %d*****", b[j].uid);
   printf("\nAvtor - %s\n", b[j].author);
   printf("Janr - %s\n", b[j].genre);
   printf("Data - %s\n", b[j].date);
   printf("Pereplet - %s\n", b[j].cover);
   printf("*****Kartochka vidachi*****");
   if (!strstr(&(*(i+j)->fio), "*"))
    {
       printf("\nNahoditsya u - %s\n", i[j].fio);
    printf("Data - %s\n", i[j].date);
        printf("###############\n\n");
    }
   else
   printf("\nDannaya kniga ne vidana.\n");
   j++;
  }
};
 
void give_book(book* b, indication* i, int cur_n)
{
char fl;
int j=0, u_num;
printf("\nVvedite unikalniy nomer knigi\n");
scanf("%d", &u_num);
 
while (u_num!=b[j].uid)
  {
  j++;
  if (j>cur_n)
    {
    printf("\nKniga s takim nomerom ne naidena!!");
    j=-1;
    break;
    }
  }
 
if(j!=-1)
  {
  printf("\nAvtor - %s\n", b[j].author);
  printf("Janr -  %s\n", b[j].genre);
  printf("Data - %s\n", b[j].date);
  printf("Pereplet - %s\n", b[j].cover);
  printf("******************");
  if (!strstr(&(*(i+j)->fio), "*"))
  printf("\nKniga uje vidana.\n\n");
  else
    {
    fflush(stdin);
    printf("\nVidat knigu? (y/n) ");
    scanf("%c", &fl);
 
     switch (fl)
       {
       case 'y':
       printf("Vvedite FIO:\n");
       scanf("%s", &(*(i+j)->fio));
       printf("Vvedite datu (naprimer 01.01.01):\n");
       scanf("%s", &(*(i+j)->date));
       printf("Vidacha proizvedena!\n");
       break;
 
       case 'n':
       break;
 
       default:
       break;
       }
    }
 
  }
};
 
 
void get_back_book(book* b, indication* i, int cur_n)
{
char fl;
int j=0, u_num;
printf("\nVvedite unikalniy nomer knigi\n");
scanf("%d", &u_num);
 
while (u_num!=b[j].uid)
  {
  j++;
  if (j>cur_n)
    {
    printf("\nKniga s takim nomerom ne naidena!!");
    j=-1;
    break;
    }
  }
 
if(j!=-1)
  {
  printf("\nAvtor - %s\n", b[j].author);
  printf("Janr -  %s\n", b[j].genre);
  printf("Data - %s\n", b[j].date);
  printf("Pereplet - %s\n", b[j].cover);
  printf("******************");
  if (strstr(&(*(i+j)->fio), "*"))
  printf("\nKniga ne vidana. Dlya vozvrata snachala neobhodimo vidat\n\n");
  else
    {
    fflush(stdin);
    printf("\nVernut knigu? (y/n) ");
    scanf("%c", &fl);
 
     switch (fl)
       {
       case 'y':
       memset(&(*(i+j)->fio), '*', strlen(&(*(i+j)->fio))-1);
       printf("Kniga vozvrashena!\n");
       break;
 
       case 'n':
       break;
 
       default:
       break;
       }
    }
 
  }
};
 
 
void main()
{
char option;
int num=1, current_num=0;
book *book_ptr=(book*) calloc (num, sizeof(book));
indication *ind_ptr=(indication*) calloc (num, sizeof(indication));
 
 
while (1)
  {
  printf("\nViberite deystvie:\n1 - Dobavit knigu\n2 - Vidat knigu\n3 - Vernut knigu\n4 - Prosmotr vseh knig\n0 - Zavershenie raboti\n");
  scanf("%c", &option);
 
  switch (option)
  {
  case '1':
  if ((current_num+1) <= num)
    {
    add_new_book(book_ptr, ind_ptr, current_num);
    current_num++;
    }
  else
    {
 
    book_ptr=(book*) realloc(book_ptr, (num+1)*sizeof(book));
    ind_ptr=(indication*) realloc (ind_ptr, (num+1)*sizeof(indication));
 
    add_new_book(book_ptr, ind_ptr, current_num);
 
    current_num++;
    num++;
    }
   break;
                       
   case '2':
   give_book(book_ptr, ind_ptr, (current_num-1));
   break;
 
   case '3':
   get_back_book(book_ptr, ind_ptr, (current_num-1));
   break;
 
   case '4':
   print_all(book_ptr, ind_ptr, (current_num-1));
   break;
 
   case '0':
   exit(1);
 
   default:
   printf("\nViberite verniy punkt menu!!\n");
   break;
   }
fflush(stdin);
}
}

Всего записей: 39 | Зарегистр. 05-11-2007 | Отправлено: 17:00 16-04-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru