Ir ao conteúdo

Posts recomendados

Postado

Tudo no código está funcionando, o único problema, e que quando vou fazer o printf na tela para mostrar o valor da media das temperaturas, ele fica congelado no valor "3", sendo que tudo está idêntico para a umidade, e está funcionando corretamente, e printando corretamente na tela a media, me ajudem pfvr.
 

desde já agradeço 

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <math.h>
#include <float.h>

/*
1) MEDIR TEMPERATURA: gerar 10 valores de temperatura de forma aleatoria entre 20 e 40
graus e mostre os 10 valores, o valor medio, o maior valor e o menor valor.

2) MEDIR UMIDADE: gerar 10 valores de umidade de forma aleatoria entre 30% e 70% e mostre
os 10 valores, o valor medio, o maior valor e o menor valor.

3) VERIFICAR AMBIENTE: se temperatura media >= 30 e se a umidade media >=50%, emitir
alerta ¨ ATENCAO . Temperatura e umidade ACIMA do LIMITE

4) SAIR
*/ 

//opção 1: Temperatura



//Temperatura
int Temperatura()
{
int i,g,n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,Ma,Me,me;
int m,v,w;


system("cls");
srand( (unsigned)time(NULL));

for(i=1;i<=10;i++)
{
n=20+rand()%20;
printf("Temperatura %d: %d\n\n",i,n);
sleep(1);

v=v+n;
w++;

if(i==1)
	{
		Ma=n;
	    Me=n;
		me=n;
		
		g++;
	}
	//maior numero
	else if(n>Ma)
	{
		Ma=n;
	}
	
	//menor numero
	else if(n<me)
	{
		me=n;
	}
	
	//Valor mediano
	else if(Ma>n && me<n)
	{
		Me=n;
	}
             
//recebimento de valores	
if(i==1)
t1=n;
if(i==2)
t2=n;
if(i==3)
t3=n;
if(i==4)
t4=n;
if(i==5)
t5=n;
if(i==6)
t6=n;
if(i==7)
t7=n;
if(i==8)
t8=n;
if(i==9)
t9=n;
if(i==10)
t10=n;		    
}




//Tabela de informações
system("cls");
printf("\nOrdem\tTemperatura (C)\t       Temperatura\n  \t\t\t  Maior\t  Media\t  Menor \n");	

for(i=1;i<=10;i++)
{	
if(i==1)
printf("\n  %d\t     %d",i,t1);
if(i==2)
printf("\n  %d\t     %d",i,t2);
if(i==3)
printf("\n  %d\t     %d",i,t3);
if(i==4)
printf("\n  %d\t     %d",i,t4);
if(i==5)
printf("\n  %d\t     %d\t\t   %d\t   %d\t   %d",i,t5,Ma,Me,me);
if(i==6)
printf("\n  %d\t     %d",i,t6);
if(i==7)
printf("\n  %d\t     %d",i,t7);
if(i==8)
printf("\n  %d\t     %d",i,t8);
if(i==9)
printf("\n  %d\t     %d",i,t9);
if(i==10)
printf("\n  %d\t     %d",i,t10);	
}

m=v/w;
return m;

}

//opção 2:Umidade
int Umidade()
{
int i,g,n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t=0,u=0,Ma,Me,me,m=0;

system("cls");
srand( (unsigned)time(NULL));

for(i=1;i<=10;i++)
{
n=30+rand()%40;
printf("Umidade %d: %d\n\n",i,n);
sleep(1);

t=t+n;
u++;

if(i==1)
	{
		Ma=n;
	    Me=n;
		me=n;
		
		g++;
	}
	//maior numero
	else if(n>Ma)
	{
		Ma=n;
	}
	
	//menor numero
	else if(n<me)
	{
		me=n;
	}
	
	//Valor mediano
	else if(Ma>n && me<n)
	{
		Me=n;
	}
             
//recebimento de valores	
if(i==1)
t1=n;
if(i==2)
t2=n;
if(i==3)
t3=n;
if(i==4)
t4=n;
if(i==5)
t5=n;
if(i==6)
t6=n;
if(i==7)
t7=n;
if(i==8)
t8=n;
if(i==9)
t9=n;
if(i==10)
t10=n;		    
}


//Tabela de informações
system("cls");
printf("\nOrdem\tUmidade (C)\t       Umidade\n  \t\t\t  Maior\t  Media\t  Menor \n");	

for(i=1;i<=10;i++)
{	
if(i==1)
printf("\n  %d\t     %d",i,t1);
if(i==2)
printf("\n  %d\t     %d",i,t2);
if(i==3)
printf("\n  %d\t     %d",i,t3);
if(i==4)
printf("\n  %d\t     %d",i,t4);
if(i==5)
printf("\n  %d\t     %d\t\t   %d\t   %d\t   %d",i,t5,Ma,Me,me);
if(i==6)
printf("\n  %d\t     %d",i,t6);
if(i==7)
printf("\n  %d\t     %d",i,t7);
if(i==8)
printf("\n  %d\t     %d",i,t8);
if(i==9)
printf("\n  %d\t     %d",i,t9);
if(i==10)
printf("\n  %d\t     %d",i,t10);	
}

m=t/u;
return m;



}


