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

Вычислить пример, введенный в виде строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача Хищник-Жертва http://www.cyberforum.ru/cpp-beginners/thread1563302.html
Добрый день! Условия решаемой задачи: Разработать систему, моделирующую поведение хищников и жертв в океане. Система должна состоять из следующих классов: Ocean Состоит из двумерного массива указателей на Cell. Инициализируется размерами, количеством объектов Obstacle, Prey и Predator заполняя соответствующими объектами двумерных массив указателей на Cell. Имеет счетчик числа ходов. Имеет...
C++ Подключение папки с *.h файлами Здравствуте, имеется исодный код сервера... нужно научится компилировать его (Server.dll). Дело в том что разработчики уже не поддерживают программу, а нам нужно внести пару изменений в неё. Проблема в том что студия при построении проекта вечно ссылается на то что не может найти файлы в триугольных инклудах, хотя файлы эти в проекте вообще то есть, вот я застопарился на msdn с параметрами... http://www.cyberforum.ru/cpp-beginners/thread1563299.html
Создать иерархию типов, описывает данные - сигнал C++
Создать иерархию типов, описывает данные - сигнал, данные результат обработки и данные, как результат обработки сигнала и будучи сигнал. классы должны иметь конструкторы, включая конструктор копирования, виртуальные деструкторы, перегружены функции Вывод в поток и ввод из потока. помогите сделать в С ++
Get Color from Panel C++
Ребята, приветствую! Использую интерактивное отображение цветов с помощью панели и крашу её обычным для неё способом MyPanel -> Color = TColor(RGB(R,G,B)); Собственно радовался этому чуду пока не встал вопрос как взять цвет с покрашенной ранее панели? Первое что интуитивно могло бы придти в голову это int R = MyPanel -> GetColor(?); Добавлено через 14 минут Или ... int R =...
C++ Builder При закрытии дочерней формы с нее пропадают данные http://www.cyberforum.ru/cpp-beginners/thread1563240.html
Вопрос прост, есть главная форма на которой вызывается несколько дочерних(могут и одновременно), на одной из форм есть StringGrid, в который заносятся некоторые данные, когда форма открыта и я работаю с другими дочерними, то данные не пропадают, как только я сворачиваю или закрываю форму, а после этого работаю с другими дочерними, а потом снова вызываю мне нужную, на ней нет ни данных ни даже...
C++ Реализавать алгоритм вычисления подходящих дробей Помогите пожалуйста написать программу. Необходима реализация алгоритма вычисления подходящих дробей. подробнее

Показать сообщение отдельно
survived
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 2
27.10.2015, 13:09     Вычислить пример, введенный в виде строки
Можно было бы сделать вот так, если бы входные данные были бы гарантированно корректными, а поток ввода оканчивался бы символом EOT (END OF TRANSMISSION 0x04).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main()
{
    int sum = 0;
    
    for (int num; scanf("%d", &num); )
    {
        sum += num;
    }
    
    printf("%d", sum);
    
    return 0;
}
Т.е. scanf учитывает знак, стоящий перед числами
C++
1
2
3
4
5
// Ввод: 44+55-66
// Вывод: 44 55 -66
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d %d %d", a, b, c);
А в вашем случае, я бы сначала весь входной поток засунул в массив, а затем последовательно считал бы все числа из строки, попутно проверяя её корректность, и суммировал их.
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
#include <iostream>
#include <cstring>
 
using std::cin;
using std::cout;
using std::endl;
 
const size_t BUF_SIZE = 100;
 
void error()
{
    cout << "There is an error in the praxis";
    exit(0);
}
 
bool IsDigit(char c)
{
    if ('0' <= c && c <= '9') // Корректно для ASCII
        return true;
    return false;
}
 
int main()
{
    char buf[BUF_SIZE];
    cin.getline(buf, BUF_SIZE);
    
    int sum = 0;
    
    for (size_t i = 0, len = strlen(buf); i < len; ++i)
    {
        if (i == 0 || buf[i] == '+' || buf[i] == '-')
            sum += atoi(buf + i);
        else if (!IsDigit(buf[i]))
            error();
    }
    
    cout << sum;
    
    return 0;
}
 
Текущее время: 16:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru