Guest User

Untitled

a guest
May 20th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.82 KB | None | 0 0
  1. int lerbasedados(int argc, char *argv[], struct infocarros carros[DIMBASEDADOS]){
  2.     int linha, i, j, posicao, passouponto;
  3.     char nomeficheiroleitura[DIMSTRING], linhaficheiro[DIMLINHA];
  4.     FILE *ficheiroleitura;
  5.     if(argc>1) strcpy(nomeficheiroleitura, argv[1]);
  6.  
  7.     else{
  8.         printf("\nIntroduza o nome do ficheiro da base de dados: ");
  9.         scanf("%s", nomeficheiroleitura);
  10.     }
  11.     ficheiroleitura=fopen(nomeficheiroleitura, "r");
  12.     if (ficheiroleitura==NULL)
  13.         printf("\nImpossivel a abertura do ficheiro %s.\n", nomeficheiroleitura);
  14.     else {
  15.         printf("\nAbertura do ficheiro %s efectuada com sucesso.\n", nomeficheiroleitura);
  16.         linha=0;
  17.         while (fgets(linhaficheiro, DIMLINHA, ficheiroleitura)!=0){
  18.             posicao=2;                 
  19.             for (j=posicao; j<DIMSTRING+posicao; ++j) {
  20.                 carros[linha].marca[j-posicao]=linhaficheiro[j];
  21.                 if(linhaficheiro[j+1]==' ' && linhaficheiro[j+2]==' ') break;
  22.             }
  23.             posicao=posicao+2+strlen(carros[linha].marca);
  24.             for (j=posicao; j<DIMSTRING+posicao; ++j){
  25.                 carros[linha].modelo[j-posicao]=linhaficheiro[j];
  26.                 if(linhaficheiro[j+1]==' ' && linhaficheiro[j+2]==' ') break;
  27.             }
  28.             posicao=posicao+2+strlen(carros[linha].modelo);
  29.             for (j=posicao; j<DIMSTRING+posicao; ++j){
  30.                 carros[linha].versao[j-posicao]=linhaficheiro[j];
  31.                 if(linhaficheiro[j+1]==' ' && linhaficheiro[j+2]==' ') break;
  32.             }
  33.             posicao=posicao+2+strlen(carros[linha].versao);
  34.             carros[linha].portas=linhaficheiro[posicao]-'0';
  35.             posicao=posicao+3;
  36.             for (j=posicao; j<DIMSTRING+posicao; ++j){
  37.                 carros[linha].combustivel[j-posicao]=linhaficheiro[j];
  38.                 if(linhaficheiro[j+1]==' ' && linhaficheiro[j+2]==' ') break;
  39.             }
  40.             posicao=posicao+2+strlen(carros[linha].combustivel);
  41.             i=0;
  42.             for (j=posicao; j<DIMSTRING+posicao; ++j){
  43.                 ++i;
  44.                 if(linhaficheiro[j+1]==',') break;
  45.             }
  46.             carros[linha].preco=0;
  47.             passouponto = 0;
  48.             for(j=0; j<i; ++j){
  49.                 carros[linha].preco=carros[linha].preco+(linhaficheiro[posicao+i-j-1]-'0')*pow(10,j-passouponto);
  50.                 if(j==2) {
  51.                     ++j;
  52.                     passouponto = 1;
  53.                 }
  54.             }
  55.  
  56.             printf("%s  %s  %s  %d  %s  %d €\n", carros[linha].marca, carros[linha].modelo, carros[linha].versao, carros[linha].portas, carros[linha].combustivel, carros[linha].preco);
  57.             ++linha;
  58.         }
  59.     printf("\nForam lidas %d linhas.\n", linha);
  60.     return linha;
  61.     }
  62. }
  63.  
  64. void mostramarcas(struct infocarros carros[DIMBASEDADOS], int tamanho){
  65.     int i, j, haigual;
  66.     for(i=0; i<tamanho; ++i){
  67.         haigual=0;
  68.         for(j=0; j<i; ++j){
  69.             if(strcmp(carros[i].marca,carros[j].marca)==0){            
  70.                 haigual=1;
  71.                 break;
  72.             }  
  73.         }  
  74.         if (haigual==0) printf("%s\n", carros[i].marca);       
  75.     }
  76. }
Add Comment
Please, Sign In to add comment