Ir ao conteúdo
  • Cadastre-se

Matrizes em C


Felipeedutra

Posts recomendados

Seguinte!! Tenho que fazer um programa a partir de quatro exercicíos, A MINHA DÚVIDA É EM RELAÇÃO AO CALCULO DA MÉDIA e se a interpretação como um todo está correta!:wacko:

Os exercicios:

P133. Faça um programa em C que leia as temperaturas médias de cada mês do ano para 20 cidades. Armazene em um vetor a média da temperatura de cada mês.

P134. (Desafio) Faça um programa em C semelhante ao programa P133. No entanto, ao invés de ler as temperaturas médias do mês, o programa deve ler as temperaturas médias de cada dia do mês para cada cidade.. Considere o mês com 30 dias. Ou seja, é necessário ler e armazenar a temperatura para cada cidade, em cada mês para cada dia do ano e somente depois calcular a média de cada cidade em cada mês. Não é necessário armazenar a médias em um vetor, apenas mostrar o valor. Dica: use constantes para as dimensões da matriz; irá facilitar os testes.

exemplo

cidade 1, mes 1, dia 1 = 10

cidade 1, mes 1, dia 2 = 25

cidade 1, mes 1, dia 3 = 22

...

cidade 1, mes 2, dia 1 = 17

cidade 1, mes 3, dia 2 = 15

cidade 1, mes 4, dia 3 = 13

...

cidade 2, mes 1, dia 1 = 24

cidade 2, mes 1, dia 2 = 25

cidade 2, mes 1, dia 3 = 27

...

P135. (Desafio) Faça um programa semelhante ao programa 134, só que ao invés de ler a temperatura média de cada dia para cada mês e cada cidade, deve ser lida a temperatura de cada hora, para cada dia, de cada mês, para cada cidade. Ao final, mostrar a temperatura média de cada dia do ano.

P136. (Desafio opcional: vale 1,0 a mais no Grau B) Melhore o programa P135 lendo um vetor com os nomes das cidades antes de ler a matriz com as temperaturas. Ao final, escreva o nome da cidade ao invés de escrever o número dela. (atenção: o enunciado completo requer a leitura dos enunciados das questões P133 a 136; é para enviar apenas o código resultante do P136; códigos copiados (iguais) receberão zero (pode haver entrevista com o autor para verificar conhecimento do código); só ganhará nota (integral ou parcial) o programa que estiver completo e correto, ou muito próximo disso; não pode usar recursos ainda não vistos (como funções).

LEMBRANDO, O ÚLTIMO É Q VALE, MAS PRECISA FAZER MAIS!!!

Meu código!!!

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <string.h>

#define CIDADES 20

#define MESES 12

#define DIAS 30

#define HORAS 24

int main()

{

setlocale(LC_ALL,"portuguese");

float m[CIDADES][MESES][DIAS][HORAS], aux, MediaMes;

int i, j, k, l;

char *mes[12] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};

for(i=0;i<CIDADES;i++){

MediaMes = 0;

for(j=0;j<MESES;j++){

MediaMes = 0;

for(k=0;k<DIAS;k++){

for(l=0;l<HORAS;l++){

printf("\nCidade %d, %s, Dia %d, hora %d: ", i+1, mes[j], k+1, l+1);

scanf("%f", &aux);

m[j][k][l] = aux;

MediaMes += m[j][k][l];

}

}

}

printf("Temperatura média da cidade %d no mês de %s é: %2.f\n\n", i+1, mes[j], MediaMes/30);

}

return 0;

}

Link para o comentário
Compartilhar em outros sites

Amigo, você terá uma matriz assim: mat[20][12][30].

Você deverá usar 3 loops aninhados para receber o valor das temperaturas e uma variável para ir somando-as, depois basta dividir a soma por trinta e terá a média mensal. Lembre-se que cada vez que o contador dos meses aumentar o valor a variável soma deve ser zerada. Um exemplo para ajuda-lo a pensar mas não irá resolver completamente seu problema:


int mat[20][12][30];
int i, j, k;
int soma = 0;

for(i=0; i<20; i++)
{
for(j=0; j<12; j++)
{
for(k=0; k<30; k++)
{
scanf("%d", mat[i][j][k]);
soma = soma + mat[i][j][k];
}
}
}

Link para o comentário
Compartilhar em outros sites

Você quase acertou. Quando você usa cid[20], está alocando memoria para 20 caracteres (na verdade 19, pois o último serve de caracter controle para indicar o final da string). Você deve alocar 20 posições para as cidade e cada posição alocar alguns caracteres para o nome das cidades. Eis um código para te ajudar:

#include <stdio.h>

int main()
{
char cidade[20][40];
int i, j;

for(i=0; i<20; i++)
{
printf("Digite o nome da cidade %d:", i+1);
gets(cidade[i]);
}

for (i=0;i<20 ;i++ )
printf("\n%s \n", cidade[i]);
}

Nesse caso cada cidade pode ter o nome de 39 caracteres. Creio que está no caminho certo. Até mais e qualquer dúvida poste aqui.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!