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

Массив и текстовый файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ записная книга http://www.cyberforum.ru/cpp-beginners/thread888712.html
Здравствуйте! Пишу программу - записную книгу, Столкнулась с такой проблемой,что при добавлении нового элемента в книгу, ввод некоторых параметров пропускает и сразу переходит же к другому параметру,ниже прикреплю скриншот. Проблема вроде бы исчезает,когда я после каждого fgets прописываю cin.ignore(). Подскажите пожалуйста в чем моя ошибка? В коде представлены только структуры,перечисления...
C++ Директория Кэша В общем.У меня программа чистить кэш браузера.Ну находит там папку и тд. Со всеми папками работает(удаляет-создает новую),а с папкой кэша гугл хрома проблемы. Подскажите пожалуйста,как решить этот трабл. Вот кот:это функция удаление папки int Remove_dirW(LPCWSTR pPath) { SHFILEOPSTRUCTW sh; ZeroMemory(&sh,sizeof(SHFILEOPSTRUCTW)); sh.wFunc = FO_DELETE; sh.pFrom = pPath;... http://www.cyberforum.ru/cpp-beginners/thread888704.html
Функция для решения кубического уравнения с комплексными коэффициентами C++
Помогите пожалуйста написать функцию для решения кубического уравнения a*z^3+b*z^2+c*z+d=0 с комплексными коэффициентами. Подстановской z=y-(b/(3*a)) получается каноническое уравнение y^3+p*y+q=0, где p=-(b/(3*a^2))+c/a, q=(2b)/(27*a^3)-(b*c)/3*a^2+d/a. Каноническое уравнение решается по формулам Кардано. Очень нужно. Заранее спасибо
C++ Задача по алгоритмам обработки данных
Вдоль линии расположены лунки и в каждой лунке лежит красный, белый или синий шар. Одним ходом разрешается менять местами два любых шара. Добиться того, чтобы все красные шары шли первыми, все синие - последними, а белые - посередине. Если общее число лунок равно n, то для решения задачи достаточно сделать не более n-1 хода. Рассмотреть решение задачи с помощью алгоритмов сортировки и с помощью...
C++ Произведение элементов для каждого из данных массивов, вызвав соответствующую версию функции http://www.cyberforum.ru/cpp-beginners/thread888659.html
1)Определить функцию для нахождения произведения элементов массива целых чисел; 2)Перегрузите функцию для работы с вещественными числами; 3)Обьявите два массива(для целых чисел и для вещественных) и заполните их значениями, вводимыми с клавиатуры; 4)Вычислите произведение элементов для каждого из данных массивов, вызвав соответствующую версию функции; 5)Выведите результаты на экран с...
C++ НЕ сложная Англоязычная литература по языкам программирования, алгоритмам и дискретной математике Подошел к своей подруге-лингвисту с вопросом:"Хочу выучить Английский, преимущественно технический. Если я уеду за границу на пару месяцев, то это мне чем нибудь поможет?" На это она мне сказала:"Не занимайся фигней! Если тебе нужен технический язык, то садись и читай книжки, первое время будет муторно. но это самый короткий способ к изучению ТЕХНИЧЕСКОГО языка." Как лингвист она не смогла... подробнее

Показать сообщение отдельно
MrRuslanBB
4 / 4 / 0
Регистрация: 02.04.2012
Сообщений: 276
03.06.2013, 01:11  [ТС]     Массив и текстовый файл
Цитата Сообщение от alsav22 Посмотреть сообщение
Я плюсы коллекционирую.
Код покажите с изменениями.
Вот тут и поиск благодаря вам заработал, теперь только осталось чтоб при нажатии Y и инфа о следующей книге начиналась заполняться с ФИО и при нажатии N программа продолжала корректно работать, ато потом что не нажимай о по фазе)))

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#include <iostream>
#include <iomanip>
#include <string.h>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
using namespace std;
 
  #define FIO 25 // Длина поля, ФИО.
  #define NZK 16 // Длина поля, название книги.
  #define IZD 14 // Длина поля, издательство.
  #define GIZ 6  // Длина поля, год издания.
  #define KST 6  // Длина поля, количество страниц.
  #define KGL 5  // Длина поля, количество глав.
  #define NDC 14 // Длина поля, название дисциплины.
 
 
struct KNIGI {
  char fio[FIO];
  char nzk[NZK];
  char izd[IZD];
  char giz[GIZ];
  char kst[KST];
  char kgl[KGL];
  char ndc[NDC];
     };
 
// Прототипы функции.
void sozdanie();
void prosmotr();
void vibor();
void tabl();
void tablm();
 
// Определение функции ввода с клавиатуры.
istream &operator>>(istream &in, KNIGI &x) {
 
 cout<<"Введите ФИО: ";
    in.getline(x.fio,FIO);
 
 cout<<"Введите название книги: ";
    in.getline(x.nzk,NZK);
 
 cout<<"Введите издание: ";
    in.getline(x.izd,IZD);
 
 cout<<"Введите год издания: ";
    in.getline(x.giz,GIZ);
 
 cout<<"Введите количество страниц: ";
    in.getline(x.kst,KST);
 
 cout<<"Введите количество глав: ";
    in.getline(x.kgl,KGL);
 
 cout<<"Введите название дисциплины: ";
    in.getline(x.ndc,NDC);
 
 return in;
}
 
// Операция-функция вывода на экран.
ostream &operator<<(ostream &out, KNIGI x) {
 
 out.setf(ios::left); // Установка флага равнения по левому краю.
 out<<"|"<<setw(23)<<x.fio<<"|"<<setw(14)<<x.nzk<<"|"<<setw(12)<<x.izd
  <<"|"<<setw(4)<<x.giz<<"|"<<setw(4)<<x.kst<<"|"<<setw(3)<<x.kgl<<"|"
  <<setw(12)<<x.ndc<<"|"<<endl;
 
 return out;
}
 
// Операция-функция чтения из файла.
ifstream &operator>>(ifstream &in, KNIGI &x) {
 in.getline(x.fio,FIO,'\n');
 in.getline(x.nzk,NZK,'\n');
 in.getline(x.izd,IZD,'\n');
 in.getline(x.giz,GIZ,'\n');
 in.getline(x.kst,KST,'\n');
 in.getline(x.kgl,KGL,'\n');
 in.getline(x.ndc,NDC,'\n');
 
 return in;
}
 
// Операция функции записи в файл.
ofstream &operator<<(ofstream &out, KNIGI &x) {
 out<<x.fio<<endl<<x.nzk<<endl<<x.izd<<endl<<x.giz<<endl<<x.kst<<endl<<x.kgl<<endl<<x.ndc<<endl;
 return out;
}
 
void main(void) {
setlocale (LC_CTYPE,"rus");
 char c;
 
 while (1) {
    cout<<endl<<"1. Создание файла";
    cout<<endl<<"2. Просмотр содержимого";
    cout<<endl<<"3. Вывод информации о книге";
    cout<<endl<<"4. Выход";
    cout<<endl<<endl<<"Выш выбор -> ";
    cin.get(c).get();
    switch(c)
    {
     case'1':
      sozdanie();
      break;
 
     case'2':
      prosmotr();
      break; 
 
     case'3':
      vibor();
      break;
 
     case'4':
      return;
 
     default:
      cout<<"Вводите только цифры 1 до 4"<<endl;
    }
  }
 }
 
// Определение функции вывода на экран шапки таблицы.
void tabl() {
system("cls"); // Очистка экрана перед таблицей "tabl".
         cout<<"=------------------------------------------------------------------------------=";
 cout<<endl<<"|         Ф.И.О.        |  назв. книги | издательство |ГИз |КСт |КГл| дисциплина |";
 cout<<endl<<"|-----------------------|--------------|------------|----|----|---|------------|"<<endl;
}
 
