Ayuda para crear un programita en lenguaje c

Cerrado
renault gp Message postés 2 Date d'inscription lunes, 4 de enero de 2010 Estatus Miembro Última intervención lunes, 4 de enero de 2010 - 4 ene 2010 a las 18:12
 jgcha - 29 sep 2010 a las 21:02
Hola, buenas tardes. El otro dia me encargaron que realizara un programa en la universidad y en estos momentos me he quedado pillado en realizar una funcion del programa. Pediria si sois tan amable que me echeis una manita para poderlo terminar antes de esta semana.

Dejo el enunciado del ejercicio y parte del codigo que llevo en estos momentos realizado. del enunciado me voy por el paso 5 por si no se lo quereis leerlo entero. Ademas lo que mas prisa me corre es la funcion listar.



CODIGO

#include <stdio.h>

#include <string.h>

struct Alumno{

char apellidos[100];

char nombre[30];

int dni;

float practica;

float teorica;

float final;

};


struct Alumno alumnos[200];


int menu(void);

void crear(void);

void buscar(void);

void borrar(void);

void ordenar(void);

void ponernotas(void);

void listar(void);


int op, finlista=0;

main(){

op = menu();

while (op>=1 && op<7){

if (op==1)

crear();

else if (op==2)

borrar();

else if (op==3)

buscar();

else if (op==4)

ordenar();

else if (op==5)

ponernotas();

else if (op==6)

listar();
op = menu();

}

}

int menu(){

printf("\nMENU PRINCIPAL\n\n");

printf("\t1.-Dar de alta un Alumno\n");

printf("\t2.-Borrar un Alumno\n");

printf("\t3.-Buscar un Alumno\n");

printf("\t4.-Ordenar\n");

printf("\t5.-Poner notas\n");

printf("\t6.-Mostrar listado\n");

printf("\t7.-SALIR\n\n");

printf("ELIJA UNA OPCION: ");

scanf("%d",&op);

return op;

}

void crear(void){

struct Alumno alumnos[finlista];

if(finlista<200){

printf("\n\n\nCREA FICHA:\n");

printf("\nApellidos: ");

fflush(stdin);

gets(alumnos[finlista].apellidos);

printf("\nNombre: ");

fflush(stdin);

gets(alumnos[finlista].nombre);

printf("\nDNI: ");
fflush(stdin);

gets(alumnos[finlista].dni);

alumnos[finlista].practica=0;

alumnos[finlista].teorica=0;

alumnos[finlista].final=0;

finlista++;

}

else{

printf ("\n\nNo se puede introducir mas datos\n\n");

}
printf("\n\n\n");

}

void buscar(void){

}

void borrar(void){

}

void ordenar(void){

}
void ponernotas(void){

}

void listar(void){

}


ENUNCIADO


Se pide desarrollar la aplicación para la gestión de listas de clase de una asignatura. Los requisitos de la
aplicación serán los siguientes:
1) Los datos que se guardarán de cada alumno serán: Apellidos (100 caracteres como máximo),
Nombre (30 caracteres como máximo), DNI (incluyendo la letra), nota del examen práctico, nota
del teórico y nota final. Ambas notas deben admitir decimales. El máximo número de alumnos
matriculados en la asignatura será de 200.
2) El programa debe permitir crear y borrar fichas de alumnos.
3) Existirá la opción de buscar un alumno por apellido y mostrar sus datos por pantalla.
4) También será posible mostrar los datos de todos los alumnos en columnas (listado).
5) Debe poderse ordenar la lista de alumnos por apellidos.
6) Por último debe permitir introducir las notas de todos los alumnos de forma secuencial.
Guía para la realización de la práctica
Paso 1: Lo primero que debemos hacer es definir las estructuras de datos necesarias para almacenar la
información que va a manejar nuestra aplicación. Defina una estructura de datos con los campos de
información que se requieren para guardar los datos de un alumno:
struct Alumno {
...
};
A continuación, como se indica que el máximo de alumnos matriculados es de 200, cree un vector de 200
elementos del tipo struct Alumno. Ya que es una variable que debe estar disponible en toda la aplicación,
podemos crear la variable como global. Puede llamar a la variable alumnos.

Paso 2: El siguiente paso es estructurar nuestra aplicación. Se nos pide que esta haga una serie de
acciones. La forma más directa de organizar el código es crear una función para cada una de dichas
acciones. También necesitaremos una función que nos muestre y gestione el menú de la aplicación:

Paso 3: Lo primero que vamos a crear es la función menu(), que se encargará de mostrar un menú de
opciones por pantalla, y leerá por teclado la selección del usuario de nuestra aplicación:

