Vyskyt slova – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vyskyt slova – Pascal – Fórum – Programujte.comVyskyt slova – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
kejta0
Návštěvník
3. 12. 2013   #1
-
0
-

   

program vyskyt;

var T:text;
    soubor,radek:string;
    slovo:string[50];
    pocitadlo,i,x:integer;



begin
writeln('Zadej jmenosouboru: ');
readln(soubor);
assign(T,soubor);
reset(T);

writeln('Zadej slovo: ');
readln(slovo);


pocitadlo:=0;
while not eof(T) do
begin
readln(T,radek);
radek:=radek+ ' ';

for i:=1 to length(radek) do
radek[i]:= UpCase radek[i];

for i:=1 to length(radek)-1 do
x:= Pos(slovo,radek);
radek:= copy (radek,x+1,length(radek)-x);
inc(pocitadlo);


end;



writeln('Pocet vyskytu tohoto slova je: ',pocitadlo);
close(T);

readln;
end.
          

Dobry den, potreboval bych poradit. V prikazu UpCase mi to hazi chybu ,,vyskyt.pas(37,12) Error: Wrong number of parameters specified for call to "upCase" " .. vubec v tom nevidim co je spatne, diky za radu.

A s tim hledanim slovo pomoci POS si taky nejsem moc jistej. Diky za jakykoliv postreh.

Nahlásit jako SPAM
IP: 85.70.175.–
Reklama
Reklama
Honzc0
Stálý člen
4. 12. 2013   #2
-
0
-

#1 kejta
UpCase bude nejspíš procedura, takže radek[i] dát do závorek tedy radek[i] := UpCase(radek[i]);

Funkce Pos(), vrací první výskyt daného stringu v řádku.

Dál jsem to nezkoumal.
 

Nahlásit jako SPAM
IP: 93.181.78.–
kejta0
Návštěvník
4. 12. 2013   #3
-
0
-

jojo, to UpCase bylo timhle. Diky moc:) 

..jinak program mi vraci na vystup v pocitadle cislovku pet, pritom vyskyt slova je 10. Nekdo nejaky rady prosimvas? :)

Nahlásit jako SPAM
IP: 85.70.175.–
kejta0
Návštěvník
4. 12. 2013   #4
-
0
-

Teď koukám že pro jakýkoliv zadaný vstup to vypisuje 5, ikdyž tam není ani jednou:X

Nahlásit jako SPAM
IP: 85.70.175.–
kejta0
Návštěvník
4. 12. 2013   #5
-
0
-

ztroskotal jsem na necem takovem

for i:=1 to length(radek)-1 do
begin
if Pos(slovo,radek) then inc(pocitadlo);
x:= Pos(slovo,radek);
radek:= copy (radek,x+1,length(radek)-x);

end;  

Vim ze takhle napsane je to nefunkcni, ale vubec s tim prikazem POS neumim zachazet.

Tudiz potrebuji to, aby kdyz mnou zadane SLOVO se naslo v retezci RADEK, pomoci ktereho projizdim cely textovy soubor aby se zvysilo pocitadlo.

x:= Pos(slovo,radek);
radek:= copy (radek,x+1,length(radek)-x);

Tohle by melo podle meho slouzit k tomu, aby se ve vyhledavani projizdelo od posledniho vyskytu tohoto slova. Prokopiruje se ten retezec, od konce toho slovo(x+1) a vlozi se retezce RADEK. 

Nahlásit jako SPAM
IP: 85.70.175.–
JoDiK
~ Anonymní uživatel
981 příspěvků
4. 12. 2013   #6
-
0
-

#5 kejta
Máš v tom totální chaos, kromě toho že nevíš jak co funguje, tak vymýšlíš nesmysly...

To, co jak funguje máš popsané v nápovědě, s vymýšlením postupů (algoritmů) to je už horší, řešení běžných úloh jsou na internetu popsané...

Doporučuji nehrnout se hned na kompletní program ale jít po kouskách.

