IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Débutant] Programme sur les Triplets Pythagoriciens


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [Débutant] Programme sur les Triplets Pythagoriciens
    Bonjour, je vous expose mon problème.

    Je dois faire un programme qui calcule tout les triplets pythagoriciens (les triplets (i,j,k) tels que i²+j²=k²) inferieur à une valeur maxi donnée par l'utilisateur et le programme m'affiche tout les triplets de 0 à MAX pour tout les nombres compris entre 0 et la valeur max. Si quelqu'un aurait une idée et un peu de temps pour m'aider je vous remercie d'avance !

    Pour vous aider, voilà ce que j'ai déjà fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <stdio.h>
    int main (void)
    {
         int i,j,k,m,a,b,c;
         i=0;
         j=0;
         k=0;
         a=i*i;
         b=j*j;
         c=k*k;
         printf("Donnez une valeur maximale à ne pas dépasser:\n");
         scanf("%d",&m);
         for (i=0;i<m;i++)
         {     
              for (j=0;j<m;j++)
              {
                   for (k=0;k<m;k++)
                   {
                        if (c=a+b)
                        {
                             printf("(%d,%d,%d)\n",i,j,k);
                        }
                   }
              }
         }
         return 0;
    }

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Grottier
    Pour vous aider, voilà ce que j'ai déjà fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `main':
    main.c:5: error: `o' undeclared (first use in this function)
    main.c:5: error: (Each undeclared identifier is reported only once
    main.c:5: error: for each function it appears in.)
    main.c:19: warning: suggest parentheses around assignment used as truth value
    Process terminated with status 1 (0 minutes, 0 seconds)
    3 errors, 1 warnings
    On pourrait avoir la version qui compile ?

    Je rappelle que o != 0 et que = est l'opérateur d'affectation et non de comparaison...

    Par exemple, j'obtiens ça. Ca a un sens pour toi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Donnez une valeur maximale Ó ne pas dÚpasser:
    3
    (0,0,0)
    (0,0,1)
    (0,0,2)
    (0,1,0)
    (0,1,1)
    (0,1,2)
    (0,2,0)
    (0,2,1)
    (0,2,2)
    (1,0,0)
    (1,0,1)
    (1,0,2)
    (1,1,0)
    (1,1,1)
    (1,1,2)
    (1,2,0)
    (1,2,1)
    (1,2,2)
    (2,0,0)
    (2,0,1)
    (2,0,2)
    (2,1,0)
    (2,1,1)
    (2,1,2)
    (2,2,0)
    (2,2,1)
    (2,2,2)
     
    Press ENTER to continue.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    As tu au moins écrit un pseudo code à la main, car là a, b et c ne varient pas dans ta boucle, alors qu'ils devraient.
    Une fois que le pseudo code manuel sera au point, réfléchis à une otpimisation possible.

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Oups désolé le forum a changé les 0 en o, j'ai modifié dans le code.

    En fait, il faut que le programme m'affiche tout les chiffres inferieurs à la valeur max entrée par l'utilisateur, qui vérifie que i²+j²=k²

    Par exemple
    (3,4,5) car 3² (9) + 4² (16) = 5² (25)

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    À nouveau, = c'est l'affectation, pas l'égalité. L'égalité se teste avec ==.

    Et le C n'est pas un langage de dataflow, les affectations de a b et c doivent se faire ailleurs, dans les boucles. Si tu ne comprends pas ce que j'écris, affiche les valeurs de a b et c en même temps que les valeurs de i, j et k, ça devrait t'aider.

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    essaie avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <stdio.h>
    void main ()
    {
         int i,j,k,m;
     
         printf("Donnez une valeur maximale à ne pas dépasser:\n");
         scanf("%d",&m);
         for (i=0;i<m;i++)
     
         for (j=0;j<m;j++)
     
         for (k=0;k<m;k++)
     
          if (i*i+j*j==k*k)
     
          printf("(%d,%d,%d)\n",i,j,k);
     
     
     
    }
    vous m'ifrormez du resultat immediatement svp

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par @NW@R
    vous m'ifrormez du resultat immediatement svp
    Ca va pas trainer.
    Pas du C standard.
    Project : Forums
    Compiler : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:3: warning: return type of 'main' is not `int'
    Linking console executable: C:\dev\forums\forums.exe
    Process terminated with status 0 (0 minutes, 4 seconds)
    0 errors, 1 warnings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <stdio.h>
    static void purge (void)
    {
       int c;
       while ((c = getchar ()) != '\n' && c != EOF)
       {
       }
    }
     
    int main (void)
    {
       int i;
       int m;
       int n;
       do
       {
          printf ("Donnez une valeur maximale a ne pas depasser:\n");
          n = scanf ("%d", &m);
     
          if (n != 1)
          {
             purge ();
          }
       }
       while (n != 1);
     
       for (i = 0; i < m; i++)
       {
          int j;
          for (j = 0; j < m; j++)
          {
             int k;
             for (k = 0; k < m; k++)
             {
                if (i * i + j * j == k * k)
                {
                   printf ("(%d,%d,%d)\n", i, j, k);
                }
             }
          }
       }
       return 0;
    }

  8. #8
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup !

    J'ai pris le programme d'@NW@R, j'ai corrigé le "int main (void)" et j'ai rajouté un "return 0;" pour faire plus joli et ça marche niquel chrom !

    Merci aussi Emmanuel pour ton programme mais il est trop complexe pour un simple etudiant en premiere année comme moi (c'est le premier programme sur lequel je bloque depuis septembre ) alors que celui d'@NW@R tiens sur quelques lignes et ça suffira amplement

    J'ai modifié en méttant i!=0 et j!=0 pour n'avoir que les entiers positifs et c'est encore mieux

    Merci encore pour votre précieuse aide !!

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Grottier
    Merci aussi Emmanuel pour ton programme mais il est trop complexe pour un simple etudiant en premiere année comme moi (c'est le premier programme sur lequel je bloque depuis septembre ) alors que celui d'@NW@R tiens sur quelques lignes et ça suffira amplement
    C'est le même ... en mieux ! C'est à dire conforme à la norme et sécurisé. Qu'est-ce que tu ne comprends pas ? Tu n'as donc pas envie d'avancer ?

  10. #10
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Si biensur que j'ai envie d'avancer, mais pour un programme restant sur le serveur de la fac et n'ayant pas encore appris ce dont tu parles, j'en reste aux bases demandées en TP avec les plus simples expressions possibles. T'inquiete pas avec le temps j'en viendrais à ton programme

    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] question sur les formulaires
    Par IDE dans le forum Access
    Réponses: 8
    Dernier message: 15/07/2006, 17h37
  2. [Débutant] Question sur les lumières
    Par Mandalar dans le forum DirectX
    Réponses: 10
    Dernier message: 04/01/2006, 14h49
  3. Réponses: 2
    Dernier message: 29/07/2005, 11h14
  4. [parseur] [Débutant] Question sur les parseurs
    Par steph-n dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2005, 20h17
  5. [débutant] question sur les #
    Par Ultros dans le forum C
    Réponses: 3
    Dernier message: 29/04/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo