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

Очистка потока ввода && строки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дана последовательность из n натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread795790.html
Дорогие форумчане, помогите пожалуйста. Дана последовательность из n натуральных чисел. Для каждого числа исходной последовательности подсчитать количество и сумму четных цифр в записи числа. Сформировать новую последовательность, поместив в нее сначала количества четных цифр в записи числа, а затем их суммы.Упорядочить первую половину полученной последовательности в порядке возрастания , а...
C++ Найти в массиве максимальный и минимальный элементы в массиве и их количество Помогите, пожалуйста, начал осваивать c++...Не могу справиться с такой задачей: Написать программу, которая вводит с клавиатуры массив из N вещественных чисел, находит среди элементов максимальный и минимальный элементы и их количество и выводит результат пользователю. Добавлено через 27 минут Люди...хэлп...срочно очень надо #include <iostream> #include <cstdlib> using namespace std; ... http://www.cyberforum.ru/cpp-beginners/thread795786.html
DLL 32 и 64 в C++ 2010 C++
Написал простой dll, откомпилировал его в VC 2010 подключаю к матлабу, который ругается что dll создан 32 битным компилятором, а нужен 64 битный. Подскажите пожалуйста как в VC 2010 откомпилировать 64 битным компилятором? Какие нужны настройки? У меня вин7 64 бита
C++ Задача на массивы и строки
Написать программу, которая вводит с клавиатуры массив из N вещественных чисел, находит среди элементов массива индекс первого минимального и первого максимального элемента и выводит результат пользователю; затем вводит с клавиатуры строку длиной не более 100 символов, считает количество слов (слова разделяются одним или несколькими пробелами) и выводит результат пользователю.
C++ delete[] http://www.cyberforum.ru/cpp-beginners/thread795770.html
Здравствуйте! Имеется след. код: char* values = new char; values = '\0'; ////ещё код//// delete values; Вопрос - почему программа вылетает на строке delete?
C++ Перегрузка сложения Stonewt Stonewt::operator +(Stonewt &st){ Stonewt st1; st1.stone=st.stone+stone; st1.pds_left=st.pds_left+pds_left; cout<<st1.pds_left<<endl; if(st1.pds_left>lbs_per_stn){ int x=int(st1.pds_left)/lbs_per_stn; st1.stone+=x; st1.pds_left=st1.pds_left-x*lbs_per_stn; st1.pds_left=int(st1.pds_left)%lbs_per_stn+st1.pds_left-int(st1.pds_left);} подробнее

Показать сообщение отдельно
[WRG]
 Аватар для [WRG]
50 / 50 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
27.02.2013, 21:54  [ТС]     Очистка потока ввода && строки
вот код, очистку оформил в виде функции, чтобы использовать после каждого ввода
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
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
 
const int base_size = 100; //максимальный размер базы данных
 
struct goods {
    char value[30];
    float cost;
    unsigned int quantity;
};
 
char show_menu(); //готово вроде как
void initialize_values(goods *db);  //готово вроде как
int find_end_of_db(goods *db);  //должно возврашать -1 если база заполнена, вроде готово
void add_item(goods *db, int position);
void delete_item(goods *db, int position);
void show_item(goods *db, int position);
void flush_stdin();
 
 
//******************MAIN*******************
int main(int argc, char *argv[])
{
    goods base[base_size];
    char user_choice;
    
    initialize_values(base);
    
    do {
        user_choice = show_menu();
        switch(user_choice) {
            case 'a': {
                int *end = new int (find_end_of_db(base));
                if (*end == -1) {
                    cout << "База заполнена! Удалите ненужные записи" << endl;
                    //if(system("cls")) system ("clear");
                    continue;
                }
                add_item(base, *end);
                delete end;
                break;
            }
            case 'd': {
                int *choice = new int;
                do {
                    cout << "Введите номер удаляемой записи -> " << endl;
                    cin >> *choice;
                    if ((*choice < 0) || (*choice > base_size)) {
                        cout << "Недопустимое значение! Введите заново" << endl;    
                    }
                } while ((*choice < 0) || (*choice > base_size));
                delete_item(base, *choice);
                delete choice; 
                break;
            }
            case 's': {
                char *s = new char;
                char *pch = 0;
                bool found = false;
                cout << "Введите навание товара -> ";
                gets(s);
                for (int i = 0; i < base_size; i++) {
                    pch = strstr(base[i].value, s); 
                    if (pch) {
                        show_item(base, i);
                        found = true;
                    };
                }
                if (!found) cout << "Ни одной записи с таким именем не найдено!" << endl;
                break;
            }
        }
        
        flush_stdin();
    } while (user_choice != 'q');
    
    
    return 0;
}
 
//****************SHOW MENU****************
char show_menu()
{
    char choice;
    bool stop = false;
    
    do {
        cout << "Выберите нужный пункт меню" << endl;
        cout << "a - добавить запись в базу" << endl;
        cout << "d - удалить запись из базы" << endl;
        cout << "s - показать запись из базы" << endl;
        cout << "q - выход из программы" << endl;
        cout << "-> ";
        cin >> choice;
        if ((choice =='a') || (choice =='d') || (choice =='s') || (choice == 'q')) stop = true;
        else cout << "Ошибка ввода. Повторите ввод" << endl;
    } while (!stop);
    
    flush_stdin();
    
    return choice;
}
 
//******************INITIALIZE VALUES**********
void initialize_values(goods *db)
{
    for (int i = 0; i < base_size; i++) {
        strcpy(db[i].value, "\0");
        //db[i].value = '\0';
        db[i].cost = 0;
        db[i].quantity = 0;
    }
}
 
//*****************FIND END OF DB*****************
int find_end_of_db(goods *db)
{
    int i;
    for (i = 0; i < base_size; i++) {
        if (!db[i].cost) break;
    }
    if (i == base_size) return -1;
    return i;
}
 
//******************ADD ITEM******************
void add_item(goods *db, int position)
{
    cout << "Ввод записи №" << position << endl;
    cout << "Введите название товара: ";
    gets(db[position].value);
    cout << endl;
    cout << "Введите стоимость товара: ";
    cin >> db[position].cost;
    cout << endl;
    cout << "Введите количество товара на складе: ";
    cin >> db[position].quantity;
    cout << endl;
    
    flush_stdin();
}
 
 
//*****************DELETE ITEM*************
void delete_item(goods *db, int position)
{
    cout << "Удаление записи №" << position << endl;
    strstr(db[position].value, "\0");
    db[position] .cost = 0;
    db[position].quantity = 0;
    cout << "Запись №"<< position << "успешно удалена!" << endl;
    
    flush_stdin();
}
 
//*******************SHOW ITEMS**************
void show_item(goods *db, int position)
{
    cout << "Вывод записи №" << position << endl;
    cout << "Название товара: " << db[position].value << endl;
    cout << "Стоимость товара: " << db[position].cost << endl;
    cout << "Количество товара на складе: " << db[position].quantity << endl;
    cout << endl;
    
    flush_stdin();
}
 
void flush_stdin()
{
    cin.clear();
    while(cin.get() != '\n');
}
 
Текущее время: 14:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru