Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 16. 04. 2010 20:24

květoslav
Příspěvky: 31
Reputace:   
 

Algoritmus pocet znaků ve větě...

zdravím, neodpustím si to ani dnes... :)
Vytvořil jsem algoritmus pro zjištění počtu slov v textu, která obsahují více znaků než hodnota zadaná z klávesnice.

Mám tady problém a to s cyklem opakování... pokud zadám *i:=1 to n* program to nejspíš nepobere asi jede donekonečna až se zaplní obsah datového typu nebo co, no nerozumím tomu. Chtěl bych aby se hodnota nemusela při změně počtu znaků v datovém souboru přepisovat... nějaké nápady, zkoušel jsem to s fcí eof ale neumím to správně zapsat. Šlo by to i jinak? děkuju za příp. tipy.




program Project9;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var
  f:text;
  k,i,n,ps,pz:integer;
  zn:string;
begin
  writeln('Program pro zjisteni poctu slov s vyce znaky nez pocet zadany z klavesnice');
  writeln('--------------------------------------------------------------------------');
  pz:=0;
  ps:=0;
  assign(f,'vstup.txt');
  reset(f);
  read(f,zn);
  writeln('ZADEJ HODNOTU');
  readln(k);
  writeln;writeln;
  for i:=1 to 72 do
    if (zn[i]<>' ') and (zn[i]<>'.') then
      pz:=pz+1
    else begin
      if pz<=k then
        pz:=0
      else
        ps:=ps+1;
        pz:=0
      end;
  writeln('Pocet slov:');
  writeln(ps);
  writeln;writeln;
  readln;
end.

Offline

  • (téma jako vyřešené označil(a) květoslav)

#2 17. 04. 2010 00:05 — Editoval septolet (17. 04. 2010 00:09)

septolet
Příspěvky: 334
Reputace:   
 

Re: Algoritmus pocet znaků ve větě...

Spíš než načíst celý soubor do paměti bych volil čtení po znacích nebo po řádcích. Textové soubory jsou většinou ukončené speciálním znakem EOF. Pokud už to chceš dělat tímto způsobem, tak se podívej, jestli neexistuje nějaká funkce, která vrací počet znaků v řetězci (v C třeba strlen()), případně si takovou funkci sám napiš.

Offline

 

#3 17. 04. 2010 10:48 — Editoval plisna (17. 04. 2010 10:48)

plisna
Místo: Brno
Příspěvky: 1503
Reputace:   
 

Re: Algoritmus pocet znaků ve větě...

↑ květoslav: je to tak, jak pise kolega ↑ septolet: - soubor je treba cist nejlepe po radcich a vyuzit k tomu EOF (end of file) funkci a koukni treba sem: http://pascal.chytrak.cz/cviceni5.html

Code:

var soubor: file;
     radek: string;

assignfile(soubor, 'cesta k souboru');
reset(soubor);

while not eof(soubor) do begin
  readln(soubor, radek);
  ...
end;

Offline

 

#4 17. 04. 2010 13:06

květoslav
Příspěvky: 31
Reputace:   
 

Re: Algoritmus pocet znaků ve větě...

Díky za rady nakonec jsem to teda načítal pojednotlivých znacích...


program Projydfect1;
{$APPTYPE CONSOLE}
uses
  SysUtils;

var
  f:text;
  k,ps,pz:integer;       
  zn:char;

begin
  writeln('Program pro zjisteni poctu slov s vice znaky nez zadana hodnota');
  writeln('---------------------------------------------------------------');
  pz:=0;
  ps:=0;
  assign(f,'vstup.txt');
  reset(f);
  writeln('Zadej hodnotu:');
  readln(k);
  writeln;writeln;
  while not eof(f) do                                 
    begin
    read(f,zn);
    if (zn<>' ') and (zn<>'.') then     
      pz:=pz+1
    else
      begin
        if pz<=k then
          pz:=0
        else
          ps:=ps+1;
          pz:=0
      end;
    end;
  writeln('Pocet slov:');
  writeln(ps);
  writeln;writeln;
  readln;
end.















Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson