Publicidade cabeçário

sexta-feira, 19 de outubro de 2012

LPI - Struct e Funções

Fala pessoal, vou postar aqui o programa de Struct que eu fiz com o Daniel Atílio. Lembrando a todos que tiverem interesse em conhecer um pouco mais sobre Linux acessem:terminal de informação.
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];
Exemplos de Consistência de Dados
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.