AYUDA EN STRUCT

Oliver
13 de Octubre del 2009
hola a todos, de antemano gracias por la ayuda que me puedan brindar, estuve haciendo un programa con struct pero el problema se me genera al intentar imprimir los datos, el programa es sencillo el unico problema que siempre tengo es al imprimir, como veran uso el fflush(stadin) pero al no usarlo el problema es el mismo. Si alguien me puede ayudar le agradecería mucho, uso el Dev c++ y sist operat windows vista. El código es el siguienteÑ
//Programa donde ingresas cierta cantidad de alumnos y realizas una busqueda con el codigo de alumno
// y retorna los datos de dicho alumno, ademas buscas un nombre o codigo que deseas eliminar

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

using namespace std;

struct TelefonosAlumno{
char casa[30];
char celular[30];
};

struct Datos{
char nombre[30];
char apellidos[30];
char direccion[150];
char codigo[50];
TelefonosAlumno telefonos;
short int edad;
}p[100];

void IngresaDatos(Datos p[100],int n);
void ImprimeDatos(Datos p[100],int n);


int main()
{ int i,n;

cout<<"Ingrese la cantidad de alumnos que desea ingresar: "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"tINGRESO DE DATOS DEL "<<i<<" ALUMNO"<<endl;
IngresaDatos(p,n);
cout<<endl;
ImprimeDatos(p,n);
cout<<endl;
}

system("PAUSE");
return 0;
}

void IngresaDatos(Datos p[100],int n)
{ Datos x;
fflush(stdin);
cout<<"Ingrese nombre del alumno: "; gets(x.nombre); fflush(stdin);
cout<<"Ingrese sus apellidos: "; gets(x.apellidos); fflush(stdin);
cout<<"Ingrese direccion: "; gets(x.direccion); fflush(stdin);
cout<<"Ingrese codigo: "; gets(x.codigo); fflush(stdin);
cout<<"Ingrese edad del alumno: "; cin>>x.edad; fflush(stdin);
cout<<"Ingrese telefono de casa: "; gets(x.telefonos.casa); fflush(stdin);
cout<<"Ingrese telefono de celular: "; gets(x.telefonos.celular); fflush(stdin);

}

void ImprimeDatos(Datos p[100],int n)
{ Datos x;
fflush(stdin);
cout<<"Nombre del alumno: "; cout<<x.nombre<<endl; fflush(stdin);
cout<<"Apellidos: "; cout<<x.apellidos<<endl; fflush(stdin);
cout<<"Direccion: "; cout<<x.direccion<<endl; fflush(stdin);
cout<<"Codigo: "; cout<<x.codigo<<endl; fflush(stdin);
cout<<"Edad del alumno: "; cout<<x.edad<<endl; fflush(stdin);
cout<<"Telefono de casa: "; cout<<x.telefonos.casa<<endl; fflush(stdin);
cout<<"Telefono de celular: "; cout<<x.telefonos.celular<<endl;
fflush(stdin);
}

y si les compilo bien a alguien de ustedes por favor me avisan, no se si hay algún problema de incompatibilidad con el vista o mas teoría que necesito saber.
Oliver

hacker
13 de Octubre del 2009
mira lo unico q tienes q hacer es cambiar la x por tu variable p q es tu arreglo, ya que en este tu almacenaras un max de 100 alumnosy elimina tu variable x y de preferencia tambien tus parametros de tu funcion ya que son inutiles solo deja tu variable n q aun asi lo podias hacer mas facil te complicas la vida
good luck

Oliver
13 de Octubre del 2009
Hola hacker, el problema es que cuando realizo con el mismo p que uso como parametro, el error es el mismo :S asi lo declare con el mismo nombre de la funcion me sale el mismo error, como digo el problema es solo al imprimir no al compilar, lo curioso es que el numero de celular es lo unico que imprime bien :S...gracias igual por tu respuesta, pero si lo compilaste y te salio agradeceria me lo digas, no se por q pienso que es un problema en win vista al limpiar el bufer =/