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

Как распознать цифру или пробел в string? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очередь, список из чисел http://www.cyberforum.ru/cpp-beginners/thread885473.html
Создать список из целых чисел. Удалить лишние элементы в списке так, чтобы в результирующем списке каждый элемент был не меньше среднего арифметического всех элементов, следующих за ним. Надо решить с помощью очереди. Стеком уже решила.
C++ Как узнать тип шаблонного класса во время выполнения программы? Тоесть: имеем класс list<int> или list<double>, и как узнать какой это тип? Ну int или double? http://www.cyberforum.ru/cpp-beginners/thread885459.html
Создать класс Человек, имеющий имя, возраст C++
Здравствуйте! Не могли бы Вы помочь мне сделать вот эту задачу: Создать класс Человек, имеющий имя, возраст. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - Совершеннолетний, имеющий номер паспорта. Определить конструкторы по умолчанию и с параметрами, деструктор, фуекцию печати. Определить функцию переназначения номера паспорта.
C++ Файл и график функции
Создать программу на borland c++ 3.1, обрабатывающую содержимое текстового файла экспериментальных данных с целью построения суточного хода критической частоты температуры (величина k- последний столбец). Нужны идеи по созданию т.е. как содержимое файла преобразовать в вещественную переменную.
C++ Определить временные характеристики работы программы http://www.cyberforum.ru/cpp-beginners/thread885452.html
Здраствуйте! Вот задание: На основе контейнера vector построить одномерный массив целых чисел. Выполнить операции ввода элементов в массив, последовательный поиск заданного элемента в массиве и вывод его номера, вывод массива на экран. Определить временные характеристики работы программы (суммарное время на выполнение каждого вида операции на примере с большим количеством сгенерированных...
C++ Определить, являются ли точки заданного множества вершинами параллелограмма Здравствуйте! Такое вот задание: Определить, являются ли точки заданного множества вершинами параллелограмма со сторонами, параллельными оси ОХ. Нужно было сделать с помощью наследования - я сделал, НО! потребовали, чтобы программа понимала, что это параллелограмм не зависимо от того, в каком порядке введены точки. Программа всё отлично считает, если ввести их по часовой или против часовой... подробнее

Показать сообщение отдельно
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
01.06.2013, 12:25
Что-то вы вообще не то делаете. Во-первых,
C++
1
if (abit[j] == 5) m++;
Вы не сверяете символ с числом 5. Вы сверяете его с 5м символом таблицы ASCII - символом запроса.
Далее. Даже, допустим, вы поменяли 5 на '5'. Вы, получается, просто считаете количество пятерок.
Далее.
C++
1
cin >> n;
C++
1
getline(cin, abit);
Первая строка считывает число, но оставляет символ перехода на новую строку. В итоге, getline не предоставляет вам возможности ввести новую строку, а считывает оставшийся символ.

Добавлено через 15 минут
Для реализации задачи на текущем уровне сойдет такой код. Впрочем, он не очень красив и логичен (char tmp для заглатывания пустого символа не есть красивый способ), плюс заглатывается первый символ строки abit (тут это не принципиально, но дебагом ловится).
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
 #include <iostream>
 #include <conio.h>
 #include <string>
 #include <cstdio>
 #include <sstream>
 #include <ctype.h>
 
 using namespace std;
 
 
 int main() {
     string abit;
     int n, m = 0, i, j, stud = 0;
     char tmp;
     cout << "Vvedite kol-vo studentov\n";
     cin >> n;
     cout << "Vvedite kol-vo ekzamenov\n";
     cin >> m;
     for (i = 0; i < n; i++) {
         cout << "Vvedite familiyu i ocenki vida Ivanov 5 4 3 5\n";
         cin >> tmp;
         getline(cin,abit); // Принимаем строку
         int count = 0;
         for (j = 0; j < abit.size(); j++)
         {
            if (abit.at(j) >= '0' && abit.at(j) <= '9')
            {
                if (abit.at(j) == '5')
                {
                    count++;
                }
            }
         }
         if(count == m) stud++;
     }
     cout << stud << endl;
     system("pause");
     return 0;
 }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru