Suites arithmétiques

Jules_0055 Messages postés 15 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour j'ai un exercice en c à rendre pour ce soir et je ne sais pas si j'ai bien interpréter l'énoncé de l'exercice.

Enoncé :
Écrire la fonction suite_Bangkok qui retourne le n-ième terme de la suite définie ci-dessous :
◦ U0 = 1 pour tout n > 1 :
◦ Un+1 = Un2
-3 si n est multiple de 2 ( avec : Un2= Un * Un)
◦ Un+1 = Un +2 si n est multiple de 3.
Un+1 = Un2 -1 si n n’est pas multiple de 3.

J'ai déja rédiger le code en c selon mon interprétation de l'énoncé et j'aimerais avoir votre avis dessus.


De plus je ne vois pas comment traduire Un+1= Un^2 -3 ; Un=((U0^2)^n)-3 en laguage c et notament le puissance n.

Merci de vos réponse, je les attends avec impatience.

8 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    je pense que tu n'as pas compris l'énoncé.
    avant de programmer, fais peut-être les calculs à la main.
    0
    1. Jules_0055 Messages postés 15 Statut Membre
       
      Bonjour,

      Oui c'est ce qui me semblait aussi, mais comme je ne comprends pas l'énoncé je n'arrive pas à imaginer les calculs
      Car les faire à la main n'est pas un soucis.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Jules_0055 Messages postés 15 Statut Membre
       
      Sais-tu ce qu'est une suite de nombres?
      0
    3. Jules_0055 Messages postés 15 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui une suite de nombres est une succession/séquence ordonnée de nombre entiers. C'est bien ca ?
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Jules_0055 Messages postés 15 Statut Membre
       
      Comprends-tu que l'énoncé explique comment il faut calculer les nombres de la suite?
      Peux-tu calculer les premiers nombres de cette suite?
      0
    5. Jules_0055 Messages postés 15 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      De quel suite car j'en ai 3 qui met son proposé si n est un multiple de 2, un multiple de 3 et si ce n'est pas un multiple de 3.
      0
  2. Jules_0055 Messages postés 15 Statut Membre
     
    U0=5
    U1=6
    U2=7
    U3=8
    U4=9
    U5=10
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Parfait. Plus compliqué:
      Il s'agit de la suite J, définie ainsi:
      J{0} = 5
      pour tout n>0:
      si n est pair, J{n+1} = J{n} +1
      si n est impair: J{n+1} = J{n} +2
      Peux-tu calculer les premiers nombres de cette suite?
      0
  3. Jules_0055 Messages postés 15 Statut Membre
     
    U0=5
    U1=6
    U2=8
    U3=9
    U4=11
    U5=12

    Ah daccord je pense avoir compris
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Jules_0055 Messages postés 15 Statut Membre
     
    Enfaite je vais devoir répeter ce processus jusqu'au n-ième terme demandé par l'utilisateur ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      C'est ainsi que je comprends l'énoncé, en effet.
      0
  6. Jules_0055 Messages postés 15 Statut Membre
     
    Donc normalement je devrais avoir

    U0=1
    U1=0
    U2=-3
    U3=-1
    U4=-2
    0
  7. Jules_0055 Messages postés 15 Statut Membre
     
    int suite_bankok_inter(int n)
    {
        int cpt=0;
        int somme=0;
        while(cpt!=n+1)
        {
            if (cpt%2==0)
            {
                somme=(somme*somme)-3;
                printf("%d ||%d\n",cpt,somme);
            }
            else if (cpt%3==0)
            {
                somme=somme +2;
                printf("%d ||%d\n",cpt,somme);
            }
            else if (cpt%3!=0)
            {
                somme=(somme*somme)-1;
                printf("%d ||%d\n",cpt,somme);
            }
            cpt++;
        }
    }
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu lu la suggestion de Jordane en #1?
      0
    2. Jules_0055 Messages postés 15 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui, mais j'ai du mal à m'y faire. Je n'ai pas fait les chose correctement ? Pourtant je le pensais
      0
    3. Jules_0055 Messages postés 15 Statut Membre
       
      Voici la version récursive

      int suite_bankok_recursive(int n,int cpt,int somme)
      {
          if (n+1)
          {
              return somme;
          }
          else
          {
              if (cpt%2==0)
              {
                  somme=somme*somme-3;
                  printf("%d ||%d\n",cpt,somme);
              }
              else if (cpt%3==0)
              {
                  somme=somme+2;
                  printf("%d ||%d\n",cpt,somme);
              }
              else if (cpt%3!=0)
              {
                  somme=somme*somme-1;
                  printf("%d ||%d\n",cpt,somme);
                  suite_bankok_recursive(n,cpt+1,somme);
              }
          }
      }
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      la fonction ne retourne rien, contrairement à l'énoncé.
      le nom de la variable
      somme
      est bizarrement choisi, non?
      le test
      if (cpt%3!=0)
      me semble superflu. d'ailleurs, tu n'as prévu de
      else
      .
      il serait plus élégant de n'avoir qu'une seule instruction
      printf("%d ||%d\n",cpt,somme);
      .
      je pense que le while est correct, un
      for
      serait cependant plus clair.

      peux-tu tester le code?
      0
    5. Jules_0055 Messages postés 15 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Pour la fonction récursive ne j'ai rien qui s'affiche dans la consol mais cependant pour la fonction itérative oui
      0
  8. Jules_0055 Messages postés 15 Statut Membre
     
    je devrais avoir quelque chose comme ca ?
    0