• Viernes 29 de Marzo de 2024, 07:45

Autor Tema:  Programa  (Leído 1032 veces)

diegorojo_83

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Programa
« en: Viernes 15 de Septiembre de 2006, 05:04 »
0
hola que tal, me mandaro hacer en la facultad este ejercicio: "Dado un texto terminado en "/" averiguar que cantidad de letras tiene la palara mas larga,  suponer que nunca sucede que la primera letra del texto es "/"

Citar

program palabramayor;

  uses crt;
  var
       cant,max: integer;
       txt: string;
       i:integer;

  begin
    clrscr;
  write('ingrese una frase terminada en /: ');
  readln(txt);
  i:=0;
  while txt<>'/' do
  begin
        if txt <> ' ' then
        begin
               cant:=cant+1;
        end
        else
        begin
               cant:=0;
        end;
        if cant>max then
        begin
               max:=cant;
       i:=i+1;
       end;
       end;

  writeln('la palabra mas larga del texto es de: ',cant);

  readkey;
  end.

Lo hago asi, nose me parece que esta bien, lo compilo y o me tira errores, pero cuando lo ejecuto ingreso la frace y se queda ahi sin hacer nada..... espero que me puedan ayudar, ya me tiene podrido este programa. :blink: ... nos vemos GRACIAS

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Programa
« Respuesta #1 en: Viernes 15 de Septiembre de 2006, 22:07 »
0
No hace falta abrir 2 posts para lo mismo  :rolleyes:
Si bien, tu programa no esta del todo mal, pero haces unas vueltas que no comprendo, es como que las condiciones no estuvieran en los lugares correctos.
Citar
lees caracer
si es espacio,  verifivas si la "palabra acutal" es mayor que la "palabra mas grande"
si no es espacio, sumas al contador de "palabra actual" una unidad;
Código: Text
  1.  
  2. var
  3.   S: String;
  4.   ICount: Integer;
  5.   CharCount: Integer;
  6.   BiggestWord: Integer;
  7.   TempCount: Integer;
  8. begin
  9.   {leyendo la cadena}
  10.   ReadLn(S);
  11.   {si la cadena no termina en '/' es que esta mal}
  12.   if S[Length(S)] &#60;&#62; '/' then
  13.   begin
  14.     WriteLn('la cadena debe terminar en &#34;/&#34;');
  15.     Readln;
  16.     Halt;
  17.   end;
  18.   {si estamos aca, es porque la cadena termina en /}
  19.  
  20.   {inicializamos los contadores}
  21.   BiggestWord := 0;
  22.   TempCount := 0;
  23.  
  24.    for ICount := 1 to Length(S) do
  25.    begin
  26.      if S[ICount] = ' ' then
  27.      begin
  28.        {es espacio, nueva palabra, verificamos si la palabra
  29.         actual es mayor a la maxima}
  30.        if TempCount &#62; BiggestWord then
  31.          BiggestWord := TempCount;
  32.        TempCount := 0;
  33.      end else
  34.     {la letra no es espacio, por lo que continua la palabra actual}
  35.      begin
  36.        TempCount := TempCount + 1;
  37.      end;
  38.    end;
  39.    WriteLn('La palabra mayor tiene ', BiggestWord, ' letras');
  40.    Readln;
  41. end.
  42.  
  43.  
la idea es, vas recoriendo letra por letra y sumas esa letras a un contador
si la letra es un espacio, verificas que el contador de letras, sea mayor a la palabra mas grande, si es mayor, reasignas.
reseteas el contador de letras y se inicia el ciclo.