Ir ao conteúdo
  • Cadastre-se

C Função em C utilizando o char


AnaTrinity

Posts recomendados

Boa tarde! 

Estou com um exercício para fazer: "Faça um programa que leia números digitados pelo teclado até que um deles seja -1. Para cada número digitado, diga se ele é par ou ímpar criando uma função para isto."

Segue abaixo o que eu consegui fazer:

#include <stdio.h>

int ParOuImp (int num)
{
    if(num%2==0){
     printf("O numero e par\n");
     }
     if(num%2 != 0){
      printf("O numero e impar\n");
     }
return 0;
}

int main()
{
    int numero;
    scanf("%d", &numero);
    ParOuImp(numero);
    
    return 0;
}

 

 

 

 

Só consegui exibir se é par ou ímpar mas o programa tem que para ao digitar -1. Se puderem me ajudar, agradeço muito!

Link para o comentário
Compartilhar em outros sites

Refiz seu código de uma maneira mais clara, não compilei porque não to na minha maquina e fiz pelo bloco de notas, mas é praticamente isso, fiz comentado para que você entenda direitinho e com algumas dicas que você pode usar

 

#include <stdio.h>
#include <stdlib.h> //inclui esse estudio para melhor interação com o código
int operaNum (float num1, char x, float num2); //organizei as funções (chamando ela primeiro aqui em cima e mostrando o que ela faz no fim do código)
int main(){
    float a, c, operac, resultado; //aqui estava float a = 0, ele ja estava definindo a variavel, não é uma boa pratica de programação fazer isso.
    char b;
    scanf("%f %c %f", &a, &b, &c);
    operac = operaNum(a, b, c); 
    //resultado = operac;        no seu código não tem pra q 2 variaveis, apenas aloca mais memoria, adicionei um if else para dizer se a operação é valida
    if (operac==EXIT_FAILURE){
        printf("A operacao nao é valida");}
    else{
        printf("%.2f\n", operac);}
return 0;    
}
int operaNum (float num1, char x, float num2){
    float soma;
    char sinal;
    if(sinal=='*'){ //você esta se atrapalhando um pouco com os espaços, notei que na função em certos lugares você usa 6, 7, 8, não sei se isso influencia, porém não é uma boa pratica, fica ruim de outra pessoa entender, até mesmo você se o código for mt grande
        soma = num1*num2;
    }else if(sinal=='+'){
        soma = num1+num2;
    }else if(sinal=='-'){ //você confundio o sinal aqui e no fim do parenteses colocou um ; e dps {, isso gera erro no código
        soma = num1-num2;
    }else if(sinal=='/'){
        soma = num1/num2;
    }else{
          return EXIT_FAILURE;} //devido ao <stdlib.h> isso retorna falso ou se preferir retorna 1, da para fazer uma interação em outras funções com esse return, caso você coloque qualquer coisa no lugar de *,-,+,/ ele vai retornar falso.
    return soma; //como agora a função esta em int tera um return, porém no seu caso uma função void não tem return, retorna o valor da soma
} 
 
adicionado 2 minutos depois

O seu maior erro era no tipo da função, você estava definindo que ela ia retornar algo mas ela era uma função void, resumindo, ela sempre vai retornar vazio...

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

 

21 horas atrás, VictorFreitasKing disse:

Refiz seu código de uma maneira mais clara, não compilei porque não to na minha maquina e fiz pelo bloco de notas, mas é praticamente isso, fiz comentado para que você entenda direitinho e com algumas dicas que você pode usar

 


#include <stdio.h>
#include <stdlib.h> //inclui esse estudio para melhor interação com o código
int operaNum (float num1, char x, float num2); //organizei as funções (chamando ela primeiro aqui em cima e mostrando o que ela faz no fim do código)
int main(){
    float a, c, operac, resultado; //aqui estava float a = 0, ele ja estava definindo a variavel, não é uma boa pratica de programação fazer isso.
    char b;
    scanf("%f %c %f", &a, &b, &c);
    operac = operaNum(a, b, c); 
    //resultado = operac;        no seu código não tem pra q 2 variaveis, apenas aloca mais memoria, adicionei um if else para dizer se a operação é valida
    if (operac==EXIT_FAILURE){
        printf("A operacao nao é valida");}
    else{
        printf("%.2f\n", operac);}
return 0;    
}
int operaNum (float num1, char x, float num2){
    float soma;
    char sinal;
    if(sinal=='*'){ //você esta se atrapalhando um pouco com os espaços, notei que na função em certos lugares você usa 6, 7, 8, não sei se isso influencia, porém não é uma boa pratica, fica ruim de outra pessoa entender, até mesmo você se o código for mt grande
        soma = num1*num2;
    }else if(sinal=='+'){
        soma = num1+num2;
    }else if(sinal=='-'){ //você confundio o sinal aqui e no fim do parenteses colocou um ; e dps {, isso gera erro no código
        soma = num1-num2;
    }else if(sinal=='/'){
        soma = num1/num2;
    }else{
          return EXIT_FAILURE;} //devido ao <stdlib.h> isso retorna falso ou se preferir retorna 1, da para fazer uma interação em outras funções com esse return, caso você coloque qualquer coisa no lugar de *,-,+,/ ele vai retornar falso.
    return soma; //como agora a função esta em int tera um return, porém no seu caso uma função void não tem return, retorna o valor da soma
} 
 
adicionado 2 minutos depois

O seu maior erro era no tipo da função, você estava definindo que ela ia retornar algo mas ela era uma função float, resumindo, ela sempre vai retornar vazio...

 

Vou refazer utilizando essas dicas. Muito obrigado!!!!

Link para o comentário
Compartilhar em outros sites

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