Partage

Somme n nombre impairs

Le 23 août 2013 à 15:10:57

Bonjour, 

j'ai un petit soucis avec mon programme , lorsque je lui demande de calculer les n nombres impairs (dans le cas présents les 4 premiers), il ne me calcule que ceux qui sont compris jusque 4 donc (1+3) au lieu de me calculer 1 + 3 + 5 + 7 (qui sont donc les 4 premiers nombres impairs). Comment dois-je m'y prendre pour remédier à cela ? Merci de vos réponses

#include <stdio.h>
#include <stdlib.h>

	int main()
	{
		int n = 4;
		int somme = 0, i =0;

		while(n >= i)
		{
			if((i % 2) != 0)
			{
				somme = somme + i;
			}
			i++;
		}
		printf("%d", somme);

		return 0;
	}



Publicité
Le 23 août 2013 à 15:10:57
Le 23 août 2013 à 15:21:11

#include <stdio.h>
#include <stdlib.h>
 
    int main()
    {
        int n = 4;
        int somme = 0, i =0, cnt=0;
 
        while(n >= cnt)
        {
            if((i % 2) != 0)
            {
                somme = somme + i;
                cnt++;
            }
            i++;
        }
        printf("%d", somme);
 
        return 0;
    }



Utilise un compteur plutot que i

-
Edité par DeepSiderZ le 23 août 2013 à 15:23:19

Qui ose, gagne
Le 23 août 2013 à 15:21:15

Bonjour

Plutot que de tester le nombre, teste un compteur de nombre deja passes

Le 23 août 2013 à 15:24:53

Salut,

C'est un peu evident, au regard de ton code, si l'on regarde la progression :

n = 4

i = 0

Premier tour de boucle :

4 >= 0 : True

0 % 2 = 0 : False

somme : 0

i : 1

Tu vois bien qu'en repetant, i va s'ecrementer de 1 a chaque fois, il prendra les valeurs 0,1,2,3,4, c'est ta condition d'arret mais c'est aussi ton calcul, tu melanges ta variable d'arret et le nombre dont tu cherches a savoir si il est pair ou impaire.

La question est : Quelle est la valeur du 4eme nombre impair ? Je te donne le debut le 1er est 1, le 2eme est 3, et le 3eme est 5 ... Tu peux alors trouver une formule qui te donne pour toute position, la valeur du nombre impair. A toi de jouer ...

Étudiant à l'Ensimag à Grenoble
Le 23 août 2013 à 15:26:13

Ce code vérifie pour chaque nombre entre 0 et 4 si il est impair ou non, vérifier les nombre un par un peut se justifier dans le cas ou il n'y a pas de relation connue entre les différent nombre que tu cherche, tu pourrai faire ça pour trouver les n premier nombre premier par exemple. Mais dans le cas des nombres impairs, il y a bien plus simple, car il y a une relation direct entre n et le n-ième nombre impair et on peut difficilement faire plus simple comme relation: le n-ième nombres impairs est 2*n+1.

en te servant de ça tu devrais pouvoir t'en sortir.

Le 23 août 2013 à 15:32:00

#include <stdlib.h>

    int main()
    {
        int n = 4;
        int somme = 0, i =0;

        while(n >= i)
        {
            if((i % 2) != 0)
            {
                somme = somme + i;
                n++;
            }
            i++;
        }
        printf("%d", somme);

        return 0;
    }
Voilà donc ici le n++ compte les 4 premiers nombres impaires 1ier = 1 , 2ème = 3 , 3ème = 5 et 4ème = 7 , la somme vaut donc  16.
Correct selon toi ?
Le 23 août 2013 à 15:43:47

@Geflüt , pour ta solution je vois pas trop en fait, tu pars sur une boucle while ? Tu intègres où ton  2*n+1. ?
Le 23 août 2013 à 16:07:47

Salut,

Astuce : pas besoin de boucle pour calculer la somme des n premiers nombres impairs.

Astuce′ : c’est un opérateur du langage.

Le 23 août 2013 à 18:32:36

Je verrais plutôt une boucle for dans laquelle tu ajouterai a ta somme le nombre impair correspondant à ton itérateur.

NB: j'aurais peut-être dû préciser que le n que j'ai employé ne faisait pas référence a la variable n que tu utilise, dans ton cas c'est plutôt la variable i qui devra servir dans la relation

Le 23 août 2013 à 19:35:08

Ben en fait le truc c'est de devoir utiliser une boucle while afin d'y parvenir :/ .. Et je vois pas comment y arriver à part le programme que j'ai link ci-dessus , j'ai essayé ici et je n'arrive jamais au résultat 16 en prenant n = 4 ..

Le 23 août 2013 à 19:51:45

#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n= 4 , somme=0;




for (i=0; i<n ; i++)
 {

somme+=2*i+1;

}

printf("somme = %d\n", somme);
return 0;
}
Sinon j'crois que ce que tu voulais que je fasses donne ça
Le 24 août 2013 à 17:04:34

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n= 4 , somme=0;
 
somme = n * n ;
 
printf("somme = %d\n", somme);
return 0;
}
:p

-
Edité par Valeri@n le 24 août 2013 à 17:05:34

Le 24 août 2013 à 20:15:18

Et pourquoi pas

#include <stdio.h>

#define NUMBER_TO_FIND	4

int main(void)
{	int number,found,sum;
	
	number=0;
	found=0;
	sum=0;
	while(found<NUMBER_TO_FIND)
		if(++number&1) {
			found++;
			sum+=number;
			}
	printf("sum=%d\n",sum);
	return(0);
}
Cette réponse vous a aidé (ou fait sourire) ? Faites-le moi savoir en cliquant sur le pouce levé....
Le 4 décembre 2014 à 1:02:15

VOICI LE CODE " La somme des pairs et impairs "

#include <stdio.h>
#include <stdlib.h>
  
    int main()
    {
        int somme = 0, i =0 ,somm = 0;
        int T[1000];
        printf(">>>>> REMARQUE : Pour Calculer entrer 999 ! <<<<<");
        printf(" \n");
        printf(" \n");
        
        while (T[i]!=999) {
      	
        printf("Entrer les chiffres :  ");
        
        scanf("%d",&T[i]);
          
        
          if  (T[i]%2==0)
          
            {
            	
                somme+=T[i];
                
                
                
                
                }
               
                
                if (T[i]%2!=0)
                {
                	
                somm+=T[i];
                
                
                
                }
                
              
            
             }
           
               
              printf(" \n"); 
              printf("Les pairs !\n");
              printf(" \n");
			  printf("La somme : %d   \n", somme);
			  printf(" \n");
			  printf("Les Impairs !\n");
			  printf(" \n");
              printf("La somme : %d   \n", somm-999);  
             
            
  
        return 0;
    }



-
Edité par tarikmofid le 4 décembre 2014 à 1:03:30

Le 4 décembre 2014 à 2:52:10

Sympa le déterrage...

Sinon, pour le calcul des n premiers nombres impairs :

int sommeImpairs(int n)
{
  return n * n;
}


\(1^2 = 1\)
\((n + 1)^2 =  n^2 + (2n + 1)\)
Donc c'est bien équivalent. 

-
Edité par anolya le 4 décembre 2014 à 2:54:12

Somme n nombre impairs

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown