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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Mi programa no lee mi fichero en: 22 Diciembre 2017, 06:45 am
Se que soy muy pesada, pero tengo una última duda xD. Este programa no me lee mi fichero de texto, el cual tengo en la misma carpeta que el main. Sabéis por qué puede ser?

Código:
#include<stdio.h>
#define MAXCAR 256
voidmain()
{
FILE * f; /* Fichero de entrada */
FILE * fs; /* Fichero de salida */
charcad[MAXCAR];
f = fopen(“C:\\Datos\\original.txt", "r");
fs= fopen(“C:\\Datos\\soloDatos.txt", "w");
if(f==NULL || fs==NULL) /* Si alguno ha fallado */
printf("No se han podido abrir los ficheros\n");
else{
fgets(cad, MAXCAR, f); /* Leemos la primera línea */
while(!feof(f)){/* mientras no es fin del fichero de entrada*/
if(cad[0]!='@'){ /* Si cadno empieza por @*/
fputs(cad,fs); /* escribimos la cadena en el fichero de salida */
}
fgets(cad, MAXCAR, f); /* Leemos la siguiente línea */
}
fclose(f); /* Cerramos el fichero de entrada */
fclose(fs); /* Cerramos el fichero de salida*/
}
}
2  Programación / Programación C/C++ / Programa en C en: 22 Diciembre 2017, 05:45 am
Hola! Hoy he estado haciendo un ejercicio de lenguaje c relacionado con el tema de los ficheros. A pesar de que el programa se ejecuta, no ha salido bien, practicamente muestra por pantalla el contenido del archivo de texto, no muestra el calculo de la media ni nada.  Podeis echarme una mano?? Gracias! :) Os dejo aqui el enunciado y mi programa:


La Unión Europea quiere recolectar datos sobre pacientes ingresado con síntomas de la gripe A. Por esto, cada hospital debe enviar un archivo de texto con los datos relativos a la medida de la temperatura de los pacientes al momento del ingreso.

Los ficheros deberán de tener una estructura establecida por la Unión Europea. Un ejemplo de tal fichero es el siguiente:
#Archivos con medidas de temperaturas de pacientes sanos y con gripe A #origen: Hospital Virgen Macarena, Sevilla, Spain #BEGIN DATA A FLUE #números de medidas pacientes con gripe A #other comments NUMBER SAMPLES 8 36.5 38.9 39 38.2 37.6 40 38.2 39.3 HEALTHY #números de medidas pacientes sanos NUMBER SAMPLES 6 36.3 36.7 35.9 36.3 36.4 36.2 #END OF DATA
Las líneas que empiezan por # son comentarios. La línea siguiente a la línea que contiene la frase “NUMBER SAMPLES” contienen el número de medidas enviadas (por ejemplo 8 en el caso del ejemplo de pacientes con gripe A). A continuación se encuentran los datos (fíjese que hay 8 números reales separados por espacios).
Escriba un programa que lea un fichero en este formato, y calcule la media de los pacientes sanos y de los pacientes con gripe A, imprimiendo por pantalla el resultado.

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 100

float calcula_media(float [],int);

void main()
{
    FILE*fp;
    char cad[TAM];
    char nombre_patologia[TAM];
    int numero_pacientes;
    int i;
    float media_temperaturas;
    fp=fopen("datos_hospital.txt","r");
    if(fp==NULL) {
        printf("Cannot open file.\n");
    }
    else {
        //Esquema de recorrido
        fgets(cad,TAM,fp);
        while(!feof(fp)){
        //Procesamiento
            if(cad[0]!='#'){
                if(strcmp(cad,"NUMBER SAMPLES")==0){
                    fscanf(fp,"%d",&numero_pacientes);
                    float temperaturas[numero_pacientes];
                    for(i=0;i<numero_pacientes;i++){
                        fscanf(fp,"%f",&temperaturas[i]);
                    }
                    media_temperaturas=calcula_media(temperaturas,numero_pacientes);
                    printf("La temperatura media es:%f",media_temperaturas);
                }
                else{
                    strcpy(nombre_patologia,cad);
                    printf("El nombre de enfermedad es: %s",nombre_patologia);
                }
            }
            fgets(cad,TAM,fp);
        }

        fclose(fp);
    }
}

float calcula_media(float temperaturas[],int numero_pacientes){
    int i;
    float media=0;
    for(i=0;i<numero_pacientes;i++){
        media=media+temperaturas[i];
    }
    media=media/numero_pacientes;
    return media;
}
3  Programación / Programación C/C++ / 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);
}
4  Programación / Programación C/C++ / Re: Ayuda con un ejercicio de programación C :( en: 21 Diciembre 2017, 11:31 am
Gracias por tu ayuda! Al final he conseguido sacarlo :)
5  Programación / Programación C/C++ / Ayuda con un ejercicio de programación C :( en: 17 Diciembre 2017, 03:11 am
Hola! Hace poco he empezado a programar con lenguaje c y necesito un poco de ayuda con un ejercicio.

Se supone que hay que implementar un servicio para un colegio que tenga varias funciones, pero hay una que por mas que lo intento no funciona.

Sabeis como puedo implementar una función que modifique la nota de una determinada asignatura de un alumno? Gracias de antemano 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 buscarPosicion(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];

    do{

        printf("-------------------- MENU --------------------\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 mejor notas media ha sacado.\n");
        printf("9. Mostrar el alumno que peor 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 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;
        }
    }
    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 para el 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][30]){

    printf("--------NOTAS ALUMNOS--------\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++){
        //!!!NO HACE FALTA ASPERSAND PARA RECOGER DATOS DE TIPO CADENA.
        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);
}
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("Alumno:%s Nota media:%.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("Nota media %s -> %.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("Nota media total -> %.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("MEDIA MAS BAJA\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("MEDIA MAS ALTA\ncodigo de alumno: %s\nNota media: %.2f ",codigoAlumnos[pos],mayor/ASIGNATURAS);
}



6  Programación / Programación C/C++ / Re: Ayuda con ejercicio basico en C en: 11 Diciembre 2016, 14:32 pm
Ya he terminado el ejercicio y ha salido bien (aunque he tenido que cambiar varias cosas xD).
Gracias a todos por vuestra ayuda : )
7  Programación / Programación C/C++ / Re: Ayuda con ejercicio basico en C en: 11 Diciembre 2016, 11:40 am
No estoy muy segura de como hacer el recorrido que necesito  :/
Solo tengo la primera parte y no se si esta bien o como continuar: es el código que tengo arriba, a partir de
 voidBuscarAnomalos.
8  Programación / Programación C/C++ / Re: Ayuda con ejercicio basico en C en: 11 Diciembre 2016, 03:48 am
Hola! Probé con float pero me salia este error: 'array subscript is not an integer'.
Pues el programa deberia hacer lo siguiente:
Debe aparecer un menu con 4 opciones:
Si eliges la primera opcion te pedirá que introduzcas los datos de una matriz de 5 filas y 3 columnas.
Si eliges la opcion 2 imprime por pantalla la matriz con los datos introducios anteriormente.
Si eliges la opcion tres te dará la desviación tipica y el error aleatorio de los datos (te debe dar tres datos, uno para cada columna).
Y si eliges la opcion 4 pues debe hacer lo que explique antes: comprobar que en la primera columna de la matriz no haya ningun dato superior a 1, etc.

Gracias por contestar! Intentaré hacerlo con float (solo el ultimo apartado?) aunque como he comentado me da error  :)
9  Programación / Programación C/C++ / Ayuda con ejercicio basico en C en: 11 Diciembre 2016, 01:37 am
Hola!! Estoy empezando a estudiar el lenguaje c y necesito un poco de ayuda con este ejercicio xD Esta casi todo hecho y solo falta compilarlo y ver si funciona, pero no estoy muy segura de como hacer la ultima parte.

Necesito hacer lo siguiente: cuando se elige la opción 4 del menu, el programa debe hacer un recorrido de la matriz (creo que es un recorrido) y comprobar si existen valores en la primera columna que sean superiores a 1, en la segunda columna que sean superiores a 0.2 y en la tercera columna que sean superiores a 0.02. Si encuentra estos valores aparecera un mensaje que indica que hay al menos un valor anomalo, de lo contrario, aparecerá un mensaje indicando que los valores que has introducido son correctos.

Si alguien me pudiera echar un cable estaría muy agradecida. Muchas gracias de antemano por vuestra ayuda y por vuestro tiempo! ^^

Código
  1. #include <conio.h>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #define NUMPIPETAS 3
  6. #define MAXMEDICIONES 5
  7.  
  8. void leerMediciones(int m[NUMPIPETAS][MAXMEDICIONES]);
  9. void imprimirMediciones(int m[NUMPIPETAS][MAXMEDICIONES]);
  10. void calcularPromedio (int m[NUMPIPETAS][MAXMEDICIONES]);
  11. void calcularDesviacionTipica(int m[NUMPIPETAS][MAXMEDICIONES]);
  12. void calcularErrorAleatorio(int m[NUMPIPETAS][MAXMEDICIONES]);
  13. void buscarAnomalos(int m[NUMPIPETAS][MAXMEDICIONES]);
  14.  
  15. void main(){
  16.    int matriz[NUMPIPETAS][MAXMEDICIONES];
  17.    int m[NUMPIPETAS][MAXMEDICIONES], sumaColumnas[NUMPIPETAS];
  18.    float x[15];
  19.    int opc=0;
  20.    char choice;
  21.    do {
  22.        leerMediciones(m);
  23.        system("cls");
  24.        printf("-----------MENU-----------\n\n");
  25.        printf("1.- Introducir las mediciones\n");
  26.        printf("2.- Imprimir mediciones\n");
  27.        printf("3.- Calcular error aleatorio\n");
  28.        printf("4.- Buscar valores anomalos\n");
  29.        printf("0.- Salir\n\n");
  30.        printf("Elige una opcion: ");
  31.        scanf("%d",&opc);
  32.        printf("----------------------------\n");
  33.  
  34.        switch(opc)
  35.        {
  36.            case 1: leerMediciones(matriz);
  37.                    break;
  38.  
  39.            case 2: imprimirMediciones(matriz);
  40.                    break;
  41.  
  42.            case 3: calcularPromedio (matriz);
  43.                    calcularDesviacionTipica(matriz);
  44.                    calcularErrorAleatorio(matriz);
  45.                    break;
  46.  
  47.            case 4: buscarAnomalos(matriz);
  48.                    break;
  49.  
  50.            default:printf("Opcion no valida. Por favor, vuelva a elegir. \n");
  51.  
  52.        }
  53.      }while(choice !=4);
  54.  
  55.  
  56.        imprimirMatriz(matriz);
  57.     }
  58. void leerMediciones(int m[NUMPIPETAS][MAXMEDICIONES]){
  59.  
  60.    int i,j;
  61.  
  62.    printf("Introduzca los elementos de la matriz %dx%d\n",NUMPIPETAS,MAXMEDICIONES);//deberia poner aqui i y j en vez de numpipetas y maxmediciones??
  63.  
  64.      for(i=0;i<NUMPIPETAS;i++){
  65.          for(j=0;j<MAXMEDICIONES;j++){
  66.  
  67.            printf("Fila %d - Columna %d: ", i,j);
  68.            scanf("%d", &m[i][j]);
  69.  
  70.         }
  71.      }
  72. }
  73.  
  74. void imprimirMediciones(int m[NUMPIPETAS][MAXMEDICIONES]){
  75.  
  76.    int i,j;
  77.  
  78.    printf("Impresion de la Matriz:\n");
  79.  
  80.       for(i=0;i<NUMPIPETAS;i++){
  81.           for(j=0;j<MAXMEDICIONES;j++){
  82.  
  83.               printf("%d ", m[i][j]);
  84.           }
  85.                printf("\n");
  86.       }
  87. }
  88.  
  89.  
  90. void calcularPromedio (int m[NUMPIPETAS][MAXMEDICIONES]){
  91.  
  92.   int i,j;
  93.   float sumaTotal, sumaColumnas[NUMPIPETAS], suma, media;
  94. /*Ahora calculamos la media*/
  95. /*Pero primero hacemos la suma total*/
  96.  
  97.    sumaTotal=0;
  98.  
  99.     for(i=0;i<NUMPIPETAS;i++){
  100.        for(j=0;j<MAXMEDICIONES;j++){
  101.  
  102.            sumaTotal = sumaTotal + m[NUMPIPETAS][MAXMEDICIONES];
  103.  
  104.                     }
  105.                }
  106.  
  107.  
  108.  
  109.            /*Calculamos la suma de cada columna*/
  110.                for(j=0;j<MAXMEDICIONES;j++){
  111.                    suma = 0;
  112.                    for(i=0;i<NUMPIPETAS;i++){
  113.                        suma = suma + m[NUMPIPETAS][MAXMEDICIONES];
  114.                    }
  115.                  sumaColumnas[j] = suma;
  116.  
  117.            /*Ahora hacemos la media de cada columna*/
  118.                  media = suma/5;
  119.                }
  120.  
  121. }
  122.  
  123. void calcularDesviacionTipica(int m[NUMPIPETAS][MAXMEDICIONES]){
  124.  
  125.   int i,j;
  126.   float suma1=0, media, varianza, desviacion_tipica;
  127.   int x[i];
  128. /*Calculamos la desviacion tipica*/
  129.  
  130.    for(i=0;i<NUMPIPETAS;i++){
  131.        for(j=0;j<MAXMEDICIONES;j++){
  132.                {
  133.                 suma1 = suma1 + pow((media - x[i]), 2);
  134.                }
  135.  
  136.        }
  137.    }
  138.  
  139.    varianza = suma1 / 4;
  140.    desviacion_tipica = sqrt(varianza);
  141.        printf("Desviacion tipica = %.2f\n", desviacion_tipica);
  142.        getch();
  143.  
  144. }
  145.  
  146.  
  147. void calcularErrorAleatorio(int m[NUMPIPETAS][MAXMEDICIONES]){
  148.  
  149.   float error_aleatorio, desviacion_tipica;
  150.  
  151.    error_aleatorio = desviacion_tipica/sqrt(5);
  152.        printf("Error aleatorio = %.2f\n", error_aleatorio);
  153.        getch();
  154.  
  155. }
  156.  
  157. void buscarAnomalos(int m[NUMPIPETAS][MAXMEDICIONES]){
  158.    //buscar numeros mayores que 1 en la primera columna
  159.    //mayores que 0.2 en la segunda columna y que 0.02 en la tercera columna
  160.  
  161. int i,j;
  162.  
  163. /*Vamos a hacer un recorrido para calcular los valores anomalos*/
  164.    for(j=0;j<MAXMEDICIONES;j++){
  165.         for(i=0;i<NUMPIPETAS;i++){
  166.            if
  167.  
  168.  
  169.  
  170.         }
  171.    }
  172.  
  173.  
  174. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines