Partage
  • Partager sur Facebook
  • Partager sur Twitter

Somme n nombre impairs

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



    • Partager sur Facebook
    • Partager sur Twitter
      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 23 août 2013 à 15:23:19

      • Partager sur Facebook
      • Partager sur Twitter
      Qui ose, gagne
        23 août 2013 à 15:21:15

        Bonjour

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

        • Partager sur Facebook
        • Partager sur Twitter
          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 ...

          • Partager sur Facebook
          • Partager sur Twitter
            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.

            • Partager sur Facebook
            • Partager sur Twitter
              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 ?
              • Partager sur Facebook
              • Partager sur Twitter
                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. ?
                • Partager sur Facebook
                • Partager sur Twitter
                  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.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    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

                    • Partager sur Facebook
                    • Partager sur Twitter
                      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 ..

                      • Partager sur Facebook
                      • Partager sur Twitter
                        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
                        • Partager sur Facebook
                        • Partager sur Twitter
                          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 24 août 2013 à 17:05:34

                          • Partager sur Facebook
                          • Partager sur Twitter
                            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);
                            }
                            • Partager sur Facebook
                            • Partager sur Twitter

                            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                              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 4 décembre 2014 à 1:03:30

                              • Partager sur Facebook
                              • Partager sur Twitter
                                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 4 décembre 2014 à 2:54:12

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Somme n nombre impairs

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown