Пожалуйста, помогите решить задачу на Паскале или подкиньте алгоритм. Такой задачи нет в поиске и в книгах по программированию, кто чем может... <_<
Задача:
Создать файл из одномерных целочисленных массивов a1,a2,...,a10, заполненных числами от
–50 до 50. Переписать в другой типизированный файл те массивы, у которых сумма элементов >0.
Типизированные файлы.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
[syntax=Pascal]
const
N=10;
type
TArray=array[1..N] of shortint;
var
Buf:TArray;
F1,F2:file of TArray;
A:string;
procedure FillArray(var A:TArray);
var i:integer;
begin
randomize;
for i:=1 to N do A:=random(101)-50;
end;
procedure PrintArray(A:TArray; Before,After:string);
var i:integer;
begin
write(Before);
for i:=1 to N-1 do write(A,'; ');
writeln(A[N],'. ',After);
end;
function AskYN(Question:string; defaultYes:boolean):boolean;
var
Answer:string;
begin
repeat
write(Question,' (Да/Нет):');
if defaultYes then write('[Да]') else write('[Нет]');
readln(Answer);
until (Answer='') or (Answer[1] in ['Д','д','D','d','Н','н','N','n']);
if Answer=''
then AskYN:=defaultYes
else AskYN:=Answer[1] in ['Д','д','D','d'];
end;
function Sum(A:TArray):longint;
var i:integer;S:longint;
begin
S:=A[1]; for i:=2 to N do S:=S+A;
Sum:=S;
end;
var S:longint;
begin
writeln('*** Создание файла file1.dat');
assign(F1,'file1.dat');
rewrite(F1);
repeat
FillArray(Buf);
write(F1,Buf);
PrintArray(Buf,'Массив: ','записан в файл file1.dat');
until AskYN('Добавить еще массив?',false)=false;
close(F1);
writeln('*** Переписывание массивов в файл file2.dat');
reset(F1);
assign(F2,'file2.dat');
rewrite(F2);
while not eof(F1) do begin
read(F1,Buf);
S:=Sum(Buf);
write('Сумма ',S,'.');
if S>0 then begin
write(F2,Buf);
PrintArray(Buf,'Массив: ','записан в файл file2.dat');
end else begin
PrintArray(Buf,'Массив: ','пропущен');
end;
end;
close(F1);
close(F2);
end.
[/syntax]
const
N=10;
type
TArray=array[1..N] of shortint;
var
Buf:TArray;
F1,F2:file of TArray;
A:string;
procedure FillArray(var A:TArray);
var i:integer;
begin
randomize;
for i:=1 to N do A:=random(101)-50;
end;
procedure PrintArray(A:TArray; Before,After:string);
var i:integer;
begin
write(Before);
for i:=1 to N-1 do write(A,'; ');
writeln(A[N],'. ',After);
end;
function AskYN(Question:string; defaultYes:boolean):boolean;
var
Answer:string;
begin
repeat
write(Question,' (Да/Нет):');
if defaultYes then write('[Да]') else write('[Нет]');
readln(Answer);
until (Answer='') or (Answer[1] in ['Д','д','D','d','Н','н','N','n']);
if Answer=''
then AskYN:=defaultYes
else AskYN:=Answer[1] in ['Д','д','D','d'];
end;
function Sum(A:TArray):longint;
var i:integer;S:longint;
begin
S:=A[1]; for i:=2 to N do S:=S+A;
Sum:=S;
end;
var S:longint;
begin
writeln('*** Создание файла file1.dat');
assign(F1,'file1.dat');
rewrite(F1);
repeat
FillArray(Buf);
write(F1,Buf);
PrintArray(Buf,'Массив: ','записан в файл file1.dat');
until AskYN('Добавить еще массив?',false)=false;
close(F1);
writeln('*** Переписывание массивов в файл file2.dat');
reset(F1);
assign(F2,'file2.dat');
rewrite(F2);
while not eof(F1) do begin
read(F1,Buf);
S:=Sum(Buf);
write('Сумма ',S,'.');
if S>0 then begin
write(F2,Buf);
PrintArray(Buf,'Массив: ','записан в файл file2.dat');
end else begin
PrintArray(Buf,'Массив: ','пропущен');
end;
end;
close(F1);
close(F2);
end.
[/syntax]
Ого! Большое спасибо,все компилируется 
