Programación General > Pascal

 Programa

(1/1)

diegorojo_83:
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.

--- Fin de la cita ---

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:
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;

--- Fin de la cita ---

--- Código: Text --- var  S: String;  ICount: Integer;  CharCount: Integer;  BiggestWord: Integer;  TempCount: Integer;begin  {leyendo la cadena}  ReadLn(S);  {si la cadena no termina en '/' es que esta mal}  if S[Length(S)] &#60;&#62; '/' then  begin    WriteLn('la cadena debe terminar en &#34;/&#34;');    Readln;    Halt;  end;  {si estamos aca, es porque la cadena termina en /}   {inicializamos los contadores}  BiggestWord := 0;  TempCount := 0;    for ICount := 1 to Length(S) do   begin     if S[ICount] = ' ' then     begin       {es espacio, nueva palabra, verificamos si la palabra        actual es mayor a la maxima}       if TempCount &#62; BiggestWord then         BiggestWord := TempCount;       TempCount := 0;     end else    {la letra no es espacio, por lo que continua la palabra actual}     begin       TempCount := TempCount + 1;     end;   end;   WriteLn('La palabra mayor tiene ', BiggestWord, ' letras');   Readln;end.  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.

Navegación

[0] Índice de Mensajes

Ir a la versión completa