Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 12

Очистка буфера ввода при работе с cin

23.09.2014, 23:06. Показов 3907. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Пытаюсь научиться работать с классами, подскажите пожалуйста, что я делаю не так.
В частности не работает функция enter, полностью работающая в схожей программе со структурой.

C++ (Qt)
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
#include "stdafx.h"
#include <iostream>
#include <cctype> 
#include <cstring> 
#include <cstdlib> 
#include <cstddef>
 
using namespace std;
const int SIZE=5;
 
class sklad
{
char product[SIZE];
int cost [SIZE];
int number [SIZE];
int section [SIZE];
public:
    sklad()
      {for (int i=0;i<SIZE;i++)
        product[i]='/0';
      }
 
    void enter()
      {
       int i;       
       for (i=0; i<SIZE; i++)    
          if (!product[i]) break;      
       if (i==SIZE) {
          cout<<"Spisok polon\n";           
          return;}       
       input (i);  
      }
 
    void input(int i)
      {
       cout << "Product: ";  
         cin >> product[i];
       cout << "Cost: ";         
         cin >> cost[i];  
       cout << "Number: ";         
         cin >> number[i];  
       cout << "Section: ";         
         cin >> section[i];  
       cout << '\n';
      }
 
    void update ()  
      {
       int i;      
       char name[SIZE];        
       cout << "Product: ";      
        cin >> name;       
       for (i=0; i<SIZE; i++)     
       if (!strcmp(name, &product[i])) break;      
       if (i==SIZE) 
          {cout << "Tovar not found" << '\n'; 
           return;}      
       cout << "Input new information"<<'\n';       
       input(i);             
      } 
 
    void display ()   
      {int i;        
       for (i=0; i<SIZE; i++)        
          {if (product[i])            
             {cout << "Product: ";             
              cout << product[i] << '\n';           
              cout << "Cost: " << cost[i] << '\n'; 
              cout << "Number: " << number[i] << '\n';
              cout << "Section: " << section[i] << '\n';         
              cout << "--------------------------------------------------------------------------------" << '\n';           
             }          
          }    
       } 
 
    void sum ()
       {
        int i,j,sum=0;
        cout << "Input number of section: ";
         cin >> i;
        for (j=0;j<SIZE;j++)
           if (i==section[j])
              sum=sum+cost[j];
        cout << "Sum cost of section are " << sum << '\n';
       }
};
int menu();
 
int main()
{
sklad myobj;
char choise;          
for (;;)     
  {choise = menu();      
   switch(choise)        
    {case 'e': myobj.enter(); break;       
     case 'u': myobj.update(); break;         
     case 'd': myobj.display(); break; 
     case 's': myobj.sum(); break;
     case 'q': return 0;        
    }     
   }  
}
 
int menu()    
{
 char ch;         
 cout << '\n';        
 do        {
     cout << "(E)nter\n";            
     cout << "(U)pdate\n";          
     cout << "(D)isplay\n";
     cout << "(S)um\n";
     cout << "(Q)uit\n" << '\n';           
     cout << "Your choise: ";            
     cin >> ch;       
             }      
while (!strchr("eduqs",tolower(ch))); 
system ("cls");
return tolower(ch);     
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2014, 23:06
Ответы с готовыми решениями:

Очистка всего буфера ввода (cin)
Предположим у нас есть клиентское приложение, которое ожидает сообщение от сервера. При получении этого сообщения клиент должен отправить...

Поток ввода cin и его очистка(?)
Есть необходимость заполнять поля члены класса в консоли через ввод. Есть следующий отдельный класс, который и занимается этим делом: ...

Запись в файл, очистка буфера ввода
Есть программа записи в файл некоторой информации; фио студента, оценка за экзамен и т.д. Подскажите пожалуйста, почему в консоли...

4
 Аватар для Справлюсь
76 / 36 / 17
Регистрация: 24.07.2014
Сообщений: 357
23.09.2014, 23:16
может не
Цитата Сообщение от korneev Посмотреть сообщение
C++
1
2
3
4
if (i==SIZE) {
* * * * * cout<<"Spisok polon\n"; * * * * * 
* * * * * return;} * * * 
* * * *input (i);
а
C++
1
2
3
4
if (i==SIZE) {
* * * * * cout<<"Spisok polon\n"; * * * * * 
* * * * * return;} else{* * * 
* * * *input (i);}
0
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 12
23.09.2014, 23:22  [ТС]
По сути это ничего не меняет. Я на всякий случай попробовал, но результат тот же
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.09.2014, 23:40
Цитата Сообщение от korneev Посмотреть сообщение
C++
1
2
3
4
sklad()
      {for (int i=0;i<SIZE;i++)
        product[i]='/0';
      }
что за "символ" вы пытаетесь туда внести? Терминальный нуль? Тогда вы слэш перепутали.. Собственно, это и есть вся ошибка.

Не по теме:

З.Ы. научитесь нормально форматировать код, читать практически невозможно %-)



Добавлено через 2 минуты
И да, вы точно хотели
C
1
char product[SIZE];
а не, к примеру,
C++
1
std::string product[SIZE];
или
C
1
char product[SIZE][N]; //где N - количество символов в названии продукта
?
1
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 12
23.09.2014, 23:57  [ТС]
Со слэшэм понял, все получилось, [N] также добавил, работает. Спасибо большое!
Проблема теперь возникла с тем, что осмысленно записывается только одна запись, в остальных мусор.

P.S.Замечание по форматированию кода учту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2014, 23:57
Помогаю со студенческими работами здесь

Не работает cin.getline при считывании строки большей буфера
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более символов cin.getline(boofer, 3); перестаёт работать. Как я...

Ошибка при работе с cin и cout
Здравствуйте, задам детский вопрос: почему не работает? int d; cout &lt;&lt; &quot;Введите значение числа D: &quot;&lt;&lt; endl; cin...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get()...

Работа с cin при считывании с потока ввода
есть кусочек кода while (1) { string buf = name; cout &lt;&lt; &quot;Message : &quot;; string symbolBuf = &quot;&quot;; while (cin &gt;&gt;...

При работе начинаются притормаживания (нужна очистка памяти?)
Удачных суток. Встретился с проблемой. Есть функция, предположим: int zuzu(){ short bf; .............. return 0; } Есть...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru