По разделам



Задача 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 Просмотров: 41
String 2 Просмотров: 27
String 3 Просмотров: 38
String 4 Просмотров: 50
String 5 Просмотров: 34
String 6 Просмотров: 47
String 7 Просмотров: 25
String 8 Просмотров: 19
String 9 Просмотров: 194
String 10 Просмотров: 26
String 11 Просмотров: 40
String 12 Просмотров: 248
String 13 Просмотров: 30
String 14 Просмотров: 41
String 15 Просмотров: 48
String 16 Просмотров: 41
String 17 Просмотров: 38
String 18 Просмотров: 36
String 19 Просмотров: 161
String 20 Просмотров: 24
String 21 Просмотров: 38
String 22 Просмотров: 36
String 23 Просмотров: 61
String 24 Просмотров: 50
String 25 Просмотров: 49
String 26 Просмотров: 55
String 27 Просмотров: 60
String 28 Просмотров: 85
String 29 Просмотров: 58
String 30 Просмотров: 72
String 31 Просмотров: 43
String 32 Просмотров: 88
String 33 Просмотров: 61
String 34 Просмотров: 52
String 35 Просмотров: 50
String 36 Просмотров: 53
String 37 Просмотров: 53
String 38 Просмотров: 49
String 39 Просмотров: 52
String 40 Просмотров: 67
String 41 Просмотров: 54
String 42 Просмотров: 46
String 43 Просмотров: 53
String 44 Просмотров: 47
String 45 Просмотров: 46
String 46 Просмотров: 48
String 47 Просмотров: 36
String 48 Просмотров: 46
String 49 Просмотров: 51
String 50 Просмотров: 36
String 51 Просмотров: 41
String 52 Просмотров: 44
String 53 Просмотров: 31
String 54 Просмотров: 33
String 55 Просмотров: 47
String 56 Просмотров: 33
String 57 Просмотров: 50
String 58 Просмотров: 32
String 59 Просмотров: 25
String 60 Просмотров: 37
String 61 Просмотров: 25
String 62 Просмотров: 22
String 63 Просмотров: 65
String 64 Просмотров: 38
String 65 Просмотров: 49
String 66 Просмотров: 29
String 67 Просмотров: 20
String 68 Просмотров: 15
String 69 Просмотров: 39
String 70 Просмотров: 36

Комментарии

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