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
Zdravím, dostal jsem za ukol napsat program, který do kterého by se zadal text ve formě řetězce a program by nnásledně vypsal všechny znaky, které se v řetezci vyskytují a také kolikrát. Nevíte někdo jestli na tento problém není nějaká funkce, jinak příklad jsem řešil a napsal, ale při kompilaci i to píše: Compilation aborted. Nevíte prosím někdo co je špatně?
program nastenka;
var text:string;
p,a,b,i:integer;
znak:char;
begin
writeln ('Zadej text k vypisu');
readln (text);
for i:=1 to 80 do write ('-');
for znak:='a' to 'Z' do
begin
p:=0;
repeat
b:=1;
a:=copy(text,b,1);
if (a=znak)
then p=+1
else b=+1
until (b=length(text));
writeln (' Znak ',znak,' se v retezci vyskytuje ',p,'X');
end;
end.
Offline
O věstavené funkce v nějaké knihovně, která by tohle řešila nevím, ale tohle je jednoduchý úkol na implementaci... V pascalu jsem nikdy nedělal, takže neznám úplně syntaxi, ale logicky mi to přijde správně.
Zkusím ale ...
- Nechybí ti tam ale jeden "end" ? 1 'end' ukončuje 'begin', další ukončuje 'for' cyklus ale nemáš tam 'end' pro ukončení 'repeat'.
- když porovnávás 'a' a 'znak', tak pascalu nevadí že jedno je 'integer' a druhé 'char' ?
Každopádně jestli to píše chybu u kompilace pak je nejpravděpodobněji chyba v syntaxi...
Offline
↑ cStP: Repeat ukončuje until, ale jak bylo poznamenáno tak do integeru nelze uložit ani porovnávat s charem.
edit: ještě u přiřazení asi má být :=
edit2: upravil jsem trochu kód, je rozumět úpravám?
program nastenka; var text,a:string; p,b,i:integer; znak:char; begin writeln ('Zadej text k vypisu'); readln (text); for i:=1 to 80 do write ('-'); for znak:='a' to 'Z' do begin p:=0; b:=1; repeat a:=copy(text,b,1); if (a=znak) then p:=p+1; b:=b+1; until (b>=length(text)); writeln (' Znak ',znak,' se v retezci vyskytuje ',p,'X'); end; end.
Offline