воскресенье, 20 марта 2011
Имеется несколько задач, с кривым решением, помогите найти ошибки
читать дальше
Задача 1 Найти все трехзначные числа, представимые в виде сумм факториалов своих цифр.
Program V6_Z9;
var
c,n,x,fac,F,i,f1,m:integer;
begin
For n:=100 to 999 do begin
F:=1;
F1:=0;
For m:=1 to 3 do begin {три цифры}
c:=n mod 10; {отделяем последнюю}
if c=0 then fac:=1 else begin
for i := 2 to c do begin
f := f * i;
fac := f;
F1:=fac+F1;
end;
end;
C:=n div 10;
end;
IF F1=n then write(' ',F1,' ');
end;
writeln;
end.
Задача 2
Ввести массив a[1], a[2],... a[n] целых чисел. поменять в нем местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных.
Не знаю как осуществить перестановку не выходя при этом за границы диапазона массива.
Program V6_Z11;
const n=10;
var x,y: array [1..n] of integer;
i:integer;
begin
writeln('Исходный массив');
for i:=1 to n do begin
x[i]:=random(100);
write (x[i],' ');
end;
writeln;
for i:=1 to n do begin
y[i]:=x[i+1];
y[i+1]:=x[i];
end;
writeln('После перестановки');
for i:=1 to n do
write (y[i],' ');
end.
Задача 3
Зашифровать все трехбуквенные слова, заменив все символы на символы с кодом, большим на три еденицы. Вывести новую строку.
Тут вообще тарабарщина и путаница с типами и полный ступор в конце непосредственно с самой заменой.
program V6_Z15;
var
S : string;
Ch:Char;
i, Pos1, Len, LenW:Integer;
begin
Writeln('Задайте строку:');
Readln(S);
Len := Length(S);
Pos1 := 0;
for i := 1 to Len do begin
if S[i]=' ' then Continue;
if (i = 1) or (S[i - 1]=' ') then Pos1 := i;
if (i = Len) or (S[i + 1]=' ') then begin
LenW := i - Pos1 + 2;
if LenW = 3 then
writeln('Строка после обработки:');
Writeln(S);
end;
end;
end.
@темы:
Pascal
const n=10;
var x,y: array [1..n] of Integer;
var i: Integer;
begin
writeln('Исходный массив');
for i:=1 to n do
begin
x[i]:=random(100);
write(x[i],' ');
end;
for i:=1 to n do
begin
if i mod 2 = 0 then y[i] := x[i-1]
else y[i] := x[i+1];
end;
writeln('После перестановки');
for i:=1 to n do write (y[i],' ');
end.
код символа можно извлечь функцией Ord(). получить символ по его коду - Chr().
а что вы пытались сделать, так и не понял =))
Указать на ошибки в предложенном коде будет чрезвычайно трудно, т.к. их много.
Проще выложить новый код с этим же алгоритмом:
читать дальше
Теперь на счет алгоритма... Этот алгоритм крайне не оптимален. Если на преподавателя может положительно подействовать факт оптимизированного алгоритма, то могу объяснить что тут можно сделать :-)
P.S. Кто-нибудь может подсказать, как нормально вставлять код? А то принтскрином как-то странно выглядит, а смотреть на код без отступов просто не возможно.