Ir ao conteúdo

Posts recomendados

Postado

Eae galera beleza, é o seguinte criei um jogo em c que tem varias funções porém quando vou compilar me da varios warnings tipo este (implicit declaration of function 'tabela') eu sei que é porque estou chamando algumas funçoes que estão na parte de baixo do codigo, porém a forma com que estruturei o código fica quase impossível modiicar alguem sabe se tem alguma forma de chamar funções que estão abaixo sem que retorne erro ?

#include <stdio.h>
#include<locale.h>
#include <time.h>

int i,j,k,l, dados[5],op,op1,op2,op3,op4, soma=0, cont=0, table[13], vrf=0, zero=0, cc=0, soma_total=0;
char tableM[] = {'n','n','n','n','n','n','n','n','n','n','n','n','n','n'}, ini, frase[10000];


void jogadas_ini(int opp){

if(tableM[opp-1]=='n'){

if(zero==0){
    //Verifica se o numero existe
    for(l=0;l<5;l++){
        if(dados[l]==opp){
            vrf++;
        }
    }
    if(vrf>0){
    //Executa a soma
    for(l=0;l<5;l++){
        if(dados[l]==opp){
            soma += dados[l];
        }
    }
    table[opp-1] = 0;
    table[opp-1] = soma;
    tableM[opp-1] = 'm';
    vrf=0;
    soma = 0;
}else{ tabela(); }
}else if(zero==1){
    table[opp-1] = 0;
    tableM[opp-1] = 'm';
    zero = 0;
}
}else{ tabela(); }
}//end jogaUMAseis

void trinca(){

int conta=0;

if(tableM[6]=='n'){
if(zero==0){

      for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                    conta++;
            }
            if(conta>=3){
                table[6] = 23;
                tableM[6] = 'm';
                i = 6;
            }else{
                conta=0;}
      }
      if(conta==0){
        tabela();
      }


}else if(zero==1){
    table[6] = 0;
    tableM[6] = 'm';
    zero = 0;
}
}else{ tabela(); }

}//end Trinca

void quadra(){
    int con=0;

if(tableM[7]=='n'){
if(zero==0){
      for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                    con++;
            }
            if(con>=4){
                table[7] = 21;
                tableM[7] = 'm';
                i = 6;
            }else{
                con=0;}
      }
      if(con==0){
        tabela();
      }
}else if(zero==1){
    table[7] = 0;
    tableM[7] = 'm';
    zero = 0;
}
}else{ tabela(); }

}//End quadra


void fullhouse(){

    int marcatres=0, marcadois=0;

if(tableM[8]=='n'){
if(zero==0){
        //Verifica se há tres valores iguais
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                 marcatres++;

            }
            if(marcatres==3){
            i=6;
            }else{
                marcatres=0;
            }
        }

        //verifica se há dois valores iguais
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j]){
                  marcadois++;
                }
            }
            if(marcadois==2){
            i=6;
            }else{
                marcadois=0;
            }
        }

        if(marcadois==2 && marcatres==3){
            table[8] = 25;
            tableM[8] = 'm';
        }else{ tabela(); }
}else if(zero==1){
    table[8] = 0;
    tableM[8] = 'm';
    zero = 0;
}
}else{ tabela(); }

}//End FullHouse

void  sequenciaAltaBaixa(int op8){

    int aux=0, cont=0, pos=0, p;

    if(op8==10){
    pos = 9;
    p=30;
    }else if(op8==11){
    pos = 10;
    p = 40;
    }

if(tableM[pos]=='n'){
if(zero==0){
        //ordena o vetor
        for(i=0;i<5;i++){
            for(j=i+1;j<5;j++){
                if(dados[i] > dados[j]){
                    aux=dados[j];
                    dados[j]=dados[i];
                    dados[i]=aux;
                }
            }
        }
        //Verifica se é uma sequencia alta ou baixa
        if(op8==10){
            aux = 2;
        }else if(op8==11){
            aux = 1;
        }
        for(i=0;i<5;i++){
            if(dados[i]==aux){
                cont++;
            }
            aux++;
        }

        if(cont==5){
                table[pos]=p;
                tableM[pos]='m';
        }else{
            tabela();
        }

}else if(zero==1){
    table[pos] = 0;
    tableM[pos] = 'm';
    zero = 0;
}
}else{ tabela(); }

}//End sequencia alta e baixa

