Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Funciones en c

Estas en el tema de Funciones en c en el foro de C/C++ en Foros del Web. Estoy realizando un programa en c con menu en terminal nesecito llenar un arreglo de n de cantidad de alumnos pero mientras no aya determinado ...
  #1 (permalink)  
Antiguo 04/12/2014, 11:44
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta Funciones en c

Estoy realizando un programa en c con menu en terminal nesecito llenar un arreglo de n de cantidad de alumnos pero mientras no aya determinado la cantidad de alumnos no puedo acceder a las demas opciones del menu se que en otros lenguajes puedo poner
Código:
 if(arreglo[]==null)
{ ....que no se le permita.....}
pero en c puedo hacer esto o como debo implementarlo??
  #2 (permalink)  
Antiguo 04/12/2014, 12:20
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Funciones en c

No entiendo el problema, sino vas a usar el array no lo pongas en el bucle...
  #3 (permalink)  
Antiguo 04/12/2014, 12:31
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Funciones en c

si lo estoy usando lo que pasa esque tengo que hacer esto:

-APERTURA DE SECCIONES. Consiste en establecer la cantidad máxima de alumnos permitidos en cada sección. Para ello se debe ingresar la sección y el número máximo permitido. Mientras no se haya configurado el cupo por cada sección no se puede realizar ninguna otra operación(Es decir no puedo usar ninguna de las otras opciones de mi menu, no puedo matricularme ni ver reporte mientras no se haya hecho este paso). Si el usuario selecciona otra opción distinta a la apertura de clase debe mostrar un mensaje que es necesario aperturar las secciones.
  #4 (permalink)  
Antiguo 04/12/2014, 12:37
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Funciones en c

Cita:
Iniciado por albertorodriguez98 Ver Mensaje
si lo estoy usando lo que pasa es que tengo que hacer esto:

-APERTURA DE SECCIONES. Consiste en establecer la cantidad máxima de alumnos permitidos en cada sección. Para ello se debe ingresar la sección y el número máximo permitido. Mientras no se haya configurado el cupo por cada sección no se puede realizar ninguna otra operación(Es decir no puedo usar ninguna de las otras opciones de mi menu, no puedo matricularme ni ver reporte mientras no se haya hecho este paso). Si el usuario selecciona otra opción distinta a la apertura de clase debe mostrar un mensaje que es necesario aperturar las secciones.
Una forma sería usando un flag o bandera que estaría inicializado a cero y si entra en APERTURA DE SECCIONES lo cambias a 1. En los otros apartados del menú pones como condición previa que el flag sea 1 y si no no entra en ellos.

¡¡¡Saluditos!!!

  #5 (permalink)  
Antiguo 04/12/2014, 12:46
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Funciones en c

Muchisimas gracias
  #6 (permalink)  
Antiguo 05/12/2014, 08:50
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Funciones en c

Es que debes tener en cuenta que un arreglo no se trata de una sola variable, si no de muchas.
¿Si haces arreglo[] == 0, a cual de ellas te refieres, arreglo[1], arreglo[2], arreglo[3] ??? Aun que una posicion estuviera a null te puedes llevar un disgusto con las demas.

La solucion seria mirar todas las posiciones de esta forma:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int vacio( char *arreglo, const int TAM ){
  5.     int i;
  6.    
  7.     for ( i=0; i <TAM ; i++ ){
  8.         if ( arreglo[i] > '\0' ){
  9.             printf("Se encontro una letra en la posicion %d. Puede que contenga mas letras\n", i);
  10.             return 0;  //si arreglo contiene alguna letra
  11.         }
  12.     }
  13.     printf("Numero de caracteres mirados: %d \n", i);
  14.     return 1; //si esta vacio retorna 1
  15.  
  16. }
  17.  
  18. int main (){
  19.     char arreglo1[] = "No esta vacio";
  20.     char arreglo2[100] = ""; //vacio
  21.     char arreglo3[40] = {0};
  22.    
  23.     if ( vacio( arreglo1, ( (sizeof(arreglo1)) / ( sizeof(arreglo1[0]) ) ) ) ){
  24.         printf ("Arreglo1 esta vacio\n\n");
  25.     }else{
  26.         printf ("Arreglo1 contiene caracteres\n\n");
  27.     }
  28.  
  29.     if ( vacio( arreglo2, ( (sizeof(arreglo2)) / ( sizeof(arreglo2[0]) ) ) ) ){
  30.         printf ("Arreglo2 esta vacio\n\n");
  31.     }else{
  32.         printf ("Arreglo2 contiene caracteres\n\n");
  33.     }    
  34.  
  35.     if ( vacio( arreglo3, ( (sizeof(arreglo3)) / ( sizeof(arreglo3[0]) ) ) ) ){
  36.         printf ("Arreglo3 esta vacio\n\n");
  37.     }else{
  38.         printf ("Arreglo3 contiene caracteres\n\n");
  39.     }      
  40.    
  41.     getchar();
  42.     return 0;
  43. }

