powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста оптимизировать код программы
4 сообщений из 29, страница 2 из 2
Помогите, пожалуйста оптимизировать код программы
    #34500733
lrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Русскоязычные строки(именно дисциплина) неправильно сравниваются
при выводе результатов поиска - пустая шапка
...
Рейтинг: 0 / 0
Помогите, пожалуйста оптимизировать код программы
    #34501178
lrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался сам
только не понял почему так
в функции vibor()
Код: plaintext
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.
void vibor()
{
   char discipline[Discipline ];  // для ввода условия поиска
   ifstream fi;    // создание потока fi для чтения из файла
   book b;
   fi.open("bok.txt", ios::in);
		   // открытие файла bok.txt и связывание его
		   // с потоком fi

   if ( !fi )  // проверка открытия файла
    {
      cerr << "Ошибка открытия файла bok.txt для чтения\n";
      exit( 1 );     // аварийный выход
    }

   cout << "Введите название дисциплины:";
   cin.seekg( 0 ,ios::end);
   cin.get(discipline,'\n');
   cout << "Информация о книге\n";
   tabl();  // вывод на экран шапки таблицы  
   while (!fi.eof())
   {
     fi >> b;       // обращение к операции-функции чтения из файла
     if (strcmp(b.discipline,discipline)== 0 )
		    // дисциплины совпали 
       cout << b;   // обращение к операции-функции вывода на экран
   }
   fi.close();
  
}

я вместо
Код: plaintext
1.
2.
 
cin.get(discipline,'\n');
написал просто
Код: plaintext
1.
cin>>discipline;
и все заработало
А какая разница?
...
Рейтинг: 0 / 0
Помогите, пожалуйста оптимизировать код программы
    #34501225
grieg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай описание функции get
http://www.cplusplus.com/reference/iostream/istream/get.html
Я так понимаю, ты по ошибке взял
Код: plaintext
1.
istream& get ( char* s, streamsize n );
'\n' неявно преобразовалось в число. А это не совсем то, что тебе было нужно.

То, как сделано сейчас, будет некорректно обрабатывать пробелы и подобные символы. Попробуй найди книгу, у которой в названии дисциплины есть пробел.
...
Рейтинг: 0 / 0
Помогите, пожалуйста оптимизировать код программы
    #34501242
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, в книжку пришлось лезть.
Во первых метода get(char* buf, char delim) нету
есть
get(char* buf, streamsize sz) - читает не более sz-1 символов до ближайщего '\n'
get(char* buf, streamsize sz, char delim) -читает не более sz-1 до указанного разделителя
но так как char компилятор запросто перевел в int ты читал меньше символов чем хотел
кстати писать
cin >> buf тоже не совсем корректно buf у тебя ограничен, а поток то будет тебе читать пока перевод каретки не встртит, писать надо
сin >> setw(17) >> buf;
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста оптимизировать код программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]