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 averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    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 Expert
    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
    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 averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  5. #5
    Membre Expert
    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
    Par défaut
    Ta question n'est ni claire ni précise. Donne un exemple.

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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 Expert
    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
    Par défaut
    Un tableau.

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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 confirmé
    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 : 39
    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
    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 averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    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 averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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 confirmé
    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 : 39
    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
    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
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    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 averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    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 confirmé
    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 : 39
    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
    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