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

Проверка на правильность ввода с клавиатуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ работа с указателями http://www.cyberforum.ru/cpp-beginners/thread678229.html
Как ПРАВИЛЬНО передать в функцию, массив, используя адресацию? Программа находит в массиве слово и перед ним вставляет какое то слово, то есть в строчке "This is a small string" программа должна найти слово "small" и перед ним вставить слово "very". #include <iostream> #include <conio.h> #include <cstring> using namespace std; void proc(char* a,char* b,char* c,char* d)
C++ Дан массив из прототипов функций или указателей на функцию, сделать функцию, возвращающую этот массив Не охота создавать лишнею тему извиняюсь заранее Вопрос такой Можете подсказать есть массив из прототипов функций или указателей на функцию как сделать функцию возвращающею этот массив char* function() { http://www.cyberforum.ru/cpp-beginners/thread678212.html
C++ Трехмерная точка
Всем здравствуйте! Нужна программка. Что есть: Код структуры описывающей трехмерную точку { double x; double y; double z; }; struct stLine3D { stPoint3D PB; stPoint3D PE;
Является ли матрица ортонормированной? C++
Определить является ли матрица ортонормированной, т. е. такой, что скалярное произведение каждой пары различных строк равно 0, а скалярное произведение строки самой на себя равно 1
C++ Заменить в строке все группы подряд идущих точек на многоточие http://www.cyberforum.ru/cpp-beginners/thread678180.html
Помогите составить программу по теме "Строки": Используя функции класса string, заменить в строке все группы подряд идущих точек на многоточие (3 точки ...). Если встречается одна точка, то также заменить ее на многоточие. В строке могут встречаться пробелы. Пример: книга.. кот........ стол. ключ -> книга... кот... стол... ключ
C++ Игнорировать ввод букв Скажите, как игнорировать ввод букв и вообще всех символов кроме 0-9 и точки, подобно проверке на корректность ввода данных. Какой-то цикл с getchar, putchar. подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2012, 16:36     Проверка на правильность ввода с клавиатуры
Вот ещё один вариант того же:
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
//Вводятся только числа.
 
#include "conio.h" // для getch().
#include <iostream>
#include <string>
#include <sstream> // для stringstream.
using namespace std;
 
int main()
{
  int n = 0, flgS = 0, c = 0, q = 0; 
  unsigned char k = 'a'; // переменная для ввода.
  string str;      // строка для цифр и минуса.
 
 
   
    while (k != '|')
   {
        k = getch(); // ввод без отображения.
        if (k == '|') break;
        
        if ((k == '-') && (c == 0) && (flgS == 0)) // если символ минус, и число символов 0, 
                                                   //и минус ни разу не отображался (флаг 0).
       {
          flgS=-1; // если отображается минус.
          cout << '-';      // отображаем минус.
          str.push_back(k); // минус помещаем в строку.
          c++;              // число символов.
       }
        
        if ((k >= '0') && (k <= '9')) // если символ цифра.
       {
           cout << k;        // отображаем цифру.
           str.push_back(k); // символ в строку.
           c++;              // число символов.
           q++;              // число цифр.
       }
     
       if (k == '\b' && c != 0) // если backspace и число символов не 0.
       {
           cout << '\b'; // курсор на шаг назад.
           cout << ' ';  // затираем последий символ.
           cout << '\b'; // курсор на шаг назад.
           if (!str.empty()) // если строка не пуста, 
              str.pop_back(); // то извлекаем один.
           q--;            // число цифр уменьшили.
           if (q < 0) q = 0; // если получили отрицательное значение, то делаем 0. 
           c--;            // число символов уменьшили.
           if (c <= 0)     // если удалённый символ был последним,
           {
                flgS = 0; // обнуляем флаг, чтобы можно было снова отображать минус.
                c = 0;    // количество символов 0.
           } 
       }
 
       if ((k == 13) && (c != 0) && (q != 0)) break; // если, хотя бы, одна цифра введена, то выход. 
 
    }
    stringstream stream(stringstream::in | stringstream::out); // создаётся объект для внутреннего форматирования.
    stream << str; // вводим строку числовых символов.
    stream >> n;   // извлекаем число.
    cout << endl << n << endl;
 
 system("pause");
 return 0;  
}
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru