Jump to content
Raquel7112

Ler números, e indicar primeiro que cumpre certas condições

Recommended Posts

Raquel7112

Como eu já disse aqui antes em uma outra dúvida, estou começando a estudar programação e o livro por onde estou a estudar tem o enunciado: Faça um programa que leia um número N e indique o primeiro número maior do que N e múltiplo de 7.

Eu tentei programar isso da seguinte forma:

int numero_digitado;
int multiplo;

printf("digite um numero: ");
scanf("%d", &numero_digitado);

numero_digitado++;

while (multiplo != 0)
{
numero_digitado%7 == multiplo;
numero_digitado++;
}
printf("O primeiro numero maior que %d e multiplo de 7 e: %d\n", numero_digitado, multiplo);

return 0;
}

O ciclo do while é onde ele deveria descobrir qual o numero que responde a questão. O número só vai ser multiplo de 7 quando a divisão dele por 7 der zero. Então eu acho que meu programa deveria funcionar, mas ele não funciona. Alquem pode me ajudar?

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

antes de mais, deverias colocar o teu código dentro das tags correspondentes para ser possível ler correctamente:

[ code=c]

// código (as tags não levam espaços dentro dos [ ] , só estão para poderes ler o que deverás escrever

[ /code]

segundo, apresenta o código todo, claramente falta o início do código. se fosse um projecto complexo, claro que só interessava o código referente ao problema, mas como estas a começar, o melhor é mesmo apresentar tudo.

agora vamos analisar o teu código:

#include <stdio.h>

int main()
{
 int numero_digitado;
 int multiplo;

 // que valor tem as variáveis "numero_digitado" e "multiplo" neste momento

 printf("digite um numero: ");
 scanf("%d", &numero_digitado);

 // que valor tem as variáveis "numero_digitado" e "multiplo" neste momento

 numero_digitado++;

 // que valor tem as variáveis "numero_digitado" e "multiplo" neste momento

 while (multiplo != 0) // <---- qual o resultado desta comparação ?
 {
   numero_digitado%7 == multiplo; // isto não faz nada, o que estás a fazer é:
                                  // calcular o resto da divisão inteira do valor de "numero_digitado" por 7 e
                                  // comparar esse resultado com o valor de "multiplo"
                                  // mas a questão é : "e depois ? calculas e nada ..."

   numero_digitado++;
 }

 printf("O primeiro numero maior que %d e multiplo de 7 e: %d\n", numero_digitado, multiplo);

 return 0;
}

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Raquel7112

Então.. obrigada por ter respondido a minha dúvida!

respondendo as questões que vc colocou...

// que valor tem as variáveis "numero_digitado" e "multiplo" neste momento

eu tentei iniciar o programa atribuindo algum valor para as variaveis numero_digitado" e "multiplo"(1 e 0 respectivamente) mas o programa ficou em um ciclo interminavel quando eu fiz isso e eu tive que encerrar ele a força.

while (multiplo != 0) // <---- qual o resultado desta comparação ?

oque eu tentei fazer foi dizer para o programa executar executar a operação abaixo do while enquanto o valor de multiplo for diferente de 0.

A terceira e última questão é: quando eu digitei:

numero_digitado%7 == multiplo;

numero_digitado++;

Eu achava que iria assim atribuir à variàvel "multiplo", o valor do resto da divisão de "numero_digitado" por 7.

Se esse comando não faz isso, que comando eu posso dar para fazer isso?

Share this post


Link to post
Share on other sites
Flinger

O operador da atribuição é o = e não o == (comparação).

Além disso a variavél à qual estás a atribuir um valor tem de estar à esquerda do operador:

x = 1;

"x toma o valor de 1"

Além disto, tens várias vezes numero_digitado++;

O que isto faz é incrementar o valor de numero_digitado, o equivalente a:

numero_digitado = numero_digitado + 1;

Edited by Flinger

Share this post


Link to post
Share on other sites
Raquel7112

Obrigada Flinger.. o meu programa melhorou. Pelo menos ele já roda, mas ainda não apresenta o resultado esperado.. o programa agora ficou:

#include <stdio.h>

int main()
int numero_digitado;
int multiplo;

printf("digite um numero: ");
scanf("%d", &numero_digitado);

while (multiplo != 0)
{
numero_digitado++;
multiplo = numero_digitado%7;
}
printf("O primeiro numero maior que %d e multiplo de 7 e: %d\n", numero_digitado, multiplo);

return 0;
}

acho que não soube colocar corretamente o codigo como me pediram..

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
Flinger

Obrigada Flinger.. o meu programa melhorou. Pelo menos ele já roda, mas ainda não apresenta o resultado esperado.. o programa agora ficou:

#include <stdio.h>

int main()
int numero_digitado;
int multiplo;

printf("digite um numero: ");
scanf("%d", &numero_digitado);

while (multiplo != 0)
{
numero_digitado++;
multiplo = numero_digitado%7;
}
printf("O primeiro numero maior que %d e multiplo de 7 e: %d\n", numero_digitado, multiplo);

return 0;
}

Primeiro, tens de retirar os espaços das tags [ code] para o texto aparecer com o formato de código.

A seguir, e voltando ao que o Hyppo te tinha dito, quando é executada a comparação pela primeira vez, qual é o valor de múltiplo?

Edited by Flinger

Share this post


Link to post
Share on other sites
Raquel7112

Na comparação, valor de multiplo é o resto da divisão do numero_digitado por 7. Ou pelo menos deveria ser isso.

Share this post


Link to post
Share on other sites
HappyHippyHippo

Na comparação, valor de multiplo é o resto da divisão do numero_digitado por 7. Ou pelo menos deveria ser isso.

na primeira comparação !!!


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Flinger

Na segunda vez que lá passa, é. E na primeira?

Um concelho, que me foi extremamente útil quando me iniciei a programar.

Pega num papel e numa caneta, e escreve os nomes das variáveis. Depois começa na primeira linha de código e vai escrevendo os valores que cada variável vai tomando à medida que vais avançando no código.

Share this post


Link to post
Share on other sites
Raquel7112

Obrigada pessoal pelas dicas

e agora já consegui fazer o programa funcionar depois de umas modificações

Share this post


Link to post
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

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