//opção 3: Verificar Ambiente

void verificar(float temp,float umid)
{
system("cls");
printf("\nMedias\n");
printf("\nTemperatura\tUmidade\n\n");
printf("%.2f\t\t%.2f\n\n",temp,umid);

if(temp>=30 && umid>=50)
{
printf("\n° ATENCAO! Temperatura e umidade ACIMA do LIMITE.");	
}
else
{
printf("\n° Temperatura e umidade dentro do esperado!")	;
}


}

//opção 0: Finalizar

void finalizar()
{
system("cls");
printf("\nSaindo");
sleep(1);

printf("."); 
sleep(1);
printf("."); 
sleep(1);
printf("."); 
sleep(1);
printf("."); 
sleep(1);

system("cls");
printf("\nPressione qualquer tecla para continuar!\n");	
}

int opções(int opcao)
{
int a,b;

switch(opcao)
	{
		case 1:
		a=Temperatura();
		sleep(5);
        system("cls");
		break;
		
		case 2:
		b=Umidade();
	    sleep(5);
        system("cls");
		break;
		
		case 3:
		verificar(a,b);
		sleep(5);
        system("cls");
		break;
		
		case 0:
	    finalizar();
		break;
		
		default:
		printf("\nOpcao invalida");
		sleep(1);
        system("cls");
		break;
	
	}
	
return opcao;
}


int menu()
{
int opcao;

printf("\n\n\t\tMenu\n");
printf("\n1. Temperatura");
printf("\n2. Umidade");
printf("\n3. Verificar Ambiente");
printf("\n0. Sair\n\n");

printf("\nOpcao: ");
scanf("%d",&opcao);
return opcao;	
}


int main()
{
int opcao,escolha;

	do
	{
	opcao=menu();
	escolha=opções(opcao);	
	}while(opcao!=0);
	
	return 0;
}

 

  • Amei 1
Postado
int opções(int opcao)

Não use acentos

 

