/*Ejercicios
Implementar una función que recibe una lista de enteros L y un número entero n de forma que modifique la lista mediante
el borrado de todos los elementos de la lista que tengan este valor: Ejemplo: sea N={1,2,4,5,6,2,7,2}
y el número a buscar sea 2, entonces la lista quedará así; N={1,4,5,6,7}*/
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string>
using namespace std;
int lista[8];
int auxiliar[8],x,y;
void llenar(),listar(),buscar();
int tope;
int pos, val,opc,b,v,valor,num,i;
int main ()
{
int opcion;
while(1){
//system("CLS");// LImpiar pantalla
cout<<endl<<"1. ingresar numero"<<endl;
cout<<endl<<"2. listar numero"<<endl;
cout<<endl<<"3. buscar"<<endl;
cout<<endl<<"4. salir"<<endl;
cout<<endl<<endl<<"INGRESE LA OPCION: ";
cin>>opcion;
cout<<endl<<endl;
switch(opcion){
case 1: llenar();
break;
case 2: listar();
break;
case 3: buscar();
break;
case 4: exit(0);
break;
default: cout<<"Opcion no valida";
break;
}
}
}
void llenar() {
if(tope+1>8){
cout<<"La pila esta llena";
cout<<endl;
getch ();
}
else{
for (int i=0;i<8;i++) {
cout<<" Digite el numero: ";
cin>>num;
cout<<endl;
lista[i]=num;
tope++;
}
}
}
void listar() {
for(int t=0;t<tope;t++) {
cout<<endl<<"La posicion ["<<t<<"] contiene: "<<lista[t]<<endl;
}
}
void buscar(){
cout<<" El numero a buscar: ";
cin>>val;
cout<<endl;
b=0;
for (int s=0;s<8;s++) {
if (lista[s]==val) {
b=1;
v=s;
valor=lista[s];
}//fin if
}//fin for
if (b==1)
{
cout<<"El numero ha sido encontrado "<<endl<<endl<<endl;
cout<<" en la posicion: "<<v<<" "<<endl<<endl;
cout<<" Con el valor: "<<valor<<" "<<endl<<endl;
cout<<" Para retirar marque 1 "<<endl;
cout<<" Seleccione la Opcion: ";
cin>>opc;
cout<<endl<<endl;
if (opc==1){
for (int z=0;z<tope;z++) {
for (x=0;x<=tope-valor;x++) {
auxiliar[x]=lista[tope];
tope--;
y++;
}//fin for
}//fin for
tope=valor-1;
for (int j=0;j<y;j++) {
lista[tope]=auxiliar[j];
tope++;
y--;
}//fin for
}//fin if
else {
if (b!=1) {
cout<<" El numero No ha sido encontrado "<<endl<<endl;
getch ();
exit (0);
}//fin if
}//fin else
}//fin
}
Al realizar la busqueda del numero a eliminar o sustituir lo hace bien el problema es en el momento de eliminarlo, tengo probles al pasar los datos a la lista auxiliar, cualquier ayuda se los agradeceria.
utiliza etiquetas Geshi.
buenas a todos, les pido colaboracion con este programa que para muchos puede ser sencillo pero para mi q apenas empiezo se me hace un poco dificil a la hora de recorrer las lista, detectar si el valor ingrasado esta repetido y retirarlos, de antemano les agradezco por la ayuda que me puedan brindar.
Soy nuevo en C, pero hice algo que puede suplir tus necesidades. Por ejemplo,
main,
int main(int argc, char *argv[]){
int sArray[] = {3,2,3,4,3};
eliminar(sArray, 3);
return 0;
}
eliminar, puede que exista la manera de ver, cual es la longitud que tiene el vector, además, de que se pueda eliminar los elementos del vector, sin usar uno nuevo.
int eliminar(int pArray[], int pEliminar){
int i = 0;
int sContador = 0;
for(i=0;i<5;i++){
if(pArray[i] == pEliminar){
sContador++;
}
}
int sNewArray[sContador];
sContador = 0;
for(i=0;i<5;i++){
if(pArray[i] != 0){
sNewArray[sContador] = pArray[i];
sContador++;
}
}
for(i=0;i<3;i++){
printf("%d\n", sNewArray[i]);
}
return 0;
}
Algo es algo. :p
#include <iostream>
using namespace std;
int eliminar(int [], int &, int);
int main()
{
int miTAM = 9;
int lista [9] = {1,2,1,1,3,5,1,4,1};
eliminar(lista, miTAM, 1);
for(int i = 0; i < miTAM; i++)
{
cout<<lista[i]<<" | ";
}
return 0;
}
int eliminar(int l[], int &TAM, int bus)
{
int i = 0;
while(i < TAM)
{
if(l[i] == bus)
{
for(int j = i; j < TAM - 1; j++)
l[j] = l[j + 1];
TAM--;
}
else
i++;
}
return 0;
}
Muchas gracias por la ayuda el problema es que el programa me debe pedir el ingreso de los valores enteros de la lista, para ingresarlos uno por uno, tener la opcion de listar, una busqueda como trate de implementarlo en el programa y luego de la opcion de eliminar el numero que ya hemos buscado anteriormente y que sabemos que esta en la lista, su ayuda me es muy valiosa, pero si me pueden ayudar a que cumpla con estas caracteristicas.
Cita de: MrC4RL4NG4S en 4 Octubre 2010, 04:32 AM
No que pena si les ocasione alguna molestia es solo que llevo muchas horas embotellado en este problema.
ya te dieron la funcion para eliminar el valor (lo mas dificil del problema), hace otra funcion para imprimirlos en pantalla y organiza ambas funciones dentro de un switch
no deberia complicarte mucho =/, agarra los libros sino
El problema es demasiado sencillo.
Deberías por lo menos ponerte a analizar el código... En mi función tienes la búsqueda lineal, y la eliminación que consiste en superposición o corrimiento de elementos... Falta la muestra...
Como te dijeron si es que te falta la búsqueda y muestra, no es la gran cosa, en los problemas para principiantes lo lioso es la eliminación que ya la tienes resuelta.