Hogyan csinaljam meg pascalban?
feladatunk:egy olyan prog.,ami txt-jegyzettömbből behiv egy hosszú szöveget ,és megszámolja a szavakat.
program szoveg;
uses crt;
var f : text;
fnev,sor : string;
h1 : string;
i,szo :integer;
begin
clrscr;
assign(f,\'C:\\Program Files\\TP\\progr\\prog.txt\');
reset(f);
while not eof(f) do
begin
readln(f,sor);
for i:=1 to length(sor) do
if sor[i] = \' \' then szo:=szo+1;
writeln(sor);
end;
writeln(szo);
readkey;
close(f);
end.
javitsa ki ezt vki nekem,legysziiii...én meg sem tudom nezni,kiira,h nem talalja a file-t...pedig azt irtam be ahova mentettem...
vki segitsen,szerdan le kellene adnom...kosziiiii
Először is: az fnev és a h1 változókat nem is használod, mégis deklaráltad őket. Ha később kellenek, akkor hagyhatod őket, de ha csak véletlenül maradtak ott, akkor csak bezavarhatnak, ha kezdő vagy (ha nem akkor bocs:)))
assign(f,\'C:\\Program Files\\TP\\progr\\prog.txt\');
-> Itt miért kell \', miért nem jó a sima aposztróf: ' ?
A //-re emlékszem, de belenéztem egy TP-s könyvbe, és ott sima /-t írtak, szerintem úgy (is) próbáld meg!
Szerintem a Turbo Pascal nem szereti a Program Files nevet, inkább valami DOS-os rövidítést akar, mint Progra~1 vagy ilyesmi. Több lehetőséged van, szerintem használj relatív elérési útvonalat, vagyis:
assign(f, 'prog.txt');
és a prog.txt legyen ugyanott, mint a programod, illetve a Change dir...-nél állítsd át az alapértelmezett könyvtárat arra a mappára, ahol a forráskódot (.pas) van!
Előző vagyok, és még nem fejeztem be :)
if sor[i] = \' \' then szo:=szo+1;
Itt is elég szerintem egy sima ' ' vagyis két (egyszeres) aprosztróf közt egy szóköz, hiszen egy szó után mindig szóköz jön. Az utolsó szó után viszont nincs szóköz, szóval a szo változó kezdeti értéke legyen: 1. Ezzel persze azt feltételezed, hogy a txt fájl nem üres.
Szóval:
szo := 1;
if sor[i] = ' ' then szo:=szo+1;
Nem próbáltam ki, nincs előttem Pascal, és nem is pascaloztam mostanság, szóval mondhattam hülyeségeket! :)
Azért remélem segítettem.
koszi megprobalom...amugy a programban csak egy \ van :)
mar behivja az szoveget meg is jeleniti,csak megszamoltati nem tom aszavakat :(
jaj en nagyon hulye vagyok ebbol,csak jo lenne nem 1est kapni...
szo:=1 forciklusba irjam?
atirtam erre:
program all;
uses crt;
var f : text;
sor,szo,i: string;
begin
clrscr;
assign(f,'lovak.txt');
reset(f);
while not eof(f) do
begin
readln(f,sor);
for i:=1 to length(sor) do
szo:= 1;
if sor[i] =' ' then szo:=szo+1;
writeln(sor);
end;
writeln(szo);
readkey;
close(f);
end.
ennél meg kiirja,h invalid for control variable
már klszen van,mukodik...:D
koszi a segitseget
Szívesen! Egyébként a szo := 1; a for cikluson KÍVÜL van, mert nem csak 1 sor szavait számolod össze, hanem az összeset. Ha külön soronként akarod kiírtani, akkor a writeln(szo)-t is a cikluson belülre kell tenned.
De ha most jól műxik neked, akkor hagyd úgy! (Arra azért figyelj, hogy tényleg azt írja ki, amit kell! :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!