La función devolverá el número de opción escogido por el usuario. El prototipo de esta función será:
int menu(void);
Paso 4: Ahora ya podemos crear la función main, que únicamente se encargará de lanzar menu(), recoger
la opción elegida, y en función de la opción lanzar la función correspondiente. Podemos escribirla así:
int main() {
int op;
op = menu();
while (op !=7 ) {
if (op==1)
printf("\nDar de alta\n");
else if (op==2)
printf("\nDar de baja\n");
else if (op==3)
printf("\nBuscar\n");
op = menu();
}
}
Debemos contemplar todas las opciones que va a tener nuestro programa. Conforme vayamos creando las
distintas opciones, podemos ir sustituyendo los printf() por llamadas a las funciones correspondientes.

Paso 5: La función que debemos programar a continuación es la de crear fichas de alumnos, para así
poder ir probando luego las demás funciones de nuestra aplicación. La función Crea() debe pedir los
datos del alumno, guardándolos en los campos de una de las estructuras del vector que hemos creado.
¿Cómo sabemos en qué posición del vector debemos colocar los datos? Lo que haremos es usar siempre
la primera posición libre. De alguna forma debemos controlar cuántas posiciones hemos ocupado ya. Lo
haremos mediante un contador que declararemos como global. Ese contador nos servirá también como
límite de nuestros bucles. Al comienzo de la función main() podemos inicializar la variable contador, que
podemos llamar FINLISTA o algo similar. Un posible pseudo-código la función puede ser:
SI no hemos llenado el vector HACER
Pedir los apellidos.
Pedir el nombre
Pedir el DNI
Guardarlo en la primera posición libre
INCREMENTAR EL CONTADOR
SI NO
ERROR: La lista está llena
FIN SI
Nota: Para introducir el nombre y los apellidos de un alumno hay que utilizar la función gets en lugar de
scanf, ya que scanf no permite introducir espacios. Sin embargo para usar correctamente la función gets
es necesario limpiar la información del teclado “acumulada” anteriormente, de manera que siempre antes
de usar gets hay que usar la función fflush(stdin). Por ejemplo ejemplo para pedir por teclado los
apellidos y nombre del alumno situado en la posición “n”:
printf(“Apellidos:“);
fflush(stdin);
gets(alumnos[n].apellidos);
printf(“Nombre: “);
fflush(stdin);
gets(alumnos[n].nombre);

Paso 6: Para comprobar que estamos introduciendo correctamente los valores en la lista, vamos a
desarrollar a continuación la función Listar(). El objetivo es mostrar los datos de un alumno por línea de
pantalla:
No es necesario que la presentación sea exactamente como la mostrada; puede hacerlo mucho más
simple, pero mostrando un alumno por línea.

Paso 7: Como para eliminar la ficha de un alumno antes debemos buscar qué posición ocupa, vamos a
escribir en primer lugar la función Buscar(). Nos pedirá unos apellidos y nos devolverá la posición que
ocupa si lo encuentra. Si no lo encuentra devolverá un valor que podamos identificar como no
encontrado: un número negativo, un número mayor que el tamaño de la lista, etc. También debe mostrar
los datos del alumno si lo encuentra:

Paso 8: La siguiente función que vamos a escribir es Borrar(). La función nos pedirá el apellido de uno
de los alumnos, lo buscará usando la función que ya hemos definido, nos pedirá confirmación y borrará la
ficha del alumno si procede. No podemos dejar huecos en la lista, por lo que para borrar una ficha lo que
haremos será desplazar todas las fichas posteriores hacia adelante:
Si lo que queremos es borrar el elemento 3, lo que hacemos es copiar los datos 4 en 3, de 5 en 4, etc. hasta
llegar al final de la lista. Luego tenemos que decrementar el contador que controla el final de la lista, para
saber que tenemos un elemento menos. Veamos un ejemplo de ejecución:

Paso 9: Ahora, debe crear una función que nos permita introducir la notas de todos los alumnos de forma
secuencial:

Paso 10: Para finalizar la aplicación, añadimos la función de ordenación. Podemos usar cualquiera de los
algoritmos vistos en clase. Debemos prestar atención a cómo hacemos la comparación de elementos.

5 respuestas

renault gp Message postés 2 Date d'inscription lunes, 4 de enero de 2010 Estatus Miembro Última intervención lunes, 4 de enero de 2010 5
4 ene 2010 a las 21:55
nadie por ahi que me ayude un poco a una funcion en lenguaje c que no se como es.
5
un programa en lenguaje C, utilizando la estructura de dato llamada arreglo. Para lo cual se pide almacenar los nombres de cada alumno y las notas correspondientes en estructuras distintas.
2
holaaa estoy en lo mismo XD el lenguaje se am pues de seguro es este
#include<stdio.h>
int nombre,apellido,ano de nacimiento;
main()
{
printf("tu nombre : ");
scanf("%i,"&nombre);
y asi sucesibamente xD espeor aver ayudado am aunque fue ase mucho xD
2
Por favor, alguien me puede ayudar, es urgente y no se seguir. Lo pido por favor, solo una ayudita para que por lo menos lo que tengo puesto me salga bien.

Un saludo
0

¿No encontraste la respuesta que buscabas?

Haz una pregunta
fucked
0