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 :

Petit Problème d'Affichage


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut Petit Problème d'Affichage
    Bonjour,

    j'ai un petit problème. J'ai un code où il y a trois options en fonctions de l'argument choisi. De façon indépendante elles marchent mais une fois mise ensemble cela ne m'affiche plus rien, le programme ne retrant pas mes conditions. Si quelqu'un pouvait me dire d'où ça vient.

    Merci d'avance.

    Mon 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
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    #include <stdio.h>                                         
    #include <stdlib.h>
    #include <time.h>
     
    int    Random (int _iMin, int _iMax)
    {
      return (_iMin + (rand () % (_iMax-_iMin+1)));
    }
     
    int    main(int argc, char **argv)
    {
      int resultats_a[20];
      int resultats_b[20];
      int i;
      int j;
      int iRandom;
      int results;
      int total;
      int Pa;
      int temp;
     
      i = 0;
      j = 0;
      srand(time(NULL));
      if(*argv[1] == 1)
        {
          printf("Vecteur A : ");
          while(i <= *argv[2])
        {
          iRandom = Random (-9, 9);
          resultats_a[j] = iRandom;
          printf(" %d", iRandom);
          j++;
          i++;
        }
          i = 0;
          j = 0;
          printf("\nVecteur B : ");
          while(i <= *argv[2])
        {
          iRandom = Random (-9, 9);
          resultats_b[j] = iRandom;
          printf(" %d", iRandom);
          j++;
          i++;
        }
          printf("\n");
          i = 0;
          j = 0;
          if(i == 0)
        printf("Valeur de A + B : ");
          while(i <= 6)
        {
          results = resultats_a[i] + resultats_b[j];
          printf(" %d", results);
          i++;
          j++;
        }
        }
      printf("\n");
      if(*argv[1] == 2)
        {
          i = 0;
          j = 0;
          srand(time(NULL));
          printf("Nombre P : ");
          scanf("%d", Pa);
          printf("Vecteur A : ");
          while(i <= *argv[2])
        {
          iRandom = Random (-9, 9);
          resultats_a[j] = iRandom;
          printf(" %d", iRandom);
          j++;
          i++;
        }
          i = 0;
          j = 0;
          if(i == 0)
        printf("Vecteur p.A: ");
          while(i <= *argv[2])
        {
          results = resultats_a[i] * Pa ;
          printf(" %d", results);
          i++;
          j++;
        }     
        }
      if(*argv[1] == 3)
        {
          i = 0;
          j = 0;
          srand(time(NULL));
          printf("Vecteur A : ");
          while(i <= *argv[2])
        {
              iRandom = Random (-9, 9);
              resultats_a[j] = iRandom;
              printf(" %d", iRandom);
              j++;
              i++;
            }
          i = 0;
          j = 0;
          printf("\nVecteur B : ");
          while(i <= *argv[2])
            {
              iRandom = Random (-9, 9);
              resultats_b[j] = iRandom;
              printf(" %d", iRandom);
              j++;
              i++;
            }
          i = 0;
          j = 0;
          temp = 0;
          while(resultats_a[i] & resultats_b[j])
        {
          total = resultats_a[i] * resultats_b[j];
          temp = temp + total;
          i++;
          j++;
        }
          printf("\nProduit scalaire (A,B) : %d", temp);
        }    
    }

  2. #2
    Expert éminent
    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
    Par défaut
    Citation Envoyé par I_Will_Be_back Voir le message
    j'ai un petit problème. J'ai un code où il y a trois options en fonctions de l'argument choisi. De façon indépendante elles marchent mais une fois mise ensemble cela ne m'affiche plus rien, le programme ne retrant pas mes conditions. Si quelqu'un pouvait me dire d'où ça vient.

    Mon code :
    Tu peux déjà commencer par corriger ça :
    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
     
    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:67: warning: format argument is not a pointer (arg 2)
    main.c: At top level:
    main.c:10: warning: unused parameter 'argc'
    main.c: In function `main':
    main.c:126: warning: control reaches end of non-void function
    main.c:19: warning: 'Pa' might be used uninitialized in this function
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 8 seconds)
    0 errors, 4 warnings
    Si ton compilateur ne dit rien, il est probablement mal configuré :

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    Attention, les identificateurs commençant par _ sont réservés à l'implémentation. On a pas le droit de les utiliser dans une application.

    Ceci n'a pas de sens.
    1. Tu n'as pas vérifié au préalable si le paramètre existe (argc...)
    2. *argv[1] désigne un caractère
    3. 1 a peu de chance d'être la valeur d'un caractère... En tout cas, on ne sais pas ce que ça veut dire...

    Tu devrais préciser ce que tu veux faire avec la ligne de commande, quels sont les paramètres attendus.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Merci beaucoup pour toutes tes indications.

    Mon programme doit prendre en premier argument le numéro de l'option, ici entre 1 et 3, et en second argument le chiffre/nombre sur lequel il doit travailler ou le le nombre de fois qu'il doit réaliser l'action ,tout dépend de l'option.
    C'est un programme sur les vecteurs.

  4. #4
    Expert éminent
    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
    Par défaut
    Citation Envoyé par I_Will_Be_back Voir le message
    Mon programme doit prendre en premier argument le numéro de l'option, ici entre 1 et 3, et en second argument le chiffre/nombre sur lequel il doit travailler ou le le nombre de fois qu'il doit réaliser l'action ,tout dépend de l'option.
    C'est un programme sur les vecteurs.
    As-tu bien conscience que ce que que récupère argv[] est une chaine de caractère ? C'est donc '1' qu'il faut tester et non 1...

    Tu veux donc probablement faire :
    que tu devrais coder
    pour être plus clair...

    Tu pourrais aussi tester la chaine avec strcmp(), ce serait plus sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if (strcmp (argv[1], "1") == 0)
    Ensuite, pour argv[2], il faut faire une conversion en valeur numérique avec strtol() (bien lire la doc...)

  5. #5
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Salut !

    Tu pourrais aussi tester la chaine avec strcmp(), ce serait plus sûr :
    Code :

    if (strcmp (argv[1], "1") == 0)
    Est ce qu'il y'a une différence entre tester directement l'égalité entre les 2 caractères et utiliser strcmp ??

  6. #6
    Expert éminent
    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
    Par défaut
    Citation Envoyé par GyZmoO Voir le message
    Est ce qu'il y'a une différence entre tester directement l'égalité entre les 2 caractères et utiliser strcmp ??
    L'effet n'est pas le même. Si la chaine utilisateur est "123", le test de '1' est plus laxiste que le test de "1". Tout dépend du degré de sécurité voulu...

Discussions similaires

  1. petit problème d'affichage
    Par Agrapheuse dans le forum Applets
    Réponses: 1
    Dernier message: 19/04/2008, 16h52
  2. Petit problème d'affichage
    Par dan_lizhot dans le forum Débuter
    Réponses: 0
    Dernier message: 01/02/2008, 04h56
  3. [AJAX] Affichage en Ajax
    Par RichardP dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/05/2007, 16h02
  4. petit problème d'affichage sur un datagridview
    Par boss_gama dans le forum C#
    Réponses: 5
    Dernier message: 01/05/2007, 21h42
  5. petit problème d'affichage
    Par soria_t dans le forum C
    Réponses: 18
    Dernier message: 20/03/2007, 14h40

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