Pascal: háromféle stringet tartalmazó tömböt lehet egymenetben kétféle szempont szerint rendezni?
String tömb három elemet tartalmaz véletlenszerűen: alma, körte, szilva.
Szeretném, ha a tömb úgy lenne rendezett, hogy először az almákat, utána a körtéket és a tömb végén a szilvákat tartalmazná.
OOP, StringList meg hasonlók használata nélkül miként oldható ez meg?
program string_tomb_veletlen;
const
tomb_elemek : array [0..2] of string =
(
'alma',
'korte',
'szilva'
);
var
tomb :array [0..100] of string;
i, j, elem : byte;
temp:string;
begin
randomize;
for i := 0 to 100 do
begin
elem := random(3);
tomb [i] := tomb_elemek [elem];
end;
for i :=0 to 99 do
begin
for j := i+1 to 100 do
begin
if tomb [i] ='korte' then
begin
temp := tomb[i];
tomb[i]:=tomb[j];
tomb[j] := temp;
end;
end;
end;
for i := 0 to 100 do
WriteLn(tomb [i]);
ReadLn;
end.
Szia.
Tegyél még be egy sorrend konstans tömböt :
const
sorrend_elemek : array [0..2] of string = ('001','002','003');
Innentől kezdve két módszer :
1. Amikor készitet a stringet akkor hozzárakod a sorrend stringet is a string elejéhez és úgy rendezed, mindenféle if nélkül (hisz az ellől lévő sorrend tömb úgy is meghatárotta a sorrendet) :
tomb [i] := sorrend_elemek[elem]+tomb_elemek [elem];
Kiirásnál viszont a sorrend tömböt nem kell kiiratni ezért a copy parancsot kell hasynálni : writeln (copy (tomb[i],3,length (tomb[i])-3);
2. Felveszel egy másik 100 elemű tömböt amibe csak a sorrend_elemeket rakod, és ez alapján rendezteted mind a
két tömböt :
var
sorrend : array [0..100] of string;
.
.
.
sorrend[i]:= sorrend_elemek[elem];
tomb [i] := tomb_elemek [elem];
.
.
.
//sorbarendezés
For i:=0 to 99 do begin
_ _ For j:=i+1 to 100 do begin
_ _ _ _ if sorrend[i]>sorrend[j] then begin
_ _ _ _ _ _ { segéd tömb rendezése }
_ _ _ _ _ _ temp:=sorrend[i];
_ _ _ _ _ _ sorrend[i]:=sorrend[j];
_ _ _ _ _ _ sorrend[j]:=temp;
_ _ _ _ _ _ { rendes tömb rendezése }
_ _ _ _ _ _ temp:=tomb[i];
_ _ _ _ _ _ tomb[i]:=tomb[j];
_ _ _ _ _ _ tomb[j]:=temp;
_ _ _ _ end ;
_ _ End ;
end ;
Sok sikert.
üdv.
szerintem csak gyűjtsd ki, hogy melyik elemből mennyi van, utána csak fel kell tölteni a tömböt adott számú elemekkel, kb:
korte = alma = szilva = 0;
ciklus i = 1-től n-ig
...ha tomb[i] = 'alma': alma = alma + 1
...egyébként ha tomb[i] = 'körte': korte = korte + 1
...egyébként szilva = szilva + 1
ciklus vége
i = 1
ciklus j = 1 tol alma-ig
...tomb[i] = 'alma'
...i = i + 1
ciklus vége
ciklus j = 1 tol korte-ig
...tomb[i] = 'körte'
...i = i + 1
ciklus vége
ciklus j = 1 tol szilva-ig
...tomb[i] = 'szilva'
...i = i + 1
ciklus vége
Az elemek megadásakor nem gondoltam rá, hogy ez pont abc-ben van, ezért ezen elemnevek helyett mást találjak ki. :-(
köszönöm az ötleteket.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!