nando_ice Posted June 17, 2006 at 05:04 PM Report #33469 Posted June 17, 2006 at 05:04 PM Boas pessoal voltei de novo com uma nova questa! tenho e seguinte exercicio: Elaborar um programa que determine todos os numeros pares entre dois numeros inteiros n e m(n<m)! Eu ja fiz o programa so k eu insiro os valores e ele nao me devolve nada... é o seguinte o programa: #include <stdio.h> main() { int n,m,contador=0,num=0; printf("introduza o n: "); scanf("%d",&n); printf("introduza o m: "); scanf("%d",&m); while (n<=m) { if(n%2==0) { num=n/2; contador++; } }return contador; printf("%d",contador); } cumps
neon_prannock Posted June 17, 2006 at 05:34 PM Report #33472 Posted June 17, 2006 at 05:34 PM Primeiro esse programa é mais C do que C++. Depois, covem indicar que tipo de valor retorna o main (int ou void). O valor que a função main retorna não será usado para nada, logo, assim que fazes "return contador;" o programa termina, não chegando a apresentar o valor do contador. Experimentar tirar essa linha e meter so no final "return 0;", sendo "int main()" no início. http://sergiosantos.info http://ideias3.com http://takeoff.ideias3.com
Rui Carlos Posted June 17, 2006 at 05:36 PM Report #33473 Posted June 17, 2006 at 05:36 PM o programa não faz muito sentido... o valor de n nunca é alterado, se entras no ciclo, nunca mais de lá sais... Rui Carlos Gonçalves
TheDark Posted June 17, 2006 at 05:49 PM Report #33477 Posted June 17, 2006 at 05:49 PM Queres saber quais são ou quantos são os números pares? Para que serve a linha num=n/2; ? Não devias estar antes a incrementar o n? Desaparecido.
Anonym Posted June 17, 2006 at 06:43 PM Report #33484 Posted June 17, 2006 at 06:43 PM uma coisa, so mm pra nao tar a abrir um novo topico na biblioteca math há alguma função para a raiz cúbica ?
Rui Carlos Posted June 17, 2006 at 07:19 PM Report #33493 Posted June 17, 2006 at 07:19 PM CBRT(3) BSD Library Functions Manual CBRT(3)NAME cbrt -- cube root function SYNOPSIS #include <math.h> double cbrt(double x); long double cbrtl(long double x); float cbrtf(float x); DESCRIPTION The cbrt() function computes the cube root of x. SPECIAL VALUES cbrt(+-0) returns +-0. cbrt(+-infinity) returns +-infinity. SEE ALSO math(3), sqrt(3) STANDARDS The cbrt() function conforms to ISO/IEC 9899:1999(E). BSD January 21, 2003 BSD só mais um pormenor... "...na biblioteca math á uma função..." ? Rui Carlos Gonçalves
deathseeker25 Posted June 17, 2006 at 08:52 PM Report #33506 Posted June 17, 2006 at 08:52 PM Em 17/06/2006 às 21:19, Rui Carlos disse: só mais um pormenor... "...na biblioteca math á uma função..." ? Pequena e última correcção, já que estamos numa de nos corrigir: "....na biblioteca math há uma função..." ? O programa falado no primeiro post está totalmente em C, pelo que vai passar para a secção correcta. Alguma notificação, façam-no por pm por favor. 😄
Rui Carlos Posted June 17, 2006 at 11:39 PM Report #33519 Posted June 17, 2006 at 11:39 PM Em 17/06/2006 às 22:52, deathseeker25 disse: Pequena e última correcção, já que estamos numa de nos corrigir: "....na biblioteca math há uma função..." ? eu não corrigi nada, apenas copiei... Rui Carlos Gonçalves
deathseeker25 Posted June 18, 2006 at 10:09 AM Report #33535 Posted June 18, 2006 at 10:09 AM Ups...peço então desculpa pelo equívoco. Chega de offtopic... 😄
nando_ice Posted June 18, 2006 at 02:26 PM Author Report #33578 Posted June 18, 2006 at 02:26 PM mas eu ando a trabalhar em c++ e desejava k o programa fosse feito em c++, nao em c. apesar das linguagens nao diferenciarem mt!
Rui Carlos Posted June 18, 2006 at 04:55 PM Report #33591 Posted June 18, 2006 at 04:55 PM as duas linguagens até são consideravelmente diferentes... ...o problema é que você não utilizou nada de C++ que não seja C também, mas o programa vai compilar na mesma em C++. e quanto ao programa, já funciona? Rui Carlos Gonçalves
moo Posted June 20, 2006 at 07:40 AM Report #33849 Posted June 20, 2006 at 07:40 AM Então, se queres fazer isso em C++, podes usar código mais próximo do "the c++ way" ;-) #include <iostream> using namespace std; int main() { int n, m; cout << "N = "; cin >> n; cout << "M = "; cin >> m; while (n <= m) { if (0 == (n % 2)) { cout << n << ' '; } ++n; } cout << endl; }
vbmaster Posted June 20, 2006 at 09:44 AM Report #33871 Posted June 20, 2006 at 09:44 AM Pah, numeros pares são os números de dois em dois, não é preciso verificações de múltiplo de 2 ou não.
Rui Carlos Posted June 20, 2006 at 09:54 AM Report #33875 Posted June 20, 2006 at 09:54 AM é uma boa observação, só precisamos de saber se o primeiro é par ou não... até porque a divisão é uma operação ineficiente. Rui Carlos Gonçalves
vbmaster Posted June 20, 2006 at 10:06 AM Report #33878 Posted June 20, 2006 at 10:06 AM Claro, perde-se bastante do rendimento do programa ao andar a fazer divisões.
nando_ice Posted June 20, 2006 at 07:46 PM Author Report #33976 Posted June 20, 2006 at 07:46 PM #include <stdio.h> int main(){ int n,m,i; do{ printf("introduza o n: "); scanf("%d",&n); printf("introduza o m: "); scanf("%d",&m); }while(n<m); for(i=n; i<=m; i++){ if(i%2==0) printf("%d",i); } return 0; } encontrei isto resolvido no meu caderno... nao tinha nada a ver com o k eu estava a fazer! :down: e tem razao c e c++ sao diferentes eu por vezes confunco a linguagem. cumps
Strong Posted July 1, 2006 at 08:04 AM Report #35772 Posted July 1, 2006 at 08:04 AM Só tens que verificar o último bit.. se é 0 ou não. A operação de mod é construida à base de operações de shitfs de bits mas posso estar enganado! perl is a prismthrough which chaos breeds order.perfection attained.
Narchotyck_Killer Posted July 8, 2006 at 01:01 AM Report #36995 Posted July 8, 2006 at 01:01 AM Como ja disseram existem pares de dois em dois, logo isto chega unsigned long n,m; printf("saber numeros pares entre "); scanf(" %d",&n); printf(" e "); scanf(" %d",&m); num=!(n&1) + !(m&1); /* Se o n é par, !(n&1)=1 para saber os numeros pares entre eles: */ num+=((n>m?n:m)-(n>m?m:n))/2-(num==2?1:0); printf("\n Existem %d numeros pares!\n",num); [ ]
sandro_G Posted November 9, 2007 at 02:49 PM Report #146326 Posted November 9, 2007 at 02:49 PM Este método funciona bem se for um intervalo de números seguidos. no entanto se for um conjunto de números introduzidos pelo utilizador penso que o método da comparação com o "resto da divisão" seja das únicas soluções. Digam-me se estiver enganado... Ps: Desenterrei este tópico pois tenho de fazer um programazito do genero lá pá UNI e penso que esta seja a forma mais acertada face ao meu problema (sendo um conjunto de números introduzidos pelo utilizador). No entanto, se existir um método mais eficiente digam-me, pois o meu Prof mais do que por um programa a funcionar quer a melhor solução..... Cumps ||I'm the devil25, I'm G and I'm sandro_G||
TheDark Posted November 9, 2007 at 03:52 PM Report #146340 Posted November 9, 2007 at 03:52 PM Este método é uma optimização para intervalos de números. Para números arbitrários, tens que percorrer todos os números inseridos e usar ou o resto da divisão por 2, ou a verificação do último bit. Nesse sentido, ambos os métodos funcionam. No entanto, e como já falaram por aí em performance, computacionalmente falando, fazer um and bit a bit é muito mais rápido que obter o resto da divisão, por isso é aconselhável o último método. Desaparecido.
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