IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Использование процедур с целочисленными массивами, Несложная задача, но запутался - нужен совет
Winniepoohless
сообщение 6.02.2008 15:55
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Задача уже обсуждалась в форуме (мне очень сильно помогли).
Часть написанной программы работала. Сейчас не могу составить работающую процедуру для записи в файл(совсем запутался 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.

Сообщение отредактировано: Winniepoohless - 6.02.2008 15:58
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 6.02.2008 16:30
Сообщение #2


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 17:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"