Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Dúvida] Problemas com programa em C

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ [Dúvida] Problemas com programa em C

    Boa noite ^^, bem hoje não vim pra ensinar nada shaushuahsu, vim pra pedir ajuda -.-
    beim... tenho um trabalho pra entregar e nossa empaquei numa parte que estou desesperada e não acho o erro por nada, já estou desesperada e vale nota da prova, se puderem ajudar vou agradecer muiiiiiiiiiiiiiiiiiiiiiiito e fico devendo uma :3

    enfim... o programa é sobre um bolao de uma copa de futebol, onde cadastra os paises, partifipantes e tals, mas tem um techo que é pra ver quais são os paises de cada chave pra decidir quem vai ser o primeiro e o segundo colocado, empaquei nessa regra e nçao consigo prosseguir alem disso por causa desse erro, se alguem puder me ajudar, eu vou agradecer muitooooooooooo



    aqui o codigo eu comentei o maximo que deu.

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>

    void menup();//menu principal
    void cad_paism();//cadastra paises manualmente
    void cad_paisa();//cadastra paises automaticamente
    void cad_part();//cadastra participantes
    void f_primeira();//função da primeira chave
    void f_oitava();//funçao para determinar times da oitavas de final e gerar tabela das quarta
    void f_quarta();//funçao para determinar times da quarta de final e gerar tabela das semi
    void f_semi();//funçao para determinar times que vao para a final e 3° e 4° colocado
    void final();//funçao para determinar time vencedor e semi

    //fase1_scan = serve para automatizar o processo de ler o placar que o usuario escolheu pra cada time de cada chave e faz a soma de numero de pontos
    //numero de vitorias, empates e derrotas
    #define fase1_scan\
    printf("%s\tvs.\t%s\t\n\n%s: ", ID_pais[conf[x][0]].nome_pais, ID_pais[conf[x][1]].nome_pais, ID_pais[conf[x][0]].nome_pais);\
    scanf("%d", &conf[x][2]);\
    ID_pais[conf[x][0]].gols = ID_pais[conf[x][0]].gols + conf[x][2];\
    printf("%s: ",ID_pais[conf[x][1]].nome_pais);\
    scanf("%d", &conf[x][3]);\
    ID_pais[conf[x][1]].gols = ID_pais[conf[x][1]].gols + conf[x][3];\
    if(conf[x][2] > conf[x][3]){\
    ID_pais[conf[x][0]].vitorias++;ID_pais[conf[x][0]].pontos += 3;\
    ID_pais[conf[x][1]].derrotas++;}else if(conf[x][2] < conf[x][3]){\
    ID_pais[conf[x][1]].vitorias++;ID_pais[conf[x][1]].pontos += 3;ID_pais[conf[x][0]].derrotas++;\
    }else{ID_pais[conf[x][1]].empates++;ID_pais[conf[x][1]].pontos += 1;\
    ID_pais[conf[x][0]].empates++;}ID_pais[conf[x][0]].pontos += 1;\
    printf("\n\n");\
    }

    //fase1_conf = serve para automatizar o processo de determinar quais paises vai se enfrentrar dentro de cada chave
    #define fase1_conf\
    conf[n][0] = chaves[s][0];\
    conf[n][1] = chaves[s][1];\
    n++;\
    conf[n][0] = chaves[s][0];\
    conf[n][1] = chaves[s][2];\
    n++;\
    conf[n][0] = chaves[s][0];\
    conf[n][1] = chaves[s][3];\
    n++;\
    conf[n][0] = chaves[s][1];\
    conf[n][1] = chaves[s][2];\
    n++;\
    conf[n][0] = chaves[s][1];\
    conf[n][1] = chaves[s][3];\
    n++;\
    conf[n][0] = chaves[s][2];\
    conf[n][1] = chaves[s][3];\
    n++;\
    }

    /*for(int x=0;x<8;x++){
    for(int y=0;y<4;y++)
    printf("%d\t",chaves[x][y]);
    printf("\n");
    getch();
    }*/
    //opcao = opicao que o usuario escolhe no menu
    //ponto_total = ponto somado de todos os partifipantes
    //chaves = tabelha que vai organizar os times pela chave
    //conf = tabela com todos os confrontos, tendo os respectivos times e placar da primeira fase
    int opcao,ponto_total,chaves[8][4],conf[48][4],oit[8][2];
    float valor_total;

    typedef struct{
    char continente[25];
    char nome_pais[25];
    int pontos;//pontos adiquirido, quando o pais ganha uma partida ele ganha 3 pontos, se empata ele ganha 1 ponto
    int gols;//total de gols por pais
    int vitorias;//total de vitorias
    int derrotas;//total de derrotas
    int empates;//total de empates
    int njogos;//numero de vezes que jogou
    char chave;//letra da chave a que pertence
    }Pais;
    Pais ID_pais[32];

    typedef struct{
    char nome_part[10];//nome do participante
    int ponto_part;//quantidade de pontos que o participante tem
    float valor_dado;//valor que o participante deu
    int oitava[16];//tabela de paises apostados pra oitava de final pelo participante
    int quarta[8];//tabela de paises apostados pra quarta de final pelo participante
    int semi[4];//tabela de paises apostados pra semi de final pelo participante
    int quarto;//paises apostados pra 4° colocado pelo participante
    int terceiro;//paises apostados pra 3° colocado pelo participante
    int vice;//paises apostados pra 2° colocado pelo participante
    int vencedor;//paises apostados pra 1° colocado pelo participante
    }Ficha;
    Ficha ficha[10];

    main(){
    system("color f0");//fundo branco letra preta
    int fim=1;
    do
    {
    menup();//gunçao em que tem os prints de cada opçao
    switch (opcao)
    {
    case 1rintf("\a");
    cad_paism();
    break;
    case 2rintf("\a");
    cad_paisa();
    break;
    case 3rintf("\a");
    cad_part();
    break;
    case 4rintf("\a");
    f_primeira();
    break;
    case 5rintf("\a");
    cad_paism();//daki para baixo ainda n defini as opçoes ainda
    break;
    case 6rintf("\a");
    cad_paism();
    break;
    case 7rintf("\a");
    cad_paism();
    break;
    case 8rintf("\a");
    cad_paism();
    break;
    case 9rintf("\a");
    fim=0;
    break;
    default: printf("Opcao invalida\n");
    getch();
    }
    }while(fim);
    printf("============================== Fim do programa ==============================");
    getch();
    }

    void menup(){
    system("cls");
    printf("========================= M E N U P R I N C I P A L =========================\n");
    printf("\n\nENTRADA:\n");
    printf("\n1 - Cadastro de paises manualmente\n");
    printf("\n2 - Cadastro de paises automaticamente\n");
    printf("\n3 - Cadastrar de participantes\n");
    printf("\n4 - Definir placar\n");
    printf("\n\nSAIDA:\n");
    printf("\n5 - Mostrar placar\n");
    printf("\n6 - Mostrar vencedor do bolao\n");
    printf("\n7 - Mostrar pontuacao de participantes\n");
    printf("\n8 - Mostrar informacoes dos paises\n");
    printf("\n\n9 - Sair\n");
    printf("\nEscolha uma das opcoes: ");
    scanf("%d",&opcao);
    }

    void cad_paism(){//funçao que cadastra manualmente informaçoes principais dos paises para os jogos
    for(int x = 0;x<32;x++){
    system("cls");
    printf("============================== CADASTRO DE PAISES ==============================\n");
    printf("Digite o continente do pais de ID %d: ",x);
    scanf(" %s",&ID_pais[x].continente);
    printf("Digite o nome do pais de ID %d: ",x);
    scanf(" %s",&ID_pais[x].nome_pais);
    printf("Digite a chave: ");
    scanf(" %c",&ID_pais[x].chave);
    }
    }

    void cad_part(){//cadastra os participantes do bolao manuamente com suas informaçoes
    for(int x = 0;x<10;x++){
    system("cls");
    printf("=========================== CADASTRO DE PARTICIPANTES ==========================\n");
    printf("TABELA DE PAISES:\n\nID\tNOME\n");

    for(int y = 0;y<32;y++){
    printf("%d\t%s\n",y, ID_pais[y].nome_pais);

    }
    printf("\nDigite o nome do participante %d: ",x+1);
    scanf(" %s",&ficha[x].nome_part);
    printf("\nDigite a aposta dos paises que vao para as oitavas de final pelo ID: \n");
    for(int y = 0;y<16;y++){
    scanf(" %d",&ficha[x].oitava[y]);
    }
    printf("\nDigite a aposta dos paises que vao para as quartas de final pelo ID: \n");
    for(int y = 0;y<8;y++){
    scanf("%d",&ficha[x].quarta[y]);
    }
    printf("\nDigite a aposta dos paises que vao para as semi-finais pelo ID: \n");
    for(int y = 0;y<4;y++){
    scanf("%d",&ficha[x].semi[y]);
    }
    printf("\nDigite a aposta do pais que vai ficar em quarto lugar: ");
    scanf("%d",&ficha[x].quarto);
    printf("\nDigite a aposta do pais que vai ficar em terceiro lugar: ");
    scanf("%d",&ficha[x].terceiro);
    printf("\nDigite a aposta do pais que vai ser vice: ");
    scanf("%d",&ficha[x].semi);
    printf("\nDigite a aposta do que vai ser campeao: ");
    scanf("%d",&ficha[x].vencedor);
    printf("\nDigite o valor dado pelo participante: R$ ");
    scanf("%f",&ficha[x].valor_dado);
    valor_total += ficha[x].valor_dado;
    }
    }

    void cad_paisa(){//faz cadastro automatico de cada pais
    strcpy(ID_pais[0].continente, "Europa");
    strcpy(ID_pais[0].nome_pais, "Alemanha");
    ID_pais[0].chave = 'A';

    strcpy(ID_pais[1].continente, "Europa");
    strcpy(ID_pais[1].nome_pais, "Croacia");
    ID_pais[1].chave = 'F';

    strcpy(ID_pais[2].continente, "Europa");
    strcpy(ID_pais[2].nome_pais, "Franca");
    ID_pais[2].chave = 'G';

    strcpy(ID_pais[3].continente, "Europa");
    strcpy(ID_pais[3].nome_pais, "Paises Baixos");
    ID_pais[3].chave = 'C';

    strcpy(ID_pais[4].continente, "Europa");
    strcpy(ID_pais[4].nome_pais, "Inglaterra");
    ID_pais[4].chave = 'B';

    strcpy(ID_pais[5].continente, "Europa");
    strcpy(ID_pais[5].nome_pais, "Italia");
    ID_pais[5].chave = 'E';

    strcpy(ID_pais[6].continente, "Europa");
    strcpy(ID_pais[6].nome_pais, "Polonia");
    ID_pais[6].chave = 'A';

    strcpy(ID_pais[7].continente, "Europa");
    strcpy(ID_pais[7].nome_pais, "Portugal");
    ID_pais[7].chave = 'D';

    strcpy(ID_pais[8].continente, "Europa");
    strcpy(ID_pais[8].nome_pais, "Servia e Montenegro");
    ID_pais[8].chave = 'C';

    strcpy(ID_pais[9].continente, "Europa");
    strcpy(ID_pais[9].nome_pais, "Suecia");
    ID_pais[9].chave = 'B';

    strcpy(ID_pais[10].continente, "Europa");
    strcpy(ID_pais[10].nome_pais, "Ucrania");
    ID_pais[10].chave = 'H';

    strcpy(ID_pais[11].continente, "Europa");
    strcpy(ID_pais[11].nome_pais, "Suica");
    ID_pais[11].chave = 'G';

    strcpy(ID_pais[12].continente, "Europa");
    strcpy(ID_pais[12].nome_pais, "Espanha");
    ID_pais[12].chave = 'H';

    strcpy(ID_pais[13].continente, "Europa");
    strcpy(ID_pais[13].nome_pais, "Republica Tcheca");
    ID_pais[13].chave = 'E';

    strcpy(ID_pais[14].continente, "America do Sul");
    strcpy(ID_pais[14].nome_pais, "Argentina");
    ID_pais[14].chave = 'C';

    strcpy(ID_pais[15].continente, "America do Sul");
    strcpy(ID_pais[15].nome_pais, "Brasil");
    ID_pais[15].chave = 'F';

    strcpy(ID_pais[16].continente, "America do Sul");
    strcpy(ID_pais[16].nome_pais, "Equador");
    ID_pais[16].chave = 'A';

    strcpy(ID_pais[17].continente, "America do Sul");
    strcpy(ID_pais[17].nome_pais, "Paraguai");
    ID_pais[17].chave = 'B';

    strcpy(ID_pais[18].continente, "America do Norte");
    strcpy(ID_pais[18].nome_pais, "Estados Unidos");
    ID_pais[18].chave = 'E';

    strcpy(ID_pais[19].continente, "America do Norte");
    strcpy(ID_pais[19].nome_pais, "Mexico");
    ID_pais[19].chave = 'D';

    strcpy(ID_pais[20].continente, "America Central");
    strcpy(ID_pais[20].nome_pais, "Trinidad e Tobago");
    ID_pais[20].chave = 'B';

    strcpy(ID_pais[21].continente, "America Central");
    strcpy(ID_pais[21].nome_pais, "Costa Rica");
    ID_pais[21].chave = 'A';

    strcpy(ID_pais[22].continente, "Asia");
    strcpy(ID_pais[22].nome_pais, "Arabia Saudita");
    ID_pais[22].chave = 'H';

    strcpy(ID_pais[23].continente, "Asia");
    strcpy(ID_pais[23].nome_pais, "Coreia do Sul");
    ID_pais[23].chave = 'G';

    strcpy(ID_pais[24].continente, "Asia");
    strcpy(ID_pais[24].nome_pais, "Japao");
    ID_pais[24].chave = 'F';

    strcpy(ID_pais[25].continente, "Asia");
    strcpy(ID_pais[25].nome_pais, "Ira");
    ID_pais[25].chave = 'D';

    strcpy(ID_pais[26].continente, "Africa");
    strcpy(ID_pais[26].nome_pais, "Angola");
    ID_pais[26].chave = 'D';

    strcpy(ID_pais[27].continente, "Africa");
    strcpy(ID_pais[27].nome_pais, "Costa do Marfim");
    ID_pais[27].chave = 'C';

    strcpy(ID_pais[28].continente, "Africa");
    strcpy(ID_pais[28].nome_pais, "Gana");
    ID_pais[28].chave = 'E';

    strcpy(ID_pais[29].continente, "Africa");
    strcpy(ID_pais[29].nome_pais, "Togo");
    ID_pais[29].chave = 'G';

    strcpy(ID_pais[30].continente, "Africa");
    strcpy(ID_pais[30].nome_pais, "Tunisia");
    ID_pais[30].chave = 'H';

    strcpy(ID_pais[31].continente, "Oceania");
    strcpy(ID_pais[31].nome_pais, "Australia");
    ID_pais[31].chave = 'F';
    }

    void f_primeira(){//funçao que serve para fazer
    // y = numero referente ao grupo, demais letras fazem o controle dos times que vão entrar em cada grupo
    for(int y=0;y<8;y++)
    for(int x=0,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;x<32;x++){
    if(ID_pais[x].chave == 'A' && y==0){
    chaves[y][a] = x;
    a++;
    }else if(ID_pais[x].chave == 'B' && y==1){
    chaves[y][b] = x;
    b++;
    }else if(ID_pais[x].chave == 'C' && y==2){
    chaves[y][c] = x;
    c++;
    }else if(ID_pais[x].chave == 'D' && y==3){
    chaves[y][d] = x;
    d++;
    }else if(ID_pais[x].chave == 'E' && y==4){
    chaves[y][e] = x;
    e++;
    }else if(ID_pais[x].chave == 'F' && y==5){
    chaves[y][f] = x;
    f++;
    }else if(ID_pais[x].chave == 'G' && y==6){
    chaves[y][g] = x;
    g++;
    }else if(ID_pais[x].chave == 'H' && y==7){
    chaves[y][h] = x;
    h++;
    }
    }


    printf("\nConfrontos da chave A:\n\n");
    // n = numero do confronto
    //s = chave, 2° campo de conf é primeiro time e segundo time, 2° campo de chaves é um time especifico
    for(int x=0,n=0,s=0;x<1;x++){
    fase1_conf;

    for(int x=0,n=6,s=1;x<1;x++){
    fase1_conf;

    for(int x=0,n=12,s=2;x<1;x++){
    fase1_conf;

    for(int x=0,n=18,s=3;x<1;x++){
    fase1_conf;

    for(int x=0,n=24,s=4;x<1;x++){
    fase1_conf;

    for(int x=0,n=30,s=5;x<1;x++){
    fase1_conf;

    for(int x=0,n=36,s=6;x<1;x++){
    fase1_conf;

    for(int x=0,n=42,s=7;x<1;x++){
    fase1_conf;

    system("cls");
    printf("\nConfrontos da chave A:\n\n\t PAISES\n\n");
    for(int x=0;x<6;x++){
    fase1_scan;
    /*
    system("cls");
    printf("\nConfrontos da chave B:\n\n\t PAISES\n\n");
    for(int x=6;x<(2*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave C:\n\n\t PAISES\n\n");
    for(int x=12;x<(3*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave D:\n\n\t PAISES\n\n");
    for(int x=18;x<(4*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave E:\n\n\t PAISES\n\n");
    for(int x=24;x<(5*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave F:\n\n\t PAISES\n\n");
    for(int x=30;x<(6*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave G:\n\n\t PAISES\n\n");
    for(int x=36;x<(7*6);x++){
    fase1_scan;

    system("cls");
    printf("\nConfrontos da chave G:\n\n\t PAISES\n\n");
    for(int x=42;x<(8*6);x++){
    fase1_scan;*/

    //tá dando errro dentro dessefor,aqui que está o problema, quero que ele defina o 1° e 2° colocado na chave A.
    //conta = contador para a segunda condição
    //aux = auxiliar pra salvar os paises empatados pra depois determinar por gols quem é o primeiro e o segundo



    int conta = 0,aux[2];
    for(int x=0;x<4;x++){
    if(ID_pais[chaves[0][x]].pontos == 9){
    oit[0][0] = chaves[0][x];
    printf("%d primeiro \n", oit[0][0]);
    for(int y=0;y<4;++y){
    if(ID_pais[chaves[0][y]].pontos == 6){
    oit[0][1] = chaves[0][y];
    printf("%d segundo ", oit[0][1]);
    // break;
    }
    }
    }else if(ID_pais[chaves[0][x]].pontos == 7){
    aux[conta] = chaves[0][x];
    conta++;
    if(conta == 2){
    if(ID_pais[aux[0]].gols < ID_pais[aux[1]].gols){
    oit[0][0] = aux[1];
    oit[0][1] = aux[0];
    printf("%d primeiro\n",oit[0][0]);
    printf("%d segundo",oit[0][1]);
    }else{
    oit[0][0] = aux[0];
    oit[0][1] = aux[1];
    printf("%d primeiro\n",oit[0][0]);
    printf("%d segundo",oit[0][1]);
    // break;
    }
    }
    }
    }



    getch();
    }



    //daqui pra baixo sao funçoes que dependem do funcionamento do codigo acima
    void f_oitava(){

    }

    void f_quarta(){

    }

    void f_semi(){

    }

    void f_final(){

    }

    void f_terceiro(){

    }





    Prove-me que és hacker... hacker que é hacker usa esta fan bar:

  • Font Size
    #2
    Provavelmente você já encontrou o erro, mas de qualquer forma vou apontar algumas coisas somente para ajudar quem possa cair nos mesmo erros no futuro.

    Antes de mais nada, estou baseando no complicador gcc, por ser multiplataforma e de fácil uso.

    A primeira coisa que gostaria de apontar é que na linha 35
    #define fase1_conf\

    Se deve utilizar o \ do final da linha precedido de espaço, para informar ao compilador que o codigo continuara abaixo. Mas isso não é bem uma coisa padrão em todos os compiladores, pelo padrão c99 pode ser executado normal, porém pelo C++11 não funciona desta forma.
    Outra coisa que devo apontar é na linha seguinte.

    conf[n][0] = chaves[s][0];\

    Se tratando de uma diretiva do processador ela é executada antes do código, isso significa que chaves[s][0] ainda não existe na memoria, assim como conf[n][0]

    mais informações neste link ( Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... )

    Na linha 96, na função main lembre sempre que utilizar um valor de retorno, como int ( apesar de void ser compilado correto, é uma má pratica utilizar valores não inteiros )

    no switch você utilizou uma funcao 1rintf até 9rintf porém tal função não existe nos headers files, o rintf sim existe, como uma função para arredondar um valor, mas funções com numeros na frente são consideradas incorretas pelos compiladores, assim como variaveis.

    outra coisa o switch deve ter a linha

    case INTERIO :
    e não
    case INTEIRO ;

    Mais uma coisa, caso esteja utilizando o padrão c99 isso não é problema , mas em C todas as variaveis devem ser declaradas no inicio do scopo, isso significa que um for loop tem que ser feito da seguinte forma

    int x;
    for( x =0; x < 100;x++)

    caso contrario um erro de "'for' loop initial declarations are only allowed in C99 mode" sera lançado.


    outros erros de for não encontrados nas linhas 373
    onde os for's são iniciados porém nunca finalizados.
    Isso deve ter sido erro de digitação
    pois o for pode não possuir os { } caso tenha apenas uma linha ( este é o caso ), porém você colocou o { inicial e não o final, então para corrigir basta remover o inicial OU acrescentar o final.


    Se você estiver utilizando um compilador que não de warnings, ou reclame de alguma forma do código, desconsidere o que falei, porém tenha em mente que adotar um padrão amplamente utilizado é melhor quando se está aprendendo devido ao numero de material na internet e de pessoas capacitadas a te ajudar.



    Agora para ser extremamente chato HASUSHUAH tem um erro ali na sua informação de perfil na area de localização

    Localização: char lugar = "unidentifiable";

    dessa forma está incorreto porque você criou um char e armazenou uma cadeira de caracteres, deveria ser algo como

    char lugar[] = "unidentifiable";
    char lugar[15] = "unidentifiable";
    char *lugar = "unidentifiable";

    ASHUSAHUAS, até mais.

    Comment

    X
    Working...
    X