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 :

petite question rapide sur boucle for


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut petite question rapide sur boucle for
    bonjour,

    j'aimerais juste savoir quelle idée vous me proposez pour faire varier une variable de 0 à 2 et de 5 à 7, si possible avec une boucle for.

    Ceci marche-t-il :
    for(j=0; j<=7; if (j == 2) j=5 else j++)


    et puis une autre toute petite question puisqu'on y est

    comment initialiser une matrice globale à 1 pour toute valeur ? (on ne peut pas utiliser de 'for' au dessus du main, si?)

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Salut,
    si tu veux utiliser "for", puisque c'est l'instruction du milieu est le teste, tu fais un truc du genre: for(i=0; i <= 2 || (i >= 5 && i <= 7); i++)
    sinon fais 2 for .. une après l'autre, la première commence à 0 et la deuxième à 5.


    Marouane.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0; i <= 2 || (i >= 5 && i <= 7); i++)
    La condition en rouge ne sera évaluée que lorsque i sera égal à 3. Et comme, à ce moment-là, les deux conditions "OU" seront fausses, il y aura sortie de boucle.

    Tu peux faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for( j = 0 ; j <= 7 ; (j==2) ? j=5 : j++)
    {
       (...)
    }

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    Ok... et en ce qui concerne l'initialisation matricielle ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Ta question n'est ni claire ni précise. Donne un exemple.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    Je veux avoir une matrice définie globalement et valant m=[[1,1][1,1]].
    Comment l'implémenter en C ?
    C'est plus clair ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Un tableau.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    Un tableau de tableaux, oui. Mais comment y mettre des valeurs dedans ?
    (on n'a pas le droit à des boucles en dehors du main...)

    int m[2][2] = {1} initialise la première valeur à 1 mais les autres à 0.
    int m[2][2] = {1,1,1,1} fonctionne mais comment faire pour une matrice 1000x1000 ? :s

  9. #9
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int m[100][200];
    int i, j;
     
    for(i = 0; i < 100; i++)
    {
        for(j = 0; j < 200; j++)
        {
            m[i][j] = 1;
        }
    }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    Je croyais que l'on n'avait pas le droit d'utiliser des boucles for avant le main ?

    Je veux que ma matrice soit globale.

  11. #11
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Citation Envoyé par KateA Voir le message
    Je croyais que l'on n'avait pas le droit d'utiliser des boucles for avant le main ?

    Je veux que ma matrice soit globale.
    J'apprécierais personnellement que tu t'adresses sur un autre ton aux membres qui se penchent sur ton problème. Peut-être est-ce involontaire, mais tes interventions sont très condescendantes, surtout pour quelqu'un qui a besoin d'aide.

    Il est évident qu'une boucle for(;;), comme toute autre instruction, doit se trouver à l'intérieur d'une fonction, que ce soit main() ou bien une autre. Et comme, justement, le contexte n'a pas d'importance dans ce cas précis, Melem a simplifié son post pour te montrer ce que tu dois faire.

    Enfin, les variables globales sont à éviter. Je ne pense pas que tu puisses nous apporter une raison valable de déclarer globale cette matrice (en particulier, le faire pour qu'elle soit visible depuis plusieurs fonctions n'est pas une raison valable).

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    D'accord, ce n'est pas une bonne façon de programmer.
    J'aimerais le faire quand même.

    Est-ce que le langage C le permet ou pas ?

  13. #13
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Tu déclares ta variable (int m[100][200];) hors de main donc, pour qu'elle soit globale, et tu mets le reste du code (tout le reste) dans main.

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 694
    Points : 30 992
    Points
    30 992
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par KateA Voir le message
    Est-ce que le langage C le permet ou pas ?
    Oui. Tu définis ta matrice à l'extérieur de toute fonction (elle sera donc globale comme tu le souhaites) et tu la remplis dans une fonction quelconque avec le code que Melem t'a montré (puisqu'elle est globale, toutes les fonctions y ont accès et n'importe laquelle peut la remplir)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Points : 16
    Points
    16
    Par défaut
    Ok, merci.

    C'est ce que j'avais fait, mais je me demandais s'il y avait une manière plus élégante de le faire, un peu comme celle qui permet de les initialiser tous à zéros avec un seul zéro.

  16. #16
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par KateA
    Ok, merci.

    C'est ce que j'avais fait, mais je me demandais s'il y avait une manière plus élégante de le faire, un peu comme celle qui permet de les initialiser tous à zéros avec un seul zéro.
    Il n'y en a pas.

Discussions similaires

  1. [AC-2007] Petit probleme sur boucle FOR
    Par Spurius dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/04/2010, 14h59
  2. [AC-2007] Petit probleme sur boucle FOR
    Par Spurius dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/04/2010, 11h04
  3. Réponses: 15
    Dernier message: 03/08/2009, 23h08
  4. Petite question rapide sur allocation mémoire
    Par adn013 dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2007, 16h10
  5. Réponses: 2
    Dernier message: 07/05/2007, 16h46

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