Nevím v jakém prostředí to píšeš, jestli tam máš k dispozici ladící nástroje (krokování, sledování obsahu proměnných a pod) tak těžko radit konkrétně...

Ale zkusím:

1. ulož si nějaké jednoduché údaje, třeba:

radek:='Toto slovo je jako slovo nebo jine slovo, tak!';
slovo:='slovo';

A zkus napsat jen takový program, který zjistí počet výskytů slova v radek.

Nezapomeň, že když převedeš radek na velká písmena, měl bys převést i slovo!

Pos zjišťuje pozici prvního výskytu, správně jsi usoudil, že před dalším zjištováním odřízneš to co jsi už našel... Ale opravdu to musíš zjišťovat tolikrát, koik má radek písmen? I když tam to slovo třeba vůbec není? Zkus použít jiný cyklus, co třeba:

zjisti pozici výskytu slova v radek
dokud tam to slovo je, tak
       pričti jedničku k počtu
       zkopíruj zbytek slova
       zjisti pozici výskytu slova v radek
vypiš počet nalezených výskytů

Až ti tohle bude fungovat, pokračuj dál...

Nahlásit jako SPAM
IP: 88.103.236.–
kejta0
Návštěvník
5. 12. 2013   #7
-
0
-

Zkusil jsem tedy nějak takhle  

while Pos(slovo,radek) <> 0 do
begin
inc(pocitadlo);
x:=Pos(slovo,radek);
delete (radek,x+1,length(radek)-x);

end;  

Je lepší ten předchozí řetězec smazat, nebo vykopírovat ten následující, nejspíš je to asi jedno ne? 

v řetězci slovo jsem také provedl zvětšení písmen

writeln('Zadej hledane slovo: ');
readln(slovo);

for i:=1 to length(slovo) do
slovo[i]:= UpCase (slovo[i]);
                                   

Ale program mi stále na výstupu oznamuje v počítadle špatné hodnoty..

Nahlásit jako SPAM
IP: 85.70.175.–
JoDiK
~ Anonymní uživatel
981 příspěvků
5. 12. 2013   #8
-
0
-

#7 kejta
Tak si kromě "spatných hodnot" vypisuj i jednotlivé úpravy toho radku a zjistíš, že mažeš blbě...

Nahlásit jako SPAM
IP: 88.103.233.–
kejta0
Návštěvník
5. 12. 2013   #9
-
0
-

Uz to vidim. A jde nejaky zpusobem mazat do indexu a nikoliv od indexu?

Nahlásit jako SPAM
IP: 85.70.175.–
JoDiK
~ Anonymní uživatel
981 příspěvků
5. 12. 2013   #10
-
0
-

#7 kejta
Buď toto:

delete(radek,1,x+length(slovo)-1);

nebo toto:

radek:= copy (radek,x+length(slovo),length(radek)-x-length(slovo)+1);

ty nemáš nápovědu? bývá to v ní popsáno velmi přesně včetně příkladů...

Nahlásit jako SPAM
IP: 88.103.233.–
kejta0
Návštěvník
5. 12. 2013   #11
-
0
-

Jakou nápovědu myslíš? 

Nahlásit jako SPAM
IP: 85.70.175.–
JoDiK
~ Anonymní uživatel
981 příspěvků
5. 12. 2013   #12
-
0
-

#11 kejta
Nápovědu v IDE přece... kurzor do příkazu a CTRL+F1

Nahlásit jako SPAM
IP: 88.103.233.–
kejta0
Návštěvník
5. 12. 2013   #13
-
0
-

No vidíš, o tom ani nevim. Diky:)

..a děkuji za pomoc celkově:)

Nahlásit jako SPAM
IP: 85.70.175.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Podobná vlákna

Vyskyt fraz v Eclipse — založil marioff

Výskyt znakov vo vete — založil Anonym

Klíčová slova — založil Porcepoque

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý