Jump to content

ajuda numeros


bosnia
 Share

Recommended Posts

ver quantos zeros tem numero introduzido pelo utilizador

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i,conta;
conta=0
    printf("introduza um numero ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(n=0)
        conta=conta+1
        
    }
    printf("numero de zeros introduzidos %d",conta)
    return 0;
}
Link to comment
Share on other sites

Isso tem aí muitos erros. Primeiro penso que o que queres é contar o número de dígitos iguais a 0 pertencentes a um número introduzido pelo utilizador. Tens 2 maneiras de fazer isto: ou lês o número como uma string e, de seguida, percorre-la e em cada posição verificas se o caracter corresponde ao dígito 0, ou então lês como inteiro e utilizas as divisões e resto das divisões por 10 sucessivas para iterares sobre cada algarismo e fazes a comparação. A comparação não é feita com o sinal '='. Este sinal é de atribuição de valores a variáveis. O sinal de comparação é o '=='.

Link to comment
Share on other sites

Tenta isto.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,i,conta;
    int x, arr[50], div, div2, pass;
    conta=0;

    printf("introduza um numero ");
    scanf("%d", &n);

for (div=10,div2=1,pass=0; pass < 51; div=div*10,div2=div2*10,pass++){
	arr[pass] = x % div;
	arr[pass] = arr[pass] / div2;
	if (x / div == 0){
		break;
	}
}
   

    for(; pass >= 0;pass--){
            if(arr[pass] == 0){
                conta = conta + 1;
            }
    }

    printf("numero de zeros introduzidos %d", conta);
    return 0;
}

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Link to comment
Share on other sites

com matrizes tambem nao pode ser XD o prof nao quer

Óptimo. Tens aqui um bom exercício: alterar a implementação de forma a que deixes de precisar de matrizes 🙂

Basta no primeiro for, em vez de armazenares os valores, verificares se são iguais a 0.

Adicionalmente, também podes tentar remover aquele break (alterando a condição de paragem do ciclo), e tentar perceber o código de forma a simplificá-lo.

O objectivo do fórum não é propriamente resolver exercícios pelos outros.

Link to comment
Share on other sites

Aqui está o que eu quis explicar:

#include <stdio.h>

int main(void) {
    int n, aux, c=0;
    scanf("%d",&n);
    while (n) {
        aux = n;
        n/=10;
        if (aux%10==0)
            c++;
    }
    printf("Zeros: %d\n",c);
    return 0;
}

À medida que vais dividindo o número por 10, podes ir verificando se o resto da divisão (que te dá o valor dos sucessivos dígitos do número, da direita para a esquerda) é igual a 0. Se tiveres dúvidas, faz as contas à mão, como na primária.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.