Skip to content

Instantly share code, notes, and snippets.

@IsTheJack
Last active September 26, 2015 15:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IsTheJack/3309e3d0c9fbc0e70259 to your computer and use it in GitHub Desktop.
Save IsTheJack/3309e3d0c9fbc0e70259 to your computer and use it in GitHub Desktop.
Prova de Estrutura de Dados
// ------------------------------------------
// -----------------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