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

Тема в разделе "Delphi - FAQ", создана пользователем InviZible, 7 окт 2006.

Статус темы:
Закрыта.
  1. InviZible

    InviZible Гость

    Даны натуральные n, целые числа a1......an. Внутри данной последовательности могут быть повторяюшиеся члены. Получить числа. взятые по одному из каждой группы равных членов.

    я делал так :

    Код (Text):
    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, то фигня получается. Так же проблема с нулями.
    Сказали, что нужно переделать.

    Заранее спасибо.
     
  2. pushkin

    pushkin Гость

    Вот программа, которая работает:
    Код (Text):
    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.
     
  3. InviZible

    InviZible Гость

    Спасибо, я уже давно сделал. Вот мой вариант

    Код (Text):
    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.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей