По разделам

 

Решение задачи 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 Просмотров: 6208
String 2 Просмотров: 4366
String 3 Просмотров: 2684
String 4 Просмотров: 3718
String 5 Просмотров: 4364
String 6 Просмотров: 4167
String 7 Просмотров: 2891
String 8 Просмотров: 3608
String 9 Просмотров: 2969
String 10 Просмотров: 3160
String 11 Просмотров: 3824
String 12 Просмотров: 3351
String 13 Просмотров: 4016
String 14 Просмотров: 2942
String 15 Просмотров: 3654
String 16 Просмотров: 3597
String 17 Просмотров: 2951
String 18 Просмотров: 2630
String 19 Просмотров: 3610
String 20 Просмотров: 2751
String 21 Просмотров: 2444
String 22 Просмотров: 2621
String 23 Просмотров: 3639
String 24 Просмотров: 2717
String 25 Просмотров: 1987
String 26 Просмотров: 3200
String 27 Просмотров: 2834
String 28 Просмотров: 2990
String 29 Просмотров: 3729
String 30 Просмотров: 2496
String 31 Просмотров: 2909
String 32 Просмотров: 2353
String 33 Просмотров: 2027
String 34 Просмотров: 1985
String 35 Просмотров: 1853
String 36 Просмотров: 1679
String 37 Просмотров: 1432
String 38 Просмотров: 1570
String 39 Просмотров: 1668
String 40 Просмотров: 1940
String 41 Просмотров: 1728
String 42 Просмотров: 3373
String 43 Просмотров: 1653
String 44 Просмотров: 1623
String 45 Просмотров: 2036
String 46 Просмотров: 1359
String 47 Просмотров: 1273
String 48 Просмотров: 1801
String 49 Просмотров: 1532
String 50 Просмотров: 1573
String 51 Просмотров: 1470
String 52 Просмотров: 1431
String 53 Просмотров: 1391
String 54 Просмотров: 1061
String 55 Просмотров: 1204
String 56 Просмотров: 1026
String 57 Просмотров: 1648
String 58 Просмотров: 1745
String 59 Просмотров: 1540
String 60 Просмотров: 1403
String 61 Просмотров: 1202
String 62 Просмотров: 1261
String 63 Просмотров: 1611
String 64 Просмотров: 1477
String 65 Просмотров: 1349
String 66 Просмотров: 1479
String 67 Просмотров: 1146
String 68 Просмотров: 1396
String 69 Просмотров: 1265
String 70 Просмотров: 1973

Комментарии

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



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