najdlhsie slovo

Programovacie jazyky, rady, poradňa...
puco55
Amateur
Amateur
Príspevky: 18
Registrovaný: 25 sep 2011, 16:04

najdlhsie slovo

Príspevok od používateľa puco55 »

mame napisat program na vyhladanie najdlhsieho slova vedeli yb ste mi poradit jednoduchsiu moznost?

Kód: Vybrať všetko

uses crt;
type
  slovo = record
            dlz,pozicia : integer;
          end;

var slova: array[1..100] of string;
    pocet,i: integer;
    max : slovo;
    f: text;
begin
 clrscr;
 assign(f,'slova.txt');
  reset(f);
 i:=1;
 pocet:=0;
 while not eof(f) do
  begin
    readln(f,slova[i]);
    inc(pocet);
    writeln(slova[i]);
   inc(i);
  end;
  max.dlz:=length(slova[1]);
  max.pozicia:=1;
  for i:=2 to pocet do
    begin
      if length(slova[i])>max.dlz
        then begin
               max.dlz:=length(slova[i]);
               max.pozicia:=i;
             end;
   end;
  writeln('Najdlhsie slovo sa nachadza na ',max.pozicia,'. mieste');
  writeln('najdlhsie slovo je: ',slova[max.pozicia]);
readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: najdlhsie slovo

Príspevok od používateľa audiotrack »

celé to pole je ti zbytočné, rovnako ako ten record, a aj druhý cyklus. Na začiatok si inicalizuj premennú max na 0 a slovo ktoré bude typu string na prázdny reťazec. Potom ako čítaš súbor porovnáš dlžku aktuálneho slova a porovnáš s max. Ak je väčšia, tak si uložíš novú dlžku a nové slovo. A takto prejdeš celý súbor. Nepotrebuješ si pamätať ostatné slová, tak zbytočne ich načítavaš do poľa. Okrem toho, čo ak bude mať súbor viac ako 100 slov? :) Aj tým recordom si to komplikuješ
puco55
Amateur
Amateur
Príspevky: 18
Registrovaný: 25 sep 2011, 16:04

Re: najdlhsie slovo

Príspevok od používateľa puco55 »

mam to teraz takto napisane ale nefunguje to

Kód: Vybrať všetko

uses crt;
var slova: string;
    pocet,i: integer;
    max : integer;
    f: text;
begin
 clrscr;
 assign(f,'slova.txt');
  reset(f);
 i:=1;
 pocet:=0;
 max:=0;
 slova:=' ';
 while not eof(f) do
  begin
    readln(f,slova);
    inc(pocet);
    writeln(slova);
   inc(i);
  end;
  for i:=1 to pocet do
    begin
      if length(slova)>max
        then begin
               max:=length(slova[i+1]);
             end;
    end;
 writeln('najdlhsie slovo je: ',slova);
readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: najdlhsie slovo

Príspevok od používateľa audiotrack »

max:=length(slova[i+1]);

to je čo za kravinu? Vieš mi vysvetliť čo to má podľa teba robiť? A v tom cykle si stále prepisuješ premennú slova, takže po skončení cyklu tam máš uložené iba posledné slovo
puco55
Amateur
Amateur
Príspevky: 18
Registrovaný: 25 sep 2011, 16:04

Re: najdlhsie slovo

Príspevok od používateľa puco55 »

a vedel by si mi poradit ako to urobit som fakt slaby v programovani
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: najdlhsie slovo

Príspevok od používateľa xadman »

V pascale sa moc nevyznám, ale spravil by som to tak, že si vytvoríš premennú "najSlovo". Potom budeš čítať zo súboru jednotlivé slová, a ak je prečítané slovo dlhšie ako "najSlovo" tak do tejto premennej nalepíš toto prečítaná slovo. Pokiaľ bude kratšie, tak jednoducho budeš pokračovať ďalej.

Ak chceš ešte všetky prečítané slová vložiť do poľa, a potom prečítať ktoré je najdlhšie,sprav to tak, ako som napísal vyššie, že precheckuješ pole, najdlhšie a jeho pozíciu hodíš do premennej.
Napísať odpoveď