[ Foro de Pascal ]

modificar arreglo

18-Feb-2014 20:12
Carolina Sanchez
7 Respuestas

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).


18-Feb-2014 23:50
Nacho Cabanes (+31)

Para borrar parte de un string puedes usar "delete":

http://www.aprendeaprogramar.com//referencia/view.php?f=delete&leng=Pascal


19-Feb-2014 00:02
Luis Torres (+12)

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.
 

19-Feb-2014 11:32
Invitado (anonym)

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.


20-Feb-2014 01:59
Luis Torres (+12)

Lo hice para obligar la entrada al ciclo while.


20-Feb-2014 16:18
oscar gomez

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.
 


 


20-Feb-2014 16:30
Carolina Sanchez

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 :)


20-Feb-2014 16:37
oscar gomez

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.)