Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Leandro Soares, i100067
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #define MaxNotas 19
- #define TRUE 1
- struct tagAlunos {
- char nome[128];
- int numero;
- int notaspsi[MaxNotas];
- };
- void IniArray(int arry[], int Max, int x);
- void LerNotas(int arry[], int Max);
- int FMedia(int arry[], int Max);
- int FMediana(int arry[], int Max);
- void cpyarray(int arry_dest[], int arry_org[], int Max);
- int compfunc(const void * a, const void * b);
- int main() {
- int quant, Media, Mediana;
- struct tagAlunos Aluno;
- quant = Media = Mediana = 0;
- IniArray(Aluno.notaspsi, MaxNotas, -1);
- printf("\nNome: ");
- gets(Aluno.nome);
- system("cls");
- printf("\nNumero: ");
- scanf("%d", &Aluno.numero);
- system("cls");
- printf("\nIntroduza a quantidade de modulos: ");
- scanf("%d", &quant);
- system("cls");
- if(quant > 0 && quant < 20) {
- LerNotas(Aluno.notaspsi, quant);
- Media = FMedia(Aluno.notaspsi, MaxNotas);
- Mediana = FMediana(Aluno.notaspsi, quant);
- }
- system("cls");
- printf("Nome: %d", Aluno.nome);
- printf("\nNumero: %d", Aluno.numero);
- printf("\nMedia: %d", Media);
- printf("\nMediana: %d", Mediana);
- printf("\n\n");
- return 0;
- }
- void IniArray(int arry[], int Max, int x) {
- int idx;
- for(idx=0; idx != Max; idx++) {
- arry[idx] = x;
- }
- }
- void LerNotas(int arry[], int Max) {
- int i;
- while(Max-- != 0) {
- system("cls");
- printf("\nModulo: ");
- scanf("%d", &i);
- if( i > 0 && i < 20 ) {
- while(TRUE) {
- printf("\nNota: ");
- scanf("%d", &arry[i-1]);
- if( arry[i-1] >= 0 && arry[i-1] <= 20 )
- break;
- else {
- Max++;
- printf("\n ERRO (clique numa tecla para voltar a intruduzir)\n");
- getch();
- }
- }
- }
- else {
- Max++;
- printf("\n ERRO (clique numa tecla para voltar a intruduzir)\n");
- getch();
- }
- system("cls");
- }
- }
- int FMedia(int arry[], int Max) {
- int Media, idx, num;
- Media = num = 0;
- for(idx = 0; idx < Max; idx++) {
- if( arry[idx] != -1 ) {
- num++;
- Media += arry[idx];
- }
- }
- if(Media != 0)
- Media /= num;
- else
- Media = -1;
- return Media;
- }
- int FMediana(int arry[], int Max) {
- int arry2[MaxNotas];
- int Mediana, idx;
- cpyarray(arry2, arry, MaxNotas);
- qsort(arry2, MaxNotas, sizeof(int), compfunc);
- if( Max % 2 == 0 )
- Mediana = ( arry2[(Max/2)-1] + arry2[(Max/2)] ) / 2;
- else
- Mediana = arry2[Max/2];
- return Mediana;
- }
- void cpyarray(int arry_dest[], int arry_org[], int Max) {
- int idx;
- for(idx = 0; idx < Max; idx++) {
- arry_dest[idx] = arry_org[idx];
- }
- }
- int compfunc(const void * a, const void * b) {
- int *x = (int*) a;
- int *y = (int*) b;
- return *y - *x;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement