Mudanças entre as edições de "Equipe7-2015-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 58: Linha 58:
 
#include <string.h>
 
#include <string.h>
 
   
 
   
#define FIM 6
+
#define FIM 7
 
   
 
   
 
typedef struct t_carro tipo_carro;
 
typedef struct t_carro tipo_carro;
Linha 65: Linha 65:
 
     int hora;
 
     int hora;
 
     int minuto;
 
     int minuto;
  };
+
};
 
   
 
   
 
struct t_carro {
 
struct t_carro {
Linha 74: Linha 74:
 
   struct horas *entrada;
 
   struct horas *entrada;
 
   tipo_carro *next;
 
   tipo_carro *next;
}*tail , *head;
+
}*tail;
 
   
 
   
 +
  tipo_carro *lista;
 
   
 
   
void listar_carro_por_placa(char placa[9])
+
 
 +
 
 +
 
 +
void atualizar_lista()
 
{
 
{
 +
tipo_carro *p;
 +
FILE *p_arq;
 +
 +
p_arq = fopen ("carros.dat","a" "w");
 
 
 +
if(lista!=NULL){
 +
for(p=lista;p!=NULL;p=p->next){
 +
fprintf(p_arq, "modelo:%s placa:%s marca:%s preco:%f\n",p->modelo,p->placa,p->marca,p->preco);
 +
}
 +
fclose(p_arq);
 +
}
 +
}
 +
 +
  
 +
void listar_carro_por_placa(char placa[9])
 +
{
 
tipo_carro *p;
 
tipo_carro *p;
  for (p = head; p != NULL && strcmp(p->placa,placa)!=0; p = p->next){
+
p=lista;
      printf("%s %s %s %f\n",p->modelo,p->placa,p->marca,p->preco);
+
 
  }
+
  while(p!=NULL && strcmp(p->placa,placa)!=0){
 +
p=p->next;
 +
  }
 +
    if(p!=NULL){
 +
printf("\n---------------------------------------------------------------------\n");
 +
printf("Modelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco);
 +
printf("\n---------------------------------------------------------------------\n");
 +
    }
 +
      else {
 +
        printf("\n---------------------------------------------------------------------");
 +
printf("\nCarro não encontrado!");
 +
        printf("\n---------------------------------------------------------------------\n");
 +
      }
 +
 
 
}
 
}
 +
 
   
 
   
 
int retirar_carro_estac(char placa[9])
 
int retirar_carro_estac(char placa[9])
Linha 92: Linha 125:
 
  tipo_carro *pp;
 
  tipo_carro *pp;
 
   
 
   
FILE *p_arq;
 
//Caso o código seja o primeiro da lista entrará no if, caso seja do meio ou do final entrará no else
 
if ((p_arq=fopen("carros.dat", "w")) == NULL) {
 
      printf("Problemas na abertura do arquivo\n");
 
        return;
 
 
 
 
 
if(head->placa==placa){
 
head=head->next;
 
free(pp);
 
}else{
 
 
   
 
   
for(pp=head;pp!=NULL && strcmp(pp->placa,placa)!=0;pp=pp->next){
+
pa=lista;
 +
for(pp=lista->next;pp!=NULL;pp=pp->next){
 +
    if(strcmp(placa,pp->placa)==0){
 +
pa->next=pp->next;
 +
free(pp);
 +
break;
 +
    }
 +
    else{
 
pa=pp;
 
pa=pp;
 +
    }
 
}
 
}
pa->next=pp->next;
 
free(pp);
 
}
 
if(pp!=NULL){
 
pa->next=pp->next;
 
}
 
return 0;
 
 
}
 
 
}
 
}
 +
 
   
 
   
 
int inserir_carro_estac()
 
int inserir_carro_estac()
Linha 124: Linha 144:
 
   int res;
 
   int res;
 
   float preco;
 
   float preco;
   tipo_carro *p = malloc (sizeof(tipo_carro));
