Ayuda ejercicio

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

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

Luckim

Pongo el codigo otra vez como lo tengo ahora, le saqe el ultimo menu:

#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:

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);
}

DickGumshoe

En el prototipo de la función tienes:

void idatos(int);

Sin embargo, en la función tienes:

void idatos()

Saludos!


avesudra

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.
Regístrate en

Luckim

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.

do-while

#24
¡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...)

#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)
}
}
}
}
}


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 ===|
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Luckim

Tengo errores en la funciones, me parecia raro que no aparescan.

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?

avesudra

Tienes errores garrafales , utilizas matrices sin saber pasarlas y por lo que he podido comprobar el código que he modificado no funciona bien...
Regístrate en

Luckim

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.

avesudra

#28
Te dejo el código modificado pero ya te digo que no funciona bien .. aunque compilar compila.
#include <stdio.h>
#include <conio.h>
#include <string.h>

void menu1(int);
void idatos();
void menu2(int);
void pto1(int);
void pto2(char*);
void pto3(int a[10][40]);
void pto4(int d[10], int e[10][40], int g[10][40]);


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,cont;
            nr=np=nc=ll=cp=cont=0;
            int Mll[10][40];
            int Mct[10][40];
            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)
            {
                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);
            pto4(VP, Mll, Mct);
        }
    }
}
void pto1(int cont)
{
    printf("%d no pudieron ser alojados por falta de lugar\n",cont);
}

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

}

void pto3(int a[10][40])
{
    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\n",a,c);
            }
        }
    }

}

void pto4(int d[10], int e[10][40], int g[10][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]);
        }
    }
    int Max=d[f];
    int aux=f;

    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);
        }
    }
}
Regístrate en

Luckim

Bueno, muchas gracias a todos por la ayuda. Con el tiempo espero mejorar y que no tengan que ver esto otra vez :/
Abrazo