Пользователь вводит 10 чисел, из них формируется массив сначало четные затем нечетные - Pascal
Формулировка задачи:
Писал программу: пользователь вводит 10 чисел, из них формируется массив сначало четные затем нечетные.
В итоге печатает четные причем каждое по 10 раз а нечетные вообще не печатает. Помогите довести до ума...
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var x,i:integer; q:file of integer;
a:array[0..9] of integer;
begin
assign(q,'ch.dat');
rewrite(q);
for I := 0 to 9 do begin
readln(x);
write(q,x);
end;
reset(q);
writeln('mas=' );
while not eof(q) do begin
read(q,x);
for I := 0 to 9 do begin
if x mod 2 =0 then begin
a[i]:=x ;
write(a[i]);
end;
end;
i:=i+1;
end;
close(q);
readln;
end.Решение задачи: «Пользователь вводит 10 чисел, из них формируется массив сначало четные затем нечетные»
textual
Листинг программы
var q:file of integer;
a:array of integer;
n,x,i,j:integer;
begin
randomize;
assignfile(q,'ch.dat');
rewrite(q);
write('n=');
readln(n);
for i:=1 to n do
begin
x:=random(50);
write(q,x);
end;
reset(q);
writeln('mas=' );
read(q,x);
n:=1;
setlength(a,n);
a[n-1]:=x;
while not eof(q) do
begin
read(q,x);
n:=n+1;
setlength(a,n);
if odd(x)then a[n-1]:=x
else
begin
for j:=n-1 downto 1 do
a[j]:=a[j-1];
a[0]:=x;
end;
end;
closefile(q);
for i:=0 to n-1 do
write(a[i]:4);
readln
end.
Объяснение кода листинга программы
- Объявляется переменная
qкак файловой переменной,a- как массив целых чисел, иn,x,i,j- как целочисленные переменные. - Генерируется случайное число для переменной
xот 0 до 49. - Открывается файл
ch.datдля записи. - Пользователь вводит значение для переменной
n. - С помощью цикла for генерируем
nслучайных чисел и записываем их в файлq. - Файл
qпереоткрывается для чтения. - Происходит чтение первого числа из файла
qв переменнуюx. - Создается массив
aдлинойnи первому элементу присваивается значениеx. - Далее осуществляется чтение значений из файла
qи их размещение в массивеa: четные числа добавляются в конец массива, а нечетные числа добавляются в начало массива. - Файл
qзакрывается. - Выводятся элементы массива
aна экран. - Программа ожидает ввода пользователя перед завершением выполнения.