Skocz do zawartości

mała pomoc w pascalu.


konrad_gordon

Polecane posty

Witam.

Wiem że jestem tu nowy, ale liczę że mi pomożecie. Mam mianowicie taki problem. mam zmienna typu string składającą się z 3 wyrazów oddzielonych od siebie dowolną liczba spacji

np.: "abc de f". Zadanie polega na skopiowaniu TYLKO wyrazu środkowego. To jest tylko część zadania które mam zrobić ale ona właśnie mi sprawia problem bo nie wiem jak skopiować ten środkowy wyraz. Dzięki za pomoc.

Link do komentarza
Udostępnij na innych stronach

ja bym to zrobił raczej na pętli while

1 szukasz spacji i zapisujesz pozycje do zmiennej

2 w pętli sprawdzasz czy następna jest spacja jeśli tak to zmienna +1 jeśli inny znak to koniec pętli

3 kopiujesz te 3 wyrazy do zmiennej wynikowej

4 usuwasz tekst od początku do zmienne zawierającej pozycje spacji

5 szukasz następnej spacji i usuwasz wszystko od niej do końca

6 koniec

Link do komentarza
Udostępnij na innych stronach

ja to zrobiłem w końcu tak

procedure operacje(var f1:text; var f2:text);
var
a,b:string;
i,dl,ost,last,n:byte;

begin
assign(f1,'plikwe.txt');
assign(f2,'plikwy.txt');
reset(f1);
rewrite(f2);

ost:=0;
last:=0;
i:=1;
n:=0;

repeat
readln(f1,a);
dl:=length(a);


while i<= dl do
     begin
          if n=0 then
             begin
                  if a[i]=' ' then ost:=i else if ost<>0 then n:=1;
             end
             else
             begin
                  if a[i]=' ' then
                     begin
                          last:=i;
                          i:=dl+1;
                     end;
             end;
inc(i);
end;
b:=copy(a,ost+1,last-(ost+1));
writeln(f2,b);

until eof(f1);
close(f1);close(f2);

end;

ale teraz mam problem z policzeniem liczby wyrazów w stringu w którym wyrazy są oddzielone od siebie dowolną liczba spacji, a i liczba wyrazów w linii jest dowolna <_<

bo ten progm to ogólnie miał pracować na plikach ale nie wiedziałem jak znaleźć ten środkowy wyraz. a teraz mam kolejny problem.

Link do komentarza
Udostępnij na innych stronach

skoro są tylko znaki i spacje to rób tak:

idziesz pętlą for po znakach od drugiego i patrzysz: jeśli s = spacja a s[i-1] nie jest spacją to zwiększ licznik. Potem tylko sprawdzasz czy ostatni znak jest różny od spacji to zwiększasz licznik o 1

 

Edit:

Poświęcę się:

 

 
function Zliczaj(const s : string):integer;
var
 i,licznik : integer;
begin
 Licznik := 0;
 for i:=2 To Length(s) Do
   if (s[i] = ' ') and (s[i-1] <> ' ') then
     Inc(licznik);

 if (Length(s) > 0) and (s[Length(s)] <> ' ') then Inc(Licznik);
 Zliczaj := Licznik;
end;

Pierwszy program gratis :D

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...