Ayuda ejercicio

Iniciado por Luckim, 16 Julio 2012, 23:06 PM

0 Miembros y 2 Visitantes están viendo este tema.

Luckim

Tengo que hacer un ejercicio, lo hize pero me tira error en algo que no tengo ni la más idea como es. Dejo el codigo aver si alguno me entiende y me lo corrije.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void menu1 (int);
void idatos (int);
void menu2(int);
void pto1(int);
void pto2(char);
void pto3(int);
void pto4(int);


int main ()
{
   
    //Datos registrados
    char s1[]="asd";
    char s2[]= "asd2";
   
    //Verificacion de datos
    char usuario[32];
    char contrasena[32];
   
    //Enteros
    int i,k,j,menu;

   
    //Comienzo para los intentos de contraseña, maximo 3
    for(i=1;i<=3;i++)
    {
                           
                            printf("\nIngrese usuario: ");
                            scanf("%s",&usuario);                           
                            k = strcmp( s1, usuario );
                           
                           
                            if (k != 0)
                             {
                                 printf("\nUsuario incorrecto\n");
                                 
                             
                             }
                           
                           
                            if(k == 0)
                            {     
                                                printf("\nIngrese contrasena: ");
                                                scanf("%s",&contrasena);
                                                j = strcmp( s2, contrasena);
                                               
                                                if (j == 0)
                                                {
                                                                           
                                                                           printf("\nDatos correctos\n");
                                                                           printf("\nBienvenido al programa del servicio penintenciario\n");
                                                                           printf("\n");
                                                                           printf("\n");
                                                                           menu1(menu);
                                                                           
                                                                           
                                                                           //Comienzo de Switch Menu
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           getch();
                                                                                       
                                               
                                                }
                                               
                                                if(j != 0)
                                                {
                                                    printf("\ncontrasena incorrecta\n");
                                                   
                                               
                                                }
                            }
   
   
   
 
}
}

void menu1(int a)
{
     
                                                                           printf("*********Menu**********\n");
                                                                           printf("\n1-Cargar datos\n2-Resultado punto A\n3-Resultado punto B\n4-Resultado punto C\n5-Resultado punto D\n6-Salir del sistema\n");
                                                                           printf("\nPor favor elija una opcion: ");
                                                                           scanf("%d",&a);
                                                                           
                                                                           while (a!=1)
                                                                           {
                                                                                printf("Elija otra opcion");
                                                                                scanf("%d",&a);
                                                                           }     
                                                                           
                                                                           switch (a)
                                                                           {
                                                                                 
                                                                                 
                                                                                  case 1:printf("Por favor ingrese los datos\n");
                                                                                  int b;
                                                                                  idatos(b);
                                                                                  break;
                                                                                 
                                                                                  case 2:printf("Opcion no disponible sin la carga de datos");
                                                                                  break;
                                                                                 
                                                                                  case 3:printf("Opcion no disponible sin la carga de datos");
                                                                                  break;
                                                                           
                                                                                  case 4:printf("Opcion no disponible sin la carga de datos");
                                                                                  break;
                                                                                 
                                                                                  case 5:printf("Opcion no disponible sin la carga de datos");
                                                                                  break;
   
                                                                                  case 6:getch();
                                                                                  break;
                                                                           
                                                                           }
                                                                           }

void idatos(int a)
{
     int i;
     for(i=1;i<=10;i++)
     {
                       int j;
                       for(j=1;j<=40;j++)
                       {
                                         int nr,np,nc,ll,cp,c,cont;
                                         nr=np=nc=ll=cp=cont=0;
                                         int Mll[10][40]={0};
                                         int Mct[10][40]={0};
                                         int VP[10];
                                         printf("Ingrese numero de recluso");
                                         scanf("%d",&nr);
                                         printf("Ingrese numero de piso\n");
                                         scanf("%d",&np);
                                         printf("Ingrese numero de celda\n");
                                         scanf("%d",&nc);
                                         printf("Ingrese numero de lugares libres\n");
                                         scanf("%d",&ll);
                                         printf("Ingrese numero de capacidad total\n");
                                         scanf("%d",&cp);
                                         
                                         while(nr!=0)
                                         {
                                             char appnom[32];
     printf("Ingrese nombre y apellido");
     gets(appnom);
     int x,f,c;
     x=0;
     for(f=1;f<=10;f++)
     {
                       for(c=1;c<=40;c++)
                       {
                                          if(Mll[f][c] > 0 && x==0)
                                          {
                                                       x=1;
                                                       Mll[f][c]=Mll[f][c]-1;
                                          }
                                         
                       }
                       if(x==0)
                       {
                              cont=cont+1;
                                 
                       }
}

}

printf("*********Menu**********\n");
printf("\n1-Resultado punto A\n3-Resultado punto B\n4-Resultado punto C\n5-Resultado punto D\n6-Salir del sistema\n");
printf("\nPor favor elija una opcion: ");
scanf("%d",&a);   
                                                                           
                                                                           switch (a)
                                                                           {
                                                                           
                                                                                 
                                                                                  case 1:pto1(cont);
                                                                                  break;
                                                                                 
                                                                                  case 2:pto2(appnom);
                                                                                  break;
                                                                           
                                                                                  case 3:pto3(Mll[10][40]);
                                                                                  break;
                                                                                 
                                                                                  case 4:pto4(VP[10]);
                                                                                  break;
   
                                                                                  case 5:getch();
                                                                                  break;
                                                                           
                                                                           
                                                                           }
                                                                           printf("\nPor favor elija una opcion: ");
                                                                           scanf("%d",&a);
                                                                           }
     

}

}

}








void pto1(int cont)
{
     printf("%d no pudieron ser alojados por falta de lugar",cont);
}

void pto2(int appnom)
{
     printf("Los rechazados son:\n%c\n",appnom);
}

void pto3(int a)
{
     for(a=1;a<=10;a++)
     {
                      int c;
                      for(c=1;c<=40;c++)
                      {
                                        if(Mll[f][c] > 0)
                                        {
                                                     printf("Para el piso %d, la celda %d tiene aun disponibilidad",a,c);
                                                     }
                                                     }
                                                     }
                     
}
 
void pto4(int a)
{
      for(a=1;a<=10;a++)
      {
                        int c;
                        for(c=1;c<=40;c++)
                        {
                                          VP[a]=VP[a]+Mct[a][c]-Mll[a][c];
                                          }
                                          }
Max=VP[a];
aux=a;

int i;
for(i=1;i<=10;i++)
{
                  if(VP[a] > Max)
                  {
                           Max=VP[i];
                           aux=i;
                           }
                           }
                           
                           for(i=aux;i<=aux;i++)
                           {
                                                if(VP[i]==Max)
                                                {
                                                              printf("El piso mas lleno es el piso %d",i)
                                                              }
                                                              }
                                                              }
                                                             
}


DickGumshoe

¡Hola!

Por favor, ¿podrías poner en qué parte exactamente te da el error?

Saludos!

Luckim

En la parte de pto2(appnom).

DickGumshoe

Cita de: Luckim en 16 Julio 2012, 23:18 PM
En la parte de pto2(appnom).

Eso es porque appnom no ha sido declarado como variable en la función en la que lo estás usando, y por tanto no puedes trabajar con ella.

Saludos!

Luckim

Pero la declare más arriba, es que es la primera vez que uso un menu y me cago todo lo demas eso. Mas arriba esta declarada por eso no se cual es el error.

DickGumshoe

C no admite declaraciones en mitad del código; deben estar al inicio de cada función. Es por eso que hace como si no estuviera declarada la variable. La función debería empezar así:

void idatos(int a)
{
      char appnom[32];
     int i;
      int j;
     for(i=1;i<=10;i++)
     {
                     
                       for(j=1;j<=40;j++)
                       {
//Resto de la función


Saludos!

Luckim

Esta bien pero yo tengo que mostrar un nombre que ya ingrese antes, ademas el error del que yo te hablo lo tengo en el menu, en el case 2.

DickGumshoe

#7
Pero puedes declarar la variable al principio y pedirla donde la tengas que pedir.

Si declaras la variable al principio, ya después con ella puedes hacer lo que quieras. Para corregir tu error lo único que tienes que hacer es quitar la declaración de la mitad del código y ponerla al inicio de la función, con eso ya no te dará el error.

Saludos!

Luckim

La declare donde me dijistes que lo haga pero me sigue tirando error en el mismo lugar, acá:

switch (a)
                                                                           {
                                                                           
                                                                                 
                                                                                  case 1:pto1(cont);
                                                                                  break;
                                                                                 
                                                                                  case 2:pto2(appnom);
                                                                                  break;
                                                                           
                                                                                  case 3:pto3(Mll[10][40]);
                                                                                  break;
                                                                                 
                                                                                  case 4:pto4(VP[10]);
                                                                                  break;
   
                                                                                  case 5:getch();
                                                                                  break;

DickGumshoe

¿Poniendo esto?

void idatos(int a)
{
      char appnom[32];
     int i;
      int j;
     for(i=1;i<=10;i++)
     {
                     
                       for(j=1;j<=40;j++)
                       {
                                         int nr,np,nc,ll,cp,c,cont;
                                         nr=np=nc=ll=cp=cont=0;
                                         int Mll[10][40]={0};
                                         int Mct[10][40]={0};
                                         int VP[10];
                                         printf("Ingrese numero de recluso");
                                         scanf("%d",&nr);
                                         printf("Ingrese numero de piso\n");
                                         scanf("%d",&np);
                                         printf("Ingrese numero de celda\n");
                                         scanf("%d",&nc);
                                         printf("Ingrese numero de lugares libres\n");
                                         scanf("%d",&ll);
                                         printf("Ingrese numero de capacidad total\n");
                                         scanf("%d",&cp);

                                         while(nr!=0)
                                         {
                                             char appnom[32];
     printf("Ingrese nombre y apellido");
     gets(appnom);
     int x,f,c;
     x=0;
     for(f=1;f<=10;f++)
     {
                       for(c=1;c<=40;c++)
                       {
                                          if(Mll[f][c] > 0 && x==0)
                                          {
                                                       x=1;
                                                       Mll[f][c]=Mll[f][c]-1;
                                          }

                       }
                       if(x==0)
                       {
                              cont=cont+1;

                       }
}

}

printf("*********Menu**********\n");
printf("\n1-Resultado punto A\n3-Resultado punto B\n4-Resultado punto C\n5-Resultado punto D\n6-Salir del sistema\n");
printf("\nPor favor elija una opcion: ");
scanf("%d",&a);

                                                                           switch (a)
                                                                           {


                                                                                  case 1:pto1(cont);
                                                                                  break;

                                                                                  case 2:pto2(appnom);
                                                                                  break;

                                                                                  case 3:pto3(Mll[10][40]);
                                                                                  break;

                                                                                  case 4:pto4(VP[10]);
                                                                                  break;

                                                                                  case 5:getch();
                                                                                  break;


                                                                           }
                                                                           printf("\nPor favor elija una opcion: ");
                                                                           scanf("%d",&a);
                                                                           }


}

}

}


A mí así deja de darme ese error.

Saludos!