Ir ao conteúdo
  • Cadastre-se
Daniel Natan Schmitz

RESOLVIDO Problema com função em c

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×