Ruka284 Posted February 25, 2013 at 01:13 AM Report #496903 Posted February 25, 2013 at 01:13 AM #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?
HappyHippyHippo Posted February 25, 2013 at 01:24 AM Report #496904 Posted February 25, 2013 at 01:24 AM correste o programa ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Ruka284 Posted February 25, 2013 at 01:30 AM Author Report #496905 Posted February 25, 2013 at 01:30 AM Ja rectifiquei, peço desculpa.
Ruka284 Posted February 25, 2013 at 02:18 AM Author Report #496910 Posted February 25, 2013 at 02:18 AM o que acham do programa ?
pmg Posted February 25, 2013 at 09:49 AM Report #496925 Posted February 25, 2013 at 09:49 AM 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!
thoga31 Posted February 25, 2013 at 08:41 PM Report #496987 Posted February 25, 2013 at 08:41 PM (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 February 25, 2013 at 08:41 PM by thoga31 Knowledge is free!
Ruka284 Posted February 27, 2013 at 02:55 AM Author Report #497184 Posted February 27, 2013 at 02:55 AM #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 ?
Carlos7 Posted February 27, 2013 at 10:16 AM Report #497214 Posted February 27, 2013 at 10:16 AM (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 February 27, 2013 at 10:18 AM by Carlos7
pmg Posted February 27, 2013 at 10:23 AM Report #497216 Posted February 27, 2013 at 10:23 AM 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!
thoga31 Posted February 27, 2013 at 08:29 PM Report #497311 Posted February 27, 2013 at 08:29 PM 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!
KTachyon Posted February 28, 2013 at 01:49 AM Report #497337 Posted February 28, 2013 at 01:49 AM (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 February 28, 2013 at 01:49 AM 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
Ruka284 Posted March 1, 2013 at 01:48 AM Author Report #497479 Posted March 1, 2013 at 01:48 AM - 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.
pmg Posted March 1, 2013 at 09:55 AM Report #497494 Posted March 1, 2013 at 09:55 AM - 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!
thoga31 Posted March 1, 2013 at 06:23 PM Report #497558 Posted March 1, 2013 at 06:23 PM @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!
Guest Markito Posted March 4, 2013 at 09:28 PM Report #497910 Posted March 4, 2013 at 09:28 PM (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 March 4, 2013 at 09:30 PM by thoga31 GeSHi
thoga31 Posted March 4, 2013 at 09:35 PM Report #497915 Posted March 4, 2013 at 09:35 PM (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 March 4, 2013 at 09:36 PM by thoga31 Knowledge is free!
Guest Markito Posted March 4, 2013 at 09:46 PM Report #497920 Posted March 4, 2013 at 09:46 PM 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!
Rui Carlos Posted March 5, 2013 at 04:57 PM Report #498004 Posted March 5, 2013 at 04:57 PM Em vez de if(i%3!=0)/*múltiplo de 3*/ continue; else printf("%d\n",i); podias ter simplesmente if(i%3 == 0)/*múltiplo de 3*/ printf("%d\n",i); Rui Carlos Gonçalves
Guest Markito Posted March 5, 2013 at 11:45 PM Report #498054 Posted March 5, 2013 at 11:45 PM (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 March 5, 2013 at 11:47 PM by Opaidacriança
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