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 ? :)
Pokaż kod. A w zadaniach zaliczeniowych raczej naprowadzamy na rozwiązanie. Nie odwalamy ich za kogoś.
Ile złotówek za to proponujesz?
@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.
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
if wiersz[i]='.' then
Licznik:=Licznik+1;
i już masz liczenie zdań.
Ciekawe kiedy się ktoś oburzy.
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); ?
o else słyszał? Przeczytaj może jakiś kurs? i użyj komponentu TBrain.
Dobra mam juz te zdania poprawnie. tylko teraz problem, bo nie zlicza poprawnie slow ;/ zlicza tylko w pierwszym zdaniu
- Czy wszystkie zdania znajdują się w jednej linii?
- Czemu nie inicjalizujesz liczników? Mogą się w nich znajdować dane śmieciowe.
@Widmosso - nadal nie podałeś wszystkich potrzebnych informacji, stąd dalej nie wiadomo co doradzić...
bartop napisał(a)
- 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.