Jump to content
TutoDS

Via Verde em C

Recommended Posts

Boa tarde pessoal.
Sou novo a programar em C, programo diariamente em PHP e já programei em C#.
Porém agora tenho que fazer um projeto para a minha Licenciatura em C, um programa estilo Via Verde.
Mas estou com dificuldades, pois o meu pensamento está mais virado para Base de Dados.

Se alguém me puder tirar as seguintes dúvidas agradeço:

  • Como recomendam estruturar os ficheiros para guardar os dados do cliente, os veículos e as viagens?
  • Como posso fazer a pesquisa num ficheiro, por exemplo inserir 123456789 e aparecer me os dados do cliente com esse NIF?

Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By IgorExtreme
      Olá estou com problema nesta questão: "Escreva um programa que leia e armazene em um vetor os dados de 30 pessoas. Estes dados são o nome da pessoa, sua idade, e os nomes completos do pai e da mãe. A seguir, o programa deve identificar (e mostrar os índices) das pessoas que estão relacionadas por um parentesco avô-neto e irmão-irmão. No caso dos irmãos, deve ser informado ainda qual é o mais novo dos dois." O código é esse
      #include<stdio.h> #include<string.h> #define NUM 4 struct pessoa { char nome[20]; char mae[20]; char pai[20]; int idade; }; main() { struct pessoa vetorPessoas[NUM]; int i; printf("Digite os dados de %d pessoas:\n", NUM); for (i = 0; i < NUM; i++) { printf("Digite o nome da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].nome); printf("%s\n", vetorPessoas[i].nome); printf("Digite o nome da mae da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].mae); printf("%s\n", vetorPessoas[i].mae); printf("Digite o nome do pai da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].pai); printf("%s\n", vetorPessoas[i].pai); printf("Digite a idade da pessoa %d: ", i); fflush(stdin); scanf("%d", &vetorPessoas[i].idade); printf("%d\n", vetorPessoas[i].idade); if(!strcmp(vetorPessoas[0].pai, vetorPessoas[1].nome)){ printf("%s e avo de %s\n", vetorPessoas[1].pai, vetorPessoas[0].nome); } if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].nome)){ printf("%s e avo de %s\n", vetorPessoas[3].pai, vetorPessoas[2].nome); } } /*if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].nome)){ printf("%s e pai de %s\n", vetorPessoas[i].pai, vetorPessoas[i].pai); }*/ if(!strcmp(vetorPessoas[0].pai, vetorPessoas[1].pai)){ printf("Eles sao irmaos\n"); if(vetorPessoas[0].idade > vetorPessoas[1].idade){ printf("%s mais velho\n", vetorPessoas[0].idade); } else{ printf("%s e mais novo\n", vetorPessoas[1].idade); } } if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].pai)){ printf("Eles sao irmaos\n"); if(vetorPessoas[2].idade > vetorPessoas[3].idade){ printf("%s mais velho\n", vetorPessoas[2].idade); } else{ printf("%s e mais novo\n", vetorPessoas[3].idade); } } } O problema é que ele mostra quase tudo menos a parte se tal irmão é mais velho que o outro
    • By ricardo Oliv3ira
      Um cano cilíndrico de raio R1 vai ser usado para guardar outros dois canos de raio R2 e R3. Caso os dois últimos canos caibam dentro do primeiro, seu programa deve imprimir “Coube”. Caso contrário imprima “Não coube”.
      #include <stdio.h> int main(void) { float R1,R2,R3; printf("digite o 1º tamanho:"); scanf("%f",R1); printf("digite o 2º tamanho"); scanf("%f",R2); printf("digite o 3º tamanho"); scanf("%f",R3); if(R2,R3<R1){ printf("Coube"); } else(R2,R3>R1){ printf("Não Coube"); } return 0; }  
    • By Hodol
      Boa tarde, estou começando a programar e ainda não sei qual linguagem de programação eu devo iniciar. Me de uma luz, Obrigado!
    • By Cangemi
      Olá, alguém pode me ajudar? Estou fazendo um trabalho para estrutura de dados sobre arvore binária e eu decidi usar as funções fprintf para salvar as informações em arquivo e fscanf para ler essas informações e joga - las na minha função de inserção da arvore. O programa está funcionando, ele salva dos dados da arvore, só que, o que acontece é, que na hora de usar o fscanf ele não lê todas as informações contidas no arquivo, ele lê somente dois cadastros e joga pra função de inserção. Alguém sabe como eu posso corrigir isso?
       

       
      Arquivo fonte: 

       
      Código completo: 
      #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<ctype.h> #include<string.h> struct jogador { char nome [31]; char posicao [15]; char escalacao; float salario; int numero; struct jogador *esq; struct jogador *dir; }; struct jogador *raiz; struct jogador *pointer; struct jogador *r; FILE *p; char name [31]=" ", time[51]; char position [15]=" "; char lineup; float salary=0; int num=0, aux = 0; void cadastrar(); void carregar(); struct jogador *salvar(struct jogador *i); struct jogador *criar( struct jogador *a); // função para inserir struct jogador *listar(struct jogador *i, int x); struct jogador *all (struct jogador *i); main() { pointer = NULL; raiz = NULL; int op; do { printf("\t\t\t\t\t\t--------------------------\n"); printf("\t\t\t\t\t | *-*-*Time*-*-* |\n\t\t\t\t\t | |\n\t\t\t\t\t | | \n"); printf("\t\t\t\t\t | [1] Escolher o time |\n\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | [2] Contratar jogador |\n\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | [4] Listar crescente | \n\t\t\t\t\t | | \n"); printf("\t\t\t\t\t | [5] Listar decrescente | \n\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | [6] Excluir time | \n\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | [9] Salvar | \n\t\t\t\t\t | |\n"); printf("\t\t\t\t\t | [0] Sair |\n"); printf("\t\t\t\t\t\t--------------------------\n"); printf("\t\t\t\t\t Opcao [ ]\b\b"); scanf("%i",&op); switch(op) { case 1: { aux=0; cadastrar(); } break; case 2: { cadastrar(); } break; case 4: { if(raiz==NULL) { printf("\n Nao possui cadastro.\n"); system("pause"); } else { system("cls"); listar(pointer, 1); system("pause"); } } break; case 5: { if(raiz==NULL) { printf("\n Nao possui cadastro.\n"); system("pause"); } else { listar(pointer, 2); system("pause"); } } break; case 6: { if(raiz!=NULL) { pointer=all(pointer); printf("\n Todos os jogadores foram excluidos\n"); system("pause"); } else { printf("\n*****Nenhum jogador cadastrado*****.\n"); system("pause"); } } break; case 9: { p=fopen(time,"w"); fclose(p); salvar(pointer); } break; } system("cls"); }while(op!=0); } void cadastrar () { char resposta; char answer; do { if(aux==0) { system("cls"); printf("\n\n\n\n\n\n"); printf("\t\t\t\t\t Escolha o time para iniciar \n"); printf("\t\t\t\t\t\t___\b\b\b "); fflush(stdin); gets(time); strcat(time,".csv"); carregar(); fclose(p); aux = 1; return; } system("cls"); printf("\nNome do jogador: "); fflush(stdin); gets(name); printf("\nPosicao do jogador: "); fflush(stdin); gets(position); printf("\nO jogador e titular? <S/N>: "); answer=getche(); if(toupper(answer)=='S') { lineup = 'T'; } else { lineup = 'R'; } printf("\n"); printf("\nSalario pago ao jogador: "); scanf("%f",&salary); printf("\nInforme o numero do jogador: "); scanf("%i",&num); pointer=criar(pointer); printf("\nCadastrar novamente? <S/N>: "); resposta=getche(); printf("\n "); }while(toupper(resposta)=='S'); } struct jogador *criar( struct jogador *a) { if(a==NULL) { r=(struct jogador*)malloc(sizeof(struct jogador)); if(!r) { printf("\n Nao ha memoria"); exit(1); } strcpy(r->nome,name); strcpy(r->posicao,position); r->escalacao = lineup; r->salario = salary; r->numero = num; r->esq = NULL; r->dir = NULL; if(raiz==NULL) { raiz=r; } return r; } else { if(num>a->numero) { a->dir=criar(a->dir); } else { if(num<a->numero) { a->esq=criar(a->esq); } else { printf("\n Jogador ja cadastrado\n"); system("pause"); return a; } } } fclose(p); return a; } struct jogador *listar(struct jogador *i, int x) { if(i!=NULL&&x==1) { listar(i->esq, x); printf("\t\t\t\n----------\n"); printf("\n-----|%s|-----\n",i->nome); printf("\n-----|%s|-----\n",i->posicao); printf("\n-----|%c|-----\n",i->escalacao); printf("\n-----|%.2f|-----\n",i->salario); printf("\n-----|%i|-----\n",i->numero); listar(i->dir, x); } if(i!=NULL&&x==2) { listar(i->dir, x); printf("\n-----|%i|-----\n",i->numero); listar(i->esq, x); } return i; } struct jogador *all (struct jogador *i) { if(i->esq!=NULL) { all(i->esq); } if(i->dir!=NULL) { all(i->dir); } free(i); if(i==raiz) { raiz=NULL; i=raiz; } return i; } struct jogador *salvar(struct jogador *i) // função que salva os dados no arquivo, esta funcionando. { if(i!=NULL) { salvar(i->esq); p=fopen(time,"a"); strcpy(name,i->nome); strcpy(position,i->posicao); lineup = i->escalacao; salary = i->salario; num = i->numero; fprintf(p,"%s;%s;%c;%f;%i\n",name,position,lineup,salary,num); salvar(i->dir); } fclose(p); } void carregar() // função para ler os arquivos { if((p=fopen(time,"r"))==NULL) { return; } else { while(fscanf(p,"%[^;];%[^;];%c;%f;%i%*c",name,position,&lineup,&salary,&num)!=EOF) { // esse printf foi colocado pra saber quais numeros ele esta lendo. printf("\n-----|%i|-----\n",num); // ele le somente dois cadastros, se tiver mais ele não le, e por isso não joga na função de inserção. pointer=criar(pointer); // chamada da função de inserção, os dois unicos cadastros que são lidos, são inseridos corretamente. } system("pause"); } fclose(p); }  
    • By silver sanths
      #include <stdio.h> int main() { float valor_produto = 0, valor_pagamento = 0; int troco = 0; troco = valor_pagamento - valor_produto; scanf("%f", &valor_produto); scanf("%f", &valor_pagamento); if (valor_produto < valor_pagamento) { printf("100: %d", troco / 100); printf("\n50: %d", troco % 100 / 50); printf("\n2: %d", troco % 50 / 20); printf("\n10: %d", troco % 20 / 10); printf("\n5: %d", troco % 10 / 5); printf("\n2: %d", troco % 5 / 2); printf("\n1: %d", troco % 2 / 1); } return 1;
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.