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 :

matrice/ remplit aleatoires


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut matrice/ remplit aleatoires
    salu à tous.
    je veux ecrire un programme en C qui permet de remplir automatiquement une matrice avec des nombres aleatoires
    voici le code source je sais pas ou est la faute car le programme ne marche pas.

    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
    void T2_aleat(int M[50][50],int l,int c,int x)
    {
    int i,j;
    printf(" Donnez le max des nombres aleatoires");
    scanf("%d",&x);
    printf(" Donnez le nombre de lignes: ");
    scanf("%d",&l);
    printf(" Donnez le nombre de colonnes: ");
    scanf("%d",&c);
    for (i=0;i<l;i++)
    {
        for (j=0;j<c;j++)
        {
            M[i][j]=(rand()%(x-0+1))+0;
        }
    }
    return ;
    }
    une autre question dois je utiliser dans mon programme l'instruction
    si oui ou exactement??? apres/avant la boucle????



    MERCI D'avance

  2. #2
    Membre expérimenté Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Par défaut
    L'instruction:
    doit être inclus dans le main() (une seule fois) avant tout appel d'une fonction utilisant rand

    Après peux tu préciser en quoi ton programme ne marche pas?
    Erreur de compilation ou Erreur à l'exécution?
    Si c'est à la compilation vérifie que tu as bien inclus stdlib.h et time.h

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Une remarque sur les paramètres des fonctions :
    Dans un tel code, les variables l, c, x ne doivent pas être des paramètres mais des variables locales (comme i et j).
    L'intérêt d'un paramètre est de transmettre à la fonction une valeur pour qu'elle puisse l'utiliser dans son travail. Dans ton code, les valeurs transmises ne sont pas utilisées et sont aussitôt écrasées par les appels à scanf().

  4. #4
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Citation Envoyé par quetzacoatl Voir le message
    L'instruction:
    doit être inclus dans le main() (une seule fois) avant tout appel d'une fonction utilisant rand

    Après peux tu préciser en quoi ton programme ne marche pas?
    Erreur de compilation ou Erreur à l'exécution?
    Si c'est à la compilation vérifie que tu as bien inclus stdlib.h et time.h
    erreur d'execution car j'ai un message d'erreur lorsque je termine d'entre mes nombres demandé par le programme

  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
    Citation Envoyé par sali2801 Voir le message
    erreur d'execution car j'ai un message d'erreur lorsque je termine d'entre mes nombres demandé par le programme
    Donne-nous un code compilable.

  6. #6
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <math.h>
     
    int menu ();
    void T2_aleat(int M[50][50]);
    void affich (int M[50][50], int l, int c);
    int main()
    {
        srand(time(NULL));
        int choix=0;
        int M[50][50];
     
     
        printf("\n\n\n                          ²²²²²²²²²²²²²²²²²²²²²²²²²²²                           " );
        printf(    "                          ²² Le principe du program²²                             " );
        printf(    "                        ²²²²²²²²²²²²²²²²²²²²²²²²²²²                              \n");
        printf("\n\n   Bonjour,et bienvenu a notre programme. Le but de ce programme est tres        \n");
        printf(    "   simple.Il permet de remplir automatiquement une matice (M) de telle lignes    \n");
        printf(    "   et de telle colonnes (definie par l'utilisateur) avec des nombres             \n");
        printf(    "   aleatoires,compris entre 0 et un max que l'utilisateur le specifie.           \n");
        printf(    "   Ensuite le programme donne la transposee de cette matrice (TM); a partir      \n");
        printf(    "   de laquelle il affiche toutes les point de selles s'ils existent.Par la       \n");
        printf(    "   suite les elements de (TM) seront mis dans un tableau (T) a une dimension.    \n");
        printf(    "   qui sera triee a bulle (ordre croissant). Ensuite il affiche tout les         \n");
        printf(    "   elements paires,impaires,premiers et ceux qui sont compose de deux parties    \n ");
        printf(    "   identiques                                                                    \n");
        switch (menu())
        {
            case 1:
             T2_aleat(M[50][50]);
             affich  (M[50][50],10,20);
            break;
            default:
            printf ("oups")  ;
     
        }
    }
    int menu()
    {
    int choix=0;
    while (choix<1 || choix>8)
    {
         printf("\n\n\n                          ²²²²²²²²²²²²²²²²²²²²²²²²²²²                           " );
         printf(    "                          ²²    Menu du demmarage  ²²                             " );
         printf(    "                        ²²²²²²²²²²²²²²²²²²²²²²²²²²²                              \n");
         printf( "  vous allez maintenant selectionner le chois qui vous pliez.                       \n");
         printf( "             Nous vous en proposons 8  differents.                                  \n");
         printf( "  ===1.Affichez la matrice remplit automatiquement.                                 \n");
         printf( "  ===2.Affichez la transposee.                                                      \n");
         printf( "  ===3.Affichez les points de selles.                                               \n");
         printf("   ===4.Affichez le tableau 1D triee a bulle -ordre croissant-                       \n");
         printf("   ===5.Affichez tout les elements paires                                            \n");
         printf("   ===6.Affichez tout les elements impaires                                          \n");
         printf("   ===7.Affichez tout les elements premiers                                          \n");
         printf("   ===8.Affichez tout les elements qui ont seux parties identiques                 \n\n");
         printf(" Veuillez entree le numero de votre choix                                            \n");
         scanf( "%d",&choix);
              }
    return choix;
     
    }
    void T2_aleat(int M[50][50])
    {
    int i,j,l,c,x;
    printf(" Donnez le max des nombres aleatoires");
    scanf("%d",&x);
    printf(" Donnez le nombre de lignes: ");
    scanf("%d",&l);
    printf(" Donnez le nombre de colonnes: ");
    scanf("%d",&c);
    for (i=0;i<l;i++)
    {
        for (j=0;j<c;j++)
        {
            M[i][j]= (rand()%x)+(1*x);
        }
    }
    return ;
    }
    void affich (int M[50][50], int l, int c)
    {
        int i,j;
        for (i=0;i<l;i++)
        {
         for(j=0;j<c;j++)
              printf("%7d", M[i][j]);
         printf("\n");
        }
     
     
     
    }
    s'il vous plie aide moi

  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
    Là, tu envoies un objet de type "int" et non pas le tableau à deux dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T2_aleat(M[50][50]);
    affich  (M[50][50],10,20);
    Le compilateur a normalement dû t'avertir, s'il est bien configuré.
    Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T2_aleat(M);
    affich(M,10,20);
    Concernant la fonction "T2_aleat" :
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf(" Donnez le nombre de lignes: ");
    scanf("%d",&l);
    printf(" Donnez le nombre de colonnes: ");
    scanf("%d",&c);
    Comme ton tableau est limité à 50 colonnes et 50 lignes maximum, il faudrait vérifier que l et c ne soient pas supérieurs à 50.

    2) Comme tu définis dans cette fonction le nombre réel de lignes et de colonnes, ce serait mieux de faire connaitre ces valeurs à la fonction appelante, de manière à remplacer les valeurs magiques "20" et "10" depar les variables indiquant le nombre de lignes et de colonnes du tableau que tu vas vraiment utiliser. Pour cela, il faudrait transformer le prototype de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void T2_aleat(int M[50][50])
    par quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void T2_aleat(int M[50][50] , int * l , int *c)
    , de modifier son code en conséquence, ce qui permettrait de l'appeler de cette manière : (en déclarant c et l également dans main), puis d'appeler la fonction d'affichage de cette manière :Ce serait plus propre.


    Pour terminer, le mieux serait de zapper les tableaux de taille fixe par des tableaux dynamiques.

  8. #8
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Citation Envoyé par jeroman Voir le message
    Donne-nous un code compilable.
    mais celui que j'ai donner suffira non?

Discussions similaires

  1. [Débutant] comment extraire deux lignes aleatoires d'une matrice?
    Par linda05 dans le forum MATLAB
    Réponses: 5
    Dernier message: 15/05/2014, 19h23
  2. Fonction aleatoire d'une matrice
    Par proc02 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 12/05/2013, 17h13
  3. affichage d'un histogramme d'une matrice aleatoire
    Par boinamib dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 16/05/2007, 16h12
  4. Matrice 128*128 remplie aléatoirement
    Par tlemcenvisit dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/06/2006, 15h16
  5. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 21h01

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