Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
AnaTrinity

C Função em C utilizando o char

Recommended Posts

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!

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde. Tem que usar um laço de repetição pra ficar nesse looping.

Sugiro while.

Assim:

while (num!= -1){
   //instrução
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Obrigado!! Não tinha pensado nisso

    adicionado 24 minutos depois

    eu fiz mas está errado pois não quer compilar. como eu posso consertar?

    image.png

    • Curtir 1

    Compartilhar este post


    Link para o post
    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...

    Editado por VictorFreitasKing
    Inserir o código com o botão CODE <>
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •  

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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    5 minutos atrás, AnaTrinity disse:

     

     

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

     

    precisando, fico feliz em ajudar ^-^

    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

    Entre para seguir isso  





    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

    ×