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...
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...
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;
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.
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.
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 =.
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ą.
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.