Показать сообщение отдельно
Старый 03.06.2011, 17:14   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Абай Посмотреть сообщение
Дана строка, изображающая арифметическое выражение вида "<цифра>+-<цифра>+-...+-<цифра>", где на месте знака операции "+-" находится символ "+" или "-"(например, "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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070