Erro a executar o programa no windows

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:

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?
 
Back
Topo