Pascal/Turbo Pascal - Para pasar a mayúsculas una cadena

 
Vista:

Para pasar a mayúsculas una cadena

Publicado por Pascual (94 intervenciones) el 06/03/2005 23:00:22
Me encontré por el foro este programa que (supuestamente) pasa a mayúsculas una cadena pero hay algo que falla, ¿qué es mid(cadena,i,1);?. Turbo Pascal 7.0 no me lo interpreta.

program mayusculas;
uses crt;
var
cad: string;
function mayus (cadena: string): string;
var
nueva: string;
car: char;
i: byte;
begin
nueva:='';
for i:=1 to length(cadena) DO
begin
car:=mid(cadena,i,1);
nueva:= nueva + car
end;
mayus:= nueva
end

{y para llamarla solo escribe esto:

Ejemplo:}
BEGIN
write("Cual es tu nombre: ");
read(nombre);
nombre:=mayus(nombre)
readln;
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Se me ha ocurrido una forma con recursión

Publicado por Pascual (94 intervenciones) el 06/03/2005 23:47:16
No funciona nada mas que para el caso base. :(

program mayusculas;
uses crt;
var
cad: string;
function mayus (cadena: string): string;
var
a: integer;
begin
if length(cadena)=1 THEN
mayus:=upcase(cadena[1])
ELSE
mayus:= mayus (cadena)
end;

{y para llamarla solo escribe esto:

Ejemplo:}
BEGIN
clrscr;
write ('Cual es tu nombre: ');
read (cad);
Writeln (mayus(cad));
readkey;
END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Al final lo hice de forma iterativa

Publicado por Pascual (94 intervenciones) el 06/03/2005 23:55:30
program mayusculas;
uses crt;
var
cad: string;
procedure mayus (cadena: string);
var
a: integer;
begin
for a:=1 to length(cadena) do
begin
write (upcase(cadena[a]));
end
end;

{y para llamarla solo escribe esto:

Ejemplo:}
BEGIN
clrscr;
write (\'Cual es tu nombre: \');
read (cad);
mayus(cad);
readkey;
END.

Este si funciona pero si alguien lo hiciera de forma recursiva estaría muy agradecido. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Al final lo hice de forma iterativa

Publicado por Hurricane (39 intervenciones) el 07/03/2005 13:59:35
Veamos:

Function UpStr(St :String) :String;
Begin
If (Length(St)=0) then
UpStr := ''
Else
UpStr := UpStr(Copy(St, 1, Length(St)-1) + UpCase(St[Length(St)]);
End; {UpStr}

Saludos ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Para pasar a mayúsculas una cadena

Publicado por jefferson olarte (2 intervenciones) el 12/02/2013 22:09:18
escribe este programa que si sirve lo acabo de correr en turbo pascal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program mayus;
uses
crt;
var
cadena1,d1:string;
 
procedure entrada(var cadena:string);
begin
writeln('introdusca una cadena');
readln(cadena);
end;
 
procedure cambiar(cadena:string;var d:string);
var
 
e:string;
i:integer;
begin
d:=' ';
for i:=1 to length(cadena) do
begin
if cadena[i]<>''  then
e:=chr(ord(cadena[i])-32);
d:=d+e;
 
end;
writeln('la cadena nueva es: ',d,' ');
end;
 
begin
clrscr;
entrada(cadena1);
cambiar(cadena1,d1);
readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar