Цитата:
Сообщение от Абай
Дана строка, изображающая арифметическое выражение вида "<цифра>+-<цифра>+-...+-<цифра>", где на месте знака операции "+-" находится символ "+" или "-"(например, "4+7-2-8").Вывести значение данного выражения(целое число).
|
Код:
VAR
S:String;
i,d:Byte;
Sum,Code:Word;
BEGIN
Writeln('Enter the string:');
Readln(S);
Val(S[1],Sum,Code);
For i:=1 to (Length(S) div 2) do
begin
Val(S[2*i+1],d,Code);
If S[2*i]='+' then Inc(Sum,d) else Dec(Sum,d);
end;
Writeln('Sum= ',Sum);
Readln
END.
Цитата:
Сообщение от Абай
Дано предложение. Зашифровать ее по этому правилу- поместив вначале все символы, расположенные на нечетных позициях строки. а затем, в обратном порядке, все символы, расположенные на нечетных позициях(например "Программа" превратится в "ргамамроП"). Расшифровать ее.
|
Прежде всего, попрошу повнимательнее относиться к формулировкам задач - думаете, делать нам нечего, как только в Ваших ляпах разбираться? Хорошо хоть пример приведен.
Код:
VAR
S,S1,S2:String;
C_even,C_odd:Array[1..128] of Char;
i,N_odd,N_even:Byte;
BEGIN
Writeln('Enter the string S:');
Readln(S);
Writeln;
N_even:=Length(S) div 2;
If (Length(S) mod 2)=0 then N_odd:=N_even else N_odd:=N_even+1;
For i:=1 to N_even do
C_even[i]:=S[2*i];
For i:=1 to N_odd do
C_odd[i]:=S[2*i-1];
S1:='';
Writeln('Encoded:');
For i:=1 to N_even do
S1:=S1+C_even[i];
For i:=N_odd downto 1 do
S1:=S1+C_odd[i];
Writeln(S1);
Writeln;
S2:='';
N_even:=Length(S1) div 2;
N_odd:=Length(S1)-N_even;
For i:=1 to N_even do
C_even[i]:=S1[i];
For i:=N_even+N_odd downto N_even+1 do
C_odd[N_even+N_odd-i+1]:=S1[i];
Writeln('Decoded:');
For i:=1 to N_even do
begin
S2:=S2+C_odd[i];
S2:=S2+C_even[i]
end;
If N_odd>N_even then S2:=S2+C_odd[N_odd];
Writeln(S2);
Readln
END.