PDA

Просмотр полной версии : [Помогите!] Ввод вывод массива


~Керя~
19.04.2013, 00:45
var
a:array [1..10] of Integer;
i,j,k:Integer;
f:text;
begin
Randomize;
assign (f,'c:/input1.txt'); reset (f);
readln (f);
for i := 1 to 10 do
a[i]:=Random(20)-10;
rewrite(f);
write(f);
for i:=1 to 10 do
write (f,a[i], ' ');
close (f);
assign (f,'c:/output3.txt'); rewrite(f);
for i:=1 to 10-1 do
for j:=1 to 10-i do
if a[j]>a[j+1] then begin
k:=a[j+1];
a[j+1]:=k
end;
for i:=1 to 10 do
Write(f,a[i],' ');
close (f);
end.
В чем заключается проблема, мне нужно чтобы в output3 записывался отсортированный массив, но почему-то, выводится тот же, что и рандомно прописывается в input.
Подскажите, где промажка, заранее спасибо.

Добавлено через 1 час 18 минут
var
a:array [1..10] of Integer;
i,j,k:Integer;
f:text;
begin
Randomize;
assign (f,'c:/Kirill/input1.txt'); reset (f);
readln (f);
for i := 1 to 10 do
a[i]:=Random(20)-10;
rewrite(f);
write(f);
for i:=1 to 10 do
write (f,a[i], ' ');
close (f);
assign (f,'c:/Kirill/output3.txt'); rewrite(f);
for i := a[1] to 10 do
begin
for j := 1 to 10 do
begin
if a[j]=i then
begin
Write(f,a[j], ' ');
end;
end;
end;
close (f);
end.
Вот немного переделал, но, теперь выводится отсортированный, но иногда игнорирует отрицательные числа, иногда их пишет но не все...

Добавлено через 7 часов 23 минуты
for i := -10 to 10 do
for j := 1 to 10 do
if a[j]=i then Write(f,a[j], ' ');
close (f);
Все))) Сам добил))

Рэйзор
19.04.2013, 14:15
Что это за магия:
1. a[i]:=Random(20)-10;
2. readln (f); и writeln(f)
??

И это вообще это издевательство, а не сортировка /dgs
Прочитай про сортировку пузырьком, quick sort, merge sort

mad_cat
19.04.2013, 16:38
k:=a[j+1];
a[j+1]:=k а смысл какой???

~Керя~
19.04.2013, 20:46
Что это за магия:
1. a[i]:=Random(20)-10;
2. readln (f); и writeln(f)
??

И это вообще это издевательство, а не сортировка /dgs
Прочитай про сортировку пузырьком, quick sort, merge sort

1. Это не сортировка.
2. (1) Это вывод рандомного массива в файл input
3. (2) про ввод ввывод в файл/из файла почитай.
Сортировка тут:
for i := -10 to 10 do
for j := 1 to 10 do
if a[j]=i then Write(f,a[j], ' ');
close (f);

mad_cat
20.04.2013, 19:02
for i := -10 to 10 do
for j := 1 to 10 do
if a[j]=i then Write(f,a[j], ' ');
close (f);
это не сортировка к сожалению - просто подгон) а если в массиве числа будут от -10000 до 100 он не сработает

Рэйзор
20.04.2013, 19:12
1. Это не сортировка.
2. (1) Это вывод рандомного массива в файл input
3. (2) про ввод ввывод в файл/из файла почитай.
Сортировка тут:
for i := -10 to 10 do
for j := 1 to 10 do
if a[j]=i then Write(f,a[j], ' ');
close (f);

Ну так я про этот кусок безумного кода и имею ввиду.
Это не сортировка, точнее есть такой вид сортировки, но он применяется крайне редко и в определенных случаях.
Про рэндом - Random(20)-10; так делают индусы. А Random(10); - так делают нормальные люди.
Про ввод / вывод это не мне читать надо, а вам.

Sinyss
20.04.2013, 20:13
Про рэндом - Random(20)-10; так делают индусы. А Random(10); - так делают нормальные люди.
Если нам надо получить числа от -10 до 10 то все ок...