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)] <> '/' then begin WriteLn('la cadena debe terminar en "/"'); 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 > 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
Ir a la versión completa