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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda con un ejercicio de programación C de nuevo xD
« en: 21 Diciembre 2017, 11:44 am »

Hola! Necesito un poco de ayuda de nuevo, también relacionado con el ejercicio que subí hace unos días: el ejercicio trata basicamente de crear un programa para un colegio con un menu de opciones (introduce datos del alumno, la media del alumno, la media de las asignaturas,buscar un alumno, modificar la nota del alumno, etc.).

Pero hay varios apartados que no me salen:
a) Mostrar por pantalla, a partir de los datos proporcionados, que alumnos han suspendido más de 4 asignaturas (utilizando punteros)
b)Guardar en un fichero los datos proporcionados por la matriz del apartado anterior (ficheros y punteros, ninguno de mis puntos fuertes xD)

Gracias de antemano a todos por vuestra ayuda!

Código:
#include <stdio.h>
#include <stdlib.h>
#define ALUMNOS 3
#define ASIGNATURAS 5
#define COD 10

void leerCodigoAlumnos(char codigoAlumnos[ALUMNOS][COD]);
void leerNotas(char codigoAlumnos[ALUMNOS], float notas[ALUMNOS][ASIGNATURAS]);
void imprimirTodasNotas( char codigoAlumnos[ALUMNOS], float notas [ALUMNOS][ASIGNATURAS]);
void imprimirNotas(char codigoAlumnos[ALUMNOS],float notas[ALUMNOS][ASIGNATURAS]);
void introducirNotas(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD]);
int buscarAlumno(char codigoAlumnos[ALUMNOS][COD],char codigoParametro[COD]);
void calculaMediaAlumno(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD]);
void calculaMediadeAsignaturas(float matrizNotas[ALUMNOS][ASIGNATURAS]);
void calculaMediaTotal(float matrizNotas[ALUMNOS][ASIGNATURAS]);
void peorMedia(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ASIGNATURAS][COD]);
void mediaMasAlta(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ASIGNATURAS][COD]);
void mediaMasBaja(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ASIGNATURAS][COD]);

