Форум «Всё о Паскале» _ Задачи _ Pascal. Выбор в массиве определенных членов.
Автор: InviZible 9.10.2006 1:07
Даны натуральные n, целые числа a1......an. Внутри данной последовательности могут быть повторяюшиеся члены. Получить числа. взятые по одному из каждой группы равных членов.
я делал так :
Код
Program laba3; Uses Crt; Var a:array[1..10000] of integer; k,i,n:integer; Begin ClrScr;
WriteLn('***************************'); WriteLn('Vvedi n. 0 < n <=10000 '); ReadLn(n); WriteLn('***************************');
for i:=1 to n do begin WriteLn('Enter a[',i,']'); ReadLn(a[i]); end;
WriteLn('***************************');
Write('Massiv zapolnen. Sosoit iz : ');
for i:=1 to n do Write(a[i],' ');
WriteLn;
for i:=1 to n do begin for k:=1 to n do if a[i]=a[i+k] then begin WriteLn('============================'); WriteLn('Vot chislo iz pari : ',a[i]); WriteLn('============================'); end; end;
WriteLn('That''s all.'); ReadLn; End.
Но мою лабуду заброкавали. Прога работает, но если вводить: n=4, а потом 3 3 3 3, то фигня получается. Так же проблема с нулями. Сказали, что нужно переделать.
заранее спасибо. p.s. извините, что создал 2 темы сразу
Автор: volvo 9.10.2006 1:16
И эту задачу тебе уже решили... Тебе же все не так и не этак. Вот и приведи 10 тестов, чтоб было ясно, КАК программа должна работать
before := 0; after := 0; for j := 1 to i - 1 do if arr[j] = arr[i] then inc(before);
for j := i + 1 to n do if arr[j] = arr[i] then inc(after);
if (after > 0) and (before = 0) then write(arr[i], ' ');
end; writeln; ...
Автор: InviZible 9.11.2006 23:11
Всем спасибо, вот мой вариант
Код
Program laba3; Uses Crt; Var a:array[1..10000] of integer; d,p,j,i,n:integer; Begin ClrScr; WriteLn('Hi, it''s laba3_7 by Serega M. Vesion 0.3 . yes or die'); WriteLn('***************************'); WriteLn('Vvedi n. 0 < n <=10000 '); ReadLn(n); WriteLn('***************************');
for i:=1 to n do begin WriteLn('Enter a[',i,']'); ReadLn(a[i]); end;
WriteLn('***************************');
Write('Massiv zapolnen. Sosoit iz : ');
for i:=1 to n do Write(a[i],' ');
WriteLn;
for i:=1 to n-1 do begin d:=0; p:=0;
for j:=1 to i-1 do if a[j]=a[i] then inc(d);
for j:=i+1 to n do if a[j]=a[i] then inc(p);
if (p>0) and (d=0) then writeln('Chislo iz pari : ',a[i],' '); end;
WriteLn('That''s all!'); readln; end.
Автор: volvo 9.11.2006 23:13
Ну, и чем он отличается от вышеприведенного мной? Тем, что ты поменял названия переменных?