Pero lo ideal es hacer lo que te dijeron los compañeros. Mi idea es esta.
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5. void prueba(){
  6.     printf("Aqui te pediria nombre de alumnos para la primera seccion pero eso lo haces tu XD\n\n");
  7. }
  8.  
  9. int main () {
  10.     setlocale(LC_ALL, "spanish");
  11.     int nAlumnos;
  12.     int caso = 1;
  13.     int salir = 0;
  14.     int level2 = 0;
  15.     int nAlumnosSec1 = 0;
  16.     int nAlumnosSec2 = 0;
  17.     int nAlumnosSec3 = 0;
  18.     int nAlumnosSec4 = 0;
  19.     int sectorConfigurado1 = 0;
  20.     int sectorConfigurado2 = 0;    
  21.     int sectorConfigurado3 = 0;    
  22.     int sectorConfigurado4 = 0;    
  23.  
  24.     while ( !salir ) {
  25.         system("cls");
  26.         switch ( caso ) {
  27.             case 1:
  28.                 if ( sectorConfigurado1 != 1 ){
  29.                     printf( "Establezca la cantidad máxima de alumnos para la seccion 1 sección\n" );
  30.                     scanf( "%d", &nAlumnosSec1 );
  31.                     if ( nAlumnosSec1 != 0 ){
  32.                        sectorConfigurado1++;
  33.                     }
  34.                     break;
  35.                 }else if ( level2 == 1 ){
  36.                     printf( "1-Introducir alumno en la 1ºsección\n" );
  37.                     printf( "2-reporte 1º sección\n\n" );
  38.                     caso++;
  39.  
  40.                 }
  41.                
  42.             case 2:
  43.                 if ( sectorConfigurado2 != 1 ){
  44.                     printf( "Establezca la cantidad máxima de alumnos para la seccion 2 sección\n" );
  45.                     scanf( "%d", &nAlumnosSec2 );
  46.                     if ( nAlumnosSec2 != 0 ){
  47.                        sectorConfigurado2++;
  48.                     }
  49.                     break;
  50.                 }else if ( level2 == 1 ){
  51.                     printf( "3-Introducir alumno en la 2ºsección\n" );
  52.                     printf( "4-reporte 2º sección\n\n" );
  53.                     caso++;
  54.  
  55.                 }
  56.             case 3:
  57.                 if ( sectorConfigurado3 != 1 ){
  58.                     printf( "Establezca la cantidad máxima de alumnos para la seccion 3 sección\n" );
  59.                     scanf( "%d", &nAlumnosSec3 );
  60.                     if ( nAlumnosSec3 != 0 ){
  61.                        sectorConfigurado3++;
  62.                     }
  63.                     break;
  64.                 }else if ( level2 == 1 ){
  65.                     printf( "5-Introducir alumno en la 3ºsección\n" );
  66.                     printf( "6-reporte 3º sección\n\n" );
  67.                     caso++;
  68.  
  69.                 }
  70.             case 4:
  71.                 if ( sectorConfigurado4 != 1 ){
  72.                     printf( "Establezca la cantidad máxima de alumnos para la seccion 4 sección\n" );
  73.                     scanf( "%d", &nAlumnosSec4 );
  74.                     if ( nAlumnosSec4 != 0 ){
  75.                        sectorConfigurado4++;
  76.                        level2 = 1; // Nivel 2 de los menus activados
  77.                     }
  78.                     break;
  79.                 }else if ( level2 == 1 ){
  80.                     printf( "7-Introducir alumno en la 4ºsección\n" );
  81.                     printf( "8-reporte 4º sección\n\n" );
  82.                     printf( "0-Salir del programa\n\n" );
  83.                    
  84.                     scanf( "%d", &caso );
  85.                     if ( caso == 0 ) return 0;
  86.                     switch (caso) {
  87.                         system("cls");
  88.                         case 1:
  89.                             //introduce datos 1º seccion
  90.                             printf("Prueba entrada en caso 1\n");
  91.                             prueba();
  92.                             system("pause");
  93.                            
  94.                             break;
  95.                         case 2:
  96.                             //reporte 1º seccion
  97.                             //Hazlo tu y descubriras que te divertiras.... XDD
  98.                             break;
  99.                         case 3:
  100.                             //introduce datos 1º seccion
  101.                             //Hazlo tu y descubriras que te divertiras.... XDD
  102.                             break;
  103.                         case 4:
  104.                             //reporte 1º seccion
  105.                             //Hazlo tu y descubriras que te divertiras.... XDD
  106.                             break;
  107.                         case 5:
  108.                             //introduce datos 1º seccion
  109.                             //Hazlo tu y descubriras que te divertiras.... XDD
  110.                             break;
  111.                         case 6:
  112.                             //reporte 1º seccion
  113.                             //Hazlo tu y descubriras que te divertiras.... XDD
  114.                             break;
  115.                         case 7:
  116.                             //introduce datos 1º seccion
  117.                             //Hazlo tu y descubriras que te divertiras.... XDD
  118.                             break;
  119.                         case 8:
  120.                             //reporte 1º seccion
  121.                            //Hazlo tu y descubriras que te divertiras.... XDD
  122.                             break;
  123.                         default:
  124.                             break;
  125.                     }
  126.                    
  127.                    
  128.                     caso = 1;
  129.                     break;
  130.                 }
  131.             default:
  132.                 break;
  133.                
  134.         }
  135.         getchar();
  136.     }
  137.    
  138.     getchar();
  139.     return 0;
  140. }

Bueno espero que te sirva =)

Etiquetas: arreglo, funciones, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:12.