Другие языки программирования и технологии
Олимпиадная задача по Информатике!
Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке. Скажите как сделать правильно( Нужно на Паскале). Я решил вот таким способом, буквы как надо остались на месте о вот цифры не в обратном порядке program A; var s:string; ch:char; i:byte; begin readln(s); for i:=1 to trunc(length(s)/7) do begin ch:=s[4]; s[4]:=s[length(s)-i+1]; s[length(s)-i+1]:= ch; end; writeln(s); readln(s); end.
Приведи задание как оно тебе было дано!
А то по твоему объяснению ничего не понятно.
Программа - это вообще ерунда какая-то.. .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Для вот такого задания: Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.
Можно вот так например:
var S, S0 : String; N : Byte;
begin
ReadLn(S0);
S := ''; for N := Length(S0) downto 1 do S := S + S0[N];
WriteLn(S);
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Вот 2 варианта решения:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
S : String;
C : Char;
L, R : Byte;
begin
Write('Введите строку: '); ReasLn(S);
L := 1; R := Length(S);
repeat
while Not(S[L] in ['0'..'9']) and (L <= R) do Inc(L);
while Not(S[R] in ['0'..'9']) and (L <= R) do Dec(R);
if L < R then begin C := S[L]; S[L] := S[R]; S[R] := C; Inc(L); Dec(R); end;
until L >= R;
WriteLn(S);
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
S, S1 : String;
N, P : Byte;
begin
Write('Введите строку: '); ReasLn(S);
S1 := '';
for N := 1 to Length(S) do if S[N] in ['0'..'9'] then S1 := S1 + S[N];
P := Length(S1); for N := 1 to Length(S) do if S[N] in ['0'..'9'] then
begin S[N] := S1[P]; Dec(P); end;
WriteLn(S);
end.
А то по твоему объяснению ничего не понятно.
Программа - это вообще ерунда какая-то.. .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Для вот такого задания: Дана строка. Вывести строку, содержащую те же символы, но расположенные в обратном порядке.
Можно вот так например:
var S, S0 : String; N : Byte;
begin
ReadLn(S0);
S := ''; for N := Length(S0) downto 1 do S := S + S0[N];
WriteLn(S);
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Вот 2 варианта решения:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
S : String;
C : Char;
L, R : Byte;
begin
Write('Введите строку: '); ReasLn(S);
L := 1; R := Length(S);
repeat
while Not(S[L] in ['0'..'9']) and (L <= R) do Inc(L);
while Not(S[R] in ['0'..'9']) and (L <= R) do Dec(R);
if L < R then begin C := S[L]; S[L] := S[R]; S[R] := C; Inc(L); Dec(R); end;
until L >= R;
WriteLn(S);
end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var
S, S1 : String;
N, P : Byte;
begin
Write('Введите строку: '); ReasLn(S);
S1 := '';
for N := 1 to Length(S) do if S[N] in ['0'..'9'] then S1 := S1 + S[N];
P := Length(S1); for N := 1 to Length(S) do if S[N] in ['0'..'9'] then
begin S[N] := S1[P]; Dec(P); end;
WriteLn(S);
end.
Program bla bla:
var s,s1:string;
i,j:integer;
begin
readln(s);
i:=length(s);
while i<>0 do
begin
s1[j]:=s[ i ];
I:=i-1;
j:=j+1;
end;
end.
Должна работать)
var s,s1:string;
i,j:integer;
begin
readln(s);
i:=length(s);
while i<>0 do
begin
s1[j]:=s[ i ];
I:=i-1;
j:=j+1;
end;
end.
Должна работать)
Тут все просто:
program perevorot;
var
s: string;
i: integer;
begin
read(s);
for i:=length(s) downto 1 do
write(s);
end.
program perevorot;
var
s: string;
i: integer;
begin
read(s);
for i:=length(s) downto 1 do
write(s);
end.
Похожие вопросы
- олимпиадная задача по информатике. Помогите решить пожалуйста
- Объясните, пожалуйста, как решить задачу по информатике...
- Олимпиадные задачи по BASIC 4.5 ПОМОГИТЕ !!!
- Задача по информатике
- Олимпиадная задача
- Задача по информатики PASCAL
- Помогите найти ошибку в решении олимпиадной задаче...
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите с задачей по информатике. Срочно прошу.
- Олимпиадная задача