Foro de elhacker.net

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



Título: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:06 pm
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.

Código:
#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)
                                                              }
                                                              }
                                                              }
                                                             
}



Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:09 pm
¡Hola!

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

Saludos!


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:18 pm
En la parte de pto2(appnom).


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:20 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!


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:26 pm
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.


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:30 pm
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í:

Código
  1. void idatos(int a)
  2. {
  3.      char appnom[32];
  4.     int i;
  5.      int j;
  6.     for(i=1;i<=10;i++)
  7.     {
  8.  
  9.                       for(j=1;j<=40;j++)
  10.                       {
  11. //Resto de la función

Saludos!


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:31 pm
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.


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:34 pm
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!


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:43 pm
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;


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:44 pm
¿Poniendo esto?

Código
  1. void idatos(int a)
  2. {
  3.      char appnom[32];
  4.     int i;
  5.      int j;
  6.     for(i=1;i<=10;i++)
  7.     {
  8.  
  9.                       for(j=1;j<=40;j++)
  10.                       {
  11.                                         int nr,np,nc,ll,cp,c,cont;
  12.                                         nr=np=nc=ll=cp=cont=0;
  13.                                         int Mll[10][40]={0};
  14.                                         int Mct[10][40]={0};
  15.                                         int VP[10];
  16.                                         printf("Ingrese numero de recluso");
  17.                                         scanf("%d",&nr);
  18.                                         printf("Ingrese numero de piso\n");
  19.                                         scanf("%d",&np);
  20.                                         printf("Ingrese numero de celda\n");
  21.                                         scanf("%d",&nc);
  22.                                         printf("Ingrese numero de lugares libres\n");
  23.                                         scanf("%d",&ll);
  24.                                         printf("Ingrese numero de capacidad total\n");
  25.                                         scanf("%d",&cp);
  26.  
  27.                                         while(nr!=0)
  28.                                         {
  29.                                             char appnom[32];
  30.     printf("Ingrese nombre y apellido");
  31.     gets(appnom);
  32.     int x,f,c;
  33.     x=0;
  34.     for(f=1;f<=10;f++)
  35.     {
  36.                       for(c=1;c<=40;c++)
  37.                       {
  38.                                          if(Mll[f][c] > 0 && x==0)
  39.                                          {
  40.                                                       x=1;
  41.                                                       Mll[f][c]=Mll[f][c]-1;
  42.                                          }
  43.  
  44.                       }
  45.                       if(x==0)
  46.                       {
  47.                              cont=cont+1;
  48.  
  49.                       }
  50. }
  51.  
  52. }
  53.  
  54. printf("*********Menu**********\n");
  55. printf("\n1-Resultado punto A\n3-Resultado punto B\n4-Resultado punto C\n5-Resultado punto D\n6-Salir del sistema\n");
  56. printf("\nPor favor elija una opcion: ");
  57. scanf("%d",&a);
  58.  
  59.                                                                           switch (a)
  60.                                                                           {
  61.  
  62.  
  63.                                                                                  case 1:pto1(cont);
  64.                                                                                  break;
  65.  
  66.                                                                                  case 2:pto2(appnom);
  67.                                                                                  break;
  68.  
  69.                                                                                  case 3:pto3(Mll[10][40]);
  70.                                                                                  break;
  71.  
  72.                                                                                  case 4:pto4(VP[10]);
  73.                                                                                  break;
  74.  
  75.                                                                                  case 5:getch();
  76.                                                                                  break;
  77.  
  78.  
  79.                                                                           }
  80.                                                                           printf("\nPor favor elija una opcion: ");
  81.                                                                           scanf("%d",&a);
  82.                                                                           }
  83.  
  84.  
  85. }
  86.  
  87. }
  88.  
  89. }
  90.  

A mí así deja de darme ese error.

Saludos!


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 16 Julio 2012, 23:53 pm
Sigo con el error, mira me aparece esto:

C:\Users\Luciano\Desktop\Sin Nombre1.cpp In function `void idatos(int)':
196 C:\Users\Luciano\Desktop\Sin Nombre1.cpp invalid conversion from `char*' to `char'
196 C:\Users\Luciano\Desktop\Sin Nombre1.cpp   initializing argument 1 of `void pto2(char)'
'
196 C:\Users\Luciano\Desktop\Sin Nombre1.cpp At global scope:
219 C:\Users\Luciano\Desktop\Sin Nombre1.cpp expected declaration before '}' token
 (Each undeclared identifier is reported only once for each function it appears in.)

Y un par mas q son de otras cosas


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 16 Julio 2012, 23:57 pm
A mí ese error ya no me da... Aunque será por mi compilador. Ten en cuenta que el parámetro de la función pto2 es un int, y tú estás pasando un *char.

Saludos!

EDITO: El parámetro de pto2 es un char en el prototipo, pero después en la función haces como si fuera un int.


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 00:04 am
Ya lo cambie y sigo con lo mismo, no entiendo porqe me tira error.
Gracias de todas formas, ya no se qe hacer y tengo q entregarlo mañana este tp. Me voy a dar la cabeza contra la pared.


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 17 Julio 2012, 00:06 am
El error es de conversión de *char a char, así que si has hecho que sea una cadena de caracteres, en teoría debería ir bien...

Saludos!


Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 00:23 am
Vamos a ver , tu tienes un prototipo de una función:
Código
  1. void pto2(char);
y después lo defines así:
Código
  1. void pto2(int appnom)
Obviamente si le pasas un char* como es appnom:
Código
  1. pt2(appnom);
No sabe que hacer has liado a todas las funciones así que si el proposito de la funcion pt2 es imprimir todos los carácteres de appnom te quedaría el prototipo y la función así:
Código
  1. void pto2(char*);//Prototipo.
  2. void pt2(char* appnom)//Declaracion.
  3. {
  4.  printf("Los rechazados son:\n",);
  5.  while(*appnom!='\0') //Mientras que el contenido de appnom no sea el caracter de final de linea.
  6.   {
  7.      printf("%c\n",*appnom);//Imprime el contenido de appnom.
  8.      ++appnom;//Apunta al siguiente caracter de appnom.
  9.   }
  10. }
  11.  


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 00:28 am
Gracias capo, ahi no me tiro más error.


Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 00:37 am
Pero el código tiene más errores te copio todos los que me da MinGW, los warnings son avisos solo:
Código:
main.c||In function 'main':|
main.c|34|warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[32]'|
main.c|49|warning: format '%s' expects type 'char *', but argument 2 has type 'char (*)[32]'|
main.c||In function 'idatos':|
main.c|148|warning: missing braces around initializer|
main.c|148|warning: (near initialization for 'Mll[0]')|
main.c|149|warning: missing braces around initializer|
main.c|149|warning: (near initialization for 'Mct[0]')|
main.c|149|warning: unused variable 'Mct'|
main.c|146|warning: unused variable 'c'|
main.c||In function 'pto3':|
main.c|261|error: 'Mll' undeclared (first use in this function)|
main.c|261|note: each undeclared identifier is reported only once for each function it appears in|
main.c|261|error: 'f' undeclared (first use in this function)|
main.c||In function 'pto4':|
main.c|277|error: 'VP' undeclared (first use in this function)|
main.c|277|error: 'Mct' undeclared (first use in this function)|
main.c|277|error: 'Mll' undeclared (first use in this function)|
main.c|280|error: 'Max' undeclared (first use in this function)|
main.c|281|error: 'aux' undeclared (first use in this function)|
main.c|298|error: expected ';' before '}' token|
main.c|302|error: expected identifier or '(' before '}' token|
||=== Build finished: 10 errors, 8 warnings ===|


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 00:49 am
SIsi, ya los cambie esos pero ahora me tira errores boludos q no los encuentro como..

195 C:\Users\Luciano\Desktop\Sin Nombre1.cpp a function-definition is not allowed here before '{' token

Nose q me pide ahi abjao del void pto1.


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 17 Julio 2012, 00:52 am
Por favor, por tu nuevo código para que veamos cuál es la línea 195 y nos sea más fácil identificar el error  ;)

Saludos!


Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 00:53 am
Que error mas raro , ¿puedes postear ese pedazo de código? Porque lo que dice es que la definición de la función no está permitida aquí antes del token '{'


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 00:56 am
Pongo el codigo otra vez como lo tengo ahora, le saqe el ultimo menu:

Código:
#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, 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()
{
char nombre[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]={0};
                                         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)
                                         {
     
     printf("Ingrese nombre y apellido: ");
     fflush(stdin);
gets(nombre);
     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;
                             
 
                       }
}
 
}
 

pto1(cont);
pto2(nombre);
pto3(Mll[10][40]);
pto4(VP[10], Mll[10][40], Mct[10][40]);

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

void pto2(char* nombre)
{
  printf("Los rechazados son:\n", nombre);

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

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

Y la linea q me tira error:

Código:
pto1(cont);
pto2(nombre);
pto3(Mll[10][40]);
pto4(VP[10], Mll[10][40], Mct[10][40]);

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


Título: Re: Ayuda ejercicio
Publicado por: DickGumshoe en 17 Julio 2012, 00:59 am
En el prototipo de la función tienes:

Código
  1. void idatos(int);

Sin embargo, en la función tienes:

Código
  1. void idatos()

Saludos!



Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 01:02 am
A parte de lo que dice DickGumshoe en la función anterior a la que te dá el error te faltan llaves... y al final del todo te sobran.


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 01:03 am
Sisi, estaba contando justo las llaves. Estoy desde las 2 de la tarde con este trabajo practico lo cambie tantas veces ya que nose las orrores que pueden haber. Si me surge algo más lo pongo, mil gracias a todos.


Título: Re: Ayuda ejercicio
Publicado por: do-while en 17 Julio 2012, 01:24 am
¡Buenas!

La verdad es que intentar leer ese codigo era un horror. Lo he pasado por el taller y ha quedado asi: (Ahora encontraras los errores mas facil. Intenta escribir codigo siguiendo este formato o uno parecido, pero que este ordenado por favor...)
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. void menu1(int);
  6. void idatos(int);
  7. void menu2(int);
  8. void pto1(int);
  9. void pto2(char*);
  10. void pto3(int);
  11. void pto4(int, int, int);
  12.  
  13.  
  14. int main ()
  15. {
  16.  
  17. //Datos registrados
  18. char s1[]="asd";
  19. char s2[]= "asd2";
  20.  
  21.  
  22.    //Verificacion de datos
  23.    char usuario[32];
  24.    char contrasena[32];
  25.  
  26.    //Enteros
  27.    int i,k,j,menu;
  28.  
  29.  
  30.    //Comienzo para los intentos de contraseña, maximo 3
  31.    for(i=1;i<=3;i++)
  32.    {
  33. printf("\nIngrese usuario: ");
  34. scanf("%s",&usuario);                            
  35. k = strcmp( s1, usuario );
  36.  
  37. if (k != 0)
  38. {
  39. printf("\nUsuario incorrecto\n");
  40. }
  41.  
  42. if(k == 0)
  43. {    
  44. printf("\nIngrese contrasena: ");
  45. scanf("%s",&contrasena);
  46. j = strcmp( s2, contrasena);
  47.  
  48. if (j == 0)
  49. {
  50. printf("\nDatos correctos\n");
  51. printf("\nBienvenido al programa del servicio penintenciario\n");
  52. printf("\n");
  53. printf("\n");
  54. menu1(menu);
  55.  
  56. //Comienzo de Switch Menu
  57.  
  58. getch();
  59. }
  60.  
  61. if(j != 0)
  62. {
  63. printf("\ncontrasena incorrecta\n");
  64. }
  65. }
  66. }
  67. }
  68.  
  69. void menu1(int a)
  70. {
  71.  
  72. printf("*********Menu**********\n");
  73. 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");
  74. printf("\nPor favor elija una opcion: ");
  75. scanf("%d",&a);
  76.  
  77. while (a!=1)
  78. {
  79. printf("Elija otra opcion");
  80. scanf("%d",&a);
  81. }    
  82.  
  83. switch (a)
  84. {
  85. case 1:
  86. printf("Por favor ingrese los datos\n");
  87. int b;
  88. idatos(b);
  89. break;
  90.  
  91. case 2:
  92. printf("Opcion no disponible sin la carga de datos");
  93. break;
  94.  
  95. case 3:
  96. printf("Opcion no disponible sin la carga de datos");
  97. break;
  98.  
  99. case 4:
  100. printf("Opcion no disponible sin la carga de datos");
  101. break;
  102.  
  103. case 5:
  104. printf("Opcion no disponible sin la carga de datos");
  105. break;
  106.  
  107. case 6:
  108. getch();
  109. break;
  110. }
  111. }
  112.  
  113. void idatos()
  114. {
  115. char nombre[32];
  116. int i;
  117. int j;
  118.  
  119. for(i=1;i<=10;i++)
  120. {
  121. for(j=1;j<=40;j++)
  122. {
  123. int nr,np,nc,ll,cp,c,cont;
  124. nr=np=nc=ll=cp=cont=0;
  125. int Mll[10][40]={0};
  126. int Mct[10][40]={0};
  127. int VP[10]={0};
  128. printf("Ingrese numero de recluso");
  129. scanf("%d",&nr);
  130. printf("Ingrese numero de piso\n");
  131. scanf("%d",&np);
  132. printf("Ingrese numero de celda\n");
  133. scanf("%d",&nc);
  134. printf("Ingrese numero de lugares libres\n");
  135. scanf("%d",&ll);
  136. printf("Ingrese numero de capacidad total\n");
  137. scanf("%d",&cp);
  138.  
  139. while(nr!=0)
  140. {
  141. printf("Ingrese nombre y apellido: ");
  142. fflush(stdin);
  143. gets(nombre);
  144. int x,f,c;
  145. x=0;
  146. for(f=1;f<=10;f++)
  147. {
  148. for(c=1;c<=40;c++)
  149. {
  150. if(Mll[f][c] > 0 && x==0)
  151. {
  152. x=1;
  153. Mll[f][c]=Mll[f][c]-1;
  154. }
  155. }
  156.  
  157. if(x==0)
  158. {
  159. cont=cont+1;
  160. }
  161. }
  162. }
  163.  
  164.  
  165. pto1(cont);
  166. pto2(nombre);
  167. pto3(Mll[10][40]);
  168. pto4(VP[10], Mll[10][40], Mct[10][40]);
  169. }
  170.  
  171. void pto1(int cont)
  172. {
  173. printf("%d no pudieron ser alojados por falta de lugar",cont);
  174. }
  175.  
  176. void pto2(char* nombre)
  177. {
  178. printf("Los rechazados son:\n", nombre);
  179. }
  180.  
  181. void pto3(int a)
  182. {
  183. int f;
  184.  
  185. for(f=1;f<=10;f++)
  186. {
  187. int c;
  188. for(c=1;c<=40;c++)
  189. {
  190. if(a[f][c] > 0)
  191. {
  192. printf("Para el piso %d, la celda %d tiene aun disponibilidad",a,c);
  193. }
  194. }
  195. }
  196. }
  197.  
  198. void pto4(int a, int b, int c)
  199. {
  200. int f;
  201.  
  202. for(f=1;f<=10;f++)
  203. {
  204. int c;
  205. for(c=1;c<=40;c++)
  206. {
  207. a[f]=a[f]+b[f][c]-c[f][c];
  208. }
  209. }
  210.  
  211. Max=a[f];
  212. aux=f;
  213.  
  214. int i;
  215.  
  216. for(i=1;i<=10;i++)
  217. {
  218. if(a[i] > Max)
  219. {
  220. Max=a[i];
  221. aux=i;
  222. }
  223. }
  224.  
  225. for(i=aux;i<=aux;i++)
  226. {
  227. if(a[i]==Max)
  228. {
  229. printf("El piso mas lleno es el piso %d",i)
  230. }
  231. }
  232. }
  233. }
  234. }
  235.  

Ahora te voy contando lo que veo...

||In function 'idatos':|
|114|error: number of arguments doesn't match prototype|
|6|error: prototype declaration|

Hasta aqui te dice que en la funcion idatos, no corresponde el prototipo con la declaracion.

||In function 'pto3':|
|192|error: subscripted value is neither array nor pointer|

Te esta diciendo que estas intentando utilizar como vector (o en este caso matriz) algo que no lo es, es decir estas poniendo subindices a algo que no los puede llevar.

||In function 'pto4':|
|209|error: subscripted value is neither array nor pointer|
|209|error: subscripted value is neither array nor pointer|
|209|error: subscripted value is neither array nor pointer|
|209|error: subscripted value is neither array nor pointer|

Lo mismo que el apartado anterior

|213|error: 'Max' undeclared (first use in this function)|
|213|error: (Each undeclared identifier is reported only once|
|213|error: for each function it appears in.)|

Una variable que esta utilizando sin haberla declarado

|213|error: subscripted value is neither array nor pointer|

Otra vez estas intentando utilizar como matriz o vector algo que no lo es.

|214|error: 'aux' undeclared (first use in this function)|

Otra variable sin declarar

|220|error: subscripted value is neither array nor pointer|
|222|error: subscripted value is neither array nor pointer|
|229|error: subscripted value is neither array nor pointer|

Otra vez lo de los vectores o matrices

|232|error: expected ';' before '}' token|

Y la ultima es que falta un punto y coma por algun lado...

||=== Build finished: 16 errors, 0 warnings ===|


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 01:27 am
Tengo errores en la funciones, me parecia raro que no aparescan.

Código:
void pto3(int a)
{
     int f;
     for(f=1;f<=10;f++)
     {
                      int c;
                      for(c=1;c<=40;c++)
                      {
                                        if(a[f][c] > 0)
                                        {
                                                     printf("\nPara el piso %d, la celda %d tiene aun disponibilidad\n",a,c);
                                                     }
                                                     }
                                                     }
                     
}
 
 void pto4(int a, int b, int c)
{
      int f;
      for(f=1;f<=10;f++)
      {
                        int c;
                        for(c=1;c<=40;c++)
                        {
                                          a[f]=a[f]+b[f][c]-c[f][c];
                                          }
                                          }
Max=a[f];
aux=f;

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



 C:\Users\Luciano\Desktop\Sin Nombre1.cpp In function `void pto3(int, int, int)':
227 C:\Users\Luciano\Desktop\Sin Nombre1.cpp invalid types `int[int]' for array subscript
 C:\Users\Luciano\Desktop\Sin Nombre1.cpp In function `void pto4(int, int, int)':
244 C:\Users\Luciano\Desktop\Sin Nombre1.cpp invalid types `int[int]' for array subscript
y un par más todo del void 4, lo tengo echo para la ***** yase. Esta bien haber declado como A a la matriz?


Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 01:29 am
Tienes errores garrafales , utilizas matrices sin saber pasarlas y por lo que he podido comprobar el código que he modificado no funciona bien...


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 01:32 am
Si yase, la verdad es que no vimos un choto de codigo, casi todo el cuatrimestre viendo diagramacion Jackson y ahora tngo q hacer este tp, mas un menu y un usuario y contraseña. Se q es un horror pero bueno, con el tiempo espero aprender.


Título: Re: Ayuda ejercicio
Publicado por: avesudra en 17 Julio 2012, 01:33 am
Te dejo el código modificado pero ya te digo que no funciona bien .. aunque compilar compila.
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. void menu1(int);
  6. void idatos();
  7. void menu2(int);
  8. void pto1(int);
  9. void pto2(char*);
  10. void pto3(int a[10][40]);
  11. void pto4(int d[10], int e[10][40], int g[10][40]);
  12.  
  13.  
  14. int main ()
  15. {
  16.  
  17.    //Datos registrados
  18.    char s1[]="asd";
  19.    char s2[]= "asd2";
  20.  
  21.  
  22.    //Verificacion de datos
  23.    char usuario[32];
  24.    char contrasena[32];
  25.  
  26.    //Enteros
  27.    int i,k,j,menu;
  28.    //Comienzo para los intentos de contrase&#241;a, maximo 3
  29.    for(i=1; i<=3; i++)
  30.    {
  31.        printf("\nIngrese usuario: ");
  32.        scanf("%s",usuario);
  33.        k = strcmp( s1, usuario );
  34.        if (k != 0)
  35.        {
  36.            printf("\nUsuario incorrecto\n");
  37.        }
  38.        if(k == 0)
  39.        {
  40.            printf("\nIngrese contrasena: ");
  41.            scanf("%s",contrasena);
  42.            j = strcmp( s2, contrasena);
  43.            if (j == 0)
  44.            {
  45.                printf("\nDatos correctos\n");
  46.                printf("\nBienvenido al programa del servicio penintenciario\n");
  47.                printf("\n");
  48.                printf("\n");
  49.                menu1(menu);
  50.                //Comienzo de Switch Menu
  51.                getch();
  52.            }
  53.  
  54.            if(j != 0)
  55.            {
  56.                printf("\ncontrasena incorrecta\n");
  57.            }
  58.        }
  59.    }
  60. }
  61.  
  62. void menu1(int a)
  63. {
  64.    printf("*********Menu**********\n");
  65.    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");
  66.    printf("\nPor favor elija una opcion: ");
  67.    scanf("%d",&a);
  68.    while (a!=1)
  69.    {
  70.        printf("Elija otra opcion");
  71.        scanf("%d",&a);
  72.    }
  73.  
  74.    switch (a)
  75.    {
  76.    case 1:
  77.        printf("Por favor ingrese los datos\n");
  78.        int b;
  79.        idatos(b);
  80.        break;
  81.    case 2:
  82.        printf("Opcion no disponible sin la carga de datos");
  83.        break;
  84.    case 3:
  85.        printf("Opcion no disponible sin la carga de datos");
  86.        break;
  87.    case 4:
  88.        printf("Opcion no disponible sin la carga de datos");
  89.        break;
  90.    case 5:
  91.        printf("Opcion no disponible sin la carga de datos");
  92.        break;
  93.    case 6:
  94.        getch();
  95.        break;
  96.    }
  97. }
  98. void idatos()
  99. {
  100.    char nombre[32];
  101.    int i;
  102.    int j;
  103.    for(i=1; i<=10; i++)
  104.    {
  105.        for(j=1; j<=40; j++)
  106.        {
  107.            int nr,np,nc,ll,cp,cont;
  108.            nr=np=nc=ll=cp=cont=0;
  109.            int Mll[10][40];
  110.            int Mct[10][40];
  111.            int VP[10];
  112.            printf("Ingrese numero de recluso");
  113.            scanf("%d",&nr);
  114.            printf("Ingrese numero de piso\n");
  115.            scanf("%d",&np);
  116.            printf("Ingrese numero de celda\n");
  117.            scanf("%d",&nc);
  118.            printf("Ingrese numero de lugares libres\n");
  119.            scanf("%d",&ll);
  120.            printf("Ingrese numero de capacidad total\n");
  121.            scanf("%d",&cp);
  122.            while(nr!=0)
  123.            {
  124.                printf("Ingrese nombre y apellido: ");
  125.                fflush(stdin);
  126.                gets(nombre);
  127.                int x,f,c;
  128.                x=0;
  129.                for(f=1; f<=10; f++)
  130.                {
  131.                    for(c=1; c<=40; c++)
  132.                    {
  133.                        if(Mll[f][c] > 0 && x==0)
  134.                        {
  135.                            x=1;
  136.                            Mll[f][c]=Mll[f][c]-1;
  137.                        }
  138.  
  139.                    }
  140.                    if(x==0)
  141.                    {
  142.                        cont=cont+1;
  143.                    }
  144.                }
  145.            }
  146.            pto1(cont);
  147.            pto2(nombre);
  148.            pto3(Mll);
  149.            pto4(VP, Mll, Mct);
  150.        }
  151.    }
  152. }
  153. void pto1(int cont)
  154. {
  155.    printf("%d no pudieron ser alojados por falta de lugar\n",cont);
  156. }
  157.  
  158. void pto2(char* nombre)
  159. {
  160.    printf("Los rechazados son: %s\n", nombre);
  161.  
  162. }
  163.  
  164. void pto3(int a[10][40])
  165. {
  166.    int f;
  167.    for(f=1; f<=10; f++)
  168.    {
  169.        int c;
  170.        for(c=1; c<=40; c++)
  171.        {
  172.            if(a[f][c] > 0)
  173.            {
  174.                printf("Para el piso %d, la celda %d tiene aun disponibilidad\n",a,c);
  175.            }
  176.        }
  177.    }
  178.  
  179. }
  180.  
  181. void pto4(int d[10], int e[10][40], int g[10][40])
  182. {
  183.    int f;
  184.    for(f=1; f<=10; f++)
  185.    {
  186.        int c;
  187.        for(c=1; c<=40; c++)
  188.        {
  189.            d[f]=(d[f]+(e[f][c]))-(g[f][c]);
  190.        }
  191.    }
  192.    int Max=d[f];
  193.    int aux=f;
  194.  
  195.    int i;
  196.    for(i=1; i<=10; i++)
  197.    {
  198.        if(d[i] > Max)
  199.        {
  200.            Max=d[i];
  201.            aux=i;
  202.        }
  203.    }
  204.  
  205.  
  206.    for(i=aux; i<=aux; i++)
  207.    {
  208.        if(d[i]==Max)
  209.        {
  210.            printf("El piso mas lleno es el piso %d\n",i);
  211.        }
  212.    }
  213. }
  214.  


Título: Re: Ayuda ejercicio
Publicado por: Luckim en 17 Julio 2012, 01:41 am
Bueno, muchas gracias a todos por la ayuda. Con el tiempo espero mejorar y que no tengan que ver esto otra vez :/
Abrazo


Título: Re: Ayuda ejercicio
Publicado por: do-while en 17 Julio 2012, 01:48 am
Se agradecen las gracias.  :xD