Jump to content

numeros pares


nando_ice

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

#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

Link to comment
Share on other sites

  • 2 weeks later...

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

[ ]

Link to comment
Share on other sites

  • 1 year later...

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.