Fernando Costa Posted December 23, 2016 at 10:27 AM Report Share #601475 Posted December 23, 2016 at 10:27 AM Fiz isto alguem poderia dar uma sugestão para melhorar isto?? Cumprimentos #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <string.h> //funçao para gerar golos em futebol americano e basquetebol visto que as pontuaçoes sao superiores as do futebol int Golo(){ int x=rand()%100;//gera um numero de o a 100 return x; } //funçao que calcula o ganho monetario float Ganho(float a, float b){//a=cota para o resultado b=aposta int ganho=a*b;//multiplica a cota pela a posta return ganho; } //funçao para gerar resultados de futebol int Golos(){ int x=rand() % 10;//gera um numero entre o 0 e 10 return x; } //função para gerar cotas float Cotas(){ int x; x=rand() % 100;//gera um numerp entre 0 e 100 x=x/10;//divide esse numero por 11 para criar um numero mais peque e com casas decimais x=x+1;//soma um pois o minimo de cota é 1.00 return x; } //função que serve para mostrar a lista de jogos char Mostra(char url[]){ char ch;//determina que é um arquivo par escrever FILE *arq;//identifica o arquivo(arq) como file em uso arq = fopen(url, "r");//abre o arquivo apenas em modo de leitura("r") while( (ch=fgetc(arq))!= EOF )//enquanto houver caracteres continua a leitura dos mesmos putchar(ch);//coloca os caracterees na consola fclose(arq);//fecha o arquivo } int Pontos(){ int x=rand()%2;//gera um numero de o a 100 return x; } int Ponto(){ int x=rand()%2;//gera um numero de o a 100 return x; } int main(int argc, char *argv[]) { int opcao; float carregado=0;//pois o saldo inicial é zero float aposta; while(opcao!=5){ printf("Selecione a sua opcao\n1-Ver/Carregar saldo\n2-Jogar\n3-Listar os jogos dispiniveis\n4-Gravar\n5-Sair\n"); scanf("%i", &opcao);//recebe a opcao if(opcao==1){//o utilizador pode ver e carrega o saldo int opcao2; printf("O seu saldo: %.3f euros\nDeseja carregar?\n1(sim) 2(nao)\n",carregado); scanf("%i", &opcao2);//recebe se pertender carregar if(opcao2==1){//caso pertenda carregar float a; printf("Com quanto deseja carregar?\n"); scanf("%f", &a);//recebe a quantia carregado=carregado+a;//atualiza saldo printf("\n"); } else//caso nao pertenda carregar {printf("Nao pode jogar\n\n");} } if(opcao==2){//o utlizador faz apostas int modalidade; printf("Qual a modalidade em que pertende apostar?\n1-Tenis\n2-Futebol\n3-Basquetebol\n"); scanf("%i", &modalidade); if(modalidade==1){//o utilizador escolhe Tenis como modalidade int jogo; float a=Cotas();//cota vitoria visitada float c=Cotas();//cota vitoria visitante Mostra("tenis.txt");//metodo que escreve os jogos disponiveis printf("\n"); printf("Em que jogo deseja apostar?\n"); scanf("%i",&jogo);//recebe a indicaçao do jogo printf("----------COTAS---------\n"); printf("CASA %.3f %.3f FORA\n",a,c);//apresenta as cotas printf("Quanto pertende apostar?\n"); scanf("%f", &aposta);//recebe a aposta if(aposta<=carregado){//caso possua o dinheiro que pertende apostar int e; printf("Em que resultado?\n1(Vitoria Visitado) 2(Vitoria Visitante)\n"); scanf("%i", &e);//recebe o prognostico int w=Pontos();//gera pontos visitado int z=Ponto();//gera pontos visitante if(w>z&&e==1){//caso escolha vitoria do visitado printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z); float x=Ganho(a, aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o slado printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } if(w<z&&e==2){//casoescolha vitoria de visitante printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z); float x=Ganho(c, aposta);//funçao dos ganhos carregado=carregado+(x-aposta);//atualiza o slado printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } if(w==z){//Como no tenis não há empates w=2; z=1; printf("Resultado\nCASA %.1i VS %.1i FORA\n",w, z); if(e==1){ float x=Ganho(a, aposta);//funçao dos ganhos carregado=carregado+(x-aposta);//atualiza o slado printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } if(e==2){ float x=Ganho(a, aposta);//funçao dos ganhos carregado=carregado-aposta;//atualiza o slado printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } } else{ printf("Perdeu o que apostou\n"); carregado=carregado-aposta;//atualiza o saldo printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado } } if(aposta>carregado) {printf("Nao possui essa quantida\n");} } if(modalidade==2){//o utilizador escolhe Futebol como modalidade int jogo; float a=Cotas();//cota vitoria visitado float b=Cotas();//cota empate float c=Cotas();//cota vitoria visitante Mostra("futebol.txt");//metodo que escreve os jogos disponiveis printf("Em que jogo deseja apostar?\n"); scanf("%i",&jogo);//recebe a indicaçao do jogo printf("----------COTAS---------\n"); printf("CASA %.3f %.3f %.3f FORA\n",a,b,c);//apresenta as cotas printf("Quanto pertende apostar?\n"); scanf("%f", &aposta);//recebe a aposta if(aposta<=carregado){//caso possua o dinheiro que pertende apostar int e; printf("Em que resultado?\n1(Vitoria Visitado) 2(Empate) 3(Vitoria Visitante)"); scanf("%i", &e);//recebe o prognostico int w=Golos();//gera golos visitado int z=Golos();//gera golos visitante printf("Resultado\nCASA %.1i VS %.i FORA\n",w, z); if(w==z&&e==2){//caso escolha empate float x=Ganho(b,aposta);//funçao dos ganhos carregado=carregado+(x-aposta);//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o slado atualizado } if(w>z&&e==1){//caso escolha vitoria do visitado float x=Ganho(a, aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } if(w<z&&e==3){//casoescolha vitoria de visitante float x=Ganho(c, aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } else {printf("Perdeu o que apostou\n"); carregado=carregado-aposta;//atualiza o saldo printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado } } if(aposta>carregado) {printf("Nao possui essa quantida\n");} } if(modalidade==3){//o utilizador escolhe Basquetebol como modalidade int jogo; float a=Cotas();//cota vitoria visitado float b=Cotas();//cota empate float c=Cotas();//cota vitoria visitante Mostra("nba.txt");//metodo que escreve os jogos disponiveis printf("Em que jogo deseja apostar?\n"); scanf("%i",&jogo);//recebe a indicaçao do jogo printf("----------COTAS---------\n"); printf("CASA %.3f %.3f %.3f FORA\n",a,b,c);//apresenta as cotas printf("Quanto pertende apostar?\n"); scanf("%f", &aposta);//recebe a aposta if(aposta<=carregado){//caso possua o dinheiro que pertende apostar int e; printf("Em que resultado?\n1(Vitoria Visitado) 2(Empate) 3(Vitoria Visitante)"); scanf("%i", &e);//recebe o prognostico int w=Golos();//gera golos visitado int z=Golos();//gera golos visitante printf("Resultado\nCASA %.1i VS %.i FORA\n",w, z); if(w==z&&e==2){//caso escolha empate float x=Ganho(b,aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } if(w>z&&e==1){//caso escolha vitoria do visitado float x=Ganho(a, aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o salod atualizado } if(w<z&&e==3){//casoescolha vitoria de visitante float x=Ganho(c, aposta);//funçao dos ganhos carregado=carregado+x;//atualiza o saldo printf("O seu saldo atual e: %.3f euros", carregado);//mostra o saldo atualizado } else {printf("Perdeu o que apostou\n"); carregado=carregado-aposta;//atualiza o saldo printf("O seu saldo e : %.3f euros",carregado);//mostra o saldo atualizado } } if(aposta>carregado) {printf("Nao possui essa quantida\n");} } } if(opcao==3){//lidar os jogos disponiveis printf("O jogos disponiveis sao:\n"); Mostra("lista.txt");//usa a funçao que permite mostrar o ficheiro com os jogos } if(opcao==4){//grava num ficheiro .txt de nome Resultadoos todos os resultados do jogos srand(time(NULL)); char url[]=("Resultadoos.txt"); FILE*arq; arq=fopen(url,"w"); fprintf(arq,"Resultados de Tenis\n\n"); //escreve num ficheiro todos os jogos de Tenis fprintf(arq,"Resultado\nJOGO 1 CASA %.1i VS %.1i FORA\n",2, 1); fprintf(arq,"Resultado\nJOGO 2 CASA %.1i VS %.1i FORA\n",0,2); fprintf(arq,"Resultado\nJOGO 3 CASA %.1i VS %.1i FORA\n",1, 2); fprintf(arq,"Resultado\nJOGO 4 CASA %.1i VS %.1i FORA\n",2, 0); fprintf(arq,"Resultado\nJOGO 5 CASA %.1i VS %.1i FORA\n",2, 1); fprintf(arq,"Resultados de Futebol\n\n"); int j; for(j=1;j<31;j++){//escreve num ficheiro todos os jogos de futebol int w=Golos(); int z=Golos(); fprintf(arq,"JOGO %i CASA %.1i VS %.1i FORA\n",j,w,z); } fprintf(arq,"Resultados da NBA\n\n"); int h; for(h=1;h<11;h++){//escreve num ficheiro todos os resultados de Basquetebol fprintf(arq,"JOGO %.i CASA %.1i VS %.1i FORA\n",h,Golo(),Golo()); } } } return 0; } Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 23, 2016 at 11:39 AM Report Share #601478 Posted December 23, 2016 at 11:39 AM isso é uma pergunta que depende sempre do teu nível de conhecimento da linguagem ... acredito que se fosse meter as mãos nisso não irias perceber o que tinha feito o melhor seria descreveres alguma secção de código que não te pareça bem, e poderemos começar por ai IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
code36u4r60 Posted December 26, 2016 at 03:56 AM Report Share #601505 Posted December 26, 2016 at 03:56 AM (A minha primeira tentativa de ajuda) Boas... Depois de uma olhadela rápida... Se fosse EU... Criava funções para os "menus"... e também para muito do código que esta no main... Tens uma função principal muito "pesada / cheio" . Tens duas funções que fazem a mesma coisa (linha 39 e 43) Para mim as funções as funções onde retornas um valor rand são todas a mesma coisa, eu criava uma só e mediante uma dado valor max assim retornava um valor. Tu incluíste a biblioteca time.h mas não lhe estas a dar uso (certo?), vê isto -> https://www.tutorialspoint.com/c_standard_library/c_function_rand.htm Em vez de "if's" eu optaria por "switch case" Não testei o teu código e só olhei mesmo de raspão... por isso não tenho muito mais para opinar... Se quiseres mais alguma opinião da minha parte e só pedir. Abração... e boas entradas... Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now