Ir ao conteúdo

Posts recomendados

Postado

olá, meu professor pediu esse exercício, e eu fiz o código,  logo a baixo  Faça um programa C totalmente modularizado que leia os limites de um intervalo de números inteiros, identifique, conte e imprima a quantidade de números pares e ímpares deste intervalo. Construir uma função para identificar, contar a quantidade de números pares e ímpares.

 

 

 

 

#include <code>

 

//entrada de dados

void entrada( int *li, int *ls );// ponteiro para os limites

 

//processamento de dados

void par_impar( int limif, int limsu, int *cp , int *ci ); // ponteiros para os contadores

 

//saida de dados

void dados(int ni, int np);//quantidade de pares e impares


 

int main(void) {

 

int limite_in,limite_su, total_pares, total_impares;

 

//entrada de dados

entrada(&limite_in,&limite_su );

 

//leitura de dados

par_impar (limite_in, limite_su,&total_pares, &total_impares);

 

//saida de dados

dados( total_pares,total_impares);


 

return 0;

}

void entrada( int *li, int *ls ){

printf("\n\n\tDigite o limite superio e inferior do intervalo( inferior<=superior)");

scanf("%i%i", li,ls);

}

void par_impar( int limif, int limsu, int *cp , int *ci )

{

for( int i = limif; i <= limsu; i++);

if( i % 2 == 0)

(*cp)++;

else

(*ci)++;

 

}

void dados(int ni, int np)

{

printf("\n\n\tquantidades de números pares = %i e impares = %i dentro do intervalor \n ", ni,np);

 

}

 

entretanto  o i dentro do if ( i % 2 == 0) 

está falando que não foi declarada, porém eu seguir os passo a passo que o professor tinha passado e está tudo igual, o dele funcionou, e o meu da erro nisso que falei, alguém poderia me ajuda ?? 

  • Amei 1
Postado

@Brendon Nogueira    você não disse que erros acontece no seu código , mas me parece que ele não mostrando o resultado esperado , e  creio que isso seja por que você não inicializou as variáveis antes de enviar seus endereços para a função ,  e ainda na função par_impar , você colocou um ponto e vírgula no loop for , finalizando ele sem que fizesse alguma coisa , e assim não faz a contagem ,  e seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <windows.h>
#include <iomanip>
int GetColor();
int getForground();
int getBackground();
void textcolor(int,int);

//entrada de dados
void entrada( int *li, int *ls );// ponteiro para os limites
//processamento de dados
void par_impar( int limif, int limsu, int *cp , int *ci ); // ponteiros para os contadores
//saida de dados
void dados(int ni, int np);//quantidade de pares e impares
int main()
{
    int c_letra_ants, c_fundo_ants;
    WORD cor;
    c_letra_ants = getForground();
    c_fundo_ants = getBackground();
    int limite_in,limite_su, total_pares=0, total_impares=0;// inicializar as variáveis
    //entrada de dados
    entrada(&limite_in,&limite_su );
    printf("li ls = %d %d\n",limite_in,limite_su);
    //leitura de dados
    par_impar (limite_in, limite_su,&total_pares, &total_impares);
    printf("totpar totimp = %d %d\n",total_pares, total_impares);
    //saida de dados
    dados( total_pares,total_impares);
    textcolor(c_letra_ants,c_fundo_ants);
    return 128;
}
void entrada( int *li, int *ls )
{
    printf("\n\n\tDigite o limite superio e inferior do intervalo( inferior<=superior)");
    scanf("%i%i", li,ls);
}
void par_impar( int limif, int limsu, int *cp , int *ci )
{
    int i;
    printf("li ls = %d %d\n",limif,limsu);
    for( i=limif; i <= limsu; i++)// ;  esse ponto e vírgula finaliza o Loop for aqui mesmo
        if( i % 2 == 0)
            (*cp)++;
        else
            (*ci)++;
}
void dados(int ni, int np)
{
    textcolor(12,10);
    printf("\n\n\tquantidades de números pares = %i e impares = %i dentro do intervalor\t\n", ni,np);
}
int GetColor()
{
    WORD wColor = 0;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    if(GetConsoleScreenBufferInfo(hStdOut, &csbi)){
        wColor = (csbi.wAttributes & 0xFF);
    }
    return wColor;
}
int getForground(){
    return GetColor() & 0x0F;
}
int getBackground(){
    return (GetColor() >> 4) & 0x0F;
}
void textcolor(int letra,int fundo)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),letra+(fundo<<4));
}

 

  • Curtir 1

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