По разделам

 

Решение задачи 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 Просмотров: 6152
String 2 Просмотров: 4294
String 3 Просмотров: 2643
String 4 Просмотров: 3679
String 5 Просмотров: 4303
String 6 Просмотров: 4111
String 7 Просмотров: 2852
String 8 Просмотров: 3562
String 9 Просмотров: 2916
String 10 Просмотров: 3110
String 11 Просмотров: 3762
String 12 Просмотров: 3309
String 13 Просмотров: 3961
String 14 Просмотров: 2891
String 15 Просмотров: 3605
String 16 Просмотров: 3552
String 17 Просмотров: 2903
String 18 Просмотров: 2580
String 19 Просмотров: 3563
String 20 Просмотров: 2707
String 21 Просмотров: 2405
String 22 Просмотров: 2577
String 23 Просмотров: 3592
String 24 Просмотров: 2670
String 25 Просмотров: 1942
String 26 Просмотров: 3134
String 27 Просмотров: 2789
String 28 Просмотров: 2945
String 29 Просмотров: 3686
String 30 Просмотров: 2443
String 31 Просмотров: 2862
String 32 Просмотров: 2307
String 33 Просмотров: 1986
String 34 Просмотров: 1943
String 35 Просмотров: 1818
String 36 Просмотров: 1645
String 37 Просмотров: 1396
String 38 Просмотров: 1529
String 39 Просмотров: 1632
String 40 Просмотров: 1900
String 41 Просмотров: 1688
String 42 Просмотров: 3334
String 43 Просмотров: 1612
String 44 Просмотров: 1589
String 45 Просмотров: 2002
String 46 Просмотров: 1323
String 47 Просмотров: 1240
String 48 Просмотров: 1764
String 49 Просмотров: 1491
String 50 Просмотров: 1538
String 51 Просмотров: 1437
String 52 Просмотров: 1395
String 53 Просмотров: 1348
String 54 Просмотров: 1021
String 55 Просмотров: 1169
String 56 Просмотров: 989
String 57 Просмотров: 1613
String 58 Просмотров: 1706
String 59 Просмотров: 1501
String 60 Просмотров: 1362
String 61 Просмотров: 1112
String 62 Просмотров: 1176
String 63 Просмотров: 1511
String 64 Просмотров: 1357
String 65 Просмотров: 1286
String 66 Просмотров: 1350
String 67 Просмотров: 1103
String 68 Просмотров: 1343
String 69 Просмотров: 1192
String 70 Просмотров: 1897

Комментарии

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



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