PDA

Просмотр полной версии : Pascal: Сорировка ОМ; и не только



DeadFast
19.12.2007, 21:16
Вот такие задачи и есть наброски но в них не всё верно и местами может что то не дописано посмотрите и исправте пжл!
1. Перенести в начало одномерного массива все нечётные элементы.(файловый ввод и вывод; ввод с помощью типизир константы и вывод в типизир файл)


Program ktulhu;
uses crt;
const n=7;
var
a:array [1..n] of integer;
F1:Text ;
i,k,j,p:integer;
b,c,d,f:integer;
begin
writeln;
writeln('Perenesti v nachalo odnomernogo massiva vse nechetnble elementbl');
clrscr;
writeln('Ishodnbli odnomernbli massiv');

assign(F1, 'File2.txt');
{$I-}
Reset(F1);
if IOResult<>0 then
begin
writeln('Oshibka pri otkrbltie faila!');
readln;
exit;
end;
{$I+}
For i:=1 to n do
begin
read(F1,a[i]);
write(a[i],' ');
end;
writeln;
for i:=1 to n do
If (a[i] mod 2)<>0 then
begin
k:=i;
P:=a[k];
for i:=k downto 2 do
a[i]:=a[i-1];
a[1]:=P;
end;
writeln('Konechnaya posledovatelnost');
For i:=1 to n do
write(a[i] , ' ');
close(F1);
readln;
end.


2. Дана последовательность а1,а2...,а20. Расположить расположить нечётные элементы последовательности по убывнию.( Использовать модифицированный метод простого выбора);

program pyz;
const n = 20;
var V:array[1..n] of integer;
i,j,tmp, min:integer;

begin
Randomize;
for i:=1 to n do
V[i]:= Random(100);
Writeln('Zaceni massiv: ');
for i:=1 to n do Write(V[i],' ');
begin
if min>V[i] then
min:=V[i];
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if V[i] < V[j] then begin
tmp:= V[i];
V[i]:= V[j];
V[j]:= tmp;
end;
Writeln;
Writeln('Vse kruto, po ubblvaniu: ');
for i:=1 to n do Write(V[i],' ');
Readln;
End;
end.

Хыиуду
20.12.2007, 10:40
for i:=1 to n do
If (a[i] mod 2)<>0 then
begin
k:=i;
P:=a[k];
for i:=k downto 2 do
a[i]:=a[i-1];
a[1]:=P;
end;

Два цикла по i один внутри другого точно дадут ошибку. Второй цикл рекомендую сделать, скажем, по j.

for i:=1 to n do Write(V[i],' ');
begin
if min>V[i] then
min:=V[i];
end;
Это, конечно, тоже круто, делать write в цикле, а нахождение минимума - где-то в свободном полете. Вы, Абрам Моисеевич, либо крестик снимите, либо трусы наденьте. Т.е. либо уберите write, либо поставьте begin перед ним.

DeadFast
23.12.2007, 19:29
можешь исправить? У меня прога всё равно прально не считает!

Хыиуду
24.12.2007, 11:14
Я, по-моему, четко описал, что где надо заменить