ОБСУЖДЕНИЕ

Pascal. Выбор в массиве определенных членов.

2 ответов 4,9 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Даны натуральные 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, то фигня получается. Так же проблема с нулями.
Сказали, что нужно переделать.

Заранее спасибо.
 
Вот программа, которая работает:
Код:
program Project1;

uses Crt;

var a:array[1..10000] of integer;
k,i,n,z:integer;

Begin
WriteLn('***************************');
WriteLn('Vvedi n. 0 < n <=10000 ');
ReadLn(n);
WriteLn('***************************');

for i:=1 to n do begin
Write('a[',i,']=');
ReadLn(a[i]);
end;

WriteLn('***************************');

// Сортируем массив по возрастанию методом "пузырька".
// После сортировки повторяющиеся числа будут находиться рядом

for k:=1 to n-1 do
for i:=1 to n-1 do
if a[i] > a[i+1] then begin
z := a[i];
a[i] := a[i+1];
a[i+1] := z;
end;

z := a[1];
for i:=1 to n do
if (a[i] <> z) or (i=1) then begin
z := a[i];
WriteLn('============================');
WriteLn('Vot chislo iz pari : ', z);
WriteLn('============================');
end;

WriteLn('That''s all.');
ReadLn;
End.
 
Спасибо, я уже давно сделал. Вот мой вариант

Код:
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.
 
Статус
Закрыто для дальнейших ответов.