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 53: Linha 53:
 
=Código fonte=
 
=Código fonte=
 
<syntaxhighlight lang=c>
 
<syntaxhighlight lang=c>
 +
#include <time.h>
 
#include <stdio.h>
 
#include <stdio.h>
 +
#include <stdlib.h>
 +
#include <string.h>
 +
 +
#define FIM 6
 +
 +
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 , *head;
 +
 +
 +
void listar_carro_por_placa(char placa[9])
 +
{
 +
 +
 +
tipo_carro *p;
 +
  for (p = head; p != NULL && strcmp(p->placa,placa)!=0; p = p->next){
 +
      printf("%s %s %s  %f\n",p->modelo,p->placa,p->marca,p->preco);
 +
  }
 +
}
 +
 +
int retirar_carro_estac(char placa[9])
 +
{
 +
tipo_carro *pa;
 +
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=pp;
 +
}
 +
pa->next=pp->next;
 +
free(pp);
 +
}
 +
if(pp!=NULL){
 +
pa->next=pp->next;
 +
}
 +
return 0;
 +
 +
}
 +
}
 +
 +
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;
 +
 
 +
  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) {
 +
     
 +
      tail = head = p;
 +
  }else {
 +
   
 +
  for(tail=head; tail->next !=NULL; tail=tail->next);
 +
      tail->next = p;
 +
      // tail = p;
 +
  }
 +
  return 0;
 +
}
 +
 +
void listar_carros()
 +
{
 +
int res;
 +
tipo_carro *p;
 +
FILE *p_arq;
 +
  if ((p_arq=fopen("carros.dat", "r")) == NULL) {
 +
      printf("Problemas na abertura do arquivo\n");
 +
          return;
 +
  }
 +
 +
while(1) {
 +
    if((res = fscanf(p_arq,"%s %s %s %f",p->modelo,p->placa,p->marca,&p->preco))==EOF) {              break;
 +
  }
 +
  printf("modelo:%s placa:%s marca:%s preco:%0.2f\n",p->modelo,p->placa,p->marca,p->preco);
 +
 +
}
 +
fclose(p_arq);
 +
 
 +
}
 +
 +
 +
 +
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;
 +
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 ){
 +
if(ch == '\n')
 +
          numdelinhas++;
 +
}
 +
while(1) {
 +
    if((res = fscanf(p_arq,"%f",&p->preco))==EOF) {    p->preco=preco+precototal;
 +
p->preco=preco+precototal;
 +
media=precototal/numdelinhas;
 +
printf("%0.2f",media);
 +
break;
 +
}
 +
}
 +
 +
/*while( (ch=fgetc(p_arq))!= EOF )
 +
if(ch == '\n')
 +
  num++;*/
 +
fclose(p_arq);
 +
}
  
 
void main()
 
void main()
 
{
 
{
   printf("Exemplo"");
+
   int opcao;
 +
  char aux1[9];
 +
  struct horas *p;
 +
  head = tail = NULL;
 +
 +
  do {
 +
    printf("\n1-Listar por placa \n2-Retirar \n3-Inserir \n4-Listar todos \n5-Media dos precos \n6-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();
 +
    default:
 +
            break;
 +
    }
 +
    /* exemplo de uso da função hora */
 +
    p=hora_atual();
 +
    printf("Hora %d minuto %d\n", p->hora, p->minuto);
 +
    free(p);
 +
  } while(opcao!=FIM);
 
}
 
}
</syntaxhighlight>
 
  
  

Edição das 15h30min de 23 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 6

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 , *head;


void listar_carro_por_placa(char placa[9]) {


tipo_carro *p; for (p = head; p != NULL && strcmp(p->placa,placa)!=0; p = p->next){ printf("%s %s %s %f\n",p->modelo,p->placa,p->marca,p->preco); } }

int retirar_carro_estac(char placa[9]) {

tipo_carro *pa;
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=pp; } pa->next=pp->next; free(pp); } if(pp!=NULL){ pa->next=pp->next;

	}

return 0;

} }

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;
  
  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) {
     
     tail = head = p;
  }else {
    

for(tail=head; tail->next !=NULL; tail=tail->next);

      tail->next = p;
     // tail = p;
  }
  return 0;

}

void listar_carros() { int res; tipo_carro *p; FILE *p_arq; if ((p_arq=fopen("carros.dat", "r")) == NULL) {

    	  printf("Problemas na abertura do arquivo\n");
         return;
 }

while(1) {

    	 if((res = fscanf(p_arq,"%s %s %s %f",p->modelo,p->placa,p->marca,&p->preco))==EOF) {  					  	        	  break;

} printf("modelo:%s placa:%s marca:%s preco:%0.2f\n",p->modelo,p->placa,p->marca,p->preco);

} fclose(p_arq);

}


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; 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 ){ if(ch == '\n') numdelinhas++; } while(1) {

    	 if((res = fscanf(p_arq,"%f",&p->preco))==EOF) {  					  			p->preco=preco+precototal;

p->preco=preco+precototal; media=precototal/numdelinhas; printf("%0.2f",media); break; } }

/*while( (ch=fgetc(p_arq))!= EOF ) if(ch == '\n') num++;*/ fclose(p_arq); }

void main() {

 int opcao;
 char aux1[9];
 struct horas *p;
 head = tail = NULL;

 do {
   printf("\n1-Listar por placa \n2-Retirar \n3-Inserir \n4-Listar todos \n5-Media dos precos \n6-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();

   default:
           break;
   } 
   /* exemplo de uso da função hora */
   p=hora_atual();
   printf("Hora %d minuto %d\n", p->hora, p->minuto);
   free(p);
 } while(opcao!=FIM);

}



<< Equipe7-2015-1