Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Luckim en 30 Julio 2012, 23:18 pm



Título: Problema con funciones desde menu
Publicado por: Luckim en 30 Julio 2012, 23:18 pm
Tengo q hacer un menu donde el item 1 sea la carga de datos y los demas las respuestas al resultado. El problema es que no me toma los valores correspondientes de los lotes. Aver si alguien me puede decir en que me equivoque.
El codigo copila bien pero a la hora de usar las respuestas tira cualquier cosa, más que nada en el punto 1 y en el punto 2 que es con cadena de caracteres.

Código:
#include<conio.h>
#include<stdio.h>
#include<iostream>


 void menu(int*);
 void carga(int, int , int , int , int , int , int , int , float [][40], float [][40], int , int , int , char []);
 void pto1(int);
 void pto2(char []);
 void pto3(float [], float [][40], float [][40]);
 void pto4(float []);
 
 int main()
 {
     //Datos registrados
    char s1[]="asd";
    char s2[]= "asd2";
 
 
    //Verificacion de datos
    char usuario[32];
    char contrasena[32];
 
    //Enteros
    int i,k,j,opcion,cont,f,c,e,np,nc,ll,ct,nr,x;
    float mll[10][40]={0},mct[10][40]={0},vp[10]={0};
    cont=0;
    char nom[32];
 
 
    //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)
            {
                system("cls");
                printf("\nDatos correctos\n");
                printf("\nBienvenido al programa del servicio penintenciario\n");
                printf("\n");
                printf("\n");
                menu(&opcion);
                while(opcion !=9)
                  {
                      switch(opcion)
                      {
                                    case 1 :
                                             carga(i,f,c,e,np,nc,ll,ct,mll,mct,nr,cont,x,nom);
                                             break;
                                             
                                    case 2 :
                                             pto1(cont);
                                             break;
                                             
                                    case 3 :
                                             pto2(nom);
                                             break;
                                             
                                    case 4 :
                                             pto3(vp, mll, mct);
                                             break;
                                   
                                    case 5 :
                                             pto4(vp);
                                             break;
                                            }
                                            getch();
                                            system("cls");
                      menu(&opcion);
                      }
                      return 0;
                      }

 
                getch();
 
 
            }
 
            if(j != 0)
            {
                printf("\ncontrasena incorrecta\n");
 
 
            }
        }
 
 
 
 
    }

     
                     
     void menu(int * a)
     {
          printf("1-Cargar datos\n");
          printf("2-Respuesta 1\n");
          printf("3-Respuesta 2\n");
          printf("4-Respuesta 3\n");
          printf("5-Respuesta 4\n");
          printf("9-Salir\n");
          printf("\nOpcion: ");
          scanf("%d",a);
     }
     
     void carga(int a, int b, int c, int d, int e, int f, int g, int h, float i[][40], float l[][40], int m, int n, int p, char z[])
     {
         
          for(a=1;a<=2;a++)
          {
                           for(b=1;b<=2;b++)
                           {
                                             printf("\nIngrese numero de piso: ");
                                             scanf("%d",&e);
                                             printf("\nIngrese numero de celda: ");
                                             scanf("%d",&f);
                                             printf("\nIngrese numero de lugares libres: ");
                                             scanf("%d",&g);
                                             printf("\nIngrese capacidad total: ");
                                             scanf("%d",&h);
                                             i[e][f]=g;
                                             l[e][f]=h;
                                             }
                                             }
                                             printf("\nIngrese numero de recluso: ");
                                             scanf("%d",&m);
                                             
                                             while(m!=0)
                                             {
                                                         printf("\nIngrese nombre del recluso: ");
                                                         scanf("%s",z);
                                                         p=0;
                                                         
                                                         for(c=1;c<=2;c++)
                                                         {
                                                                           for(d=1;d<=2;d++)
                                                                           {
                                                                                             if(i[c][d]>0 && p==0)
                                                                                             {
                                                                                                            p=1;
                                                                                                            i[c][d]=i[c][d]-1;
                                                                                                            }
                                                                           }
                                                         }
                                                         
                                                         if(p==0)
                                                         {
                                                            n=n+1;   
                                                            printf("\nRechazado\n");
                                                           
                                                         }
                                                         printf("\nIngrese numero de recluso ");
                                                         scanf("%d",&m);
                                                         p=0;
                                             }
                           
                                             
                                             
     }
     
     //Punto 1
     
     void pto1(int a)
     {
          printf("%d no pudieron se alojados por falta de lugar",a);
     }
     
     //Punto 2
     
     void pto2(char * a)
     {
          printf("Los rechazados son: \n%d\n",a);
     }
     
//Punto 3
 
void pto3(float d[10],float e[][40], float g[][40])
{
    int f;
    for(f=1; f<=10; f++)
    {
        int c;
        for(c=1; c<=40; c++)
        {
                     d[f]=(d[f]+(e[f][c]))-(g[f][c]);
       
            if(d[f] > 0)
            {
                printf("Para el piso %d, la celda %d tiene aun disponibilidad\n",f,c);
            }
        }
    }
}
 
//Punto 4
 
void pto4(float d[10])
{
   
    float Max=d[1];
    int aux=1;
 
    int i;
    for(i=1; i<=10; i++)
    {
        if(d[i] > Max)
        {
            Max=d[i];
            aux=i;
        }
    }
 
 
    for(i=aux; i<=aux; i++)
    {
        if(d[i]==Max)
        {
            printf("El piso mas lleno es el piso %d\n",i);
        }
    }
}