O programa baseia-se nessa ideia:
figura1: Característica e ações do objeto Carro fonte da imagem: bdfatec.blogspot.com.br |
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*Aqui vamos criar o objeto carro através dessa struct*/
struct carro{
int motor;
int velocidade;
};
struct carro lista[5];
figura2: Exemplos de teste de consistência de dados Fonte da imagem:bdfatec.blogspot.com.br |
/*Construtor
Reparem que ele possui o mesmo nome que a nossa struct
As funções serão nossas ações(métodos) que o carro vai executar*/
void carro(int p){
lista[p].velocidade = 0;
lista[p].motor = 0;
}
/*Nos dois casos precisamos testar para ver se o carro já está ligado ou desligado*/
int ligar(int p){
if(lista[p].motor != 1)lista[p].motor=1;
else printf("\n\t O carro ja esta ligado!!");
return 0;
}
int desligar(int p){
if(lista[p].motor== 1)lista[p].motor=0;
else printf("\n\t O carro ja esta desligado!!");
return 0;
}
/*Nesse caso precisamos testar a velocidade para não passar de 100 ou ficar menor que 0*/
int acelerador(int p){
if(lista[p].velocidade < 100 && lista[p].motor==1)
lista[p].velocidade+=10;
else if(lista[p].motor==0)printf("\n\t Ligue o carro primeiro");
else printf("\n\t Voce chegou no limite de velocidade");
return 0;
}
int freio(int p){
if(lista[p].velocidade > 0 && lista[p].motor==1)
lista[p].velocidade-=10;
else if(lista[p].motor==0)printf("\n\t Ligue o carro primeiro");
else printf("\n\t Voce chegou no minimo de velocidade");
return 0;
}
main(){
int p=1,i=-1;
for(i=0;i<=4;i++)
carro(i); //chama o construtor
i=-1;
/*Aqui limitamos de 1 a 5 para poder "mexer" nos carros*/
while(p!=0){
while((i<1)||(i>5)){
printf("\n\tInsira o numero do carro (1 a 5): ");
scanf("%d",&i);
}
i--;
/*Com o laço while mantemos o menu até que 5 carros sejam inseridos*/
printf("\n\t MENU CARROS");
printf("\n\t 1- LIGAR");
printf("\n\t 2 - DESLIGAR");
printf("\n\t 3 - ACELERAR");
printf("\n\t 4 - FREIAR");
printf("\n\t 0 - SAIR");
printf("\n\t Resposta: ");
scanf("%d",&p);
if(p!=0){
/*Com o switch case chamamos a função correspondente*/
switch(p){
case 1:
ligar(i);
break;
case 2:
desligar(i);
break;
case 3:
acelerador(i);
break;
case 4:
freio(i);
break;
}//FIM SWITCH
i=-1;
}//FIM IF
}//FIM WHILE
system("cls"); //Limpa a tela
for(i=0;i<=4;i++){
printf("\n\t CARRO %d",i+1);
printf("\n\t velocidade.: %d \n\t motor.: %d",lista[i].velocidade,lista[i].motor);
}//FIM FOR
getch(); //segura a tela até um ENTER
} //FIM MAIN
Fonte: Autor:Arroyo, Gabriel. Atílio, Daniel.2012, Outubro
Adaptado:Arroyo,Gabriel.
Nenhum comentário:
Postar um comentário