Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Error] invalid operands of types 'void(int)' and 'int' to binary 'operator'.

Olá pessoal boa tarde! minha duvida é a seguinte, porque não consigo fazer operações, usando um referencia de uma função void.

#include <stdio.h>


void multiplicar(int multiplicador) {

    printf("Digite qual tabuada deseja!\n");
    scanf("%d", &multiplicador);

}



    int main() {

    int multiplicador;

    multiplicar(multiplicador);

    for(int i = 1; i <= 10; i++) {

    printf("%d X %d = %d\n", multiplicar, i, multiplicar * i);
    }
}
5 respostas

Boa noite Marcelo,

Existiam alguns erros de sintaxe e de lógica no seu código. Eles estão corrigidos abaixo. Compare com o seu código.

#include <stdio.h>


int multiplicar() {

    int multiplicador;

    printf("Digite qual tabuada deseja!\n");
    scanf("%d", &multiplicador);

    return multiplicador;

}



    int main() {

    int multiplicador = multiplicar();

    for(int i = 1; i <= 10; i++) {

    printf("%d X %d = %d\n", multiplicador, i, multiplicador * i);
    }
}

Abraços

Obrigado!!

Mas só me diga uma coisa, toda vez que fazer o uso da função void, se ainda for usar o resultado que a função for fazer no método main, tenho que utilizar no final da função o comando return + o nome da função.

Não, uma função void não precisa retornar nada, o problema é que você tentava manipular uma variável da função main dentro da função void, isso era um erro de lógica.

Você pode usar funções void, porém elas não conseguem alterar o conteúdo de variáveis da função main. Você poderia por exemplo ter uma função void que só exibe mensagens do jogo assim:

void exibe_mensagens(int numero_da_mensagem) {

  if (numero_da_mensagem == 1) {
    printf("Você ganhou!\n");
  } else if (numero_da_mensagem == 2) {
    printf("Essa é sua ultima chance!\n");
  } else {
    printf("Você perdeu! Tente Novamente.\n");
  }
}
solução!

Hum!!, agora fiquei confuso, porque nesse modulo de agora estou fazendo esse código aqui:

include

include

//ABERTURA DO PROGRAMA.. void abertura(){

printf("**\n");

printf(" Jogo de Forca \n");

printf("**\n"); }

//FUNÇÃO DE ENTRADA!! void chuta(char chutes[26], int* tentativas) {

char chute;

printf("Qual letra?\n");

scanf(" %c", &chute);

chutes[(tentativas)] = chute; (tentativas)++; }

// FUNÇÃO JÁ ACHOU!! int jachutou(char letra, char chutes[26], int tentativas) {

int achou = 0;

for(int j = 0; j < tentativas; j++) {

if(chutes[j] == letra){

achou = 1; break; }

}

return achou; }

// FUNÇÃO IMPRIME A PALAVRA SECRETA.. void desenhaforca(char palavrasecreta[20], char chutes [26], int tentativas) {

for(int i = 0; i < strlen(palavrasecreta); i++) {

int achou = jachutou(palavrasecreta[i], chutes, tentativas);

if(achou) {

printf("%c ", palavrasecreta[i]);

}

else {

printf("_ "); } }

printf("\n");

}

//FUNÇÃO ESCOLHE PALAVRA.. void escolhepalavra(char palavrasecreta[20]){

sprintf(palavrasecreta, "MELANCIA");

}

int main() {

char palavrasecreta[20];

int acertou = 0;

int enforcou = 0;

char chutes[26];

int tentativas = 0;

escolhepalavra(palavrasecreta);

abertura();

do {

desenhaforca(palavrasecreta, chutes, tentativas);

chuta(chutes, &tentativas);

printf("Voce ja deu %d chutes\n", tentativas);

} while (!acertou && !enforcou);

Veja que os resultados da função void, ele continuam sendo usado ao longo do código, preciso entender como funciona exatamente essas chamadas de funções, porque agora fiquei confuso...