Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 16. 04. 2011 17:24 — Editoval janca361 (16. 04. 2011 17:45)

janca361
.
Příspěvky: 3284
 

Pascal - zbavení řetězu zadaného znaku

Zdravím,
mám napsat program v Pascalu pro odstranění zadaného znaku (všech jeho výskytů) z řetězu. Napsala jsem ho, ale v Free Pascalu mi nejde zkompilovat. Kde je problém? Děkuji.

Připojuji ještě svůj pokus:

Code:

program zbaveni_retezu_zadaneho_znaku;
uses crt;
var retez:string;
    znak:char;
    i,i1:integer;

begin
clrscr;
write('Zadej retez: ');
readln(retez);
write('Jaky znak odstranit? ');
readln(znak);
i:=0;
repeat
      i:=i+1;
until (retez[i]=znak) or (i=ord(retez[0]));
if i<>(ord(retez[0])) then begin
                                   for i1:=i to ord(retez[0])-1 do retez[i1]:=retez[i1+1];
                                   retez[0]:=chr(ord(retez[0])-1);
                              end;
writeln(retez);
end.

EDIT: Tak zkompilovat se mi to podařilo, ale smaže jen první výskyt :(

Offline

 

#2 16. 04. 2011 18:03 — Editoval jindra (16. 04. 2011 18:04)

jindra
Příspěvky: 78
Reputace:   
 

Re: Pascal - zbavení řetězu zadaného znaku

edit: nmevšiml jsem si editu.

Offline

 

#3 16. 04. 2011 18:11 — Editoval hradecek (16. 04. 2011 18:13)

hradecek
Příspěvky: 772
Pozice: Student
Reputace:   25 
Web
 

Re: Pascal - zbavení řetězu zadaného znaku

↑ janca361:
a prečo tak komplikovane ?
Hádam by stačilo aj:

Code:

for i:= 0 to length(retez) do  
  if(znak = retez[i]) then
    delete(retez, i, 1);

Netrápte sa nad svojimi problémami s matematikou, môžem vás uistiť, že tie moje sú ešte väčšie. ~~Albert Einstein~~
Jak spozná člověk, že není pitomec ? - Moudrý člověk to nepozná nikdy a blbci je to jedno. ~~Jak přicházejí básnici o iluze~~
Někteří lidi se nikdy nezmění. Anebo se rychle změní a pak se zase rychle změní nazpátek. ~~Homer Simpson~~

Offline

 

#4 16. 04. 2011 18:36

janca361
.
Příspěvky: 3284
 

Re: Pascal - zbavení řetězu zadaného znaku

↑ hradecek:
Proč to dělat jednoduše, když to jde složitě? :)

Jedná se o práci do školy a nemůžu použít

Code:

delete(retez, i, 1)

Offline

 

#5 16. 04. 2011 19:14

Lumikodlak
Místo: Praha
Příspěvky: 212
Pozice: Programator nebo tak neco :-)
Reputace:   19 
 

Re: Pascal - zbavení řetězu zadaného znaku

Ten cyklus ti tady skonci hned pri prvnim vyskytu:

Code:

until (retez[i]=znak) or (i=ord(retez[0]));

Tak podle me staci, kdyz vynechas tu jednu podminku, takze to bude:

Code:

until (i=ord(retez[0]));

Dal pak muzes vzit treba to samotne mazani, ktere mas az na konci, a dat ho dovnitr cyklu, takze pokazde, kdyz narazi na ten znak, tak ho vymaze. (s podminkou if (retez[i]=znak)) ) Celkove treba tak:

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson