Last active
September 26, 2015 15:45
-
-
Save IsTheJack/3309e3d0c9fbc0e70259 to your computer and use it in GitHub Desktop.
Prova de Estrutura de Dados
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ------------------------------------------ | |
// -----------------14257042----------------- | |
// --------ROBERTO OLIVEIRA DA SILVA--------- | |
// ------------ESTRUTURA DE DADOS------------ | |
// -------------------AEDB------------------- | |
// ------------------------------------------ | |
// OBS: Esse código foi feito e testado usando Windows 10 e DEV-C++ 5.11 | |
#include <stdio.h> | |
#include <stdlib.h> | |
// Constantes de quantidade de linhas (horas) e colunas (minutos) para fins de debug | |
// A quantidade de colunas não deve mudar (Somente as linhas) | |
#define LINHAS 24 | |
#define COLUNAS 4 | |
// ------------------------------------------ | |
// --------------INICIO FUNÇÕES-------------- | |
// ------------------------------------------ | |
void lerQualidadeDoAr(int *matriz, int linha, int coluna) { | |
int i, j; | |
for(i = 0; i < linha; i++) { | |
for(j = 0; j < coluna; j++) { | |
printf("Lendo Qualidade do ar.\nHora %i e minuto %i:\n", i, j * 15); | |
scanf("%i", (matriz + i * coluna + j)); | |
// Validando entradas do valor | |
while(*(matriz + i * coluna + j) < 1 || *(matriz + i * coluna + j) > 10) { | |
printf("Foi inserido um valor fora do intervalo permitido.\nInsira novamente!\nHora %i e minuto %i:\n", i, j * 15); | |
scanf("%i", (matriz + i * coluna + j)); | |
} | |
} | |
printf("--------------------------------\n\n"); | |
} | |
} | |
void calculaMediaHoras(int *matriz, int linha, int coluna, float *matrizMediaHoras) { | |
float temp; | |
int i, j; | |
for(i = 0; i < linha; i++) { | |
temp = 0; | |
for(j = 0; j < coluna; j++) { | |
temp = temp + (float) *(matriz + i * coluna + j); | |
} | |
*(matrizMediaHoras + i) = temp / coluna; | |
} | |
} | |
void calculaMediaMinutos(int *matriz, int linha, int coluna, float *matrizMediaMinutos) { | |
float temp; | |
int i, j; | |
for(j = 0; j < coluna; j++) { | |
temp = 0; | |
for(i = 0; i < linha; i++) { | |
temp = temp + (float) *(matriz + i * coluna + j); | |
} | |
*(matrizMediaMinutos + j) = temp / linha; | |
} | |
} | |
void montaTabela(int *matriz, int linha, int coluna, float *matrizMediaHoras, float *matrizMediaMinutos) { | |
printf("-----------------------------------------\n"); | |
printf("----------TABELA DE RESULTADOS-----------\n"); | |
printf("-----------------------------------------\n\n"); | |
int i,j; | |
printf("HR\t| 00min\t| 15min\t| 30min\t| 45min\t| MEDIA\n"); | |
for(i = 0; i < linha + 1; i++) { | |
if(i < linha) | |
{ | |
printf("%i \t| ", i); | |
for(j = 0; j < coluna + 1; j++) { | |
if (j < coluna) | |
printf("%i \t| ", *(matriz + i * coluna + j)); | |
else | |
printf("%f\n", *(matrizMediaHoras + i)); | |
} | |
} | |
else | |
printf("MEDIA\t| %1.3f\t| %1.3f\t| %1.3f\t| %1.3f\t| ------\n", | |
*(matrizMediaMinutos), | |
*(matrizMediaMinutos + 1), | |
*(matrizMediaMinutos + 2), | |
*(matrizMediaMinutos + 3) | |
); | |
} | |
} | |
// ------------------------------------------ | |
// ----------------FIM FUNÇÕES--------------- | |
// ------------------------------------------ | |
int main() { | |
// Criando a matriz principal e dois vetores auxiliares que terão dados derivados dessa matriz | |
int *matriz = (int *) calloc(LINHAS * COLUNAS, sizeof(int)); | |
float *matrizMediaHoras = (float *) calloc(LINHAS, sizeof(float)); | |
float *matrizMediaMinutos = (float *) calloc(COLUNAS, sizeof(float)); | |
lerQualidadeDoAr(matriz, LINHAS, COLUNAS); | |
calculaMediaHoras(matriz, LINHAS, COLUNAS, matrizMediaHoras); | |
calculaMediaMinutos(matriz, LINHAS, COLUNAS, matrizMediaMinutos); | |
// Limpando a Tela | |
system("cls"); | |
montaTabela(matriz, LINHAS, COLUNAS, matrizMediaHoras, matrizMediaMinutos); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment