Problema Con Codigo En C

Iniciado por Jlrr, 2 Febrero 2012, 22:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Jlrr

Estoy realizando un codigo en lenguaje C con DEV C++ 4.9.9.2,cuando compilo el programa arranca y funciona segun lo planeado(hasta ahora porque aun no lo he terminado)pero abajo me aparece que tiene un error(la razon por la cual no he podido terminarlo) no se como  arreglar el codigo para que no aparezca el mensaje de error podria alguien decirme porque aparece el error o como solucionar el problema con el codigo.


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

struct Acciones
{
char Lectura[5];
char Viajes[5];
char Deportes[5];
char Cine[5];
char Gastronomia[5];
char Ordenadores[5];
char JuegosDeRol[5];
char Modelismo[5];
char Perros[5];
};
struct Datos
{
char Nombre[25];
int Edad;
char Sexo[2];
struct Acciones A[100];
};
void llenar_informacion(struct Datos P[100],int m);
int main(int argc, char *argv[])
{
  int m,i,j;
  struct Datos P[100];
  printf("ingrese el n\xA3mero de clientes: ");
  scanf("%d",&m);
  llenar_informacion(P,m);
  system("PAUSE");
  return 0;
}
void llenar_informacion(struct Datos P[100],int m)
{
  int i,j;
   for(i=0;i<m;i++)
   {
    fflush(stdin);
    printf("ingrese el nombre del cliente #%d: ",i+1);
    gets(P[i].Nombre);
    printf("ingrese la edad del cliente #%d: ",i+1);
    scanf("%d",&P[i].Edad);
    fflush(stdin);
    printf("ingrese el sexo del cliente(m o f) #%d: ",i+1);
    gets(P[i].Sexo);
    printf("\n");
   }
   for(j=0;j<m;j++)
   {
    printf("rellene con si o no las acciones del cliente #%d\n",j+1);
    printf("Lectura: ");   
    gets(P[i].A[j].Lectura);
    printf("Viajes: "); 
    gets(P[i].A[j].Viajes);
    printf("Deportes: "); 
    gets(P[i].A[j].Deportes);
    printf("Cine: "); 
    gets(P[i].A[j].Cine);
    printf("Gastronomia: "); 
    gets(P[i].A[j].Gastronomia);
    printf("Ordenadores: "); 
    gets(P[i].A[j].Ordenadores);
    printf("JuegosDeRol: "); 
    gets(P[i].A[j].JuegosDeRol);
    printf("Modelismo: "); 
    gets(P[i].A[j].Modelismo);
    printf("Perros: "); 
    gets(P[i].A[j].Perros);
    printf("\n");
   }
   printf("\n");
}


Ahora ya sale sin errores.

Ferno

Antes que nada, todo el código que postees ponlo dentro de las etiquetas GeSHi.
Ahora... ¿Cuál es exactamente el error que te salta?

eleon

#2
Citar...
void llenar_informacion(int V[],int m);
int main(int argc, char *argv[])
{
 int m,i,j;
 struct Datos P[100];
 printf("ingrese el n\xA3mero de clientes: ");
 scanf("%d",&m);
 llenar_informacion(P,m);
 system("PAUSE");  
 return 0;
}
...

La función "llenar_informacion" tiene como primer argumento una tabla de enteros llamada "V", sin embargo al llamarla en el cuerpo del programa le estás pasando la variable "P" que es una estructura de tipo "datos". No se puede hacer esa clase de cambio de tipo...

Código (cpp) [Seleccionar]
...
for(i=0;i<m;i++)
 {
  for(i=0;i<m;i++)
  {

...


Eso no es correcto, si vas a poner bucles anidados cada bucle debe tener una variable de control distinta.

Esos son los errores que he visto pero además el uso de gets no es aconsejable porque no tiene en cuenta la cantidad de caracteres que le introduces.

Prueba a modificar esas cosas y comentas, saludos.

Jlrr

Gracias eleon por responder y tan rapido ya cambie algunas cosas del codigo que notaste y ahora ya funciona sin que salga un error .