Programación General > Pascal
Array De Caracteres
.:Kioon:.:
Hola a tod@s.
Desde hace dias, estoy metido en un bucle :huh: que hace que no pueda salir. Tengo que hacer un ejercicio y no sigo adelante. Imaginaros, tenermos un array de caracteres y me piden que tengo que poner en mayusculas y centrarlo (tb subrayarlo) el titulo que como podemos ver a continuación esta entre &&. Pues cuando utilizo un FOR parece que no me deja, dice expresion no valida. Agradeceria a todo el mundo que me pueda ayudar!!!!!
PROGRAM arrCaracteres;
USES crt;
CONST
bajo=1;
alto=499;
TYPE
intervalo=bajo..alto;
VAR cadena:ARRAY [intervalo] OF CHAR;
VAR
i,n : INTEGER;
index : intervalo;
longitudCadena,posiciona:BYTE;
carac : CHAR;
BEGIN
cadena:=('&colof¢n&Luz...$Cuando mis l grimas te alcancen$la fusi¢n de mis ojos$ya no ser llorar$sino ver.$&abrojos&A un tal q asesin¢ a diez$y era la imagen del vicio,$muerto,el Soberano Juez$le salv¢ del sacrificio');
longitudCadena:=LENGTH(cadena);
carac:='&';
clrscr;
WRITELN ('');
WRITELN (' ========================');
WRITELN (' POESIAS');
WRITELN (' ========================');
WRITELN ('');
WRITELN ('');
FOR i:=LOW(cadena) TO longitudcadena DO
FOR cadena='&' TO '&' DO <<<<<<<<<<<<<NO ME DEJA
SALUDOS
JESÚS
Enko:
Tenes que tener en cuenta que ne le lenguaje Pascal las cadenas son esto:
--- Código: Text --- type String = packed array[1..255] of char;
"packed" es para que no malgaste memoria.
por esa razon, si quieres recorer una cadena caracter por caracter tienes que hacer:
--- Código: Text --- var Cadena: string[255]; {la m'axima longitud permitida] i : integer;begin Cadena := 'Algo escrito por aqui jfjfiejdifjfusdafjsadfi'; for i := 1 to Length(Cadena) do begin Cadena[i] := upCase(Cadena[i]); {esto lo pasa a mayusculas} end;end.
Enko:
Para centrar la cadena tienes que saber su longitud con Length().
Esta longitud tiene que ser menor a 80 (sino no entra en una linea de la pantalla)
Para calcular el espacio a dejar al pricipio(tiene que ser simetrico con el final) haces:
--- Código: Text --- EspasioLibre := 80 - Length(cadena) div 2; {DIV es '/' de enteros, }for i := 1 to EspacioLibre do Write(' ');Write(cadena);{se escribe luego de dejar espacios necesarios}
.:Kioon:.:
Hola a todos.
Ante todo.. Muchas Gracias!! La verdad es que no poseo mucha experiencia en PASCAL, por lo que tengo unas duditas.
var
Cadena: string[255]; {la m'axima longitud permitida]
i : integer;
begin
Cadena := 'Algo escrito por aqui jfjfiejdifjfusdafjsadfi';
for i := 1 to Length(Cadena) do <<----- Me dice que tome valor la i de 1 hasta la longitud de la cadena
begin
Cadena := upCase(Cadena); {esto lo pasa a mayusculas}
end;
end.
Pero si yo quiero que de la cadena escrita 'Algo escrito por aqui jfjfiejdifjfusdafjsadfi' me ponga en mayusculas de la primera e hasta la o de "por" y el resto lo deje IGUAL ¿Cómo lo hago?
GRACIAS por todo!!
Jesús :D
Enko:
--- Citar --- Pero si yo quiero que de la cadena escrita 'Algo escrito por aqui jfjfiejdifjfusdafjsadfi' me ponga en mayusculas de la primera e hasta la o de "por" y el resto lo deje IGUAL ¿Cómo lo hago?
--- Fin de la cita ---
--- Código: Text --- while i <= Length(Cadena) do <<----- Me dice que tome valor la i de 1 hasta la longitud de la cadenabegin if Cadena[i] = 'e' then begin while Cadena[i] <> 'o' do begin Cadena[i] := upCase(Cadena[i]); {esto lo pasa a mayusculas} i:=i+1; end; end else i:=i+1;end;
Empiesa desde el principio de la cadena, si encuentra la letra 'e' empieza pasar todo a mayuscula hasta que se encuentra con la letra 'o'.
--- Citar --- hasta la o de "por"
--- Fin de la cita ---
Esta o es la segunda
--- Código: Text --- Algo escrito por aqui jfjfiejdifjfusdafjsadfi-------c----1---2
Como es la segunda, no tenes manera de darte cuenta. Tendras que utilizar caracteres menos repetidos como:"$", "@" u otros.
Navegación
[#] Página Siguiente
Ir a la versión completa