+
   tipo_carro *p = malloc (sizeof(tipo_carro));
 
   if (!p)
 
   if (!p)
 
         return -1;
 
         return -1;
 
   
 
   
   printf("digite o modelo:\n");
+
   printf("Digite o modelo:\n");
 
   scanf("%s",p->modelo);
 
   scanf("%s",p->modelo);
   printf("digite a placa:\n");
+
   printf("Digite a placa:\n");
 
   scanf("%s",p->placa);
 
   scanf("%s",p->placa);
   printf("digite a marca:\n");
+
   printf("Digite a marca:\n");
 
   scanf("%s",p->marca);
 
   scanf("%s",p->marca);
   printf("digite o preco\n");
+
   printf("Digite o preco:\n");
 
   scanf("%f",&preco);
 
   scanf("%f",&preco);
 
+
 
   p->preco=preco;
 
   p->preco=preco;
 
   p->next = NULL;
 
   p->next = NULL;
 
 
  FILE *p_arq;
 
  if ((p_arq=fopen("carros.dat","a")) == NULL) {
 
    printf("Problemas na abertura do arquivo\n");
 
    return;
 
  }
 
 
if((res = fprintf(p_arq,"%s %s %s %0.2f\n",p->modelo,p->placa,p->marca,p->preco))==EOF) {       
 
        printf("Erro\n");
 
 
 
      }
 
 
 
  fclose(p_arq);
 
 
 
 
 
 
 
   
 
 
   
 
   
   if (tail==NULL) {
+
   if(lista==NULL){
     
+
lista = p;
      tail = head = p;
 
  }else {
 
   
 
  for(tail=head; tail->next !=NULL; tail=tail->next);
 
      tail->next = p;
 
      // tail = p;
 
 
   }
 
   }
  return 0;
+
    else{
 +
p->next = lista->next;
 +
lista->next = p;
 +
    }
 
}
 
}
+
 
 
void listar_carros()
 
void listar_carros()
 
