elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda  (Leído 1,332 veces)
Luckim

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Ayuda
« en: 30 Julio 2012, 17:07 pm »

Como hago para que la funcion sea llamada del menu y del ciclo?

Dejo codigo:

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


 void menu(int*);
 void carga(int*);
 void pto1(int*);
 void pto2(char*);
 void pto3();
 void pto4();
 
 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;
 
 
    //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 : printf("Cargad de datos");
                                             carga(&opcion);
                                             break;
                                             
                                    case 2 : printf("entro a la rta 1");
                                             pto1(&opcion);
                                             break;
                                             
                                    case 3 : printf("entro a la rta 2");
                                             pto2(&nom);
                                             break;
                                             
                                    case 4 : printf("Entro a la rta 3");
                                             break;
                                   
                                    case 5 : printf("Entro a la rta 4");
                                             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 i,f,c,e,np,nc,ll,ct,mll[11][41]={0},mct[11][41]={0},nr,cont,x;
          char nom[32];
         
          for(i=1;i<2;i++)
          {
                           for(f=1;f<=2;f++)
                           {
                                             printf("\nIngrese numero de piso: ");
                                             scanf("%d",&np);
                                             printf("\nIngrese numero de celda: ");
                                             scanf("%d",&nc);
                                             printf("\nIngrese numero de lugares libres: ");
                                             scanf("%d",&ll);
                                             printf("\nIngrese capacidad total: ");
                                             scanf("%d",&ct);
                                             mll[np][nc]=ll;
                                             mct[np][nc]=ct;
                                             }
                                             }
                                             printf("\nIngrese numero de recluso: ");
                                             scanf("%d",&nr);
                                             
                                             while(nr!=0)
                                             {
                                                         printf("\nIngrese nombre del recluso: ");
                                                         scanf("%s",nom);
                                                         x=0;
                                                         
                                                         for(c=1;c<=10;c++)
                                                         {
                                                                           for(e=1;e<=40;e++)
                                                                           {
                                                                                             if(mll[c][e]>0 && x==0)
                                                                                             {
                                                                                                            x=1;
                                                                                             }
                                                                                             else
                                                                                             {
                                                                                                 mll[c][e]=mll[c][e]-1;
                                                                                             }
                                                                           }
                                                         }
                                                         
                                                         if(x==0)
                                                         {
                                                              pto2(&nom);   
                                                         }
                                                         else
                                                         {
                                                             cont=cont+1;
                                                             pto1(&cont);
                                                         }
                                                         printf("\nIngrese numero de recluso ");
                                                         scanf("%d",&nr);
                                             }
                           
                                             
                                             
     }
     
     //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()
{
    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()
{
   
    int 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);
        }
    }
}


En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: Ayuda
« Respuesta #1 en: 30 Julio 2012, 19:10 pm »

Citar
Como hago para que la funcion sea llamada del menu y del ciclo?

Hola Luckim.

No sé a cuál de las 6 funciónes de tu código te refieres, pero creo que te estas complicando con la verificación de nombre y contraseña...

Fijate si de este modo no te resulta mas simple:
Código
  1. ...
  2. int main()
  3. {
  4.  char s1[]="asd";
  5.  char s2[]= "asd2";
  6.  char usr[32], pwd[32];
  7.  int intentos=0, ingresa=0;
  8.  
  9.  do {
  10.    system("cls");
  11.    printf("Usuario: "); fscanf(stdin,"%32s",&usr);
  12.    printf("\nClave: "); fscanf(stdin,"%32s",&pwd);
  13.    if (strcmp(usr, s1)!= 0 || strcmp(pwd, s2) != 0)
  14.      intentos += 1;
  15.    else
  16.      ingresa = 1;
  17.  } while (intentos < 3 && !ingresa);
  18.  
  19.  if (!ingresa) /* agoto los intentos, salir */
  20.    return 0;
  21.  
  22.  /* Comenzar el programa */
  23.  printf("Bienvenido al programa del servicio penintenciario");
  24.  ...
  25. }
  26.  

Saludos.
 


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda
« Respuesta #2 en: 31 Julio 2012, 03:07 am »

Un detalle.

Cuando se llama a scanf/fscanf, por ejemplo:
Código
  1. char usr[32], pwd[32];
  2. int intentos=0, ingresa=0;
  3.  
  4. do {
  5. system("cls");
  6. printf("Usuario: "); fscanf(stdin,"%32s",&usr);
  7. printf("\nClave: "); fscanf(stdin,"%32s",&pwd);
Al utilizar el especificador de formato "%Ns" se le indica a la función que almacene, a partir de la dirección indicada, un máximo de N caracteres y a continuación un '\0' para indicar el fin de la cadena.

Por ello las llamadas a "fscanf" (mejor "scanf") deberían ser:
Código
  1. printf("Usuario: "); fscanf(stdin,"%31s",&usr);
  2. printf("\nClave: "); fscanf(stdin,"%31s",&pwd);

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines