Ir ao conteúdo
  • Cadastre-se

Problema com função em c


Ir à solução Resolvido por 1freakday,

Posts recomendados

Bom dia.

 

Meu professor de programação pediu o seguinte exercício:

 

"Escreva uma função chamada continuar capaz de ler um caractere informado pelo usuário e somente retorne 1 se for igual a ‘S’ ou 0 se igual a ‘N’. Caso o usuário informar um caractere diferente a função deve emitir a mensagem “Caractere inválido! Digite novamente.”. Além disso, escreva uma função chamada cubo que receba um número inteiro, eleve este número ao cubo e retorne o resultado ao programa principal. O programa deve ficar lendo, calculando e apresentando os números até que o usuário informe a letra ‘N’ à pergunta “Deseja continuar?”."

 

Cheguei ao seguinte código:

 

#include <stdio.h>

char continuar(char escolha){
    if(escolha == 'S') return 1;
    else if(escolha == 'N') return 0;
    else printf("Caractere invalido");
}

int cubo(int n){
    int a=0;
    a = n*n*n;
    return a;
}

int main(){
    
    int n=0, a=0;
    char escolha=0;
    
    do{
        printf("Digite um numero\n");
        scanf("%d", &n);
        
        a = cubo(n);
        
        printf("O numero elevado ao cubo é %d\n", a);
        
        printf("Deseja continuar? S para sim e N para nao");
        scanf("%c", &escolha);
        
    }while(continuar(escolha) == 'S');
    
    return 0;
    
}
 

Porém ao compilar este código no Geany, apareceu o seguinte erro: "ex_9.c:7:1: warning: control reaches end of non-void function [-Wreturn-type]"

 

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

  • Solução

 

char continuar(char escolha){
    if(escolha == 'S') return 1;
    else if(escolha == 'N') return 0;
    else printf("Caractere invalido");
}

 

Nessa função(acima) você esta utilizando char como tipo de função, o que requer um tipo de retorno char e nao int = 1 ou 0,

mas isso não equivale totalmente a um erro pois char também é um int, só que na conversão, ele troca o valor int pelo ascii char e no caso você esta retornando 1 e 0 que equivalem a só e STX, porém o erro que você enviou quer dizer que você não determinou o retorno no fim da função char continuar(char), ai no caso você utiliza o programa assim:

 

 

#include <stdio.h>
char continuar(char escolha){
    if(escolha == 'S') return 'S';
    else if(escolha == 'N') return 'N';
    else printf("Caractere invalido");
    //I de invalido
    return 'I';
}
int cubo(int n){
    int a=0;
    a = n*n*n;
    return a;
}
int main(){

    int n=0, a=0;
    char escolha=0;

    do{
        printf("Digite um numero\n");
        scanf("%d", &n);

        a = cubo(n);

        printf("O numero elevado ao cubo é %d\n", a);

        getchar();
        printf("Deseja continuar? S para sim e N para nao\n");
        scanf("%c", &escolha);

    }while(continuar(escolha) == 'S');

    return 0;

}

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...