{
 
{
int res;
+
char aux;
tipo_carro *p;
+
tipo_carro *p;
 
FILE *p_arq;
 
FILE *p_arq;
  if ((p_arq=fopen("carros.dat", "r")) == NULL) {
+
printf("Lista dos carros\n");
      printf("Problemas na abertura do arquivo\n");
+
p_arq = fopen("carros.dat","r");
          return;
+
aux = getc(p_arq);
  }
+
printf("LISTA DE CARROS DO ARQUIVO\n");
+
while(aux!=EOF){
while(1) {
+
printf("%c",aux);
    if((res = fscanf(p_arq,"%s %s %s %f",p->modelo,p->placa,p->marca,&p->preco))==EOF) {             break;
+
aux=getc(p_arq);
  }
+
}
  printf("modelo:%s placa:%s marca:%s preco:%0.2f\n",p->modelo,p->placa,p->marca,p->preco);
+
fclose (p_arq);
+
printf("\n-----------------------------------------\n");
}
+
printf("LISTA DE CARROS DA LISTA\n");
fclose(p_arq);
+
for(p = lista; p != NULL; p = p->next){
 
+
printf("\nModelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco);
 +
}
 +
 
 +
printf("\n-----------------------------------------\n");
 
}
 
}
+
+
 
+
 
struct horas *hora_atual()
 
struct horas *hora_atual()
 
{
 
{
Linha 209: Linha 210:
 
   return p;   
 
   return p;   
 
}  
 
}  
 
+
 
float media_precos(){
 
float media_precos(){
 +
 +
tipo_carro *p;
 +
char aux, *modelo_menor, *modelo_maior, *placa_maior,*placa_menor;
 +
float maior, menor,media=0,precototal=0,preco=0;
 +
int soma,cont=0;
 
 
tipo_carro *p;
+
p=lista->next;
float media, precototal,preco,ch;
 
int res,y,numdelinhas;
 
FILE *p_arq;
 
  if ((p_arq=fopen("carros.dat", "r")) == NULL) {
 
      printf("Problemas na abertura do arquivo\n");
 
          return;
 
          }
 
 
 
while( (ch=fgetc(p_arq))!= EOF ){
+
maior = p->preco;
if(ch == '\n')
+
placa_maior = p->placa;
          numdelinhas++;
+
    modelo_maior = p->modelo;
}
+
menor = p->preco;   
while(1) {  
+
placa_menor = p->placa;
    if((res = fscanf(p_arq,"%f",&p->preco))==EOF) {    p->preco=preco+precototal;
+
modelo_menor = p->modelo; 
p->preco=preco+precototal;
+
for(p = lista; p != NULL; p = p->next) {
media=precototal/numdelinhas;
+
precototal = precototal + p->preco;
printf("%0.2f",media);
+
cont = cont + 1;
break;
+
if(maior < p->preco) {
}
+
maior = p->preco;
 +
placa_maior = p->placa;
 +
            modelo_maior = p->modelo;
 +
}
 +
if(menor > p->preco) {
 +
menor = p->preco;
 +
placa_menor = p->placa;
 +
modelo_menor = p->modelo;
 +
}
 
}
 
}
+
media = precototal/cont;
/*while( (ch=fgetc(p_arq))!= EOF )
+
printf("\nMenor valor: %0.2f  modelo: %s", menor, modelo_menor);
if(ch == '\n')
+
printf("\nMaior valor: %0.2f  produto: %s", maior, modelo_maior);
  num++;*/
+
printf( "\nMedia de preço dos produtos: %0.2f", media);
fclose(p_arq);
 
 
}
 
}
 
+
 
void main()
 
void main()
 
{
 
{
 
   int opcao;
 
   int opcao;
   char aux1[9];
+
   char aux1[9],aux2[9];
 
   struct horas *p;
 
   struct horas *p;
   head = tail = NULL;
+
   lista = tail = NULL;
 
   
 
   
 
   do {
 
   do {
     printf("\n1-Listar por placa \n2-Retirar \n3-Inserir \n4-Listar todos \n5-Media dos precos \n6-Encerrar\n\nSelecione uma opcao:");
+
     printf("\n------------------------------\nMENU:\n\n1-Listar por placa \n2-Retirar carro\n3-Inserir carro\n4-Listar todos \n5-Media dos precos\n6-Atualizar arquivo\n7-Encerrar\n------------------------------\nSelecione uma opcao:");
 
     scanf("%d", &opcao);
 
     scanf("%d", &opcao);
 
     switch(opcao) {
 
     switch(opcao) {
 
     case 1:  
 
     case 1:  
         printf("qual a placa do carro que deseja consultar?\n");
+
         printf("Qual a placa do carro que deseja consultar?\n");
 
             scanf("%s",aux1);
 
             scanf("%s",aux1);
 
         listar_carro_por_placa(aux1);
 
         listar_carro_por_placa(aux1);
 
             break;
 
             break;
 
     case 2:
 
     case 2:
             printf("qual a placa do carro que deseja retirar?\n");
+
             printf("Qual a placa do carro que deseja retirar?\n");
 
             scanf("%s",aux1);
 
             scanf("%s",aux1);
 
             retirar_carro_estac(aux1);
 
             retirar_carro_estac(aux1);
Linha 269: Linha 275:
 
     case 5:
 
     case 5:
 
    media_precos();
 
    media_precos();
 +
    break;
 +
    case 6:
 +
    atualizar_lista();
 +
    break;
 
     default:
 
     default:
 
             break;
 
             break;
 
     }  
 
     }  
     /* exemplo de uso da função hora */
+
      
 
     p=hora_atual();
 
     p=hora_atual();
 
     printf("Hora %d minuto %d\n", p->hora, p->minuto);
 
     printf("Hora %d minuto %d\n", p->hora, p->minuto);
Linha 278: Linha 288:
 
   } while(opcao!=FIM);
 
   } while(opcao!=FIM);
 
}
 
}
 
+
  
  

Edição das 14h24min de 30 de junho de 2015

Integrantes

JOAO VITOR DA ANUNCIACAO

RAISSA LINHARES GOMES

VICTOR CESCONETTO DE PIERI


Descrição da atividade principal

Implemente um programa em linguagem C que faça o controle de estoque simplificado de automóveis. O programa deverá ter necessariamente um menu onde se poderá fazer a escolha pelas opções disponíveis em loop contínuo, mas com opção de saída. Deverá ler de um arquivo de dados informações sobre os carros (previamente cadastrados), poderá acrescentar novos veículos, eliminar veículos, e buscar um carro específico pela sua placa. Deverá ainda ter as opções de ordenar e imprimir a lista na tela de todos os veículos. também deverá gravar as alterações no mesmo arquivo de dados lido. Pra terminar, contar com uma opção de estatística dizendo qual o número de veículos, o maior, menor e valor médio dos veículos.

Descrição da atividade específica (dessa equipe)

Fazer uso
  1. Comando swith
  2. Lista encadeada
  3. Ponteiros
  4. Alocação Dinâmica de Memória
  5. Funções para tratamento de arquivo


Exemplo da estrutura (encadeada)
struct TCarro {
   char placa[9];
   char marca[20];
   char modelo[30];
   float preco;
   struct TCarro *prox;
};
Exemplo de arquivo (carros.dat)
cat carros.dat
AAB-1248 GM CORSA 18000
PTY-6548 VOLKS GOL 21500
MTB-6587 FIAT UNO 15000
AAB-8787 FORD FUSION 50000
LTX-1234 VOLKS FUSCA 8790

Atividades

Distribuição

Todos os integrantes da equipe participaram de todas as etapas da programação do projeto.

Desenvolvimento

Desenvolvemos nosso projeto buscando pensar por etapas, fazendo com que cada parte da função que estávamos trabalhando atualmente funcionasse, para que depois partíssemos para a próxima fase.

Conclusão

Concluímos que o conhecimento de cada conteúdo que vimos no semestre é estritamente necessário, pois todas as partes estarem interligadas e ao programar, se cometermos um pequeno erro, por menor que seja, pode fazer com que um programa não funcione.

Código fonte

<syntaxhighlight lang=c>

  1. include <time.h>
  2. include <stdio.h>
  3. include <stdlib.h>
  4. include <string.h>
  1. define FIM 7

typedef struct t_carro tipo_carro;

struct horas {

   int hora;
   int minuto;

};

struct t_carro {

 char placa[9];
 char marca[20];
 char modelo[30];
 float preco;
 struct horas *entrada;
 tipo_carro *next;

}*tail;

 tipo_carro *lista;


void atualizar_lista() { tipo_carro *p; FILE *p_arq;

p_arq = fopen ("carros.dat","a" "w");

if(lista!=NULL){ for(p=lista;p!=NULL;p=p->next){ fprintf(p_arq, "modelo:%s placa:%s marca:%s preco:%f\n",p->modelo,p->placa,p->marca,p->preco); } fclose(p_arq); } }


void listar_carro_por_placa(char placa[9]) { tipo_carro *p; p=lista;

 while(p!=NULL && strcmp(p->placa,placa)!=0){

p=p->next;

 }
   if(p!=NULL){

printf("\n---------------------------------------------------------------------\n"); printf("Modelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco); printf("\n---------------------------------------------------------------------\n");

   } 
     else {
       printf("\n---------------------------------------------------------------------");

printf("\nCarro não encontrado!");

       printf("\n---------------------------------------------------------------------\n");
     }	

}


int retirar_carro_estac(char placa[9]) {

tipo_carro *pa;
tipo_carro *pp;


	pa=lista;

for(pp=lista->next;pp!=NULL;pp=pp->next){ if(strcmp(placa,pp->placa)==0){ pa->next=pp->next; free(pp); break; } else{ pa=pp; } } }


int inserir_carro_estac() {

  int res;
  float preco;
  tipo_carro *p = malloc (sizeof(tipo_carro));
  if (!p)
       return -1;

  printf("Digite o modelo:\n");
  scanf("%s",p->modelo);
  printf("Digite a placa:\n");
  scanf("%s",p->placa);
  printf("Digite a marca:\n");
  scanf("%s",p->marca);
  printf("Digite o preco:\n");
  scanf("%f",&preco);

  p->preco=preco;
  p->next = NULL;

  if(lista==NULL){

lista = p;

  }
    else{

p->next = lista->next; lista->next = p;

    }

}

void listar_carros() { char aux; tipo_carro *p; FILE *p_arq; printf("Lista dos carros\n"); p_arq = fopen("carros.dat","r"); aux = getc(p_arq); printf("LISTA DE CARROS DO ARQUIVO\n"); while(aux!=EOF){ printf("%c",aux); aux=getc(p_arq); } fclose (p_arq); printf("\n-----------------------------------------\n"); printf("LISTA DE CARROS DA LISTA\n"); for(p = lista; p != NULL; p = p->next){ printf("\nModelo: %s \nPlaca: %s \nMarca: %s \nPreco: %f\n",p->modelo,p->placa,p->marca,p->preco); }

printf("\n-----------------------------------------\n"); }


struct horas *hora_atual() {

  time_t rawtime; 
  struct tm *tminfo; 
  struct horas *p;

  time ( &rawtime ); 
  tminfo = localtime ( &rawtime );

  if((p=(struct horas *)malloc(sizeof(struct horas)))==NULL)
     return NULL;
  p->hora = tminfo->tm_hour;
  p->minuto = tminfo->tm_min;

  return p;   

}

float media_precos(){

tipo_carro *p; char aux, *modelo_menor, *modelo_maior, *placa_maior,*placa_menor; float maior, menor,media=0,precototal=0,preco=0; int soma,cont=0;

p=lista->next;

maior = p->preco; placa_maior = p->placa;

   	modelo_maior = p->modelo;

menor = p->preco; placa_menor = p->placa; modelo_menor = p->modelo; for(p = lista; p != NULL; p = p->next) { precototal = precototal + p->preco; cont = cont + 1; if(maior < p->preco) { maior = p->preco; placa_maior = p->placa;

           		modelo_maior = p->modelo;

} if(menor > p->preco) { menor = p->preco; placa_menor = p->placa; modelo_menor = p->modelo; } } media = precototal/cont; printf("\nMenor valor: %0.2f modelo: %s", menor, modelo_menor); printf("\nMaior valor: %0.2f produto: %s", maior, modelo_maior); printf( "\nMedia de preço dos produtos: %0.2f", media); }

void main() {

 int opcao;
 char aux1[9],aux2[9];
 struct horas *p;
 lista	= tail = NULL;

 do {
   printf("\n------------------------------\nMENU:\n\n1-Listar por placa \n2-Retirar carro\n3-Inserir carro\n4-Listar todos \n5-Media dos precos\n6-Atualizar arquivo\n7-Encerrar\n------------------------------\nSelecione uma opcao:");
   scanf("%d", &opcao);
   switch(opcao) {
   case 1: 
   	    printf("Qual a placa do carro que deseja consultar?\n");
           scanf("%s",aux1);
   	    listar_carro_por_placa(aux1);
           break;
   case 2:
           printf("Qual a placa do carro que deseja retirar?\n");
           scanf("%s",aux1);
           retirar_carro_estac(aux1);
           break;
   case 3:
           inserir_carro_estac();
           break;
   case 4:
           listar_carros();
           break;
   case 5:

media_precos(); break;

   case 6:

atualizar_lista(); break;

   default:
           break;
   } 
   
   p=hora_atual();
   printf("Hora %d minuto %d\n", p->hora, p->minuto);
   free(p);
 } while(opcao!=FIM);

}



<< Equipe7-2015-1