Помогите пожалуйста!!! Есть программа с модулем всё работает но нужно сделать проверку на ошибки ввода длинны массива! Помогите пожалуйста! Я чт-то пыталась сделать но не получилось! Помогите очень прошу!
uses Crt,ModuleX; var a, b, c: arr; in_b,count,size_A, size_B: integer; begin repeat inform; vvod(size_A, size_B,count, a, b); s4et(size_A, size_B, count,in_b, c,b,a); vivod(count,c); until ReadKey in ['Q','q']; end.
UNIT ModuleX;
Interface
const n = 1000; k = 5; type arr = array[1 .. n] of integer; Procedure Inform; Procedure Vvod(var size_A,size_B,count:Integer; var a,b:arr); Procedure s4et(size_A, size_B:Integer; var count, in_b:Integer; var c:arr; b,a:arr); procedure vivod(var count:Integer; var c:arr);
Implementation Uses CRT; procedure Inform; begin ClrScr; end; procedure Oshibka; var ch:char; begin writeln('Oshibka vvoda!!!'); writeln('Povtorite vvod razmera massiva ot 0 do 32767'); ch:=readkey; exit; end; procedure vvod; var i:Integer; ch:char; begin clrscr; write('size of A = '); readln(size_A); if size_a>32760 then Oshibka else write('size of B = '); readln(size_B); if size_b>32767 then Oshibka else writeln('elementi massiva A:'); for i:=1 to size_A do begin a[i]:=random(k); Write(a[i],' '); end; writeln; writeln('elementi massiva B:'); for i:=1 to size_B do begin b[i]:=random(k); Write(b[i],' '); end; writeln; count:=0; end;
procedure s4et; var i,j:Integer; begin for i := 1 to size_A do begin in_b := 0; for j := 1 to size_B do if b[j] = a[i] then inc(in_b);
if in_b > 1 then inc(count); c[count] := a[i]; end; end; procedure vivod; var i:Integer; begin if count=0 then writeln('Covnadenui net. Najmite [q] dlia vihoda') else begin writeln('Maccuv C='); for i:=1 to count do writeln(c[i]); end; end;
end.
volvo
9.01.2006 18:29
Катя, ну и сколько раз одно и то же будет написано, прежде чем ты научишься пользоваться поиском? СПЕЦИАЛЬНО ДЛЯ ТЕБЯ - ссылка на решение подобных проблем: Цикл Repeat
Вводи данные, как показано там, и все должно быть нормально...
Катя
9.01.2006 18:54
Vlovo спасибо но есть одна загвоздка я так пыталась там идёт проверка на длинну записи (length(s) < 4) and ((k > 0) а это помоему для формата string а у меня integer я думала если поменяю на string то всё будет ок но появляется ошибка! Помоему так если я где то не ошиблась по глупому!
Lapp
10.01.2006 7:32
Катя, дело не в собственно проверке, с проверкой у тебя все нормально (на первый взгляд). Ты обрати внимание на слова Volvo: он говорит про цикл REPEAT. Именно repeat нужно использовать вместо конструкции IF ... THEN. Иначе у тебя не получается повторного ввода после обнаружения ошибки. Понимаешь? Надо дать людям возможность исправить ошибку. Причем, не один раз, а столько, сколько потребуется. Цикл repeat дя этого идеален.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.