Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h> //getch
- #include <locale.h> //acentuação
- #include <string.h>
- char seleciona_menu()
- {
- char op;
- printf("selecione uma das opções\n"
- "0.Sair\n"
- "1.Jogar\n"
- "2.Ranking\n"
- "R.");
- scanf ("%s",&op);
- system ("cls");
- return op;
- }
- struct registro
- {
- char nome[50];
- int pontuacao;
- struct registro *esq, *dir;
- char info;
- };
- typedef struct registro* registroptr;
- // Funcao para criar o primeiro no de uma lista circular duplamente ligada
- void criad(registroptr *lista,char x[], int pont)
- {
- registroptr p;
- p = (registroptr)malloc(sizeof(struct registro));
- strcpy(p->nome,x);
- p->pontuacao=pont;
- p->esq = p;
- p->dir = p;
- *lista = p;
- }
- // Funcao para inserir um no a direita do no apontado por p em uma lista circular duplamente ligada
- void inseredir(registroptr *p,char x[], int pont)
- {
- registroptr q;
- registroptr d; // ponteiro para o no a direita de p
- q = (registroptr)malloc(sizeof(struct registro));
- strcpy(q->nome,x);
- q->pontuacao=pont;
- d = (*p)->dir;
- d->esq = q;
- q->dir = d;
- q->esq = *p;
- (*p)->dir = q;
- }
- void insere_auto (registroptr *p, char nome[], int pont)
- {
- registroptr q;
- for(q = *p;q->dir!=*p; q=q->dir)
- if(q->info <= pont )
- {
- inseredir(&q->esq, nome, pont);
- printf ("inserido1!\n");
- return;
- }
- if (q->info <=pont)
- inseredir(&q->esq, nome, pont);
- printf ("inserido2!\n");
- }
- void mostrar_lista (registroptr p)
- {
- registroptr q;
- system ("cls");
- printf ("Nome || Pontuação\n");
- for(q = p;q->dir!=p; q=q->dir)
- printf ("%s || %d\n", q->nome, q->pontuacao);
- printf ("%s || %d\n", q->nome, q->pontuacao);
- getch();
- system ("cls");
- }
- int main()
- {
- setlocale(LC_ALL, "Portuguese"); //habilitando acentos
- char op;
- FILE *arquivo;
- printf("Bem vindo ao Joguinho\n");
- op = seleciona_menu();
- while (op!='0')
- {
- switch(op)
- {
- case '1':
- system ("cls");
- char nome[50];
- printf ("Digite seu primeiro nome: ");
- fflush(stdin);
- gets(nome);
- system ("cls");
- printf ("escolha a dificuldade\n"
- "1.Funções de primeiro grau\n"
- "2.Funções de segundo grau\n"
- "3.Funções de terceiro grau\n"
- "R.");
- scanf ("%s",&op);
- //funcao_rafael(op);
- //op nesse caso é a dificuldade
- int pontuacao= 30;
- registroptr lista = NULL;
- char rnome[50];
- int rpontuacao;
- arquivo = fopen("arquivo.txt", "r");
- if (arquivo==NULL)
- printf ("erro ao abrir o arquivo\n");
- else
- while((fscanf(arquivo,"%s %d\n",rnome, &rpontuacao))!=EOF)
- if(lista==NULL)
- criad(&lista,rnome,rpontuacao);
- else
- {
- inseredir(&lista,rnome,rpontuacao);
- lista=lista->dir;
- }
- lista=lista->dir;
- fclose(arquivo);
- mostrar_lista(lista);
- insere_auto(&lista, nome, pontuacao);
- getch();
- mostrar_lista(lista);
- //funcao que coloca a pontuacao do jogador no lugar certo
- break;
- case '2':
- arquivo = fopen("arquivo.txt","r");
- printf ("Pontos || Nome\n");
- while((fscanf(arquivo,"%s %d\n",nome, &pontuacao))!=EOF)
- printf ("%d || %s\n", pontuacao,nome);
- printf ("pressione alguma tecla pra continuar...");
- getch();
- system ("cls");
- break;
- default:
- printf ("opção inválida! Pressione qualquer tecla\n");
- getch();
- system ("cls");
- break;
- }
- op = seleciona_menu();
- }
- system ("color d");
- printf ("obrigado por jogar :)");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement