• Viernes 15 de Noviembre de 2024, 09:22

Autor Tema:  Programa  (Leído 1210 veces)

gdan_m

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Programa
« en: Jueves 8 de Diciembre de 2005, 02:28 »
0
Hola ja todavia no me quedan muy claros los apuntadores, y estoy estudiando para un examen, estoy intentando hacer un programa que insertes un numero, y lo aumente de 3 en 3, y despues me diga cuales son pares e impares. Lo hice sin apuntadores y si me salio. pero al querer ponerle apuntadores se cierra el .exe y no corre.. me prodrian ayudar?


 #include <iostream.h>
 #include <stdlib.h>

 struct elemento
 {int num;
 struct elemento *apunta;
 };
        struct elemento *p,*q,*inicio, *sig;
   
 void par()
        {
               q=NULL;
     
     
     
      cout<<"Dame un numero: "<<"\n";
     while(q->num<100);
      {
                    cin>>q->num;
      q->apunta=NULL;  
                   q->num+=3;
                   cout<<q->num<<": ";
                   p=q; inicio=q;
                   if(q->num%2==0)
      {
                  cout<<"El numero es par\n";
                  }
                  else
                  {
                  cout<<"El numero es impar\n";
                  }
               
                   }
                   
         }
         void despar()
         {
          }
          void desimp()
          {
           }
         
int main()
 {
          char resp='s';  int opc;
          while(resp=='s')
          {cout<<"Numeros pares e impares"<<"\n";
          cout<<"1. Inserta numeros"<<"\n";
          cout<<"2. Despliega pares"<<"\n";
          cout<<"3. Despliega impares"<<"\n";
          cout<<"...Salir..."<<"\n";
          cin>>opc;
          switch(opc)
          {case 1:{par(); break;}
          case 2:{despar();break;}
          case3:{desimp();break;}
          case 4: resp='n';
          }
          }
          system("pause");
          }

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Programa
« Respuesta #1 en: Miércoles 14 de Diciembre de 2005, 18:29 »
0
Bueno en primer lugar no inicializas los punteros.
Al poner
Código: Text
  1.  q=NULL
  2.  
estas indicando que el puntero apunta a la dirección 0, que esta prohibida. Por eso termina el programa, se produce una excepción.

Un puntero es un apuntador a una zona de memoria "reservada" (no es asi realmente, pero eso es otro asunto). Entonces lo primero que debemos hacer es reservar una zona de memoria. por ejemplo en C++
Código: Text
  1. q=new elemento;
  2.  
donde ahora q apunta a una zona de memoria donde se almacena la estructura.

Ahora se puede acceder a los miembros del puntero
Código: Text
  1. q-&#62;num = 24
  2.  

Cuando ya no sea necesaria esta memoria se puede liberar utilzando
Código: Text
  1. delete q
  2.  

En cuanto al bucle, no veo muy claro lo que pretendes hacer, parece una lista enlazada, pero eso de sumar 3, no se. Si se pudiera especificar más, mejor.

Hasta luego.