Форум программистов, компьютерный форум CyberForum.ru

текст - C++

Восстановить пароль Регистрация
 
Nee K
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 8
27.12.2009, 23:14     текст #1
Люди, помогите пожалуйста исправить программу, чтобы она выводила названия книг данного автора в определённый промежуток времени,
написал, выводит по фамилии автора всё остальное
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
 
struct books {
     char lastname[21];
     char bookname[16];
     char releasedate[16];
};
 
void menu();
void add();
void view();
void search();
 
FILE *f;
 
int main()
{
     setlocale(LC_ALL,".1251");
     printf("                                Задача 3.\n"
             "                                                                                "
             "Описание. Дан файл, содержащий сведения о книгах: фамилия автора, название и "
             "год издания. Найти названия всех книг данного автора в определённый год.\n "
             "Реализовать на двоичных файлах с помощью структур данных (struct).\n"
             "                                                                               \n"               
          );
     menu();
     char c;
     while (true) {
          printf("\rВыбери необходимый пункт меню: ");
          c=_getche();
          switch(c) {
               case '1': add(); menu(); break;
               case '2': view(); menu(); break;
               case '3': search(); menu(); break;
               case '0': return 0;
          }
     }
    getch();
}
 
void menu() {
     printf(
          "Меню\n"
          "1. Перезаписать/создать базу данных.\n"
          "2. Посмотреть базу данных.\n"
          "3. Поиск в базе данных.\n"
          "0. Выход.\n"
);
}
 
void add() 
{
     printf( "\n\n---Создание/перезапись базы данных.---------------------------------------------\n" );
     f = fopen( "database.dat", "wb+" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
     books a;
     char k;
     while( true )  {
          printf( "\rДля продолжения нажми 1, для выхода в меню нажми 0: " );
          k=_getche();
          switch(k) {
               case '1':           fflush(stdin);
                                   printf( "\nВведи год издания: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%15[^\n]s", a.releasedate, 16 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);
                                   printf( "Введи фамилию автора: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%20[^\n]s", a.lastname, 21 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);
                                   printf( "Введи название книги: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%15[^\n]s", a.bookname, 16 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);     
                                   fwrite( &a, sizeof(a), 1, f );
                                   printf( "Запись создана.\n\n" );
                                   break;
               case '0': printf( "\n\n---Создание/перезапись базы данных: завершено-----------------------------------\n" );
                              fclose(f);
                           return;
          }
     }
}
 
void view() 
{
     printf( "\n\n---Просмотр базы данных.--------------------------------------------------------\n" );
     f = fopen( "database.dat", "rb" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
books a;
     printf( "      Год издания       Фамилия автора            Название книги\n"
               "--------------------------------------------------------------------------------\n"
          );
     while( true )  {
          int n = fread( &a, sizeof(books), 1, f );
          if( n!= 1 ) break;
 
          
          setlocale( LC_ALL, ".866" );
          printf( "       %-20s", a.releasedate);
          printf( "%-26s", a.lastname);
          printf( "%-15s", a.bookname);
          printf( "\n");
          setlocale( LC_ALL, ".1251" );
     }
     fclose(f);
     printf( "\n\n---Просмотр базы данных: завершено----------------------------------------------\n" );
}
 
void search() 
{
     printf( "\n\n---Поиск в базе данных.---------------------------------------------------------\n" );
     f = fopen( "database.dat", "rb" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных для поиска, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
books a;
char s[21];
 
printf( "Введи фамилию автора для поиска: " );
setlocale(LC_ALL,".866");
scanf_s( "%20s", s, 21 );
printf( "\n");
setlocale(LC_ALL,".1251");
    
setlocale(LC_ALL,".866");
while( true ) {
     if( fread( &a, sizeof(books), 1, f ) !=1 ) break;
          if( strstr( a.lastname, s ) != NULL)
          {
          printf( "%-15s", a.bookname);
          printf( "\n");
          }
     }
setlocale( LC_ALL, ".1251" );
printf( "\n\n---Поиск в базе данных: завершено-----------------------------------------------\n" );
fclose(f);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 23:14     текст
Посмотрите здесь:

C++ Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и...
C++ Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз
C++ Считайте текст и выведите на экран исходный текст, а затем только четные предложения
C++ Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран
Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение C++
C++ Определить, удовлетворяет ли текст следующему свойству: Текст совпадает с каким то отрезком ряда 0123456789 (например: 2, 678, 89)
C++ Написать программу, которая считывает текст из файла и выводит на экран количество гласных букв в строке текст
С++ Дан текст, составленный из строчных букв. Напечатать текст заглавными буквами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru