Kezdőoldal » Számítástechnika » Programozás » Pascal: háromféle stringet...

Pascal: háromféle stringet tartalmazó tömböt lehet egymenetben kétféle szempont szerint rendezni?

Figyelt kérdés

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.



2015. okt. 13. 05:16
 1/5 coopper ***** válasza:

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.

2015. okt. 13. 06:59
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

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

2015. okt. 13. 07:49
Hasznos számodra ez a válasz?
 3/5 SimkoL ***** válasza:
Mivel az alma, körte és a szilva ÁBC szerinti sorrendben van nincs értelme a kérdésnek. Egy akármilyen típusú rendezésben a stringeket hasonlítsd össze. Ha azt szeretnéd, hogy a szilva megelőzze a körtét akkor igen...
2015. okt. 13. 08:16
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

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.

2015. okt. 13. 12:44
 5/5 SimkoL ***** válasza:
Írsz egy pici függvényt ami visszaadja a string tomb_elemek-beni helyét és az alapján hasonlítod őket össze. Amilyen sorrendben a tomb_elemek-ben vannak olyan sorrend lesz a rendezés.
2015. okt. 13. 13:14
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!