Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Использование процедур с целочисленными массивами

Автор: Winniepoohless 6.02.2008 19:55

Задача уже обсуждалась в форуме (мне очень сильно помогли).
Часть написанной программы работала. Сейчас не могу составить работающую процедуру для записи в файл(совсем запутался mega_chok.gif ). Посмотрите, пожалуйста имеющийся код. Мне кажется, что все очень громоздко и коряво.
Условие задачи:
Написать программу для ввода, преобразования и вывода 3-х целочисленных массивов. Вариант преобразования: все элементы массива, величина которых попадает в заданный диапазон (а,b), заменить нулями. Алгоритм преобразования массива оформить в виде процедуры.
a) программа с вводом данных с клавиатуры
б) программа с вводом данных и записью результата в текстовый файл.

Код:
program Massivy;
uses crt;
const count1=2;
count2=3;
count3=4;

var a,b,t:integer;f,g:text;
m:array [1..count1] of integer;
n:array [1..count2] of integer;
p:array [1..count3] of integer;

Procedure Input(var arr:array of integer;size:integer);
var i:integer;
begin
for i:=0 to size -1 do begin
write('element' #',i+1,': ');readln(arr[i]);
end;
end;

Procedure Check(var arr:array of integer;size:integer;a,b:integer);
var i:integer;
begin
writeln('Vvedite posledovatelno granitsy diapazona dlia poiska');
write('a= ':10);readln(a);
write('b= ':10);readln(b);
for i:=0 to size -1 do if (arr[i]>=a) and (arr[i]<=b) then begin arr[i]:=0;
end;
end;

Procedure Print(var arr:array of integer;size:integer);
var i:integer;
begin
for i:=0 to size -1 do begin
writeln(arr[i]:10);
end;
end;
Function Get_num(var f: text): integer;
var
X: integer;
ch: char;
begin
get_num := -1;
if not seekeof(f) then begin
ch := #0; X := 0;
while not (ch in ['0'..'9']) do read(f, ch);
while (ch in ['0'..'9']) do begin
X := X * 10 + (Ord(ch) - Ord('0'));
read(f, ch);
end;
get_num := X;
end;
end;
Procedure Rfile(var arr:array of integer;size:integer);
var i:integer;
begin
Assign(f, 'c:\file.txt');
Reset(f);
while not EoF(f) do begin
Read(f);
begin
for i:=0 to size -1 do begin
arr[i]:=Get_num(f);
end;
end;
end;
end;
Procedure Wfile(var arr:array of integer);
begin
{var i:=integer;}
Assign(g,'c:\file1.txt');
Rewrite(g);
{Write(g,arr[i]);}
end;
begin
writeln('Vyberite variant vvoda i vyvoda dannykh: 1-file,2-keyboard');
readln(t);
if t=1 then begin
{Rfile(m);
Rfile(n);
Rfile(p);}
Check (m,count1,a,b);
Check (n,count2,a,b);
Check (p,count3,a,b);
Wfile(m);
Wfile(n);
Wfile(n);
else if t=2 then
begin
Input (m,count1);
Input (n,count2);
Input (p,count3);
Check (m,count1,a,b);
Check (n,count2,a,b);
Check (p,count3,a,b);
Print (m,count1);
Print (n,count2);
Print (p,count3);
close(f);close(g);
readln
end;
end.

Автор: Michael_Rybak 6.02.2008 20:30

 ! 
Используем тэг code!