## 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;
}```
##### 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 '=='.

##### Share on other sites

Tenta isto.

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

int main()
{
int n,i,conta;
int x, arr, 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.

##### Share on other sites

Se é um exercício onde é que tens dificuldades? Ser mais específico ajudava. 🙂

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

##### Share on other sites

como calcular os zeros por exemplo introduzo 2009 e ele diz-me que tenho 2 zeros

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

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

##### Share on other sites

obrigado pela ajuda.....nao tava mesmo a ver como se fazia este exercicio

## Create an account

Register a new account

×

• #### Revista PROGRAMAR

• Wiki
• IRC
×
• Create New...