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

Распознавание содержимого переменной (символы или цифры) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даблклик http://www.cyberforum.ru/cpp-beginners/thread617879.html
не могу разобраться с функцией. понял, что вмнотифай уведомляет своим сообщением родительское окно, а что означает следущая строчка, так и не понял. с даблкликом тоже не очень, понял что там прописаны действия на левый клик, как поня, где 1 написана, поднимает наверх по уровню, 2 клик на файл, а 3 на папку, а каким образом он все это проделывает не смог разобраться, больше ничего не понимаю,...
C++ Найти количество элементов массива, равных максимальному Дан целочисленный массив из 30 элементов. Найти количество элементов, равных максимальному. http://www.cyberforum.ru/cpp-beginners/thread617852.html
C++ Дан массив из n x m Элементов. Найти наибольшимй элемент массива в каждой строке
Дан массив из n x m Элементов. Найти наибольшимй элемент массива в каждой строке Давайте темам осмысленные названия, которые будут отображать суть задания.
C++ Найти наибольший элемент двумерного массива в каждой его строке
Дан масив из n x m элементов.Найти наибольший элемент массива в каждой строке #include <iostream> #include <time.h> #include <stdlib.h> #include <conio.h> #include <iomanip> using namespace std;
C++ При выполнение exe файла быстро схлопывается окно терминала http://www.cyberforum.ru/cpp-beginners/thread617813.html
Парни need help! Написал простенькую программку, скомпилировал ее, запускаю и все бы ничего но окно терминала и секунды не висит и само зарывается. Едва заметно, что программа выполняет то, что и должна, но почему оно закрывается?
C++ Как можно изменить данные на браузере? Как можно изменить данные на браузере,например количество сообщений и т.п. Может есть спец. проги . Помогите новичку!:) или дайте направления хотя-бы спасибо заранее подробнее

Показать сообщение отдельно
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2012, 00:12     Распознавание содержимого переменной (символы или цифры)
Цитата Сообщение от HumanityShitnes Посмотреть сообщение
alsav22, а если вводим отридцательное число, как будет распознавать знак "-"????
Укажите о каком коде вопрос.

Добавлено через 30 минут
В этом:
код 1
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
//Программа для определения значения больше или меньше нуля
#include<iostream>
using namespace std;
#include<locale.h>
#include<conio.h>
 
int main ()
{
    //Pуссифицируем консоль
    setlocale (LC_ALL, "russian");
 
    //Обьявляем переменные
    int nData;
    char ch;
    //Получаем значение переменной
do
{   
cout <<"\nВведите любое число: ";
if (cin >> nData) // проверка на ошибку при вводе.
{
    cout << nData << endl;
    //Сравниваем значение переменной с нулем
    if(nData == 0)
    cout <<"\nЗначение равно нулю\n";
    if(nData > 0)
    cout <<"\nЗначение больше нуля\n";
    if (nData < 0)
    cout <<"\nЗначение меньше нуля\n";
    cin.clear(); // если после числа шло не число, сброс флага ошибки.
    while (cin.get() != '\n'); // очистка очереди ввода.
}
else // если ошибка при вводе (если первое не число).
{
    cin.clear(); // сброс флага ошибки.
    while (cin.get() != '\n'); // очистка очереди ввода.
    cout << "Ошибка!" << endl;
}
cout << "\nПродолжить? ( y/n)  ";
cin >> ch;
} while (ch != 'n');
 
cout << endl;
system("pause");
return 0;
}
cin распознаёт один минус или один плюс перед числом.
В этом:
код 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "conio.h" // для getch().
#include <iostream>
#include <sstream> // для stringstream.
using namespace std;
 
int GetInt()
{
   int n = 0, flgS = 0, c = 0, q = 0; 
   unsigned char k; // переменная для ввода.
   string str;           // строка для цифр.
 
    while (1)
   {
        k = getch(); // ввод без отображения.
        
        [CPP]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;
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; // извлекаем число.

return n;
}

int main()
{

//Pуссифицируем консоль
setlocale (LC_ALL, "russian");

//Обьявляем переменные
int nData;
char ch;
//Получаем значение переменной
do
{
cout <<"\nВведите любое число: ";

nData = GetInt(); // вызов функции для ввода.

cout << "\nВы ввели число " << nData << endl;

//Сравниваем значение переменной с нулем
if(nData == 0)
cout <<"\nЗначение равно нулю\n";
if(nData > 0)
cout <<"\nЗначение больше нуля\n";
if (nData < 0)
cout <<"\nЗначение меньше нуля\n";

cout << "\nПродолжить? ( y/n) ";
cin >> ch;
cin.clear(); // если ошибка cin >> , то сбрасываем флаг ошибки.
while (cin.get() != '\n'); // очистка очереди ввода.

} while (ch != 'n'); // если n, то выход.

cout << endl;
system("pause");
return 0;
}[/CPP]

в функции GetInt() вот эот код:
C++
1
2
3
4
5
6
7
if ((k == '-') && (c == 0) && (flgS == 0)) // если минус, и число символов 0, и флаг 0.
       {
          flgS=-1; // если отображается минус .
          cout << '-';      // отображаем минус.
          str.push_back(k); // минус в строку.
          c++;              // число символов.
       }
и объект stream класса stringstream, тоже корректно обрабатывет один минус или один плюс перед числом:
C++
1
2
3
stringstream stream(stringstream::in | stringstream::out); // создаётся объект для внутреннего форматирования.
    stream << str; // вводим строку числовых символов.
    stream >> n;   // извлекаем число.
Коды рабочие, проверял.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru