Jump to content
Guest João Antunes

Calcular média de colunas de matrix

Recommended Posts

Guest João Antunes

Boa tarde,

 

Estou a tentar desenvolver um programa para calcular a media de cada coluna de uma matriz tenho o seguinte codigo abaixo e já tentei varias maneiras de calcular e não consigo, agradeço desde ja a ajuda.


 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


    int main()
{
    float TabelaT [3][5];
    int J,T;

    printf(" Introduza Os Tempos Dos Atletas 1,2 e 3 %dx%d: \n", 5,3);

        for(J=0; J<2; J++)
        {
        for(T=0; T<4; T++)
        {
            scanf("%d", &TabelaT[3][5]);
        }
        }


return 0;

 

Share this post


Link to post
Share on other sites
Zamalor
#include <stdio.h>

#define MAX_ATLETAS 3
#define MAX_REGISTOS_TEMPO 5


void inserirTempos(float tabelaTempos[][MAX_REGISTOS_TEMPO]){

    for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){

        for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){

            printf("Insira o tempo %d do atleta %d:", registoAtual + 1, atletaAtual + 1);
            scanf("%f", &(tabelaTempos[atletaAtual])[registoAtual]);

        }

    }

}

float calcMedia(float tabelaTempos[][MAX_REGISTOS_TEMPO], float media[]){

    for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){

        for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){
            media[atletaAtual] += tabelaTempos[atletaAtual][registoAtual];

        }
        media[atletaAtual] /= (float)MAX_REGISTOS_TEMPO;

    }

    return 0;
}

void printarMedia(float media[]){

    for (int mediaAtual = 0; mediaAtual < MAX_ATLETAS; mediaAtual++){
        printf("A média de tempo do atleta %d é:%.2f.\n", mediaAtual + 1, media[mediaAtual]);
    }

}


int main(){

    float tabelaTempos[MAX_ATLETAS][MAX_REGISTOS_TEMPO];
    float media[3];

    inserirTempos(tabelaTempos);
    calcMedia(tabelaTempos, media);
    printarMedia(media);

    return 0;
}

seria isto que estavas a querer fazer?

Insira o tempo 1 do atleta 1:1.0
Insira o tempo 2 do atleta 1:1.5
Insira o tempo 3 do atleta 1:2.0
Insira o tempo 4 do atleta 1:2.5
Insira o tempo 5 do atleta 1:3.0
Insira o tempo 1 do atleta 2:1.0
Insira o tempo 2 do atleta 2:1.5
Insira o tempo 3 do atleta 2:2.0
Insira o tempo 4 do atleta 2:2.5
Insira o tempo 3 do atleta 2:2.0
Insira o tempo 4 do atleta 2:2.5
Insira o tempo 5 do atleta 2:3.0
Insira o tempo 1 do atleta 3:5.0
Insira o tempo 2 do atleta 3:4.0
Insira o tempo 3 do atleta 3:3.0
Insira o tempo 4 do atleta 3:2.0
Insira o tempo 5 do atleta 3:1.0
A média de tempo do atleta 1 é:3.00.
A média de tempo do atleta 2 é:2.00.
A média de tempo do atleta 3 é:3.00.

 

Share this post


Link to post
Share on other sites
Guest João Antunes
4 horas atrás, Zamalor disse:

#include <stdio.h>

#define MAX_ATLETAS 3
#define MAX_REGISTOS_TEMPO 5


void inserirTempos(float tabelaTempos[][MAX_REGISTOS_TEMPO]){

    for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){

        for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){

            printf("Insira o tempo %d do atleta %d:", registoAtual + 1, atletaAtual + 1);
            scanf("%f", &(tabelaTempos[atletaAtual])[registoAtual]);

        }

    }

}

float calcMedia(float tabelaTempos[][MAX_REGISTOS_TEMPO], float media[]){

    for (int atletaAtual = 0; atletaAtual < MAX_ATLETAS; atletaAtual++){

        for (int registoAtual = 0; registoAtual < MAX_REGISTOS_TEMPO; registoAtual++){
            media[atletaAtual] += tabelaTempos[atletaAtual][registoAtual];

        }
        media[atletaAtual] /= (float)MAX_REGISTOS_TEMPO;

    }

    return 0;
}

void printarMedia(float media[]){

    for (int mediaAtual = 0; mediaAtual < MAX_ATLETAS; mediaAtual++){
        printf("A média de tempo do atleta %d é:%.2f.\n", mediaAtual + 1, media[mediaAtual]);
    }

}


int main(){

    float tabelaTempos[MAX_ATLETAS][MAX_REGISTOS_TEMPO];
    float media[3];

    inserirTempos(tabelaTempos);
    calcMedia(tabelaTempos, media);
    printarMedia(media);

    return 0;
}

seria isto que estavas a querer fazer?


Insira o tempo 1 do atleta 1:1.0
Insira o tempo 2 do atleta 1:1.5
Insira o tempo 3 do atleta 1:2.0
Insira o tempo 4 do atleta 1:2.5
Insira o tempo 5 do atleta 1:3.0
Insira o tempo 1 do atleta 2:1.0
Insira o tempo 2 do atleta 2:1.5
Insira o tempo 3 do atleta 2:2.0
Insira o tempo 4 do atleta 2:2.5
Insira o tempo 3 do atleta 2:2.0
Insira o tempo 4 do atleta 2:2.5
Insira o tempo 5 do atleta 2:3.0
Insira o tempo 1 do atleta 3:5.0
Insira o tempo 2 do atleta 3:4.0
Insira o tempo 3 do atleta 3:3.0
Insira o tempo 4 do atleta 3:2.0
Insira o tempo 5 do atleta 3:1.0
A média de tempo do atleta 1 é:3.00.
A média de tempo do atleta 2 é:2.00.
A média de tempo do atleta 3 é:3.00.

 

Sim exatamente o que eu pretendia, eu estava a fazer assim :

 

for(i = 0; i < n; i++) for(j = 0; j < n; j++)

soma += mat[j];

media = soma/((float)n*(float)n)

 

e depois fazia printf á media mas dava sempre 0, é preciso treino para por o que se pensa no programa, 

muito obrigado.

Share this post


Link to post
Share on other sites
Guest João Antunes

Afinal, não esta correto, não é a media de cada atleta é a media de cada coluna ou seja a media dos tempos dos 3 atletas 

depois necessito de ver qual é o melhor tempo de cada atleta nas 5 sessoes pensei no codigo abaixo;

n=3; r
maior=v[0];
menor=v[0];
for (j=0;j<n;j++){
if (v[j]>maior) maior=v[j];
if (v[j]<menor) menor=v[j];
}

Share this post


Link to post
Share on other sites
PsySc0rpi0n

@Zamalor, mais uma vez, não dás sequer oportunidade aos users de perceberem o que estão a fazer de errado. Chegas aqui e postas cóigo como se não houvesse amanhã. Não é esta a forma de ajudar os users que o forum defende. Aliás, não estás a ajudar em nada! Se queres simplesmente fazer código, monta um negócio e o pessoal paga para tu lhes fazeres código. Agora, quem quer aprender, não está a ser ajudado em nada por ti!

  • Vote 1

Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.