Помогите разобраться с кодом С++

FAV_C
Offline
Зарегистрирован: 22.03.2018
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
 
int dec(string s);
 
int main()
{
    string str,temp;
    cout <<"Stroka: ";
    cin>>str;
    int rez = 0;
    int i = 0;
    char ch;
    while (isdigit(str[i]))
    {
        temp.append (1,str[i]);
        ++i;
    }
    rez = dec(temp);
    while (i<str.size())
    {
        ch = str[i];
        temp.erase(0,temp.length());
        i++;
        while (i<str.size() && isdigit(str[i]))
        {
            temp.append (1,str[i]);
            ++i;
        }
        switch(ch)
        {
            case '+': rez+=dec(temp); 
                      break;
            case '-': rez-=dec(temp);
        }
    }
    cout <<rez <<endl;
    system("PAUSE");
    return 0;
    
}
int dec (string s)
{
    char l[]={'0','1','2','3','4','5','6','7','8','9'};
    int n = 0,j;
    for (int i=0; i<s.size(); i++)
    {
        for (j=0; j<10; j++)
            if (s[i]==l[j])
                break;
        n*=10;
        n+=j;
    }
    return n;
}
 
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

вставьте код по правилам форума

FAV_C
Offline
Зарегистрирован: 22.03.2018
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
 
int dec(string s);
 
int main()
{
    string str,temp;
    cout <<"Stroka: ";
    cin>>str;
    int rez = 0;
    int i = 0;
    char ch;
    while (isdigit(str[i]))
    {
        temp.append (1,str[i]);
        ++i;
    }
    rez = dec(temp);
    while (i<str.size())
    {
        ch = str[i];
        temp.erase(0,temp.length());
        i++;
        while (i<str.size() && isdigit(str[i]))
        {
            temp.append (1,str[i]);
            ++i;
        }
        switch(ch)
        {
            case '+': rez+=dec(temp); 
                      break;
            case '-': rez-=dec(temp);
        }
    }
    cout <<rez <<endl;
    system("PAUSE");
    return 0;
    
}
int dec (string s)
{
    char l[]={'0','1','2','3','4','5','6','7','8','9'};
    int n = 0,j;
    for (int i=0; i<s.size(); i++)
    {
        for (j=0; j<10; j++)
            if (s[i]==l[j])
                break;
        n*=10;
        n+=j;
    }
    return n;
}

 

b707
Offline
Зарегистрирован: 26.05.2017

а что надо-то?

Код - довольно-таки дилетантская реализация простейшего калькулятора, умеющего складывать или вычитать вводимые с консоли числа.

FAV_C
Offline
Зарегистрирован: 22.03.2018

Я просто не понимаю, что делают while, первый просто для проверки на дсятичное число, а вот со вторым и третьим не смог разобраться

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Совсем уже охренели! Читай учебник, даун, мля. Какое отношение имеет этот код к Ардуино?!

Клапауций 555
Offline
Зарегистрирован: 10.03.2018

wdrakula пишет:

Какое отношение имеет этот код к Ардуино?!

никакого - а, шо такое? О_О

b707
Offline
Зарегистрирован: 26.05.2017

FAV_C пишет:

Я просто не понимаю, что делают while, первый просто для проверки на дсятичное число

Вовсе не для проверки. Первый while извлекает из введенной строки цифровые символы и добавляет их в переменную temp. потом она преобразуется в число. Второй и третий циклы находят в строке второе число и знак операции.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

даун, мля

Завтра, вроде как праздник - хоть вообще на форуме не показывайся :(

А то ведь придётся вот так объяснять что while делает :)