Program zliczający zdania w pliku oraz program do zliczania słów w pliku.

0

Witam,
mój problem polega na napisaniu tego programu, niestety programuje tylko w C i to jeszcze nie tak jakbym chciał, lecz taki program mógłbym napisać w C. Chodzi mi tylko o to czy pomógłby mi ktoś przerobić kod na pascala ? :)

0

Pokaż kod. A w zadaniach zaliczeniowych raczej naprowadzamy na rozwiązanie. Nie odwalamy ich za kogoś.

0

Ile złotówek za to proponujesz?

0

@Widmosso - podałeś i tak mało informacji, bo np. nie wiadomo, czy w jednej linii może znajdować się kilka zdań, a to różnica; W przypadku liczenia słów trzeba zdefiniować czym jest "słowo" (jakie znaki może zawierać), a także jakie znaki mają wchodzić w skład separatora słów; Dopiero wtedy będzie można coś sensownie doradzić;

Podaj więc jakiś przykładowy kod lub kuknij do jakiegoś kursu, w którym opisana jest obsługa plików, a jeśli masz problem z podstawami programowania w Pascalu - tutaj rozwiązanie.

0

Troche minelo, ale udalo mi sie napisac polowe tego wszystkiego :)
oto kod:

uses Crt;
const
Plik='TEKST.TXT';

var
F: Text;
Wiersz: string;
Zdanie: String;
I, Licznik: Byte;

begin
Clrscr;

Assign(F, Plik);
Reset(F);
while not Eof(F) do
begin
readln (F, Wiersz);
writeln (Wiersz);

end;

{ilosc slow}

for I:=1 to length (wiersz) do if wiersz[i]=' ' then
Licznik:=Licznik+1;
writeln;
writeln ('Ilosc slow: ', Licznik+1);

{ilosc spacji}

writeln ('Ilosc spacji: ', (Licznik+1)-1);

{ilosc liter nie liczac spacji}

writeln('Ilosc liter - bez spacji: ', length(wiersz) - ((licznik+1)-1));

{ilosc zdan}
for

Close (F);
readln;
end. 

A teraz jak napisac jakos funkcje ktora zlicza zdania np : wg znakow konczacych zdanie : ? ! . itp

0
if wiersz[i]='.' then
Licznik:=Licznik+1;

i już masz liczenie zdań.

Ciekawe kiedy się ktoś oburzy.

0
uses Crt;
const
Plik='TEKST.TXT';

var
F: Text;
Wiersz: string;
Zdanie: String;
I, Licznik,Lzdan : Byte;

begin
Clrscr;

Assign(F, Plik);
Reset(F);
while not Eof(F) do
begin
readln (F, Wiersz);
readln (F,Zdanie);
writeln (Wiersz);
writeln(Zdanie);

end;

{ilosc slow}

for I:=1 to length (wiersz) do if wiersz[i]=' ' then
Licznik:=Licznik+1;
writeln;
writeln ('Ilosc slow: ', Licznik+1);

{ilosc spacji}

writeln ('Ilosc spacji: ', (Licznik+1)-1);

{ilosc liter nie liczac spacji}

writeln('Ilosc liter - bez spacji: ', length(wiersz) - ((licznik+1)-1));

{ilosc zdan}
for I:=1 to length (zdanie) do if zdanie[i]='.' then
Licznik:=Licznik+1;
writeln;
for I:=1 to length (zdanie) do if zdanie[i]='!' then
Licznik:=Licznik+1;
writeln;
for I:=1 to length (zdanie) do if zdanie[i]='?' then
Licznik:=Licznik+1;
writeln;
writeln('Ilosc zdan: ',Licznik+1);


Close (F);
readln;
end. 

Daje mi jedno zdanie za duzo ;/ dac po prostu writeln('Ilosc zdan: ',(Licznik+1)-1); ?

0

o else słyszał? Przeczytaj może jakiś kurs? i użyj komponentu TBrain.

0

Dobra mam juz te zdania poprawnie. tylko teraz problem, bo nie zlicza poprawnie slow ;/ zlicza tylko w pierwszym zdaniu

0

@Widmosso

  1. Czy wszystkie zdania znajdują się w jednej linii?
  2. Czemu nie inicjalizujesz liczników? Mogą się w nich znajdować dane śmieciowe.
0

@Widmosso - nadal nie podałeś wszystkich potrzebnych informacji, stąd dalej nie wiadomo co doradzić...

bartop napisał(a)
  1. Czemu nie inicjalizujesz liczników? Mogą się w nich znajdować dane śmieciowe.

Tutaj wypadałoby zobaczyć do dokumentacji, bo raczej nie będzie UB (ale pewności nie mam); Warning od kompilatora na pewno poszedł; Poza tym zmienną Lzdan nigdzie nie używasz, więc albo ją "zużyj", albo ją usuń; Więc Panie Pytaczu - czytaj komunikaty kompilacji i popraw kod, aby kompilacja była czysta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1