[ Foro de Pascal ]
Hola! por favor me podrian ayudar con esto?..Gracias..
ESCRIBIR UN PROCEDIMIENTO QUE RECIBA COMO ARGUMENTOS UN STRING(SIN ESPACIOS) Y UN CHAR. DEBERA ELIMINAR DEL STRING EL VALOR CORRESPONDIENTE AL PARAMETRO DE TIPO CHAR Y RETORNAR EL ARREGLO MODIFICADO SIN ESPACIOS.
EJEMPLO: si recibe el string 'holamundo' y el char 'o';
debera retornar: 'hlamund';
(no se como eliminar el char).
Para borrar parte de un string puedes usar "delete":
http://www.aprendeaprogramar.com//referencia/view.php?f=delete&leng=Pascal
Yo hice algo, espero te ayude:
program EliminarCaracter;
var
cad, cade, let: string;
function QuitarString(cad1:string; letra:string): string;
var
posi: integer;
begin
posi:= -1;
while posi<>0 do
begin
posi:= Pos(letra,cad1);
delete(cad1,posi,1);
end;
QuitarString:= cad1;
end;
BEGIN
write('Introduzca una cadena sin espacios: ');
readln(cad);
write('Introduzca la letra: ');
readln(let);
cade:= QuitarString(cad,let);
writeln('La cadena resultante es: ',cade);
readln;
END.
hola, he probado el codigo de luis y funciona muy bien , sin embargo si el compañero pudiera responderme se lo agradeceria de antemano, el por que hace en la funcion :
posi:= -1;
muchas gracias.
Lo hice para obligar la entrada al ciclo while.
Hola Carolina, aunque con el permiso del profesor nacho que nos aconseja mejor no desarrollar programas enteros para que cada uno nos esforcemos mas, queria en este caso obviar esa recomendacion del profesor y dejarte mi codigo muchisimo mas corto y de seguro mas accesible para tus conocimientos de principiante, es muy facil y con menos complicaciones ,espero ayudarte y creo que esta muy sencillo de entender...
program EliminarCaracter;
uses crt;
var
cad, cade, let: string;
i:integer;
BEGIN
clrscr;
write('Introduzca una cadena sin espacios: ');
readln(cad);
write('Introduzca la letra: ');
readln(let);
for i:=1 to length(cad) do
if(cad[i]<>let) then
write(cad[i]);
readln;
END.
Muchas gracias a todos por responder y ayudarme siempre con cada duda.. queria informarles que me presente en condicion libre a rendir introduccion a la programacion y aprobe asi que gracias a ustedes por ayudarme :)
Ahora bien si lo que necesitas es a traves de una funcion, te dejo mi respuesta, creo que te seguira siendo claro entender mi solucion adaptada a ti:
program EliminarCaracter;
uses crt;
var
cad, cade, let: string; {variables globales}
{funcion que regresa un string en este caso la cadena sin la letra}
function QuitarLetra(cad1:string; letra:string):string;
var i:integer;
cadsinlet:string; { varianles locales a la funcion}
begin
cadsinlet:=''; {inicializo mi cadena nueva a cadena vacia}
{recorro caracter a caracter la cadena original cad1 pasada como argumento a la funcion}
for i:=1 to length(cad1)do
if(cad1[i]<>letra)then {si el caracter en cuestion es diferente de la letra}
begin
cadsinlet:=cadsinlet + cad1[i]; {almaceno ese caracter en mi nueva cadena}
end;
QuitarLetra:= cadsinlet; {retorno al programa principal mi cadena nueva}
end;
BEGIN
clrscr;
write('Introduzca una cadena sin espacios: ');
readln(cad);
write('Introduzca la letra: ');
readln(let);
cade:= QuitarLetra(cad,let); {llamada a la funcion, pasando los parametros cad y let , leidos.}
writeln('la cadena eliminando el caracter ',let, ' es:');
write(cade);
readln;
END.
espero haberte podido ayudar, ya sabes al profe no le gusta mucho que se resuelvan ejercicios enteros, nos enseña a pescar y no a darnos el pescado de hoy...
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)