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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  alguien que me pueda ayudar con este problema?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: alguien que me pueda ayudar con este problema?  (Leído 1,883 veces)
alexandrots

Desconectado Desconectado

Mensajes: 5


Ver Perfil
alguien que me pueda ayudar con este problema?
« en: 11 Mayo 2013, 20:40 pm »

Se solicita codificar un programa en lenguaje C que solucione el siguiente problema: Se inicia con un arreglo que contiene las matriculas de los alumnos inscritos en una clase de programacion,esta lista se encuentra ordenada ascendentemente. El programa permite al usuario agregar una nueva matricula o remover una existente conservando el orden del arreglo. Se debera indicar cuando se haya alcanzado el maximo numero de alumnos que se permiten en la materia y el usuario seleccione la opcion de agregar una matricula; tambien cuando la lista este vacia y el usuario desee dar de baja. Utilice el siguiente esqueleto como base.

#include <stdio.h>

#define CUPO_MAX 25

long lista[CUPO_MAX]= {137982, 145783, 156312, 166357,175013};

short alta(long *gpo, int n);

short baja(long *gpo, int n);

int main(void)
{ short num_alumnos=5;
short op;
do{
print("\n1) Desplegar lista de matriculas");
print("\n2) Agregar a lista de matriculas");
print("\n3) Borrar de la lista de matriculas");
print("\n4) Salir");
printf("\n Seleccione una opcion");
scanf("%hd",&op;
switch(op)
{
case 1: despliega(lista, num_alumnos);
break;

case 2: if (alta(lista,num_alumnos) == 1 ) // si todo salio bien incrementa en uno el contador de alumnos
num_alumnos++;
break;

case 3: if (baja(lista, num_alumnos) == 1 ) // si todo salio bien decrementa en uno el contador de alumnos
num_alumnos--;
break;
case 4: printf("\nGracias por usar el programa");
break;

}

}while (op!= SALIR);
}


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: alguien que me pueda ayudar con este problema?
« Respuesta #1 en: 11 Mayo 2013, 20:56 pm »

Terminamos antes si nos dices que problemas te da el código.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
alexandrots

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: alguien que me pueda ayudar con este problema?
« Respuesta #2 en: 11 Mayo 2013, 21:20 pm »

no se como resolverlo
En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: alguien que me pueda ayudar con este problema?
« Respuesta #3 en: 11 Mayo 2013, 22:55 pm »

Para resolver el problema solo tienes que pasar a codigo el texto de tu enunciado.
En línea

dato000


Desconectado Desconectado

Mensajes: 3.033



Ver Perfil
Re: alguien que me pueda ayudar con este problema?
« Respuesta #4 en: 12 Mayo 2013, 00:06 am »

Pues no se entiende del todo lo que quieres, pero no se porque pero este problema me recuerda cuando estaba aprendiendo c/c++ y no entendia nada de nada, todos hemos estado en las mismas, así que por eso te ayudare, no es tan dificil, de hecho, realmente de la forma en que esta planteado el enunciado lo vi muy ineficiente y lo retoque un poco.

Código
  1. /* Se solicita codificar un programa en lenguaje C que solucione el siguiente problema:
  2. Se inicia con un arreglo que contiene las matriculas de los alumnos inscritos en una
  3. clase de programacion,esta lista se encuentra ordenada ascendentemente.
  4. El programa permite al usuario agregar una nueva matricula o remover una existente
  5. conservando el orden del arreglo. Se debera indicar cuando se haya alcanzado el maximo
  6. numero de alumnos que se permiten en la materia y el usuario seleccione la opcion de agregar
  7. una matricula;
  8. tambien cuando la lista este vacia y el usuario desee dar de baja.
  9.  
  10. Utilice el siguiente esqueleto como base.*/
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14.  
  15. #define CUPO_MAX 25
  16.  
  17. //como la lista de matriculas es una variable global, no es necesaria indexarla a las funciones
  18. long lista[CUPO_MAX] = {137982, 145783, 156312, 166357, 175013};
  19.  
  20. void despliega();
  21. short alta(int n);
  22. short baja(int n);
  23. void ordenar();
  24. void corrimiento(int n);
  25.  
  26. int main(void)
  27. {
  28.    short num_alumnos=5;
  29.    short op;
  30.    do{
  31.        printf("\n1) Desplegar lista de matriculas");
  32.        printf("\n2) Agregar a lista de matriculas");
  33.        printf("\n3) Borrar de la lista de matriculas");
  34.        printf("\n4) Salir");
  35.        printf("\n Seleccione una opcion: ");
  36.        scanf("%hd",&op);
  37.        switch(op)
  38.        {
  39.            //Despliega solo imprime en pantalla el numero de alumnos, lo que son esos codigos, supongo
  40.            //Por lo tanto no necesita pasar datos a la funcion, solo imprimarla en su totalidad
  41.            case 1: despliega();
  42.                    break;
  43.  
  44.            case 2: if(alta(num_alumnos) == 1); // si todo salio bien incrementa en uno el contador de alumnos
  45.                    num_alumnos++;
  46.                    break;
  47.  
  48.            case 3: if (baja(num_alumnos) == 1 ) // si todo salio bien decrementa en uno el contador de alumnos
  49.                    num_alumnos--;
  50.                    break;
  51.  
  52.            case 4: printf("\nGracias por usar el programa");
  53.                    break;
  54.  
  55.        }
  56.  
  57.    }while (op != 4);
  58.  
  59.    return 0;
  60. }
  61.  
  62. void despliega()
  63. {
  64.    int i;
  65.    printf("matriculas de la lista:\n\n");
  66.    for(i=0; i <  CUPO_MAX ; i++)
  67.    {
  68.        if (lista[i] != '\0')
  69.           printf("%d, ",lista[i]);
  70.    }
  71.    printf("\n\n");
  72. }
  73.  
  74. void ordenar()
  75. {
  76.    //Ordenando ascendentemente los numeros del arreglo
  77.    int i, j, temp;
  78.    for (i=1; i<CUPO_MAX; i++)
  79.    {
  80.          for (j=0 ; j< CUPO_MAX - 1; j++)
  81.          {
  82.               if (lista[j] > lista[j+1])
  83.               {
  84.                    temp = lista[j];
  85.                    lista[j] = lista[j+1];
  86.                    lista[j+1] = temp;
  87.               }
  88.          }
  89.    }
  90. }
  91.  
  92. //agregando matriculas
  93. short alta(int num)
  94. {
  95.    long mat_nueva;
  96.    if(num <= 25)
  97.    {
  98.        printf("Digite el numero de matricula para agregar:  ");
  99.        scanf( "%d", &mat_nueva);
  100.        //como el arreglo empieza en la posicion cero, no se necesita adicionar casilla ahi
  101.        //la suma se realiza en el case, para avanzar a la siguiente casilla del arreglo
  102.        lista[num] = mat_nueva;
  103.        printf("matricula agregada\n");
  104.        ordenar();
  105.        return 1;
  106.    }
  107.    else
  108.    {
  109.        printf("Se ha excedido el numero permitido de matriculas por clase.\n\n");
  110.        return 2;
  111.    }
  112. }
  113.  
  114. short baja(int num)
  115. {
  116.    long mat_retirada;
  117.    printf("Digite el numero de matricula para retirar:  ");
  118.    scanf( "%d", &mat_retirada);
  119.    //printf("%d", mat_retirada);
  120.    //Se realiza una busqueda de la variable y se compara con los valores en las posiciones del arreglo
  121.    int i;
  122.    for(i=0; i<CUPO_MAX; i++)
  123.    {
  124.        if(mat_retirada == lista[i])
  125.        {
  126.            lista[i] == 0;
  127.            corrimiento(i);
  128.            printf("matricula retirada\n");
  129.            ordenar();
  130.            return 1;
  131.        }
  132.  
  133.    }
  134.  
  135.    printf("La matricula NO esta en la lista.\n\n");
  136.    return 2;
  137.  
  138. }
  139.  
  140. void corrimiento(int n)
  141. {
  142.    //corriendo los numeros de las posiciones descendentemente
  143.    for( ;n <CUPO_MAX; n++)
  144.    {
  145.        lista[n] = lista[n+1];
  146.    }
  147. }
  148.  
  149.  
  150.  

Creo que le faltan unos detalles, esos te los dejo para que los averigues no seas tan flojo, no esperes nada regalado, un poco de ayuda no viene mal, para eso estamos, pero realmente, en estos temas, hay que hacer cada uno su esfuerzo.

Slds ojala te sirva
En línea


alexandrots

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: alguien que me pueda ayudar con este problema?
« Respuesta #5 en: 12 Mayo 2013, 01:23 am »

Gracias de hecho ese es mi caso, estoy cursando la materia y en realidad no entiendo mucho como crear un programa, fue muy útil tu ayuda, muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda !!!! Alguien que me pueda ayudar TT
Multimedia
Gotten 1 1,013 Último mensaje 16 Agosto 2006, 21:24 pm
por .hack//
Alguien q me pueda ayudar?
Ingeniería Inversa
alegriahoy 3 2,794 Último mensaje 21 Febrero 2009, 20:12 pm
por Revolutions
¿Alguien de forocoches que me pueda ayudar?
Foro Libre
blacklove24 0 899 Último mensaje 4 Marzo 2012, 22:35 pm
por blacklove24
alguien me puede ayudar con este problema ;)
Programación C/C++
andres199 1 1,902 Último mensaje 5 Junio 2012, 01:45 am
por x64core
Alguien que me pueda ayudar con este fragmento de código
Programación C/C++
David8 5 1,835 Último mensaje 4 Abril 2014, 12:01 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines