Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
koldya
0 / 0 / 1
Регистрация: 24.01.2013
Сообщений: 26
#1

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

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

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

Есть метод класса внутри , есть проверка. Если условие сходится то метод должен выдать указатель, иначе булевую переменную
Есть метод класса внутри которого, посередине, есть проверка. Если условие...

В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?
(C++ Builder XE5)

Есть пару вопросов по такой вот проге
#define MY_LINKED_LIST #include <iostream> using namespace std; struct...

Проверить, что есть такой индекс в vector
Есть индекс надо приверить, что такой есть в векторе. Как?

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

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

13
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
04.02.2014, 13:06 #2
Почему "мучатся"? Считываете в строку и всё - у Вас есть размер строки. str.size() - вот и все мучения.
0
koldya
0 / 0 / 1
Регистрация: 24.01.2013
Сообщений: 26
04.02.2014, 15:40  [ТС] #3
Цитата Сообщение от Тамика Посмотреть сообщение
Почему "мучатся"? Считываете в строку и всё - у Вас есть размер строки. str.size() - вот и все мучения.
У меня задание стоит водить данные в формате int, и проверять их на переизбыток символов.
С примечанием: "Не вводите данные в виде символьных строк с последующим конвертированием. "
0
S_el
2133 / 1661 / 354
Регистрация: 15.12.2013
Сообщений: 6,593
04.02.2014, 15:47 #4
Цитата Сообщение от koldya Посмотреть сообщение
У меня задание стоит водить данные в формате int, и проверять их на переизбыток символов.
Так в чем проблема?Записывайте свое число в int и все.Или вводите в double и проверяйте на превышение интовских границ.
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
04.02.2014, 16:06 #5
Цитата Сообщение от S_el Посмотреть сообщение
Так в чем проблема?Записывайте свое число в int и все.Или вводите в double и проверяйте на превышение интовских границ.
Што?.. Не поняла Ваш вариант...

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

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

Добавлено через 1 минуту
Цитата Сообщение от Тамика Посмотреть сообщение
Ну хорошо, а что если попорбовать в лоб - через вектор интов? Ввод циклом. А у вектора так же легко добывается size, как и в строке...
Или в том-же цикле "собрать" число из символов ,дополнительное условие граница инта.
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
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.
0
Toshkarik
1148 / 865 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.02.2014, 18:34 #8
koldya, вводите число, и дальше с помощью диапазонов проверяете на количество цифр. Например, от 0 до 99 для двух символов, от 0 до 999 для 3 и т.д.
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
04.02.2014, 18:36 #9
А если их будет очень-очень много?
0
Toshkarik
1148 / 865 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.02.2014, 18:51 #10
Кого их? Сказано же, что работа с int, а у него диапазон ограничен.
0
Тамика
Котовчанин
918 / 462 / 195
Регистрация: 16.02.2010
Сообщений: 3,264
Записей в блоге: 28
04.02.2014, 19:25 #11
Там сказано, что каждый элемент инт. А если каждый элемент будет 65535 и из будет, например, тысяча. Или вы будете каждый входящий элемент проверять?

Добавлено через 1 минуту
Если, конечно, ТС это имел в виду. Так как непонятно.
0
koldya
0 / 0 / 1
Регистрация: 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;                  // правильные футы
  }
0
Toshkarik
1148 / 865 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
04.02.2014, 20:37 #13
Как их вводить и сколько их это уже вопрос 10-ый.
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
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();
}
0
04.02.2014, 20:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 20:39
Привет! Вот еще темы с решениями:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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