Raquel7112 Posted July 24, 2013 at 08:01 PM Report #519836 Posted July 24, 2013 at 08:01 PM 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?
HappyHippyHippo Posted July 24, 2013 at 08:20 PM Report #519838 Posted July 24, 2013 at 08:20 PM 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; } 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Raquel7112 Posted July 24, 2013 at 10:26 PM Author Report #519856 Posted July 24, 2013 at 10:26 PM 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?
Flinger Posted July 24, 2013 at 10:34 PM Report #519857 Posted July 24, 2013 at 10:34 PM (edited) 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 July 24, 2013 at 10:37 PM by Flinger
Raquel7112 Posted July 24, 2013 at 10:45 PM Author Report #519861 Posted July 24, 2013 at 10:45 PM 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..
Flinger Posted July 24, 2013 at 10:50 PM Report #519862 Posted July 24, 2013 at 10:50 PM (edited) 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 July 24, 2013 at 10:51 PM by Flinger
Raquel7112 Posted July 24, 2013 at 11:03 PM Author Report #519866 Posted July 24, 2013 at 11:03 PM Na comparação, valor de multiplo é o resto da divisão do numero_digitado por 7. Ou pelo menos deveria ser isso.
HappyHippyHippo Posted July 24, 2013 at 11:05 PM Report #519867 Posted July 24, 2013 at 11:05 PM 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 Portugol Plus
Flinger Posted July 24, 2013 at 11:07 PM Report #519868 Posted July 24, 2013 at 11:07 PM 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.
Raquel7112 Posted July 24, 2013 at 11:34 PM Author Report #519872 Posted July 24, 2013 at 11:34 PM Obrigada pessoal pelas dicas e agora já consegui fazer o programa funcionar depois de umas modificações
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now