Использование процедур с целочисленными массивами, Несложная задача, но запутался - нужен совет |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Использование процедур с целочисленными массивами, Несложная задача, но запутался - нужен совет |
Winniepoohless |
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Алексей Репутация: 0 |
Задача уже обсуждалась в форуме (мне очень сильно помогли).
Часть написанной программы работала. Сейчас не могу составить работающую процедуру для записи в файл(совсем запутался ). Посмотрите, пожалуйста имеющийся код. Мне кажется, что все очень громоздко и коряво. Условие задачи: Написать программу для ввода, преобразования и вывода 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 - |
Michael_Rybak |
Сообщение
#2
|
|||
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
|
|||
Текстовая версия | 20.04.2024 16:41 |