void main(){

    int i, j, opcion, enc=0;
    char codigosAlumnos[ALUMNOS][COD];
    float notas[ALUMNOS][ASIGNATURAS];
    float matrizNotas[ALUMNOS][ASIGNATURAS];
    char asignaturas[ASIGNATURAS][20]= {"Fisica","Algebra","Informatica","Bio_celular","Biologia"};

    int posicionAlumno,posicionAsignatura;

    char codigoAbuscar[COD];
    char asignaturaAbuscar[30];

    float notaAmodificar;


    do{

        printf("-------------------- MENU --------------------\n\n");
        printf("1. Introducir las notas de los alumnos\n");
        printf("2. Imprimir notas\n");
        printf("3. Buscar un alumno\n");
        printf("4. Modificar nota de un alumno\n");
        printf("5. Realizar la media de alumnos\n");
        printf("6. Realizar la media de asignaturas\n");
        printf("7. Realizar la media total del curso\n");
        printf("8. Mostrar el alumno que peor notas media ha sacado.\n");
        printf("9. Mostrar el alumno que mejor notas media ha sacado.\n");
        printf("----------------------------------------------\n");
        printf("Introduzca una opcion:\n");
        scanf("%d",&opcion);

        switch (opcion){
        case 1:
            system("CLS");
            leerCodigoAlumnos(codigosAlumnos);
            introducirNotas(matrizNotas,codigosAlumnos);
            enc=1;
            break;

        case 2:
            system("CLS");
            imprime(matrizNotas,codigosAlumnos);
            enc=0;
            break;

        case 3:
            printf("\n");
            printf("Ingrese codigo alumno: ");
            char codigo[10];
            scanf("%s",codigo);
            notasAlumno(matrizNotas,codigosAlumnos,codigo);
            printf("\n");
            break;

        case 4:


            printf("Ingrese codigo de alumno:");
            scanf("%s",codigoAbuscar);
            printf("\n");
            posicionAlumno = buscarPosicion(codigosAlumnos,codigoAbuscar);


            if(posicionAlumno>=0){

                printf("Alumno encontrado, ingrese ahora el codigo de asignatura que desea modificar: ");
                scanf("%s",asignaturaAbuscar);
                posicionAsignatura = buscarPosicionAsignatura(asignaturas,asignaturaAbuscar);

                if(posicionAsignatura>=0){
                    printf("Asignatura encontrada, ingrese la nueva nota: ");

                    scanf("%f",&notaAmodificar);
                    matrizNotas[posicionAlumno][posicionAsignatura]=notaAmodificar;

                    notasAlumno(matrizNotas,codigosAlumnos,codigoAbuscar);

                }else{

                printf("La asignatura no existe");

                }
            }else{

            printf("El alumno no existe");

            }

            printf("\n");
            break;



        case 5:
            printf("\n");
            calculaMediaAlumno(matrizNotas,codigosAlumnos);
            break;

        case 6:
            printf("\n");
            calculaMediadeAsignaturas(matrizNotas);
            break;

        case 7:
            calculaMediaTotal(matrizNotas);
            break;

        case 8:
            printf("\n");
            mediaMasBaja(matrizNotas,codigosAlumnos);
            printf("\n");
            break;

        case 9:
            printf("\n");
            mediaMasAlta(matrizNotas,codigosAlumnos);
            printf("\n");
            break;

            default: printf("\nOpcion no valida. Por favor, vuelva a elegir. \n\n");
        }
    }
    while (opcion!=0);
}
void introducirNotas(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD]){
    system("CLS");
    int i,j;

    char nombreAsignatura[ASIGNATURAS][20]= {"Fisica","Algebra","Informatica","Bio_celular","Biologia"};

    for(i=0; i<ALUMNOS; i++){
        printf("Introduce las notas del alumno %d (codigo: %s)",i+1,codigoAlumnos[i]);

        printf("\n");

        for(j=0; j<ASIGNATURAS; j++){
            printf("%s: ",nombreAsignatura[j]);
            scanf("%f",&matrizNotas[i][j]);
        }
        printf("\n");
    }
}
void imprime(float matriz[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD]){

    printf("--------NOTAS ALUMNOS--------\n\n");
    int i,j;

    for(i=0; i<ALUMNOS; i++){
        printf("%s ",codigoAlumnos[i]);
        for(j=0; j<ASIGNATURAS; j++){
            printf("%.2f ",matriz[i][j]);
        }
        printf("\n");
    }
}
void leerCodigoAlumnos(char codigoAlumnos[ALUMNOS][COD]){

    int i;
    for(i=0; i<ALUMNOS; i++){

        printf("Codigo para el alumno %d: ",i+1);
        scanf("%s",codigoAlumnos[i]);
    }
}
int buscarPosicion(char codigoAlumnos[ALUMNOS][COD],char codigoParametro[COD]){

    int enc=0,pos=-1,i;
    i=0;
    while(i<ALUMNOS && !enc){
        if(strcmp(codigoAlumnos[i],codigoParametro)==0){
            enc=1;
            pos=i;
        }
        else{
            i++;
        }
    }
    return (pos);
}

int buscarPosicionAsignatura(char asignaturas[ASIGNATURAS][20],char asigParametro[20]){

    int enc=0,pos=-1,i;
    i=0;
    while(i<ASIGNATURAS && !enc){
        if(strcmp(asignaturas[i],asigParametro)==0){
            enc=1;
            pos=i;
        }
        else{
            i++;
        }
    }
    return (pos);
}

void calculaMediaAlumno(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD]){

        float sumaMedias=0;
        int i=0,j=0;
        float vectorMedias[ALUMNOS];
        for(i=0; i<ALUMNOS; i++){
            sumaMedias=0;
            for(j=0; j<ASIGNATURAS; j++){
                sumaMedias+=matrizNotas[i][j];
            }
            printf("La nota media del alumno %s es: %.2f \n \n",codigoAlumnos[i],sumaMedias/ASIGNATURAS);
        }
}
void notasAlumno(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ALUMNOS][COD],char codigoParametro[COD]){

    int pos = buscarPosicion(codigoAlumnos,codigoParametro);

    int enc=0,i=0;
    if(pos>=0)
    {
        printf("%s ",codigoAlumnos[pos]);
        for(i=0; i<ASIGNATURAS; i++){
            printf("%.2f ",matrizNotas[pos][i]);
        }
    }
    else{
        printf("El codigo introducido no es correcto");
    }
    printf("\n");
}
void calculaMediadeAsignaturas(float matrizNotas[ALUMNOS][ASIGNATURAS]){

        float sumaMedias=0;
        int i=0,j=0;
        char nombreAsignatura[ASIGNATURAS][20]= {"Fisica","Algebra","Informatica","Bio_celular","Biologia"};

        for(j=0; j<ASIGNATURAS; j++){
            sumaMedias=0;
            for(i=0; i<ALUMNOS; i++){
                sumaMedias+=matrizNotas[i][j];
            }
            printf("La nota media de %s es: %.2f\n \n",nombreAsignatura[j],sumaMedias/ALUMNOS);
        }
}
void calculaMediaTotal(float matrizNotas[ALUMNOS][ASIGNATURAS]){

    float sumaMedias=0;
    int i=0,j=0;
    char nombreAsignatura[ASIGNATURAS][20]= {"Fisica","Algebra","Informatica","Bio_celular","Biologia"};

    for(i=0; i<ALUMNOS; i++){

        for(j=0; j<ASIGNATURAS; j++){
                sumaMedias+=matrizNotas[i][j];
        }
    }
    printf("La nota media total es: %.2f\n \n",sumaMedias/(ALUMNOS*ASIGNATURAS));
}

void mediaMasBaja(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ASIGNATURAS][COD]){

    float sumaMedias=0;
    int i=0,j=0;
    float vectorMedias[ALUMNOS];
    for(i=0; i<ALUMNOS; i++){
        sumaMedias=0;
        for(j=0; j<ASIGNATURAS; j++){
            sumaMedias+=matrizNotas[i][j];
            vectorMedias[i]=sumaMedias;
        }
    }
    i=0;
    int pos=0;
    float menor=vectorMedias[0];
    for(i=0;i<ALUMNOS;i++){
        if(vectorMedias[i]<menor){
            menor=vectorMedias[i];
            pos=i;
        }
    }
    printf("La media mas baja es: \n\ncodigo de alumno %s\nNota media: %.2f ",codigoAlumnos[pos],menor/ASIGNATURAS);

}

void mediaMasAlta(float matrizNotas[ALUMNOS][ASIGNATURAS],char codigoAlumnos[ASIGNATURAS][COD]){

    float sumaMedias=0;
    int i=0,j=0;
    float vectorMedias[ALUMNOS];
    for(i=0; i<ALUMNOS; i++){
        sumaMedias=0;
        for(j=0; j<ASIGNATURAS; j++){
            sumaMedias+=matrizNotas[i][j];
            vectorMedias[i]=sumaMedias;
        }
    }
    i=0;
    int pos=0;
    float mayor=vectorMedias[0];
    for(i=0;i<ALUMNOS;i++){
        if(vectorMedias[i]>mayor){
            mayor=vectorMedias[i];
            pos=i;
        }
    }
    printf("La media mas alta es:\ncodigo de alumno %s\nNota media: %.2f ",codigoAlumnos[pos],mayor/ASIGNATURAS);
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio programacion BAT & Ayuda
Scripting
martintwo 1 2,583 Último mensaje 22 Octubre 2011, 02:44 am
por leogtz
Ejercicio programacion BAT & Ayuda
Scripting
martintwo 9 5,608 Último mensaje 24 Octubre 2011, 08:05 am
por ratefab
programación en C ayuda ejercicio
Ejercicios
clauditaal2013 1 2,631 Último mensaje 7 Agosto 2014, 17:13 pm
por Xandrete
Ayuda con este Ejercicio de Programacion
Programación C/C++
Deivbid 0 1,551 Último mensaje 18 Marzo 2016, 03:17 am
por Deivbid
Ayuda con un ejercicio de programación C :(
Programación C/C++
MartaR95 2 2,301 Último mensaje 21 Diciembre 2017, 11:31 am
por MartaR95
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines