Pascal/Turbo Pascal - urgente!

   
Vista:

urgente!

Publicado por and19 (3 intervenciones) el 12/12/2009 03:00:25
hola a todos, queria saber si me pueden ayudar con un problema que tengo en pascal y esq necesito hecer un programa que "desarrolle una funcion que convierta una cadena de caracteres en mayusculas y otra funcion que convierta los caracteres en minusculas" sin utilizar el upcase ni lowercase...

Yo hice el programa pero mi problema esq yo lo hice solo con una funcion y debe ser con dos funciones, el programa que tengo hecho corre perfectamente y me convierte los caracteres en mayusculas y/o minusculas segun como las escriba, pero el programa debe ser con dos funciones y la verdad no se como dividirlo para hacerle la otra funcion o bien agregarle otra funcion que me haga el mismo proceso... les agradezco de antemano la ayuda que me puedan brindar con este problema ya que urge y necesito realizarlo. GRACIAS!

Acá les dejo el programa que tengo hecho y espero que me puedan ayuar!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
program MayusculaMinuscula;
uses crt;
const cad_orig:string = 'escriba cualquier cosa'; {<----cualquier texto}
var
i: integer;
{_______________________________________________________________________}
function intercambioMm: integer;
var
nc: integer;
begin
clrscr;
writeln(cad_orig);
nc:= length(cad_orig);
for i:=1 to nc do
begin
if (ord(cad_orig[i]) >=65) and (ord(cad_orig[i])<=90) then cad_orig[i]:= chr(ord(cad_orig[i]) + 32)
else if (ord(cad_orig[i]) >= 97) and (ord(cad_orig[i]) <= 122) then cad_orig[i]:= chr(ord(cad_orig[i])-32);
end;
writeln(cad_orig);
readkey;
end;
{_______________________________________________________________________}
begin
intercambioMm;
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

RE:urgente!

Publicado por Diego Romero (997 intervenciones) el 12/12/2009 15:00:48
Una función se diferencia de un procedimiento porque siempre devuelve un valor. Tú no estás devolviendo ninguno.

var
Cad, CadMinus, CadMayus: string;

function AMinusculas(S: string): string;
var
nc: integer;
begin
nc:= length(S);
for i:=1 to nc do
begin
if (ord(S[i]) >=65) and (ord(S[i])<=90) then S[i]:= chr(ord(S[i]) + 32);
end; { for }
AMinusculas:=S;
end;

function AMayusculas(S: string): string;
var
nc: integer;
begin
nc:= length(S);
for i:=1 to nc do
begin
if (ord(S[i]) >= 97) and (ord(S[i]) <= 122) then S[i]:= chr(ord(S[i])-32);
end; { for }
AMayusculas:=S;
end;

begin
Write('Ingrese un texto: ');
ReadLn(Cad);
CadMinus:=AMinusculas(Cad);
CadMayus:=AMayusculas(Cad);
WriteLn(CadMinus);
WriteLn(CadMayus);
end;

Esto es lo que te han pedido.
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:urgente!

Publicado por Antonio (74 intervenciones) el 12/12/2009 16:10:28
Hola and19.

No me queda muy claro lo que pides, pero a pesar de ello te envío un programa que contiene las dos funciones. Así,la 1ª FUNCTION convierte los caracteres a mayusculas y si ya lo fueren mayusculas seguirán mayúsculas. La 2ª FUNCTION trabaja sobre las mayúsculas de la 1ª, pasándolas nuevamente a minúsculas.
Suerte
Antonio
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:urgente!

Publicado por and19 (3 intervenciones) el 12/12/2009 18:19:44
Hola que tal Antonio gracias por tu respuesta, disculpa la molestia esq no me llegó tu programa...gracias de antemano.
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:urgente!

Publicado por Antonio (74 intervenciones) el 12/12/2009 21:38:11
Hola And19
No se que ha ocurrido. Lo intento de nuevo

program Invertir_Minusculas_a_mayusculas_y_viceversa;
uses crt;
var
cad : string;

function Mayusculas(cad : string) : string;
var
i : integer;
begin

for i := 1 to length(cad) do
begin
if (ord(cad[i]) >= 97) and (ord(cad[i]) <= 122) then
cad[i] := chr(ord(cad[i])-32)
else
cad[i] :=cad[i];
end;
Mayusculas := cad;
end;

function Minusculas(cad : string) : string;
var
j : integer;
begin
for j := 1 to length(cad) do
begin
if (ord(cad[j]) >= 65) and (ord(cad[j]) <= 90) then
cad[j] := chr(ord(cad[j])+32)
else
cad[j] := cad[j];
end;
Minusculas := cad;
end;
begin {PROGRAMA PRINCIPAL}
clrscr;
write('Introducir la cadena: ');
readln(cad);
writeln;
writeln;
writeln('Cadena de mayusculas: ',Mayusculas(cad));
writeln;
writeln('Cadena de minusculas: ',Minusculas(cad));

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:urgente!

Publicado por Diego Romero (997 intervenciones) el 12/12/2009 21:45:19
Es lo mismo que hice yo ... ;)
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:urgente!

Publicado por and19 (3 intervenciones) el 13/12/2009 18:00:12
muchas gracias Diego me ha sido de gran ayuda tu respuesta dada, es justo lo que necesito, gracias de verdad!
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:urgente!

Publicado por Antonio (74 intervenciones) el 13/12/2009 18:17:44
Hola Diego.

Tienes razón; pero ocurrió lo siguiente:
Abrí el caso de And19 y me dispuse a contestarle, lo abandoné en pantalla para hacer un recado, al regresar lo continúe sin comprobar si le habian constado.
Al enviarlo comprové tu contestacion y también tu pequeño error de no declarar en cada function la variable "i" de cada for. Yo también cometí el error en el primer mensaje de no enviar el código fuente y por ello tuve que repetir el mensaje.
Creo que ha quedado aclarada mi falta de mala intención.
Un saludo y hasta la proxima.
Antonio
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:urgente!

Publicado por Diego Romero (997 intervenciones) el 13/12/2009 21:44:34
Vuelto a mirar mi código ¡tienes razón!, no declaré i. Prometo mirar la última temporada de Casi Ángeles como castigo ;). Esto me pasa por programar de memoria y no usar el Turbo Pascal.
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