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
Stránky: 1
Zdravím, potřebuju poradit s programem v Pascalu.
Vytvorte program, ktery ze vstupniho souboru cte vetu ukoncenou teckou.
Slova ve vete jsou oddelena jednou nebo nekolika mezerami. Program zjisti,
v kolika slovech je vice znaku nez pocet, hodnota kterou zadám z klávesnice.
Mám představu jak by to mohlo vypadat, ale realizace pokulhává )
Slova budu načítat do proměnné typu string, jak ale načíst jen jedno slovo?
Jeden cyklus bude načítat jednotlivé znaky slova, mez jeho ukončení bude znak mezery, druhý cyklus bude porovnávat počet znaků ve slově s hodnotou zadanou uživatelem... dík za jakoukoli radu.
Offline
Nepotřebuješ dva cykly. Bohatě by stačilo číst soubor po písmenkách a při tomto čtení rovnou počítat počet znaků ve slově a porovnávat, jaké slovo je delší než zadané číslo. Bohužel ale Pascal neznám, takže nějakou malou nápovědu s podobě kódu ti nedám.
Offline
↑ květoslav: mozna inspirace viz nize, za syntax nerucim, uz je to prece jen dost dlouho, co jsem v nem naposledy programoval, nicmene vyznam je snad jasny.
pocetZnaku := 0; pocetSlovDelsichNezPovolene := 0; for i := 1 to delkaVety do begin if veta[i] <> " " then begin pocetZnaku := pocetZnaku + 1; end else begin pocetZnaku := 0; end; if (pocetZnaku - povolenyPocetZnaku) = 1 then begin pocetSlovDelsichNezPovolene := pocetSlovDelsichNezPovolene + 1; end; end;
Offline
↑ plisna:
jj chapu co to bude dělat ještě si nejsem jistý s načtením té věty ze zdrojového souboru... bude stačit klasicky
assign(f,'vstup.txt');
reset(f);
read(f,veta);
a datový typ proměnné 'veta' má být string? Bude potom cyklus brát znaky po jednom?
a ještě
if veta[i] <> ' ' then begin
tenhle řádek posbírá znaky ruzne od mezery, po každém znaku navýší hodnotu počet znaků o jedničku ale při nesplnění podmínky program hodnotu počet znaků vynuluje, to je špatně ne?
tyhle algoritmy mi dávají fakt zabrat :-/ Jinak díky za odpovědi.)
Offline
↑ květoslav: snad ano, nacitani do stringu by melo fungovat, string je totiz vlastne pole znaku. nejlepe je to vyzkouset a kouknout, co to bude delat. jinak ta podminka if veta[i] <> ' ' by mela byt spravne, protoze pokud veta[i] <> ' ', pak jsem nekde uvnitr slova. jakmile narazim na mezeru ' ', tak je predchozi slovo ukonceno a pro pocitani delky nasledujiciho slova je treba promennou pocetZnaku vynulovat. mozna doslo k mylnemu pochopeni, promenna pocetZnaku oznacuje pocet znaku aktualniho slova pri prochazeni vety cyklem, nikoliv celkovou delku cele vety.
Offline
Stránky: 1