Войти

Показать полную графическую версию : Паскаль! создать массив целых чисел и записать его в файл


Desvi
30-05-2010, 19:03
Помогите пожалуйста, Составить программу, которая создает массив целых чисел и записывает его в файл разными способами (с использованием процедур write или blockwrite, read или blockread), а также вычисляет значение среднего арифметического всех элементов, записанных в файл.

Я набросал массив, если есть ошибки исправте пожалуйста


uses crt;
var a: file of integer; i: byte;
mas:array[1..100] of integer; n:integer;
begin
assign(a,'file.bin');
reset(a);
clrscr;
writeln ('Vvedite kol-vo elementov ');
readln (n);
writeln('vvedite zna4enie massiva: ');
for i:=1 to n do
write('a[',i,'] = ');
readln(a[i]);
end;
begin
read(a,mas[i]);
write(mas[i],' ');
end;
close(a);
end.

lxa85
30-05-2010, 20:05
Desvi, прокомментируй код пожалуйста.
Т.к. не совсем понятно что и где ты хочешь сделать.
Прости, но пока это больше похоже на набор бессвязных команд.

uses crt;
var
a: file of integer;
i: byte;
mas:array[1..100] of integer;
n:integer;
begin
assign(a,'file.bin');
reset(a); // что делает reset?
clrscr;
writeln ('Vvedite kol-vo elementov ');
readln (n);
writeln('vvedite zna4enie massiva: ');

for i:=1 to n do
write('a[',i,'] = '); // при данном расположении операторных скобок (begin, end) write - единственный оператор, который будет выполнятся в цикле for
readln(a); [I]//что и откуда читаем? Вопрос кстати не праздный
end; // к чему относится этот end?

begin //этот begin тоже не понятен. Что хоть тут происходит, или что должно происходить?
read(a,mas[i]);
write(mas[i],' ');
end;

close(a);
end.

Desvi
31-05-2010, 21:17
Немного исправил, но массив не записывается в файл, подскажите в чем ошибка? И как с файла посчитай средне арифметическое?


USES CRT;
var f:text;
n,i:integer;
nf:string;
a: array[1..10] of integer;
begin
clrscr;
randomize;
write('Imya faila ');
readln(nf);
nf:=nf+'.txt';
assign(f,nf);
rewrite(f);
write('Skolko 4isel v massive n=');
readln(n);
for i:=1 to n do
begin
randomize;
for i:=1 to n do
begin
a[i]:=random(n);
write(a[i],' ');
end;
end;
close(f);
end.

lxa85
31-05-2010, 22:54
Desvi, КОММЕНТАРИИ!!! Скоро на лбу у каждого студента писать буду!
(Без обид, но это уже надоедает. Благо программа маленькая разобраться можно, но привыкать не стоит.)

По коду:
Randomize надо вызвать один раз в начале программы. Это правильное его использование. (Что вообще делает randomize - читай в документации, гугле)

Покажи мне команду записи в файл. Где она?
Зачем тебе двойной вложенный цикл for i = 1 to n, причем не правильно написанный?




© OSzone.net 2001-2012