// Определение функции вывода на экран шапки таблицы поиска.
void tablm() {
system("cls"); // Очистка экрана перед таблицей "tablm".
         cout<<"=-------------------------------------------=";
 cout<<endl<<"|         Ф.И.О.        |  назв. книги |КСт |";
 cout<<endl<<"|-----------------------|--------------|----|";
 cout<<endl<<"|";
}
 
 
// Определение функции создания файла.
void sozdanie() {
system("cls"); // Очистка экрана перед созданием файла.
 char c;
 ofstream ff;       // Создание потока ff для записи в файл.
 KNIGI s;
 ff.open("knigi.txt");  // Открытие файла knigi.txt и связывание его с потоком ff.
 
if(!ff) {   // Проверка открытия файла.
 cerr<<"Ошибка открытия файла knigi.txt для записи."<<endl;
 exit(1);   // Аварийный выход.
}
                // Цикл записи элементов в файл.
do {
 cin>>s;        // Обращение к операции-функции ввода с клавиатуры.
 ff<<s;     // Обращение к операции-функции записи в файл.
 cout<<endl<<"Продолжить ввод (Y/N) - ";
 c=cin.get();
}
while(c=='y'||c=='Y');
ff.close();     // Закрытие файла.
}
 
// Определение функции вывода всей информации на экран.
void prosmotr()
{
 ifstream finp; // Создание потока finp для чтения из файла.
 KNIGI s;
 finp.open("knigi.txt",ios::in);
        // Открытие файла kadry.txt и связывание его с потоком finp.
 
if(!finp)       // Проверка открытия файла.
  {
    cerr<<"Ошибка открытия файла knigi.txt для чтения!"<<endl;
    exit(1);       // Аварийный выход.
  }
cout<<endl<<" Список элементов из файла:"<<endl;
tabl(); // Вывод на экран шабки таблицы.
while(finp)
 {
  finp>>s;      // Обращение к операции-функции чтения из файла.
  if(strlen(s.fio)<=0)  // Длина первого поля в записи  меньше либо равна 0.
    break;               // Выход из цикла.
 
  cout<<s;      // Обращение к операции-функции вывода на экран.
 }
 finp.close(); // Закрытие файла.
 cout<<"=------------------------------------------------------------------------------="<<endl;
}
 
// Определение функции вывода на экран информации отвечающей условию поиска.
void vibor() {
 char izd[IZD],giz[GIZ];      // Для ввода условия поиска.
 ifstream fi;                  // Создание потока fi для чтения из файла.
 KNIGI b;
 fi.open("knigi.txt",ios::in); // Открытие файла kadry.txt и связывание его с потоком fi.
 
if(!fi)         // Проверка открытия файла.
 {
  cerr<<"Ошибка открытия файла knigi.txt для чтения!"<<endl;
  exit(1);      // Аварийный выход.
 }
 
cout<<endl<<"Введите издательство книги - ";
  cin.getline(izd,IZD);
 
cout<<endl<<"Введите год издания - ";
  cin.getline(giz,GIZ);
 
 
cout<<endl<<" Информация о книге:"<<endl;
tablm();                    // Вывод на экран шабки таблицы.
while(!fi.eof()) {
 fi>>b;                     // Обращение к операции-функции чтения из файла.
 if (strcmp(b.izd,izd)==0)  // Издательства совпали.
  if (strcmp(b.giz,giz)==0) // Год издания совпал.
 
 
cout<<setw(23)<<(b.fio)<<"|"
     <<setw(14)<<(b.nzk)<<"|"
     <<setw(4)<<(b.kst)
     <<"|";
 
    }
fi.close();
cout<<endl<<"=-------------------------------------------="<<endl;
}
 
Текущее время: 00:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru