elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  alguien me puede ayudar con este codigo porfavor.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: alguien me puede ayudar con este codigo porfavor.  (Leído 6,290 veces)
MrC4RL4NG4S

Desconectado Desconectado

Mensajes: 13


Ver Perfil
alguien me puede ayudar con este codigo porfavor.
« en: 3 Octubre 2010, 05:16 am »

/*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}*/

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <string>
  6. using namespace std;
  7.  
  8. int lista[8];
  9. int auxiliar[8],x,y;
  10. void llenar(),listar(),buscar();
  11. int tope;
  12. int pos, val,opc,b,v,valor,num,i;
  13.  
  14.  
  15. int main ()
  16. {
  17.  
  18. int opcion;
  19. while(1){
  20. //system("CLS");// LImpiar pantalla
  21.  cout<<endl<<"1. ingresar numero"<<endl;
  22.  cout<<endl<<"2. listar numero"<<endl;
  23.  cout<<endl<<"3. buscar"<<endl;
  24.  cout<<endl<<"4. salir"<<endl;
  25.  cout<<endl<<endl<<"INGRESE LA OPCION: ";
  26.  cin>>opcion;
  27.  cout<<endl<<endl;
  28.  
  29.  switch(opcion){
  30.   case 1:  llenar();
  31.   break;
  32.  
  33.   case 2: listar();
  34.   break;
  35.  
  36.  
  37.   case 3: buscar();
  38.   break;
  39.  
  40.   case 4: exit(0);
  41.   break;
  42.  
  43.   default: cout<<"Opcion no valida";
  44.   break;
  45.   }
  46.   }
  47.   }
  48.  
  49.  
  50. void llenar()  {
  51.          if(tope+1>8){
  52.  cout<<"La pila esta llena";
  53.  cout<<endl;
  54.  getch ();
  55.  }
  56.    else{
  57.    for (int i=0;i<8;i++)  {
  58.      cout<<" Digite el numero: ";
  59.      cin>>num;
  60.      cout<<endl;
  61.      lista[i]=num;
  62.      tope++;
  63.    }
  64.    }
  65. }      
  66.  
  67.  
  68. void listar()  {
  69.   for(int t=0;t<tope;t++)  {
  70.   cout<<endl<<"La posicion ["<<t<<"] contiene: "<<lista[t]<<endl;
  71. }
  72. }
  73.  
  74.  
  75.  void buscar(){
  76.     cout<<" El numero  a buscar:  ";
  77.     cin>>val;
  78.     cout<<endl;
  79.     b=0;
  80.        for (int s=0;s<8;s++) {
  81.  
  82.          if (lista[s]==val) {
  83.             b=1;
  84.             v=s;
  85.             valor=lista[s];
  86.             }//fin if
  87.             }//fin for
  88.  
  89.      if (b==1)
  90.      {
  91.         cout<<"El numero ha sido encontrado "<<endl<<endl<<endl;
  92.         cout<<"       en la posicion:          "<<v<<" "<<endl<<endl;
  93.         cout<<"       Con el valor:            "<<valor<<" "<<endl<<endl;  
  94.         cout<<" Para retirar marque 1 "<<endl;
  95.         cout<<" Seleccione la Opcion:  ";
  96.         cin>>opc;
  97.         cout<<endl<<endl;
  98.  
  99.              if (opc==1){
  100.              for (int z=0;z<tope;z++) {
  101.              for (x=0;x<=tope-valor;x++) {
  102.                auxiliar[x]=lista[tope];
  103.                tope--;                  
  104.                y++;                    
  105.               }//fin for
  106.                }//fin for
  107.                tope=valor-1;
  108.                  for (int j=0;j<y;j++) {
  109.                    lista[tope]=auxiliar[j];  
  110.                    tope++;  
  111.                    y--;
  112.                    }//fin for
  113.                    }//fin if
  114.  
  115.                          else {
  116.                            if (b!=1) {
  117.                            cout<<"             El numero No ha sido encontrado "<<endl<<endl;
  118.                            getch ();
  119.                            exit (0);
  120.                            }//fin if
  121.                            }//fin else
  122.                            }//fin
  123.                            }

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.


« Última modificación: 3 Octubre 2010, 18:49 pm por Littlehorse » En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #1 en: 3 Octubre 2010, 07:42 am »

utiliza etiquetas Geshi.


En línea

MrC4RL4NG4S

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #2 en: 4 Octubre 2010, 01:40 am »

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.
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #3 en: 4 Octubre 2010, 03:01 am »

Soy nuevo en C, pero hice algo que puede suplir tus necesidades. Por ejemplo,
main,
Código
  1. int main(int argc, char *argv[]){
  2.    int sArray[] = {3,2,3,4,3};
  3.    eliminar(sArray, 3);
  4.  
  5.    return 0;
  6. }

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.
Código
  1. int eliminar(int pArray[], int pEliminar){
  2.    int    i            = 0;
  3.    int    sContador    = 0;
  4.  
  5.    for(i=0;i<5;i++){
  6.        if(pArray[i] == pEliminar){
  7.            sContador++;
  8.        }
  9.    }
  10.  
  11.    int sNewArray[sContador];
  12.    sContador = 0;
  13.  
  14.    for(i=0;i<5;i++){
  15.        if(pArray[i] != 0){
  16.            sNewArray[sContador] = pArray[i];
  17.            sContador++;
  18.        }
  19.    }
  20.  
  21.    for(i=0;i<3;i++){
  22.        printf("%d\n", sNewArray[i]);
  23.    }
  24.  
  25.    return 0;
  26. }
Algo es algo. :p
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #4 en: 4 Octubre 2010, 03:22 am »

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int eliminar(int [], int &, int);
  6.  
  7. int main()
  8. {
  9.    int miTAM = 9;
  10.    int lista [9] = {1,2,1,1,3,5,1,4,1};
  11.    eliminar(lista, miTAM, 1);
  12.    for(int i = 0; i < miTAM; i++)
  13.    {
  14.        cout<<lista[i]<<" | ";
  15.    }
  16.    return 0;
  17. }
  18.  
  19. int eliminar(int l[], int &TAM, int bus)
  20. {
  21.    int i = 0;
  22.    while(i < TAM)
  23.    {
  24.        if(l[i] == bus)
  25.        {
  26.            for(int j = i; j < TAM - 1; j++)
  27.                l[j] = l[j + 1];
  28.            TAM--;
  29.        }
  30.        else
  31.            i++;
  32.  
  33.    }
  34.    return 0;
  35. }
En línea

MrC4RL4NG4S

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #5 en: 4 Octubre 2010, 04:22 am »

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.
En línea

Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #6 en: 4 Octubre 2010, 04:38 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
En línea

cbug

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: alguien me puede ayudar con este codigo porfavor.
« Respuesta #7 en: 4 Octubre 2010, 11:35 am »

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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines