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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
koldya
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 26
#1

Есть ли такой метод? - C++

04.02.2014, 13:02. Просмотров 393. Ответов 13
Метки нет (Все метки)

Подскажите если ли метод в классе iostream или ios, который считает количество введённых символов с помощью объекта cin.
Спрашиваю потому что есть функция gcount(), но она только для get(), getline() или read() и также не охота мучатся с преобразованием в строку и там уже считаться.. спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2014, 13:02     Есть ли такой метод?
Посмотрите здесь:

Удалить из списка последний отрицательный элемент, если такой есть (линейные списки) - C++
Помогите, пожалуйста. Нужно, написать программу, которая удаляет из списка последний отрицательный элемент, если такой есть.

Описать функцию, которая удаляет из списка L первый неположительный элемент, если такой есть - C++
Доброго времени суток, возникли затруднения с одной задачей, вот собственно она: Странно что в заголовке темы нельзя использовать...

Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть) - C++
Здравствуйте! Помогите пожалуйста разработать функцию, которая удаляет из стека первый отрицательный элемент, если такой есть. Если не...

Простая и интересная задачка по C++: объяснить почему результат работы программы именно такой, какой он есть - C++
Всем привет, я сам ещё новичок в C++(< 2 лет изучаю), но уже что-то понимаю и решил сделать задачу на основы языка для совсем зелёных, для...

Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е - C++
помогите пожалуйста очень нужно я в С++ очень плохо разбираюсь

Метод Гауса есть? - C++
Поделитесь плиз програмкой для решения СЛАУ методом гауса=)

Ребята есть ли метод vector <bool> записать в бинарный файл? - C++
Всем доброго времени. Возник вопрос есть ли такой хитрый способ чтоб можно было записать в бинарник значения булл имеем vector &lt;bool&gt;...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
04.02.2014, 13:06     Есть ли такой метод? #2
Почему "мучатся"? Считываете в строку и всё - у Вас есть размер строки. str.size() - вот и все мучения.
koldya
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 26
04.02.2014, 15:40  [ТС]     Есть ли такой метод? #3
Цитата Сообщение от Тамика Посмотреть сообщение
Почему "мучатся"? Считываете в строку и всё - у Вас есть размер строки. str.size() - вот и все мучения.
У меня задание стоит водить данные в формате int, и проверять их на переизбыток символов.
С примечанием: "Не вводите данные в виде символьных строк с последующим конвертированием. "
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,420
04.02.2014, 15:47     Есть ли такой метод? #4
Цитата Сообщение от koldya Посмотреть сообщение
У меня задание стоит водить данные в формате int, и проверять их на переизбыток символов.
Так в чем проблема?Записывайте свое число в int и все.Или вводите в double и проверяйте на превышение интовских границ.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
04.02.2014, 16:06     Есть ли такой метод? #5
Цитата Сообщение от S_el Посмотреть сообщение
Так в чем проблема?Записывайте свое число в int и все.Или вводите в double и проверяйте на превышение интовских границ.
Што?.. Не поняла Ваш вариант...

Добавлено через 1 минуту
Цитата Сообщение от koldya Посмотреть сообщение
С примечанием: "Не вводите данные в виде символьных строк с последующим конвертированием. "
Ну хорошо, а что если попорбовать в лоб - через вектор интов? Ввод циклом. А у вектора так же легко добывается size, как и в строке...
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,420
04.02.2014, 16:17     Есть ли такой метод? #6
Цитата Сообщение от Тамика Посмотреть сообщение
Што?.. Не поняла Ваш вариант...
Или я не понял задание

Насколько понял вводятся числовые данные,надо проверить int это или нет.
Создаем double переменную,заносим туда число,проверяем его на соответствие с int.
Подходит-прекрасно,нет значит переизбыток символов.

Добавлено через 1 минуту
Цитата Сообщение от Тамика Посмотреть сообщение
Ну хорошо, а что если попорбовать в лоб - через вектор интов? Ввод циклом. А у вектора так же легко добывается size, как и в строке...
Или в том-же цикле "собрать" число из символов ,дополнительное условие граница инта.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
04.02.2014, 17:59     Есть ли такой метод? #7
Цитата Сообщение от S_el Посмотреть сообщение
Или я не понял задание

Насколько понял вводятся числовые данные,надо проверить int это или нет.
Насколько я поняла - то нет. Нужно вводить символы(инты), а потом проверить сколько интовых символов Вы ввели. ТС - рассуди.

Добавлено через 14 минут
В общем, вот. Набросала код. Вводите циферки. Когда нажмете Esc - то программа даст Вам кол-ство символов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <vector>
#include <conio.h>
 
void main()
{
    int c;
    std::vector <int> vec;
    while (getch() != 27)
    {
        std::cin >> c;
        vec.push_back(c);
    }
 
    std::cout << "Vector size is " ;
    std::cout << vec.size();
    getch();
}
Добавлено через 1 час 27 минут
Только один нюанс - вводить нужно столбиком, в виду особенностей std::cin.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.02.2014, 18:34     Есть ли такой метод? #8
koldya, вводите число, и дальше с помощью диапазонов проверяете на количество цифр. Например, от 0 до 99 для двух символов, от 0 до 999 для 3 и т.д.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
04.02.2014, 18:36     Есть ли такой метод? #9
А если их будет очень-очень много?
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.02.2014, 18:51     Есть ли такой метод? #10
Кого их? Сказано же, что работа с int, а у него диапазон ограничен.
Тамика
Котовчанин
870 / 450 / 142
Регистрация: 16.02.2010
Сообщений: 2,899
Записей в блоге: 27
04.02.2014, 19:25     Есть ли такой метод? #11
Там сказано, что каждый элемент инт. А если каждый элемент будет 65535 и из будет, например, тысяча. Или вы будете каждый входящий элемент проверять?

Добавлено через 1 минуту
Если, конечно, ТС это имел в виду. Так как непонятно.
koldya
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 26
04.02.2014, 20:28  [ТС]     Есть ли такой метод? #12
Цитата Сообщение от Toshkarik Посмотреть сообщение
koldya, вводите число, и дальше с помощью диапазонов проверяете на количество цифр. Например, от 0 до 99 для двух символов, от 0 до 999 для 3 и т.д.
я у себя так и проверяю, просто интересно есть ли другой подход для решения..

Добавлено через 6 минут
Цитата Сообщение от Тамика Посмотреть сообщение
А если их будет очень-очень много?
если много, то лучше будет воспользоваться преобразованием к строке и так уже в цикле проверить
Или так:
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
while(true)               // цикл, пока футы не будут правильными
    {
    cout << "\n\nВведите футы: ";
    cin.unsetf(ios::skipws);// не пропускать разделители
    cin >> instr;           // получить футы как строку
    if(isFeet(instr))       // правильное значение? да
      { 
      cin.ignore(10, '\n'); // съесть символы, включая разделитель строк
      feet = atoi(instr.c_str()); // перевести значение в целочисленное
      break;                // выход из цикла 'while'
      }                     // нет, не целое
    cin.ignore(10, '\n');   // съесть символы, включая разделитель строк
    cout << "Футы должны быть целыми < 1000\n";
    }                       // конец цикла while для футов
///
int isFeet(string str)       // true если введена строка
  {                          // с правильным значением футов
  int slen = str.size();     // получить длину
  if(slen == 0 || slen > 5)  // не было или слишком много данных
    return 0;                // не целое
  for(int j = 0; j < slen; j++) // проверить каждый символ
  if((str[j] < '0' || str[j] > '9') && str[j] != '-') // если не цифра или минус
      return 0;              // строка неправильных футов
  double  n = atof(str.c_str()); // перевод в double 
  if(n <-999.0 || n > 999.0) // вне допустимых значений?
    return 0;                // если да, неправильные футы
  return 1;                  // правильные футы
  }
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
04.02.2014, 20:37     Есть ли такой метод? #13
Как их вводить и сколько их это уже вопрос 10-ый.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 20:39     Есть ли такой метод?
Еще ссылки по теме:

Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму - C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму.

есть код и есть ошибка нужно найти дырку - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { int i,size,n; ...

Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. - C++
Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. Напишите программу пожалуйста,очень...

Определить: а) Есть ли в нем цифра 3; б) Есть ли цифры 2 и 5 - C++
Всем привет! Помогите сделать программку в с++, условие: Дано натуральное число. Определить: а) Есть ли в нем цифра 3; б) Есть ли цифры 2...

Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму - C++
Проблема с заданием. Дан одномерный массив. Узнать, есть ли среди них элементы с нечетными номерами, которые кратны 17, и если есть,...


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

Или воспользуйтесь поиском по форуму:
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
04.02.2014, 20:39     Есть ли такой метод? #14
Цитата Сообщение от koldya Посмотреть сообщение
задание стоит водить данные в формате int, и проверять их на переизбыток символов
если я правильно понял, нужна проверка на валидность ввода числа? если так то достаточно выброса исключения при вводе не чисел или чисел слишком большой длины

Добавлено через 1 минуту
т.е. как то так
C++
1
2
3
4
5
6
7
8
9
10
int i;
std::cin.exceptions(std::ios::failbit);
try
{
    std::cin >> i;
}
catch(std::exception& e)
{
    std::cerr << e.what();
}
Yandex
Объявления
04.02.2014, 20:39     Есть ли такой метод?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru