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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nee K
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 8
#1

текст - C++

27.12.2009, 23:14. Просмотров 315. Ответов 0
Метки нет (Все метки)

Люди, помогите пожалуйста исправить программу, чтобы она выводила названия книг данного автора в определённый промежуток времени,
написал, выводит по фамилии автора всё остальное
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);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 23:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос текст (C++):

С++ Дан текст, составленный из строчных букв. Напечатать текст заглавными буквами - C++
C++ Дан текст, составленный из строчных букв. Напечатать текст заглавными буквами. Подскажите, пожалуйста, как это нужно сделать?

Неправильно отображается текст (лишний текст при вводе точки) - C++
Привет всем, нид хел по коду С++. Все работает, но не правильно отображает текст ( лишний текст при вводе символа (точки) '.'...

Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран - C++
Как мне стало известно все .jpeg оканчиваются на маркер FFD9. Его мы и будем искать при выводе результата. Сначала откроем файл на...

Считайте текст и выведите на экран исходный текст, а затем только четные предложения - C++
Считайте текст и выведите на экран исходный текст, а затем только четные предложения. Либо: Напишите программу, подсчитывающую, сколько...

Как правильно считать текст из файла? Весь текст, со всеми знаками, пробелами - C++
подскажите, чет затупил как правильно считать текст из файла(весь текст со всеми знаками пробелами и т.д.), чтобы поработать с этим текстом...

Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и... - C++
Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они располагаются непосредственно друг за другом.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2009, 23:14
Привет! Вот еще темы с ответами:

записать текст в матрицу по строкам, а затем переписать по спирали от центра. Прочитать зашифрованный текст - C++
Зашифровать текст следующим образом: записать его в матрицу по строкам, а затем переписать по спирали от центра. Прочитать зашифрованный...

Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение - C++
Помогите, пожалуйста!! очень нужно!! Считайте текст и выведите на экран исходный текст, а затем только каждое третье предложение.

Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз - C++
Дана строка содержащая текст. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru