pascal - przeszukiwanie tablicy

2011-05-16 15:56
radio1234
0

Siema, musze napisac program, ktory umoziliwi wprowadzenie do tablicy 10 imion z tym, ze te imiona nie moga sie powtarzac. Nie mam pojecia jak zrobic te porownanie... Moglby mi ktos podpowiedziec, ew. napisac kod?

z gory dzieki...

Pozostało 580 znaków

2011-05-16 16:40
0

Pisane bez kompilatora

var
  I, J, K: Integer;
  S: String;
  Tablica: array [1..10] of String;
begin
  K := 10;
  for I := 1 to 10 do
    repeat
      Writeln('Podaj jeszcze ' + IntToStr(K) + ' imion');
      Readln(S);
      for J := 1 to 10 - K do
        if Tablica[J] = S then Writeln('To imię już było')
      else
        K := K - 1;
    until (I = 10 - K);
end;

edytowany 1x, ostatnio: TomRiddle, 2011-05-16 16:41
a co siedzi w Tablica[]? - Xitami 2011-05-16 16:56

Pozostało 580 znaków

2011-05-16 16:47
0
const ile=10;
var
  t:array[1..ile] of string;
  i,n:integer;
begin
    n:=0;
    while n<ile do begin
        readln(t[n+1]);  
        i:=1; 
        while t[n+1]<>t[i] do
            i:=i+1;
        if i>n then n:=n+1;
    end;
    for i:=1 to ile do
        writeln(t[i]);
end. 

Pozostało 580 znaków

2011-05-16 16:54
radio1234
0

Moglbys mi wytlumaczyc jak to dziala? Chodzi mi ofor J := 1 to 10 - K dlaczego 10-K... aha jeszcze jedno, if Tablica[J] = S tak juz probowalem porownywac ale on wtedy porownoje tylko kody ASCII pierwszych liter tych imion.

Pozostało 580 znaków

2011-05-16 17:17
0

Bo 10 - K = I.

A poza tym

Tablica[1] := 'elo';
if Tablica[1] = 'elo';  //True;
if Tablica[1] = 'ellloo'; //False;

Ktoś Ci musiał źle powiedzieć. Porównywanie kodów ASCII stringów dzieje się przy porównywaniu < i >, a nie =.


edytowany 4x, ostatnio: TomRiddle, 2011-05-16 17:19

Pozostało 580 znaków

2011-05-16 17:48
Madix
0

mi ten kod nie działa.
Potrzebuje programu do którego użytkownik wprowadza 10 imion, imiona nie mogą się powtarzać. Program ma tak długo pytać, aż tabela się nie wypełni 10 imionami i wypisze je jedna pod drugą.

Pozostało 580 znaków

2011-05-16 19:59
0

Brak samodzielności i lenistwo niektórych pytających jest tradycyjnie porażąjące. Ech, masz...

program mysl_logicznie_i_samodzielnie_albo_daruj_sobie_programowanie;

{$APPTYPE CONSOLE}

const
  NamesCnt = 10;
var
  S : string;
  Cnt : integer;
  NamesArr : array[1..NamesCnt] of string;

function IndexOf(ToCnt : integer; AName : string) : integer;
var
  I : integer;
begin
  Result := -1;
  for I := Low(NamesArr) to ToCnt do
  begin
    if NamesArr[I] = AName then
    begin
      Result := I;
      Break;
    end;
  end;
end;

begin
  Cnt := Low(NamesArr);
  repeat
    repeat
      Write('Podaj imie numer ', Cnt, ': ');
      Readln(S);
    until IndexOf(Cnt - 1, S) = -1;
    NamesArr[Cnt] := S;
    Cnt := Cnt + 1;
  until Cnt > High(NamesArr);
  Writeln('Nacisnij ENTER.');
  Readln;
end.

EDIT: pisane było na szybko, ale teraz poprawka zgodnie z tym co zauważył _13th_Dragon.


edytowany 2x, ostatnio: olesio, 2011-05-17 03:15
until IndexOf(Cnt-1, S) = -1; - _13th_Dragon 2011-05-17 02:53

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0