int opções(int opcao)
{
int a,b;

O escopo dessas variáveis está incorreto. Se declarar elas dentro da função, o conteúdo nunca é armazenado.

você tem que declarar eles como global, ou passar como parâmetros por referência.

Outro erro é que não está inicializando as variáveis

 

int m,v,w;

 

Finalmente, na função verificar você solicita como parâmetros ponto flutuante, mas todos as suas outras variáveis são inteiras

void verificar(float temp,float umid)

 

Corrigindo esses problemas, seu programa ficaria assim:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>


/*
1) MEDIR TEMPERATURA: gerar 10 valores de temperatura de forma aleatoria entre 20 e 40
graus e mostre os 10 valores, o valor medio, o maior valor e o menor valor.

2) MEDIR UMIDADE: gerar 10 valores de umidade de forma aleatoria entre 30% e 70% e mostre
os 10 valores, o valor medio, o maior valor e o menor valor.

3) VERIFICAR AMBIENTE: se temperatura media >= 30 e se a umidade media >=50%, emitir
alerta ¨ ATENCAO . Temperatura e umidade ACIMA do LIMITE

4) SAIR
*/ 

//opção 1: Temperatura



//Temperatura
float Temperatura()
{
int g,n,Ma,me;
int t[10];
int v=0, w = 0;
float Me;


system("cls");
srand( (unsigned)time(NULL));

for(int i=1;i<=10;i++)
{
n=20+rand()%20;
printf("Temperatura %d: %d\n\n",i,n);
sleep(1);

v=v+n;
w++;

if(i==1)
	{
		Ma=n;
	    Me=n;
		me=n;
		
		g++;
	}
	//maior numero
	else if(n>Ma)
	{
		Ma=n;
	}
	
	//menor numero
	else if(n<me)
	{
		me=n;
	}
	
             
//recebimento de valores	
t[i-1]=n;

}



Me = (float)v/w;
//Tabela de informações
system("cls");
printf("\nOrdem\tTemperatura (C)\t       Temperatura\n  \t\t\t  Maior\t  Media\t  Menor \n");	

for(int i=1;i<=10;i++)
{	
    printf("\n  %d\t     %d",i,t[i-1]);
    if(i==5) printf("\t\t   %d\t   %.2f\t   %d",Ma,Me,me);
}

 return Me;


}

//opção 2:Umidade
float Umidade()
{
int g,n,te=0,u=0,Ma,me;
int t[10];
float Me;

system("cls");
srand( (unsigned)time(NULL));

for(int i=1;i<=10;i++)
{
n=30+rand()%40;
printf("Umidade %d: %d\n\n",i,n);
sleep(1);

te=te+n;
u++;

if(i==1)
	{
		Ma=n;
	    Me=n;
		me=n;
		
		g++;
	}
	//maior numero
	else if(n>Ma)
	{
		Ma=n;
	}
	
	//menor numero
	else if(n<me)
	{
		me=n;
	}
	

	t[i-1] = n;
}

Me = (float)te/u;
//Tabela de informações
system("cls");
printf("\nOrdem\tUmidade (C)\t       Umidade\n  \t\t\t  Maior\t  Media\t  Menor \n");	

for(int i=1;i<=10;i++)
{	
  printf("\n  %d\t     %d",i,t[i-1]);
  if(i==5) printf("\t\t   %d\t   %.2f\t   %d",Ma,Me,me);
}

return Me;


}


//opção 3: Verificar Ambiente

void verificar(float temp,float umid)
{
system("cls");
printf("\nMedias\n");
printf("\nTemperatura\tUmidade\n\n");
printf("%.2f\t\t%.2f\n\n",temp,umid);

if(temp>=30 && umid>=50)
{
printf("\n° ATENCAO! Temperatura e umidade ACIMA do LIMITE.");	
}
else
{
printf("\n° Temperatura e umidade dentro do esperado!")	;
}


}

//opção 0: Finalizar

void finalizar()
{
system("cls");
printf("\nSaindo");
sleep(1);

printf("."); 
sleep(1);
printf("."); 
sleep(1);
printf("."); 
sleep(1);
printf("."); 
sleep(1);

system("cls");
printf("\nPressione qualquer tecla para continuar!\n");	
}

int opções(int opcao, float *a, float *b)
{


switch(opcao)
	{
		case 1:
		*a=Temperatura();
		sleep(5);
        system("cls");
		break;
		
		case 2:
		*b=Umidade();
	    sleep(5);
        system("cls");
		break;
		
		case 3:
		verificar(*a,*b);
		sleep(5);
        system("cls");
		break;
		
		case 0:
	    finalizar();
		break;
		
		default:
		printf("\nOpcao invalida");
		sleep(1);
        system("cls");
		break;
	
	}
	
return opcao;
}


int menu()
{
int opcao;

printf("\n\n\t\tMenu\n");
printf("\n1. Temperatura");
printf("\n2. Umidade");
printf("\n3. Verificar Ambiente");
printf("\n0. Sair\n\n");

printf("\nOpcao: ");
scanf("%d",&opcao);
return opcao;	
}


int main()
{
int opcao,escolha;
float a, b;

	do
	{
	opcao=menu();
	escolha=opções(opcao, &a, &b);	
	}while(opcao!=0);
	
	return 0

 

 

  • Curtir 1
  • Obrigado 1
Postado

Olá tudo bem, espero que esteja bem! Seu enunciado, quando eu leio, impressiona ser sobre vetores (type array in c). Fica evidente com a construção abaixo.

Veja

  Em 30/04/2022 às 05:24, Marcelo dos Santos disse:
int Temperatura()
{
int i,g,n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,Ma,Me,me;
Expandir  

`t1-10` é, usualmente, um problema de expressão de array: são 10 variáveis contíguas|vizinhas, sendo analiticamente o que define um tipo vetor. A título de curiosidade, o endereço da variável `t10` é menor que `t1` na maioria das implementações e sua diferença (`t1` - `t10`) tem resultado 9.

Observe

_shell_.png.9cd9433007adef1d6d1fcecce2e4c13b.png

Assim como em um vetor &t10 + 9 = &t1;

Logo

Esse enunciado fica simples|conveniente, se implementar sobre vetores, penso ser o caso.

  Em 30/04/2022 às 11:39, Flávio Pedroza disse:
o valor medio, o maior valor e o menor valor.
Expandir  

Porque valor médio (mediana), quase sempre é a média dos valores centrais de uma lista de valores, implicando vetor.

image.png.6886e748f1126971a62f863ef4c49f95.png

Mesmo assim, depende ainda dos assuntos|matérias que estudou.

  • Curtir 1
Postado

@Marcelo dos Santos   nessa opção 3 , você enviou o valor a e b que não tem nenhum valor conhecido ,  aí não consegue mostrar a media

int opções(int opcao)
{
  int a = 0,b=0; // precisa inicializar essas variaveis com os valores adequados
  switch(opcao)
  {
  case 1:
    a=Temperatura();
    Sleep(5000);
    system("cls");
    break;
  case 2:
    b=Umidade();
    Sleep(5000);
    system("cls");
    break;
  case 3:
    verificar(a,b);
    Sleep(5000);
    system("cls");
    break;

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...