S1nnless
What is folding?
Eu tenho um trabalho para fazer. Eu já fiz o codigo, mas dá-me um erro do windows a executar, aparecendo a famosa janela de terminar programa. Eis o código e o enunciado do problema:
Alguma ideia?
enunciado disse:Considere um sistema termo-acumulador, existente numa unidade industrial de produção de azeite. A finalidade do sistema é fornecer a água necessária para o processo de fabrico a uma temperatura pré-determinada. Para efeitos deste sistema considere que a temperatura têm que estar compreendida entre os 40ºC e 45ºC.
Os elementos que constituem o sistema são um sistema de aquecimento da água que deve ser activado sempre que a temperatura da água desce abaixo da temperatura mínima e desligado sempre que a água atinge a teperatura máxima. Além disso existem um dispositivo que mede a quantidade de água consumida nesse período.
Além de assegurar estas funções o sistema faz também de gestão de ocorrências para o cálculo de eficiência e de consumo de água quente da unidade.
O sistema simulado a construir deverá executar as seguintes operações e cumprir os seguintes requisitos:
1.Inicializar o estado do sistema, colocando todas as variáveis a zero, excepto a temperatura da água que deve ser inicializada com 20ºC.
2.Após a inicialização do sistema, este deve ficar a funcionar por um dado período (numero de ciclos) aleatório.
3.A temperatura da água em cada momemnto é determinada aleatoriamente num intervalo entre 39ºC e 46ºC.
4.Sempre que a temperatura desce abaixo dos 40ºC deve ser ligado o sistema de aquecimento. No sistema simulado isso traduz-se por uma mensagem para o utilizador a informar que o sistema de aquecimento foi activado e qual a temperatura da água nesse momento.
5.O tempo que o sistema está ligado também é gerado alatoriamente num intervalo compreendido entre 5 e 10 minuntos. Tempo após o qual se considera que a temperatura da água atinge o limite superior.
6.Sempre que a temperatura sobe acima de 45ºC deve ser desligado o sistema de aquecimento. No sistema simulado, isso traduz-se por uma mensagem para o utilizador a informar que o sistema de aquecimento foi desligado e qual a temperatura da água nesse momento.
7.Para que se fique com um historial de todo o processo de funcionamento do sistema de aquecimento é necessário guardar as ocorrências. A informação a guardar deve ser o tempo que o sistema de aquecimento esteve ligado. E os litros de água consumidos nesse período, gerado aleatóriamente entre 0 e 10.000 litros.
Página 2
8.No final o programa deve apresentar a lista dos tempos em que o aquecimento esteve ligado e o tempo total. Além disso deve apresentar o número de litros de água consumidos no período. Para o cálculo de eficiência do sistema deve ser apresentado o valor do rácio > segundos gastos no aquecimento de água/litros consumidos.
O programa deve permitir ao utilizador fazer várias simulações para uma mesma execução do programa. Deverá támbem existir uma opção de configuração do sistema que permita redefinir a temperatura máxima, a temperatura mínima e a temperatura inicial da água.
Para a resolução do problema, siga a metodolofia de desenvolvimento de programas utilizada nas aulas. A documentação do código, a sua estruturação e qualidade da solução serão factores importantes de avaliação
Código:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 10000
int inic_random()
{
long ultime;
time(&ultime);
srand((unsigned)ultime);
}
main()
{
int tempAgua=20;
int quantAgua=0, sisAquecimento=0, numciclos=0, tempoSis=0, consumo=0, opcao=0, TempoTotal=0, racio=0, tempMin=40, tempMax=45;
FILE *lista;
printf("\n\n\t Menu Inicial\n");
printf("1 - Iniciar o sistema\n");
printf("2 - Apresentar o historial\n");
printf("3 - Apresentar a listagem final\n");
printf("4 - Realizar nova simulação\n");
printf("5 - Redefinir a temperatura inicial, máxima e mínima da água\n");
printf("6 - Encerrar o programa\n");
scanf("%d", &opcao);
switch(opcao)
{
case 1: case 4:
inic_random();
numciclos=rand()%100;
inic_random();
tempAgua=39+rand()%7;
printf("A temperatura da água é de %d ºC\n", tempAgua);
fprintf(lista,"A temperatura da água é de %d ºC\n", tempAgua);
if (tempAgua<tempMin)
{
sisAquecimento=1;
printf("O sistema de aquecimento da água entrou em funcionamento, devido à temperatura dessa ser inferior a 40ºC\n");
fprintf(lista,"O sistema de aquecimento da água entrou em funcionamento, devido à temperatura dessa ser inferior a 40ºC\n");
inic_random();
tempoSis=5+rand()%5;
printf("O sistema de aquecimento da água manteve-se em funcionamento durante %d minutos. A água encontra-se presentemente a 45ºC\n", tempoSis);
scanf("%d", &tempoSis);
fprintf(lista,"O sistema de aquecimento da água manteve-se em funcionamento durante %d minutos. A água encontra-se presentemente a 45ºC\n", tempoSis);
TempoTotal = TempoTotal + tempoSis;
}
if (tempAgua>tempMax)
{
sisAquecimento=0;
printf("O sistema de aquecimento da água desligou-se, devido à temperatura dessa ser %d\n", tempAgua);
fprintf(lista,"O sistema de aquecimento da água desligou-se, devido à temperatura dessa ser %d\n", tempAgua);
}
else
{
printf("A temperatura da água é de %d ºC\n", tempAgua);
fprintf(lista,"A temperatura da água é de %d ºC\n", tempAgua);
}
break;
case 2:
printf("O sistema de aquecimento da água esteve ligado durante %d minutos\n");
fprintf(lista,"O sistema de aquecimento da água esteve ligado durante %d minutos\n");
inic_random();
consumo=rand()%10000;
printf("O consumo de água foi de %d litros\n");
scanf("%d", &consumo);
fprintf(lista,"O consumo de água foi de %d litros\n");
break;
case 3:
racio = tempoSis * 60 / consumo;
fprintf(lista,"O racio de eficiência do sistema é de %d s/l\n", racio);
break;
case 5:
printf("Introduza qual a temperatura maxima desejada\n");
scanf("%d", &tempMax);
printf("Introduza a temperatura minima desejada\n");
scanf("%d", &tempMin);
printf("Introduza a temperatura inicial desejada\n");
scanf("%d", &tempAgua);
break;
case 6:
break;
}
fclose(lista);
return 0;
}
Alguma ideia?