Advertisement
Cividati

Beta2

Nov 20th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h> //getch
  4. #include <locale.h> //acentuação
  5. #include <string.h>
  6.  
  7.  
  8. char seleciona_menu()
  9. {
  10.     char op;
  11.     printf("selecione uma das opções\n"
  12.            "0.Sair\n"
  13.            "1.Jogar\n"
  14.            "2.Ranking\n"
  15.            "R.");
  16.     scanf ("%s",&op);
  17.     system ("cls");
  18.  
  19.     return op;
  20. }
  21.  
  22. struct registro
  23. {
  24.     char nome[50];
  25.     int pontuacao;
  26.     struct registro *esq, *dir;
  27.     char info;
  28.  
  29. };
  30. typedef struct registro* registroptr;
  31.  
  32. // Funcao para criar o primeiro no de uma lista circular duplamente ligada
  33. void criad(registroptr *lista,char x[], int pont)
  34. {
  35.     registroptr p;
  36.     p = (registroptr)malloc(sizeof(struct registro));
  37.     strcpy(p->nome,x);
  38.     p->pontuacao=pont;
  39.     p->esq = p;
  40.     p->dir = p;
  41.     *lista = p;
  42. }
  43.  
  44.  
  45.  
  46. // Funcao para inserir um no a direita do no apontado por p em uma lista circular duplamente ligada
  47. void inseredir(registroptr *p,char x[], int pont)
  48. {
  49.  
  50.     registroptr q;
  51.     registroptr d; // ponteiro para o no a direita de p
  52.     q = (registroptr)malloc(sizeof(struct registro));
  53.  
  54.     strcpy(q->nome,x);
  55.     q->pontuacao=pont;
  56.  
  57.     d = (*p)->dir;
  58.     d->esq = q;
  59.     q->dir = d;
  60.     q->esq = *p;
  61.     (*p)->dir = q;
  62. }
  63.  
  64. void insere_auto (registroptr *p, char nome[], int pont)
  65. {
  66.     registroptr q;
  67.     for(q = *p;q->dir!=*p; q=q->dir)
  68.         if(q->info <= pont )
  69.         {
  70.             inseredir(&q->esq, nome, pont);
  71.             printf ("inserido1!\n");
  72.             return;
  73.         }
  74.     if (q->info <=pont)
  75.         inseredir(&q->esq, nome, pont);
  76.         printf ("inserido2!\n");
  77.  
  78. }
  79.  
  80. void mostrar_lista (registroptr p)
  81. {
  82.     registroptr q;
  83.  
  84.     system ("cls");
  85.     printf ("Nome || Pontuação\n");
  86.     for(q = p;q->dir!=p; q=q->dir)
  87.         printf ("%s || %d\n", q->nome, q->pontuacao);
  88.     printf ("%s || %d\n", q->nome, q->pontuacao);
  89.     getch();
  90.     system ("cls");
  91. }
  92.  
  93. int main()
  94. {
  95.     setlocale(LC_ALL, "Portuguese"); //habilitando acentos
  96.     char op;
  97.     FILE *arquivo;
  98.     printf("Bem vindo ao Joguinho\n");
  99.     op = seleciona_menu();
  100.     while (op!='0')
  101.     {
  102.         switch(op)
  103.         {
  104.         case '1':
  105.  
  106.             system ("cls");
  107.             char nome[50];
  108.             printf ("Digite seu primeiro nome: ");
  109.             fflush(stdin);
  110.             gets(nome);
  111.             system ("cls");
  112.  
  113.             printf ("escolha a dificuldade\n"
  114.                     "1.Funções de primeiro grau\n"
  115.                     "2.Funções de segundo grau\n"
  116.                     "3.Funções de terceiro grau\n"
  117.                     "R.");
  118.             scanf ("%s",&op);
  119.  
  120.             //funcao_rafael(op);
  121.              //op nesse caso é a dificuldade
  122.  
  123.             int pontuacao= 30;
  124.  
  125.             registroptr lista = NULL;
  126.  
  127.             char rnome[50];
  128.             int rpontuacao;
  129.             arquivo = fopen("arquivo.txt", "r");
  130.             if (arquivo==NULL)
  131.                 printf ("erro ao abrir o arquivo\n");
  132.             else
  133.                 while((fscanf(arquivo,"%s %d\n",rnome, &rpontuacao))!=EOF)
  134.                     if(lista==NULL)
  135.                         criad(&lista,rnome,rpontuacao);
  136.  
  137.                     else
  138.                     {
  139.                         inseredir(&lista,rnome,rpontuacao);
  140.                         lista=lista->dir;
  141.                     }
  142.             lista=lista->dir;
  143.  
  144.             fclose(arquivo);
  145.             mostrar_lista(lista);
  146.             insere_auto(&lista, nome, pontuacao);
  147.             getch();
  148.             mostrar_lista(lista);
  149.  
  150.             //funcao que coloca a pontuacao do jogador no lugar certo
  151.  
  152.  
  153.             break;
  154.  
  155.         case '2':
  156.             arquivo = fopen("arquivo.txt","r");
  157.             printf ("Pontos || Nome\n");
  158.             while((fscanf(arquivo,"%s %d\n",nome, &pontuacao))!=EOF)
  159.                 printf ("%d || %s\n", pontuacao,nome);
  160.             printf ("pressione alguma tecla pra continuar...");
  161.             getch();
  162.  
  163.             system ("cls");
  164.             break;
  165.  
  166.         default:
  167.             printf ("opção inválida! Pressione qualquer tecla\n");
  168.             getch();
  169.             system ("cls");
  170.             break;
  171.         }
  172.         op = seleciona_menu();
  173.     }
  174.     system ("color d");
  175.     printf ("obrigado por jogar :)");
  176.  
  177.  
  178.  
  179.     return 0;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement