Advertisement
Devastano

ajuda em C

Nov 13th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <locale.h>
  5. #define TV 10
  6. #define TC 100
  7.  
  8. const char FILENAME[] = "Arquivo35.txt";
  9.  
  10. typedef struct ficha {
  11.     char nome[TC];
  12.     int dependentes;
  13.     float salario;
  14.     int atendimentos;
  15.     char email[TC];
  16. } FICHA;
  17.  
  18. int lerDados(FICHA usuario[TV]);
  19. void exibirFichas(FICHA usuario[TV], int qntdUsuarios);
  20. void ordenarDadosInt (FICHA usuario[TV], int qntdUsuarios);
  21. void ordenarDadosString (FICHA usuario[TV], int qntdUsuarios);
  22. void gravarDados(FICHA usuario[TV]);
  23.  
  24. int main()
  25. {
  26.     setlocale(LC_ALL, "Portuguese");
  27.     FICHA usuario[TV];
  28.     int opcao, qntdUsuarios = 0;
  29.  
  30.     do {
  31.         printf("MENU DE OPCAO:\n");
  32.         printf("[1]: Carregar arquivo e exibir\n");
  33.         printf("[2]: Ordenar dados e exibir\n");
  34.         printf("[3]: Pesquisar dados e exibir\n");
  35.         printf("[4]: Gravar os dados ORDENADOS\n");
  36.         printf("[0]: Sair do programa\n");
  37.         printf("Opção: ");
  38.         scanf("%i", &opcao);
  39.         switch(opcao) {
  40.             case 0:
  41.                 printf("Fim do programa.\n");
  42.                 break;
  43.             case 1:
  44.                 qntdUsuarios = lerDados(usuario);
  45.                 exibirFichas(usuario, qntdUsuarios);
  46.                 break;
  47.             case 2:
  48.                 system("cls");
  49.                 printf("Ordenado em forma crescente de acordo com a quantidade de atendimentos:\n");
  50.                 printf("\n");
  51.                 ordenarDadosInt(usuario, qntdUsuarios);
  52.                 exibirFichas(usuario, qntdUsuarios);
  53.                 printf("\n");
  54.                 printf("Ordenado em ordem alfabética de acordo com o nome:\n\n");
  55.                 printf("\n");
  56.                 ordenarDadosString(usuario, qntdUsuarios);
  57.                 exibirFichas(usuario, qntdUsuarios);
  58.                 break;
  59.             case 3:
  60.                 break;
  61.             case 4:
  62.                 ordenarDadosInt(usuario, qntdUsuarios);
  63.                 gravarDados(usuario);
  64.                 break;
  65.             default:
  66.                 printf("Opção incorreta, tente novamente.\n");
  67.                 break;
  68.         }
  69.     } while(opcao);
  70.  
  71.     return 0;
  72. }
  73.  
  74. int lerDados(FICHA usuario[TV])
  75. {
  76.     system("cls");
  77.     FILE *arquivo;
  78.     int i = 0, qntdUsuarios = 0, campo = 1;
  79.     char c, aux[TC];
  80.     arquivo = fopen(FILENAME, "r");
  81.  
  82.     do {
  83.         c = getc(arquivo);
  84.         if(c != '\n' && c != EOF) {
  85.             aux[i] = c;
  86.             i++;
  87.         } else {
  88.             aux[i] = '\0';
  89.             switch(campo) {
  90.                 case 1:
  91.                     strcpy(usuario[qntdUsuarios].nome, aux);
  92.                     break;
  93.                 case 2:
  94.                     usuario[qntdUsuarios].dependentes =  atoi(aux);
  95.                     break;
  96.                 case 3:
  97.                     usuario[qntdUsuarios].salario = atof(aux);
  98.                     break;
  99.                 case 4:
  100.                     usuario[qntdUsuarios].atendimentos = atoi(aux);
  101.                     break;
  102.                 case 5:
  103.                     strcpy(usuario[qntdUsuarios].email, aux);
  104.                     campo = 0;
  105.                     qntdUsuarios++;
  106.                     break;
  107.             }
  108.             campo++;
  109.             i = 0;
  110.         }
  111.     } while(c != EOF);
  112.     fclose(arquivo);
  113.  
  114.     return qntdUsuarios;
  115. }
  116.  
  117. void exibirFichas(FICHA usuario[TV], int qntdUsuarios)
  118. {
  119.     int i;
  120.  
  121.     for(i = 0; i < qntdUsuarios; i++) {
  122.         printf("Usuário %i:\n", i + 1);
  123.         printf("Nome: %s\n", usuario[i].nome);
  124.         printf("Quantidade de dependentes: %i\n", usuario[i].dependentes);
  125.         printf("Salário: %.2f\n", usuario[i].salario);
  126.         printf("Quantidade de atendimentos: %i\n", usuario[i].atendimentos);
  127.         printf("E-mail: %s\n", usuario[i].email);
  128.         printf("\n");
  129.     }
  130. }
  131.  
  132. void ordenarDadosInt(FICHA usuario[TV], int qntdUsuarios)
  133. {
  134.     int i, trocou, aux, ls = qntdUsuarios - 1;
  135.  
  136.     do {
  137.         trocou = 0;
  138.         for(i = 0; i < ls; i++) {
  139.             if(usuario[i].atendimentos > usuario[i + 1].atendimentos) {
  140.                 aux = usuario[i].atendimentos;
  141.                 usuario[i].atendimentos = usuario[i + 1].atendimentos;
  142.                 usuario[i + 1].atendimentos = aux;
  143.                 trocou = 1;
  144.             }
  145.         }
  146.         ls--;
  147.     } while(trocou);
  148. }
  149.  
  150. void ordenarDadosString(FICHA usuario[TV], int qntdUsuarios)
  151. {
  152.     int i, trocou, ls = qntdUsuarios - 1;
  153.     char aux[TC];
  154.     aux[TC - 1] = '\0';
  155.     do {
  156.         trocou = 0;
  157.         for(i = 0; i < ls; i++) {
  158.             if(strcmp(usuario[i].nome, usuario[i + 1].nome) > 0) {
  159.                 strcpy(usuario[i].nome, aux);
  160.                 strcpy(usuario[i + 1].nome, usuario[i].nome);
  161.                 strcpy(aux, usuario[i].nome);
  162.                 trocou = 1;
  163.             }
  164.         }
  165.         ls--;
  166.     } while(trocou);
  167. }
  168.  
  169. void gravarDados(FICHA usuario[TV])
  170. {
  171.     system("cls");
  172.     FILE *arquivo;
  173.     arquivo = fopen(FILENAME, "w");
  174.     int i;
  175.     for(i = 0; i < TV; i++) {
  176.         fprintf(arquivo, "%s\n", usuario[i].nome);
  177.         fprintf(arquivo, "%i\n", usuario[i].dependentes);
  178.         fprintf(arquivo, "%.2f\n", usuario[i].salario);
  179.         fprintf(arquivo, "%i\n", usuario[i].atendimentos);
  180.         fprintf(arquivo, "%s\n", usuario[i].email);
  181.     }
  182.     fclose(arquivo);
  183.     printf("Dados salvos no '%s' com sucesso.\n\n", FILENAME);
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement