Programación General > Pascal
Array De Caracteres
.:Kioon:.:
Hola Eugenio!
Muchas Gracias por todo lo que me estás ayudando. Por favor, te dejo mi dirección de correo ya que me apetece mandarte un correo con lo que me sale y me ayudes si quieres y no sé tu e-mail. El mio es jgarrid2@hotmail.com
Saludos y Gracias
Jesús :huh:
Enko:
--- Citar ---Muchas Gracias por todo lo que me estás ayudando
--- Fin de la cita ---
De nada, para esto está el foro
--- Citar --- no sé tu e-mail.
--- Fin de la cita ---
En mi perfil están las direcciones. (hacé click en mi nick para ver el perfil)
--- Citar ---mandarte un correo con lo que me sale
--- Fin de la cita ---
No veo cual es el problema de postearlo aqui (por supuesto usando el boton CODE para que se vea mejor, está arriba del cuedro en donde escribes el mensaje )
:hola:
.:Kioon:.:
Hola a tod@s.
Bueno.. os explico que me pasa. Después de las modificaciones que he estado realizando, cuando se ejecuta el programa (si quereis lo podeís comprobar) la cadena, queda tal y como está sin cambiar las letras :blink:
--- Código: Text --- PROGRAM arrPosicion; 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); clrscr; WRITELN (''); WRITELN (' ========================'); WRITELN (' POESIAS'); WRITELN (' ========================'); WRITELN (''); WRITELN (''); FOR i:=1 TO longitudCadena DO BEGIN IF cadena[i] = '&' THEN BEGIN WHILE cadena[i] <> '&' DO BEGIN cadena[i] := upCase(cadena[i]); {esto lo pasa a mayusculas} i:=i+1; END; END ELSE i:=i+1; END; WRITELN (cadena); END.
Agredecería mucho a quien me ayudase.
Saludos
Jesús :hola:
Enko:
Despues de ver un poco tu código está esto:
--- Código: Text --- FOR i:=1 TO longitudCadena DO *****{esto tiene que ser un while i <= longitud} BEGIN IF cadena[i] = '&' THEN BEGIN I := I+1; ****se ejecuta una vez sola avanzando en la cadena para que la condicion siguiente pueda ser cierta alguna vez. WHILE cadena[i] <> '&' DO *** sin el I+1 esto siempre era falso.... BEGIN cadena[i] := upCase(cadena[i]); {esto lo pasa a mayusculas} I := I+1; END; END ELSE i:=i+1; END;
Otra cosa más....
Si lo que quieres hacer es pasar a mayusculas partes de la cadena, el proncipio y el final tendrian que ser marcados con distintos simbolos o sea :
principio-final
[-]
{-}
(-)
&-%
etc
Sino el final de una, marca el principio de otra.....
Segun veo utilizas el FREE PASCAL que yo dezconozco sus sosillas.....
Lo que te paso a continucacion es un prog qeu toma una cadena y pasa a mayusculas todo lo que este entr llaves {}...
Tambien lo probé en Free Pascal y anduvo bien.
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
program mensaje;
uses CRT;
var
i: integer;
s: string; {esta es la cadena proncipal en la cual entran 255 caracteres}
{si necesitas m'as de 255 caracteres tendras qeu usar m'as de una}
begin
s := '{estara en mayusculas}no Se AlTeRa{se pasa a Mayusculas} queda IgUaL{adivina}';
ClrScr;
WriteLn('Cadena antes: ', s);
while i<= Length(s) do
{recorre toda la cadena}
begin
if S[i] = '{' then {Hay que pasar todo ma mayusculas
hasta que se encuentra con la llave de cerrar}
begin
while s[i] <> '}' do
begin
s[i] := upCase(s[i]);
i := i + 1;
end;
end
else
i := i + 1; {sigue avanzando por si no encuentra nada}
end; {del While i<length}
WriteLn('Cadena despues: ', s);
Readln;
end.
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
Navegación
[*] Página Anterior
Ir a la versión completa