Jump to content

Calcule os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior


Recommended Posts

Posted
#include <stdio.h>
#include <stdlib.h>
main()
{
 float lim;
 int total,limite;
 printf ("Qual e o limite   \n");
 scanf("%f",&lim);
 total=6;
 while (total < limite){
   total=total+3;
   printf ("o total é: %d",total);
 }
 system ("PAUSE");
 return 0;          
}

ja alterei, aquele programa não estava bem, o que aconteçe neste programa e o limite.

acham que devo indicar o limite?

qual o erro que detectam?

Posted (edited)

Erros que detecto? Ora então...

1) Que confusão que reina entre as variáveis lim e limite!

2) Não entendi a maneira como estás a determinar os múltiplos de 3... não os estás a determinar nem a contar. Apenas estás a somar consecutivamente 3 a uma variável.

3) Continuas sem dar um tipo ao main.

Edited by thoga31

Knowledge is free!

Posted
#include<stdio.h>
#include<conio.h>//bibliotecas//
main()//programa principal//
{
 int N=0,X=0,I=0;
 printf("Introduza o valor\n");
 scanf("%d",&N);
 while (I<N)
 {
   X=X+3;
   I=I+1;
   printf("o valor e=%d\n",X);
 }
 printf("Prima qualquer tecla para continuar...\n");
 getch();
}//fim de programa//

retificação.

qual a vossa opinião ?

Posted (edited)

Continuas sem dar um tipo ao main, normalmente ao criares um programa num IDE ele fica automaticamente int main()...

As letras maiusculas são normalmente usadas para definir constantes e/ou macros, estás a usar para definir n,x,i que não são nem constantes nem macros. O que não quer dizer que não o possas fazer mas normalmente dizem que como boa prática se usa para ser mais fácil distinguir as constantes/macros das variáveis restantes se usa a letra maiúscula.

Essa biblioteca conio.h não irá funcionar em todos os sistemas operativos logo estás a perder portabilidade e outra coisa que vejo que não é erro mas podes simplificar é que se queres incrementar 1 em i, podes fazer i++ em vez de i=i+1.

Tal como se queres somar sempre 3 ao valor de x podes fazer x+=3 em vez de x=x+3. Mas da forma que tens também está a fazer os cálculos.

Edited by Carlos7
Posted

qual a vossa opinião ?

- Diz lá outra vez para que serve este programa?

- Para "calcular os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior"

A minha opinião é de que o programa não faz o que foi pedido.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

qual a vossa opinião ?

Simplesmente uma: não estás a aplicar as nossas sugestões dadas às tuas perguntas do que achamos e de que erros encontramos. Continuas a apresentar rectificações que não rectificam nada; por outras palavras, andamos a falar maioritariamente para a parede. Não só neste tópico, como em todos os teus outros.

Para citar um bom exemplo, aqui vai 2 dos 3 pontos que tu, aparentemente, achaste palha.

2) Não entendi a maneira como estás a determinar os múltiplos de 3... não os estás a determinar nem a contar. Apenas estás a somar consecutivamente 3 a uma variável.

3) Continuas sem dar um tipo ao main.

Knowledge is free!

Posted (edited)

A partir do momento em que tens o limite superior só precisas de uma linha de código para resolver o problema. O ciclo não faz falta no código. No fundo precisas de pedir o valor (V) ao utilizador e... V / 3 - 1.

Edited by KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Posted

- Diz lá outra vez para que serve este programa?

- Para "calcular os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior"

A minha opinião é de que o programa não faz o que foi pedido.

Não faz em que sentido.

Simplesmente uma: não estás a aplicar as nossas sugestões dadas às tuas perguntas do que achamos e de que erros encontramos. Continuas a apresentar rectificações que não rectificam nada; por outras palavras, andamos a falar maioritariamente para a parede. Não só neste tópico, como em todos os teus outros.

Para citar um bom exemplo, aqui vai 2 dos 3 pontos que tu, aparentemente, achaste palha.

Algumas palavras que mencionaste aqui, estou plenamente de acordo ctg.

Posted

- Diz lá outra vez para que serve este programa?

- Para "calcular os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior"

A minha opinião é de que o programa não faz o que foi pedido.

Não faz em que sentido.

Se eu introduzir 7 quando o programa pede o valor, este responde com

o valor e = 3
o valor e = 6
o valor e = 9
o valor e = 12
o valor e = 15
o valor e = 18
o valor e = 21
Prima qualquer tecla para continuar...

Qual é a relação entre esta resposta e "os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior" não estou mesmo a ver!

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

@Ruka284, vamos aplicar o que o @pmg disse no objectivo do exercício.

Quais os múltiplos de três, compreendidos entre 6 e 7.

Ora, só há um, que é o próprio 6, e o teu programa devolve 7 múltiplos.

Ou seja, tu tens de dizer quantos múltiplos há, e quais são, entre 6 e n, não são os próximos n múltiplos!

Lê bem o objectivo do programa e vê bem o que o teu programa está a fazer... Não tem nada a ver.

Knowledge is free!

Posted (edited)

Boas;

Eu fiz desta maneira que é como está no livro do Sr. Damas, feitas algumas alterações da minha parte:

/*Calcule os múltiplos de 3, compreendidos no intervalo entre 6 e um dado limite superior*/
#include <stdio.h>
main()
{
int i,limite;
printf ("Introduza o limite");
scanf("%d",&limite);
for (i=6;i<=limite;i++)
{
    if(i%3!=0)/*múltiplo de 3*/
    continue;
    else
    printf("%d\n",i);
}
}

Deu perfeitamente, mas aquela parte do

if(i%3!=0)/*múltiplo de 3*/

fiz por tentativa e erro e não percebi muito bem esse trecho.

Já agora apesar deste tópico não ser meu pergunto: como é que essa parte do código me está a dizer para escrever os multiplos de 3?

Peço desculpa ao Ruka mas talvez o ajude também a ele que estamos ambos a iniciar!

Edited by thoga31
GeSHi
Posted (edited)

Lê bem essa estrutura if: se o resto da divisão entre i e 3 é diferente de zero, então não é múltiplo de 3. Caso contrário, é múltiplo, e é feito, então, o output dele. Logo, esse comentário está mal.

Contudo, uma optimização que pode ser feita:

for (i=6;i<=limite;i=i+3) printf("%d\n",i);
Edited by thoga31

Knowledge is free!

Posted

Sim o comentário está mal! tens razão!

Ele vai ler só os múltiplos de 3, pois se não for múltiplo de 3 ele faz o continue.

Tens razão! Obrigado

E quanto á optimização parece-me que tem toda a lógica de economia de código!

Muito Obrigado por nós iniciantes!

Posted (edited)

Sim! É mais directo, concordo. Mas ainda sou novato e talvez por isso me falte um pouco de autonomia neste momento.

Fiz baseado no exercício que há no livro do Sr. Luís Damas pois o enunciado era muito semelhante.

Ainda ando ás apalpadelas, mas reconheço que dessa forma é muitíssimo mais eficaz... Sem dúvida!

Edited by Opaidacriança

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.