По разделам

 

Решение задачи String 23


Дана строка, изображающая арифметическое выражение вида «<цифра>±<цифра>±...±<цифра>», где на месте знака операции «±» находится символ «+» или «−» (например, «4+7−2−8»). Вывести значение данного выражения (целое число).

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    cin >> s;
    int res = s[0] - 48, operation;
    for(int i = 1; i < s.size(); ++i){
        if(s[i] == '+')
            operation = 1;
        else if(s[i] == '-')
            operation = -1;
        else
            res += operation * (s[i] - 48);
    }
    cout << res;
    return 0;
}


Код (Python)

# -*- coding: utf-8 -*-
import random
import string
import numpy as np

def RndExpr():
    N = random.randrange(2,11)
    lst_digit = list(np.random.choice(list(string.digits), N))
    lst_oper = list(np.random.choice(['+','-'], N-1))
    result = [None]*(2*N - 1)
    result[::2] = lst_digit
    result[1::2] = lst_oper
    return "".join(result)


for i in range(0,5):
    s = RndExpr()
    print()
    print(s, "=" ,eval(s))
    oper = s[1::2]
    j = 0
    result = int(s[0])
    for x in oper:
        digit = int(s[2*j+2])
        if x == '+':
            result += digit
        else:
            result -= digit
        #print(s[2*j+2],x,result)
        j += 1
    #print(oper)
    print(s, "=" ,result)
									

Код (Pascal)

program String23;
var
  i,Rez,Operation:integer;
 
  S:string;
 
begin
 Write('S:');
 Readln (S);
 Rez:=ord(S[1])-48;
 
 for i:=2 to Length(S) do
   if (ord(S[i]) in  [48..57]) then Rez:=Rez+operation*(ord(S[i])-48)
   else if (ord(S[i]) = 43) then Operation:=1 //+
   else if (ord(S[i]) = 45) then Operation:=-1; //-
 
 Writeln(Rez);
end.
									




String. Абрамян
String 1 Просмотров: 6203
String 2 Просмотров: 4362
String 3 Просмотров: 2682
String 4 Просмотров: 3714
String 5 Просмотров: 4360
String 6 Просмотров: 4161
String 7 Просмотров: 2887
String 8 Просмотров: 3604
String 9 Просмотров: 2961
String 10 Просмотров: 3154
String 11 Просмотров: 3821
String 12 Просмотров: 3349
String 13 Просмотров: 4012
String 14 Просмотров: 2941
String 15 Просмотров: 3651
String 16 Просмотров: 3596
String 17 Просмотров: 2945
String 18 Просмотров: 2626
String 19 Просмотров: 3605
String 20 Просмотров: 2750
String 21 Просмотров: 2444
String 22 Просмотров: 2617
String 23 Просмотров: 3635
String 24 Просмотров: 2714
String 25 Просмотров: 1982
String 26 Просмотров: 3197
String 27 Просмотров: 2832
String 28 Просмотров: 2987
String 29 Просмотров: 3726
String 30 Просмотров: 2494
String 31 Просмотров: 2906
String 32 Просмотров: 2350
String 33 Просмотров: 2024
String 34 Просмотров: 1982
String 35 Просмотров: 1852
String 36 Просмотров: 1677
String 37 Просмотров: 1430
String 38 Просмотров: 1566
String 39 Просмотров: 1665
String 40 Просмотров: 1939
String 41 Просмотров: 1725
String 42 Просмотров: 3369
String 43 Просмотров: 1651
String 44 Просмотров: 1621
String 45 Просмотров: 2034
String 46 Просмотров: 1358
String 47 Просмотров: 1270
String 48 Просмотров: 1801
String 49 Просмотров: 1529
String 50 Просмотров: 1572
String 51 Просмотров: 1466
String 52 Просмотров: 1428
String 53 Просмотров: 1390
String 54 Просмотров: 1057
String 55 Просмотров: 1199
String 56 Просмотров: 1023
String 57 Просмотров: 1643
String 58 Просмотров: 1742
String 59 Просмотров: 1534
String 60 Просмотров: 1401
String 61 Просмотров: 1197
String 62 Просмотров: 1257
String 63 Просмотров: 1610
String 64 Просмотров: 1473
String 65 Просмотров: 1345
String 66 Просмотров: 1474
String 67 Просмотров: 1143
String 68 Просмотров: 1393
String 69 Просмотров: 1261
String 70 Просмотров: 1969

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет