Preciso construir um programa que leia um inteiro e conta quantos algarismos deste mesmo número são 7.
No caso criei um programa, no entanto ele funciona, mas se meu número tiver mais de 9 dígitos a variável responsável pela contagem começa a passar valores errados...
porque?
Segue abaixo o código que escrevi...
Antes de tudo grato pela colaboração.
#include<stdio.h>
intmain( void )
{
intaux = 1;
intcontador = 1;
intcontadorDe7 = 0;
intnumero, numeroAux, valorAux;
intcontaDigitos = 0;
printf( "\nInforme um número:" );
scanf( "%d",&numero );
// Caso seja um número de apenas um algarismo e ele seja 7...
if ( numero == 7 )
{
printf( "\nApenas um dígito 7\n" );
}
// Caso número seja 0...
if ( numero == 0 )
{
printf( "\nNenhum dígito é zero\n" );
}
// Variável auxiliar para que a original não seja alterada...
numeroAux = numero;
// Processo para ver quantos algarismos(dígitos) o número possui...
while( numeroAux != 0 )
{
contaDigitos++;
numeroAux /= 10;
}
// Processo para criar uma variável com tamanho suficiente para ser utilizada na hora da utilização de resto e divisão para apanhar os algarismos...
while ( contador < contaDigitos )
{
aux *= 10;
contador++;
}
// Processo de contagem de quantos algarismos 7 possui no número...
while ( contaDigitos != 0 )
{
valorAux = numero / aux;
if ( valorAux == 7 )
{
contadorDe7++;
}
numero = numero % aux;
aux /= 10;
contaDigitos--;
}
// Informando o resultado...
printf( "\n%d algarismos são 7\n\n", contadorDe7 );
Pergunta
carlosleonardo.df
Preciso construir um programa que leia um inteiro e conta quantos algarismos deste mesmo número são 7.
No caso criei um programa, no entanto ele funciona, mas se meu número tiver mais de 9 dígitos a variável responsável pela contagem começa a passar valores errados...
porque?
Segue abaixo o código que escrevi...
Antes de tudo grato pela colaboração.
#include <stdio.h>
int main( void )
{
int aux = 1;
int contador = 1;
int contadorDe7 = 0;
int numero, numeroAux, valorAux;
int contaDigitos = 0;
printf( "\nInforme um número:" );
scanf( "%d",&numero );
// Caso seja um número de apenas um algarismo e ele seja 7...
if ( numero == 7 )
{
printf( "\nApenas um dígito 7\n" );
}
// Caso número seja 0...
if ( numero == 0 )
{
printf( "\nNenhum dígito é zero\n" );
}
// Variável auxiliar para que a original não seja alterada...
numeroAux = numero;
// Processo para ver quantos algarismos(dígitos) o número possui...
while( numeroAux != 0 )
{
contaDigitos++;
numeroAux /= 10;
}
// Processo para criar uma variável com tamanho suficiente para ser utilizada na hora da utilização de resto e divisão para apanhar os algarismos...
while ( contador < contaDigitos )
{
aux *= 10;
contador++;
}
// Processo de contagem de quantos algarismos 7 possui no número...
while ( contaDigitos != 0 )
{
valorAux = numero / aux;
if ( valorAux == 7 )
{
contadorDe7++;
}
numero = numero % aux;
aux /= 10;
contaDigitos--;
}
// Informando o resultado...
printf( "\n%d algarismos são 7\n\n", contadorDe7 );
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.