Camilofb 0 Denunciar post Postado Janeiro 12, 2014 Olá pessoal. Eu estou tentando fazer um programa que auxilie competições de corrida. Que funciona da seguinte forma: - O programa irá perguntar quantos competidores estão participando da competição, e repetirá o processo até esse número (que vai ser fornecido pelo usuário) ser atingido. - Ele irá armazenar o tempo de cada piloto e calcular a média de tempo de todas as pistas já corridas por pelos mesmos (ao todo existe três pistas). - Por fim ele irá dizer qual foi a maior média dentre todos os pilotos. Minha primeira tentativa ficou assim: #include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int numeroDeCompetidores; int numeroDeRepeticoes; printf("Quantos jogadores estao competindo? "); scanf("%d", &numeroDeCompetidores); for (numeroDeRepeticoes = 0; numeroDeRepeticoes <= numeroDeCompetidores; numeroDeRepeticoes++) //O laço se repetirá de acordo com o número de jogadores. { float bayBridge[numeroDeCompetidores], brooksStreet[numeroDeCompetidores], campbellTunnel[numeroDeCompetidores]; float mediaDeTempo[numeroDeCompetidores]; char * nome; nome = (char *)malloc(sizeof(char)); printf("Qual o nome do jogador? "); scanf("%s", nome); printf("Qual o tempo do jogador na pista \"Bay Bridge\"? "); scanf("%f", &bayBridge[numeroDeCompetidores]); printf("Qual o tempo do jogador na pista \"Brooks Street\"? "); scanf("%f", &brooksStreet[numeroDeCompetidores]); printf("Qual o tempo do jogador na pista \"Campbell Tunnel\"? "); scanf("%f", &campbellTunnel[numeroDeCompetidores]); mediaDeTempo[numeroDeCompetidores] = (bayBridge[numeroDeCompetidores] + brooksStreet[numeroDeCompetidores] + campbellTunnel[numeroDeCompetidores]) / 3; printf("\nO tempo do jogador %s na pista:\n- \"Bay Bridge\" e %f,\n- \"Brooks Street\" e %f e\n- \"Campbell Tunnel\" e %f.\n Sua media e %f.\n\n", nome, bayBridge[numeroDeCompetidores], brooksStreet[numeroDeCompetidores], campbellTunnel[numeroDeCompetidores], mediaDeTempo[numeroDeCompetidores]); free(nome); getch(); } float varreduraDoVetor; float maiorTempo; maiorTempo = 0; for (varreduraDoVetor = 0; varreduraDoVetor <= numeroDeCompetidores; varreduraDoVetor++) //Se repetirá de acordo com o número de competidores definidos na variável a cima. { if (maiorTempo < mediaDeTempo[varreduraDoVetor]) { mediaDeTempo[varreduraDoVetor] = maiorTempo; } } printf("O maior tempo e %f.", maiorTempo); getch(); } Porém sempre que tento compilar dá o seguinte erro: "[Error] 'mediaDeTempo' was not declared in this scope". Aproveitando, gostaria de saber. Está dando erro porque eu estou tentando usar a variável que foi declarada dentro de um for em outro for? De qualquer forma, eu tentei de novo, mas com uma estratégia diferente... #include <stdio.h> #include <conio.h> #include <stdlib.h> main() { int numeroDeJogadores, numeroDeRepeticoes; printf("Quantos jogadores estao participando? "); scanf("%d", &numeroDeJogadores); for (numeroDeRepeticoes = 0; numeroDeRepeticoes < numeroDeJogadores; numeroDeRepeticoes++) { float bayBridge[numeroDeJogadores], oceanView[numeroDeJogadores], brooksStreet[numeroDeJogadores]; float MEDIA[numeroDeJogadores]; char * nome; nome = (char *)malloc(sizeof(char)); printf("Qual o nome do jogador? "); scanf("%s", nome); printf("Qual foi o tempo do jogador na pista Bay Bridge? "); scanf("%f", &bayBridge[numeroDeJogadores]); printf("Qual foi o tempo do jogador na pista Ocean View? "); scanf("%f", &oceanView[numeroDeJogadores]); printf("Qual foi o tempo do jogador na pista Brooks Street? "); scanf("%f", &brooksStreet[numeroDeJogadores]); MEDIA[numeroDeJogadores] = (bayBridge[numeroDeJogadores] + oceanView[numeroDeJogadores] + brooksStreet[numeroDeJogadores]) / 3; printf("\nO jogador %s fez:\n- %f na pista Bay Bridge\n- %f na pista Ocean View\n- %f na pista Brooks Street.\n", nome, bayBridge[numeroDeJogadores], oceanView[numeroDeJogadores], brooksStreet[numeroDeJogadores]); printf("Sua media geral e %f.\n\n", MEDIA[numeroDeJogadores]); getch(); if (numeroDeRepeticoes == numeroDeJogadores - 1) { int numeroDeRepeticoes2; float maiorMedia; maiorMedia = 0; for (numeroDeRepeticoes2 = 0; numeroDeRepeticoes2 < numeroDeJogadores; numeroDeRepeticoes2++) { if (maiorMedia < MEDIA[numeroDeRepeticoes2]) { MEDIA[numeroDeRepeticoes2] = maiorMedia; } } printf("A maior media e %f.", maiorMedia); } } getch(); } Desta vez não deu erro de compilação, mas o programa não consegue identificar qual foi a maior média. Será que alguém pode me ajudar? Link do primeiro código fonte: https://www.dropbox.com/s/7oo436eqkqxpz7b/Competicoes.cpp Link do segundo código fonte: https://www.dropbox.com/s/mhkg53ryc3zp4p8/Competicoes%20%282%29.cpp Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Janeiro 12, 2014 Porém sempre que tento compilar dá o seguinte erro: "[Error] 'mediaDeTempo' was not declared in this scope". Aproveitando, gostaria de saber. Está dando erro porque eu estou tentando usar a variável que foi declarada dentro de um for em outro for? Sim. Isso se chama escopo de variável. Percebe que a cada iteração vc declara as variáveis N vezes? Coloque essas coisas pra fora do for. Compartilhar este post Link para o post Compartilhar em outros sites