SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: gdan_m en Jueves 8 de Diciembre de 2005, 02:28
-
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");
}
-
Bueno en primer lugar no inicializas los punteros.
Al poner
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++
donde ahora q apunta a una zona de memoria donde se almacena la estructura.
Ahora se puede acceder a los miembros del puntero
Cuando ya no sea necesaria esta memoria se puede liberar utilzando
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.