Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Ruka284

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

Mensagens Recomendadas

Ruka284

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

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Quantos multiplos de 3 há entre 6 e 7?

Eu digo que é 1 (o 6).


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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

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.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ruka284

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos7

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.

Editado por Carlos7

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

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.

Editado por 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ruka284

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

- 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

@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! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest Markito

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!

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

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);

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest Markito

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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Guest Markito

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!

Editado por Opaidacriança

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.