Kezdőoldal » Számítástechnika » Programozás » Hogyan csinaljam meg pascalban?

Hogyan csinaljam meg pascalban?

Figyelt kérdés

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


2009. jan. 31. 19:12
 1/6 anonim ***** válasza:

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!

2009. febr. 1. 12:57
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

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.

2009. febr. 1. 13:04
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

koszi megprobalom...amugy a programban csak egy \ van :)

mar behivja az szoveget meg is jeleniti,csak megszamoltati nem tom aszavakat :(

2009. febr. 1. 15:34
 4/6 A kérdező kommentje:

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

2009. febr. 1. 15:44
 5/6 A kérdező kommentje:

már klszen van,mukodik...:D

koszi a segitseget

2009. febr. 1. 16:31
 6/6 anonim ***** válasza:

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! :)

2009. febr. 1. 21:01
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!