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 :

execution d'un bout de programme


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur blockchain.
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur blockchain.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 22
    Points
    22
    Par défaut execution d'un bout de programme
    Bonsoir a tous. j'aimerais comprendre l'execution du programme ci-apres :
    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
     
    #include <stdio.h>
     
    main(){
        int k[10],i,j;
        k[0] =1;
        k[1] = 1;
        for(i=2;i<10;i++){
            k[i] =0;
        }
        for(j=1;j<=3;j++){
            for(i=1;i<10;i++){
                k[i] +=k[i-1];
            }
        }
        for(i=0;i<10;i++)
            printf("%d\n\n",k[i]);
    }
    lorsque je l'execute j'obtiens bien le resultat, mais j'ai essayé de comprendre le rôle des boucles for imbriquées en vain,
    merci d'avance pour vos éclaircissements.
    A plus

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Affichez le contenu de tableau à chaque étape du programme.
    Ou encore, plus avancé, utilisez un débogueur en pas à pas pour voir ce qui se passe vraiment.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur blockchain.
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur blockchain.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur blockchain.
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur blockchain.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 22
    Points
    22
    Par défaut bonjour
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Affichez le contenu de tableau à chaque étape du programme.
    Ou encore, plus avancé, utilisez un débogueur en pas à pas pour voir ce qui se passe vraiment.
    j'ai essayé d'exécuter mon programme pas a pas... mais je ne vois toujours pas d'explication claire

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Sinon, vous prenez un crayon et un papier et vous essayez de reproduire ce que fait le code.
    Dites nous ce que vous en pensez, ce que vous en comprenez et on vous corrigera
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 642
    Points
    7 642
    Par défaut
    Bonjour,

    Voir la subtilité de la double boucle est plus mathématique que de la compréhension de code.
    La boucle sur i est effectuée 3 fois, on fait donc 3 fois la même chose. Pourtant chacune des itérations joue un rôle différent. Il est plus lisible de développer et d'interpréter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (i=1;i<10;i++) {
       k[i] += k[i-1]; // 1+1 pour i==1 et 2+0 pour les i>1
    }     // => pour i>=1, k[i] = 2
    for (i=1;i<10;i++) {
       k[i] += k[i-1];  // somme valeur iter précédente(donc 2) et valeur calculé juste avant(1,3,5,7...) = 2i+1
    }     // => k[i] = 2i+1
    for (i=1;i<10;i++) {
       k[i] += k[i-1];   // somme iter prec(donc 2i+1) et valeur calculée juste avant(1,4,9,...) = 2i+1 + i*i
    }     // => k[i] = (i+1)*(i+1)

  7. #7
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 469
    Points : 6 102
    Points
    6 102
    Par défaut
    Comme le dit dalfab, c'est un problème mathématique.
    A chacune des 3 étapes, on remplace la suite par la suite des sommes partielles.
    Donc, pour vraiment comprendre ce que fait le programme, il faut appliquer la méthode de dalfab en exprimant k[i] en fonction de i.

    Si on rencontre des difficultés, pour s'aider, on peut afficher la suite après chaque étape.
    Si on remplace le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        for(j=1;j<=3;j++){
            for(i=1;i<10;i++){
                k[i] +=k[i-1];
            }
        }
    par le code :
    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
        // affichage du tableau k
        for(int p = 0; p < 10; p++)
            printf("%d\t",k[p]);
        printf("\n");
     
        for(j=1;j<=3;j++){
            for(i=1;i<10;i++){
                k[i] +=k[i-1];
            }
     
            // affichage du tableau k
            for(int p = 0; p < 10; p++)
                printf("%d\t",k[p]);
            printf("\n");
        }
    on obtient en sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1	1	0	0	0	0	0	0	0	0	
     
    1	2	2	2	2	2	2	2	2	2	
     
    1	3	5	7	9	11	13	15	17	19	
     
    1	4	9	16	25	36	49	64	81	100
    Dans la dernière ligne, on reconnaît la suite des carrés.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur blockchain.
    Inscrit en
    Avril 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur blockchain.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup pour vos différentes interventions....

Discussions similaires

  1. Executer un fichier via un programme externe
    Par kashmir_ dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 26/08/2007, 01h02
  2. [WD10] execution d'une partie du programme
    Par nnizarr2010 dans le forum WinDev
    Réponses: 8
    Dernier message: 25/06/2007, 16h00
  3. executer un .exe depuis un programme
    Par celine18 dans le forum NetBeans
    Réponses: 4
    Dernier message: 25/08/2006, 14h56
  4. temps d'execution d'une portion de programme????
    Par othland dans le forum C++
    Réponses: 7
    Dernier message: 04/03/2006, 18h12
  5. Réponses: 5
    Dernier message: 20/02/2006, 14h11

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