void general(){
    int co=0;

if(tableM[11]=='n'){
if(zero==0){
        for(i=0;i<5;i++){

            for(j=0;j<5;j++){
                if(dados[i]==dados[j]){
                    co++;
                }
            }
            if(co==5){
                table[11] = 50;
                tableM[11] = 'm';
                i=6;
            }else{
                co=0;
            }

        }
        //significa que os dados não deram general
        if(co==0){
            tabela();
        }

}else if(zero==1){
    table[11] = 0;
    tableM[11] = 'm';
    zero = 0;
}
}else { tabela(); }

}//End General

void aleatoria(){
    int soma=0;

if(tableM[12]=='n'){
if(zero==0){
     for(i=0;i<5;i++){
        soma += dados[i];
     }
    table[12] = soma;
    tableM[12] = 'm';
    soma=0;
}else if(zero==1){
    table[12] = 0;
    tableM[12] = 'm';
    zero = 0;
}
}else { tabela(); }

}//End aleatoria



int tabela(){
    printf("\n===================================");
    printf("\n \t TIPO DE JOGADA");
    printf("\n===================================\n");

    FILE *file;
    file = fopen("string.txt", "r");

for(i=0;i<14;i++){
    fgets(frase, 10000, file);

    if(tableM[i]=='n'){
    printf(" %s", frase);
    }
}
fclose(file);
    printf("\n===================================");
    printf("\n Nº DA JOGADA: ");
    scanf("%d", &op2);

    switch(op2){
    case 1 ... 6: jogadas_ini(op2);
    break;
    case 7: trinca();
    break;
    case 8: quadra();
    break;
    case 9: fullhouse();
    break;
    case 10:
    case 11:sequenciaAltaBaixa(op2);
    break;
    case 12: general();
    break;
    case 13: aleatoria();
    break;
    case 14:
    zero=1;
    printf("\n___________________________________");
    printf("\n ONDE VOCÊ DESEJA MARCAR ZERO ?");
    tabela();
    break;
    default: tabela();
    }

}//end tabela



int main(){
    setlocale(LC_ALL, "portuguese_Brazil");
    srand(time(NULL));

    printf("\n PARA INICIAR DIGITE [1]: ");
    scanf("%c", &ini);
    fflush(stdin);

if(ini=='1'){

//Laço das 13 jogadas
for(k=0;k<13;k++){

    if(k>0){
        printf("\n___________________|PLACAR|___________________\n");
        printf("\n PONTOS | JOGADA\n\n");
        FILE *file;
        file = fopen("string2.txt", "r");

        for(i=0;i<13;i++){
            fgets(frase, 10000, file);
            if(tableM[i]=='m'){
            printf(" %4d \t|", table[i]);
            printf("%s", frase);


            }
        }
    fclose(file);
        printf("\n______________________________________________\n");
    }

    printf("\n\n ========== | %dº JOGADA | ========== \n\n", k+1);

    int lansa_5dados(){
    printf("\n POSIÇAO| 1 | 2 | 3 | 4 | 5 ");
    printf("\n ##DADOS");
    for(j=0;j<5;j++){
    printf("| %d ", dados[j] = 1 + rand() % 6);
    }
    } lansa_5dados();


    do{
    printf("\n\n USAR ESTES VALORES[1]");
    printf("\n LANÇAR NOVAMENTE[2]");
    printf("\n opção: ");
    scanf("%d", &op1);

    if(op1==2){
        printf("\n QUANTOS DADOS DESEJA LANÇAR: ");
        scanf("%d", &op3);

        if(op3<=4){

        printf("\n POSIÇÃO:\n ");
        for(i=0;i<op3;i++){
        printf("\n #DADOS: ");
        scanf("%d", &op4);
        dados[op4-1] = 1 + rand() % 6;
        }
        printf("\n POSIÇAO| 1 | 2 | 3 | 4 | 5 ");
        printf("\n ##DADOS");
        for(j=0;j<5;j++){
        printf("| %d ", dados[j]);
        }
        }else{
            lansa_5dados();
        }
    }
    cc++;
    }while(op1==2 && cc<=1);

printf("\n\n");
tabela();
cc=0;
}//fim laço jogadas
}//fim op==1
else{
    printf("\n POR FAVOR DIGITE UMA OPÇÃO VALIDA \n\n");
    main();
}

//Calcula o total de pontos
for(i=0;i<13;i++){
    soma_total += table[i];
}
printf("\n\n ***********************************************************");
printf("\n\n A SOMA TOTAL DOS PONTOS É IGUAL %d ", soma_total);
printf("\n\n ***********************************************************");

system("pause>null");
return 0;
}

 

Captura de Tela (31).png

  • Curtir 1
Postado

@Danilo Henriq Warnings não impedem o compilador, apenas error's. Quando você diz 'chamar as funções abaixo', seria abaixo de main? 

Não é regra, mas seria 'bom' usar acima de main apenas: includes/defines, variáveis globais, protótipos de funções, inline e objetos.

E abaixo de main ou em headers você usa pode colocar a referencia dos protótipos das funções.

 

Exemplo:

#include <stdio.h>
  
#define MSG1 1001
#define MSG2 1002
#define MSG3 1003

int msg = MSG1;

void setMessage(int);
void showMessage();

int main(){
	showMessage(msg);
  
    setMessage(MSG2);
	showMessage();
  
    setMessage(MSG3);
	showMessage();
  
	return 0; 
}


void setMessage(int m){
  msg = m;
}

void showMessage(){
  switch(msg){
    case MSG1: printf("Message 1\n"); break;
    case MSG2: printf("Message 2\n"); break;
    case MSG3: printf("Message 3\n"); break;
      
    default:
    printf("Message desconhecida\n"); 
    break;
  }
}

 

  • Curtir 1
Postado

@Danilo Henriq    é como o @TYSQUARE89  disse , mas o que vi é que uma função está chamando outra função abaixo dela aí dá warning mesmo , para isso não acontecer coloque uma declaração da função lá em cima logo abaixo dos includes , essa função tabela que está dando warning coloque assim :

#include <time.h>
#include <windows.h>
int tabela();

assim ela já tendo sido declarada no inicio ela não causará warning .

   seu código ficou assim depois dessa organizada, mas não entendi o jogo , ele fica repetindo  algumas perguntas , será que é isso mesmo que era para ele fazer ? .   :

#include <stdio.h>
#include<locale.h>
#include <time.h>
#include <windows.h>

int i,j,k,l, dados[5],op,op1,op2,op3,op4, soma=0, cont=0, table[13], vrf=0, zero=0, cc=0, soma_total=0;
char tableM[] = {'n','n','n','n','n','n','n','n','n','n','n','n','n','n'}, ini, frase[10000];
int tabela();
int lansa_5dados(){
    printf("\n POSIÇAO| 1 | 2 | 3 | 4 | 5 ");
    printf("\n ##DADOS");
    for(j=0;j<5;j++){
        printf("| %d ", dados[j] = 1 + rand() % 6);
    }
    return 0;
}/* lansa_5dados();*/

void jogadas_ini(int opp){

    if(tableM[opp-1]=='n'){

        if(zero==0){
            /*//Verifica se o numero existe*/
            for(l=0;l<5;l++){
                if(dados[l]==opp){
                    vrf++;
                }
            }
            if(vrf>0){
                /*//Executa a soma*/
                for(l=0;l<5;l++){
                    if(dados[l]==opp){
                        soma += dados[l];
                    }
                }
                table[opp-1] = 0;
                table[opp-1] = soma;
                tableM[opp-1] = 'm';
                vrf=0;
                soma = 0;
            }
            else{
                tabela();
            }
        }
        else if(zero==1){
            table[opp-1] = 0;
            tableM[opp-1] = 'm';
            zero = 0;
       }
    }
    else{
        tabela();
    }
}/*//end jogaUMAseis*/

void trinca(){

int conta=0;

if(tableM[6]=='n'){
if(zero==0){

      for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                    conta++;
            }
            if(conta>=3){
                table[6] = 23;
                tableM[6] = 'm';
                i = 6;
            }else{
                conta=0;}
      }
      if(conta==0){
        tabela();
      }


}else if(zero==1){
    table[6] = 0;
    tableM[6] = 'm';
    zero = 0;
}
}else{ tabela(); }

}/*//end Trinca*/

void quadra(){
    int con=0;

if(tableM[7]=='n'){
if(zero==0){
      for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                    con++;
            }
            if(con>=4){
                table[7] = 21;
                tableM[7] = 'm';
                i = 6;
            }else{
                con=0;}
      }
      if(con==0){
        tabela();
      }
}else if(zero==1){
    table[7] = 0;
    tableM[7] = 'm';
    zero = 0;
}
}else{ tabela(); }

}/*//End quadra*/


void fullhouse(){

    int marcatres=0, marcadois=0;

if(tableM[8]=='n'){
if(zero==0){
        /*//Verifica se há tres valores iguais*/
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j])
                 marcatres++;

            }
            if(marcatres==3){
            i=6;
            }else{
                marcatres=0;
            }
        }

        /*//verifica se há dois valores iguais*/
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                if(dados[i]==dados[j]){
                  marcadois++;
                }
            }
            if(marcadois==2){
            i=6;
            }else{
                marcadois=0;
            }
        }

        if(marcadois==2 && marcatres==3){
            table[8] = 25;
            tableM[8] = 'm';
        }else{ tabela(); }
}else if(zero==1){
    table[8] = 0;
    tableM[8] = 'm';
    zero = 0;
}
}else{ tabela(); }

}/*//End FullHouse*/

void  sequenciaAltaBaixa(int op8){

    int aux=0, cont=0, pos=0, p=0;

    if(op8==10){
    pos = 9;
    p=30;
    }else if(op8==11){
    pos = 10;
    p = 40;
    }

if(tableM[pos]=='n'){
if(zero==0){
        /*//ordena o vetor*/
        for(i=0;i<5;i++){
            for(j=i+1;j<5;j++){
                if(dados[i] > dados[j]){
                    aux=dados[j];
                    dados[j]=dados[i];
                    dados[i]=aux;
                }
            }
        }
        /*//Verifica se é uma sequencia alta ou baixa*/
        if(op8==10){
            aux = 2;
        }else if(op8==11){
            aux = 1;
        }
        for(i=0;i<5;i++){
            if(dados[i]==aux){
                cont++;
            }
            aux++;
        }

        if(cont==5){
                table[pos]=p;
                tableM[pos]='m';
        }else{
            tabela();
        }

}else if(zero==1){
    table[pos] = 0;
    tableM[pos] = 'm';
    zero = 0;
}
}else{ tabela(); }

}/*//End sequencia alta e baixa*/

void general(){
    int co=0;

if(tableM[11]=='n'){
if(zero==0){
        for(i=0;i<5;i++){

            for(j=0;j<5;j++){
                if(dados[i]==dados[j]){
                    co++;
                }
            }
            if(co==5){
                table[11] = 50;
                tableM[11] = 'm';
                i=6;
            }else{
                co=0;
            }

        }
        /*//significa que os dados não deram general*/
        if(co==0){
            tabela();
        }

}else if(zero==1){
    table[11] = 0;
    tableM[11] = 'm';
    zero = 0;
}
}else { tabela(); }

}/*//End General*/

void aleatoria(){
    int soma=0;

if(tableM[12]=='n'){
if(zero==0){
     for(i=0;i<5;i++){
        soma += dados[i];
     }
    table[12] = soma;
    tableM[12] = 'm';
    soma=0;
}else if(zero==1){
    table[12] = 0;
    tableM[12] = 'm';
    zero = 0;
}
}else { tabela(); }

}/*//End aleatoria*/



int tabela(){
    FILE *file;
    printf("\n===================================");
    printf("\n \t TIPO DE JOGADA");
    printf("\n===================================\n");

    file = fopen("string.txt", "r");

    for(i=0;i<14;i++){
        fgets(frase, 10000, file);

        if(tableM[i]=='n'){
            printf(" %s", frase);
        }
    }
    fclose(file);
    printf("\n===================================");
    printf("\n Nº DA JOGADA: ");
    scanf("%d", &op2);

    switch(op2){
        case 1 : jogadas_ini(op2);
        case 2 : jogadas_ini(op2);
        case 3 : jogadas_ini(op2);
        case 4 : jogadas_ini(op2);
        case 5 : jogadas_ini(op2);
        case 6 : jogadas_ini(op2);
            break;
        case 7: trinca();
            break;
        case 8: quadra();
            break;
        case 9: fullhouse();
            break;
        case 10:
        case 11:sequenciaAltaBaixa(op2);
            break;
        case 12: general();
            break;
        case 13: aleatoria();
            break;
        case 14:
            zero=1;
            printf("\n___________________________________");
            printf("\n ONDE VOCÊ DESEJA MARCAR ZERO ?");
            tabela();
            break;
        default: tabela();
    }
    return 0;
}/*end tabela*/



int main(){
    FILE *file;
    inicio:
    setlocale(LC_ALL, "portuguese_Brazil");
    srand(time(NULL));

    printf("\n PARA INICIAR DIGITE [1]: ");
    scanf("%c", &ini);
    fflush(stdin);

    if(ini=='1'){

    /*//Laço das 13 jogadas*/
    for(k=0;k<13;k++){

        if(k>0){
            printf("\n___________________|PLACAR|___________________\n");
            printf("\n PONTOS | JOGADA\n\n");
            file = fopen("string2.txt", "r");

            for(i=0;i<13;i++){
                fgets(frase, 10000, file);
                if(tableM[i]=='m'){
                    printf(" %4d \t|", table[i]);
                    printf("%s", frase);
                }
            }
            fclose(file);
            printf("\n______________________________________________\n");
        }
        printf("\n\n ========== | %dº JOGADA | ========== \n\n", k+1);
        lansa_5dados();
        /*int lansa_5dados(){
        printf("\n POSIÇAO| 1 | 2 | 3 | 4 | 5 ");
        printf("\n ##DADOS");
        for(j=0;j<5;j++){
        printf("| %d ", dados[j] = 1 + rand() % 6);
        }
        } lansa_5dados();*/
        do{
            printf("\n\n USAR ESTES VALORES[1]");
            printf("\n LANÇAR NOVAMENTE[2]");
            printf("\n opção: ");
            scanf("%d", &op1);
            if(op1==2){
                printf("\n QUANTOS DADOS DESEJA LANÇAR: ");
                scanf("%d", &op3);
                if(op3<=4){
                    printf("\n POSIÇÃO:\n ");
                    for(i=0;i<op3;i++){
                        printf("\n #DADOS: ");
                        scanf("%d", &op4);
                        dados[op4-1] = 1 + rand() % 6;
                    }
                    printf("\n POSIÇAO| 1 | 2 | 3 | 4 | 5 ");
                    printf("\n ##DADOS");
                    for(j=0;j<5;j++){
                        printf("| %d ", dados[j]);
                    }
                }
                else{
                    lansa_5dados();
                }
            }
            cc++;
        }while(op1==2 && cc<=1);
        printf("\n\n");
        tabela();
        cc=0;
    }/*//fim laço jogadas*/
    }/*//fim op==1*/
    else{
        printf("\n POR FAVOR DIGITE UMA OPÇÃO VALIDA \n\n");
        /*main();*/
        goto inicio;
    }

    /*//Calcula o total de pontos*/
    for(i=0;i<13;i++){
        soma_total += table[i];
    }
    printf("\n\n ***********************************************************");
    printf("\n\n A SOMA TOTAL DOS PONTOS É IGUAL %d ", soma_total);
    printf("\n\n ***********************************************************");
    system("pause>null");
    return 0;
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...