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 :

Lire et Ecrire un tableau à partir de deux tableaux existant


Sujet :

C

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Impeccable!!
    Merci bien Jc!
    Je vais attaquer l'autre partie de la routine..

    Tawada

  2. #22
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Voilà, j'ai bien suivi vos conseils, qui m'étaient de grand secour pour débutant en C que je suis, et j'obtient ce-ci :
    <...>
    J'attends vos commentaires.
    C'est pas mal, mais ça manque sérieusement de contrôles de limites. Rien n'est automatique en C, Il faut TOUT contrôler.
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    #define NB_LIN 5
    #define NB_COL 4
     
    #define fname "A.txt"
     
    int main (void)
    {
       int ret = EXIT_SUCCESS;
       FILE *entreeA = fopen (fname, "r");
       if (entreeA != NULL)
       {
          double tabA[NB_LIN][NB_COL];
          char ligneA[50];
     
          int i = 0;
     
          while (fgets(ligneA, sizeof ligneA, entreeA) != NULL && i < NB_LIN)
          {
             char const sep[] = "\t ";
             int j = 0;
             char *p = strtok(ligneA, sep);
             do
             {
                tabA[i][j] = strtod(p, NULL);
                printf("tabA[%d][%d] vaut %f\n", i, j, tabA[i][j]);
                p = strtok(NULL, sep);
                j++;
             }
             while (p != NULL && j < NB_COL);
             i++;
          }
          fclose (entreeA);
       }
       else
       {
          perror(fname);
          ret = EXIT_FAILURE;
       }
       return ret;
    }
    Inutile de grouper les définitions de variable en début de fonction. Un peu de lecture :

    http://emmanuel-delahaye.developpez....tes.htm#portee

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Merci bien Delahaye !

    Tawada

  4. #24
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Merci bien Delahaye !

    Tawada
    Beuh, m'appelle pas par mon nom, ça me rappelle l'école (mauvais trip...). Emmanuel, ça me va... (ou Manu...)

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Ok Manu :-)

    Je suis entrain de rajouter B à la routine précédente.
    Je ferai signe dès que je termine,

    Tawada

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Je vous souhaite à tous un excellent fin de semaine..

    Je n'ai malheureusement pas internet chez moi pour envoyer
    les resultat ce weekend. Mais je le ferai surement lundi prochain!

    Encore merci à : Jc, Manu et les autres!

    Tawada

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Bonjour à tous,

    Voilà la denière version du code. Il permet:
    - de lire un fichier A.txt et stocker les réels dans tabA [][];
    - de lire ------------B.txt ------------------------------ tabB [][];
    -----------------------------------------------------------------------------------------------
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    #define NB_LIN 5
    #define NB_COL 4
     
    #define fnameA "A.txt"
    #define fnameB "B.txt"
     
     
    int main (void)
    {
       int ret = EXIT_SUCCESS;
       FILE *entreeA = fopen (fnameA, "r");
       FILE *entreeB = fopen (fnameB, "r");
     
       if (entreeA != NULL && entreeB != NULL  )
       {
          double tabA[NB_LIN][NB_COL];
          double tabB[NB_LIN][NB_COL];
          char ligneA[50];
          char ligneB[50];
          int i = 0;
     
          while (fgets(ligneA, sizeof ligneA, entreeA) != NULL  &&
    	     fgets(ligneB, sizeof ligneB, entreeB) != NULL  &&
    	     i < NB_LIN)
          {
             char const sep[] = "\t ";
             int j = 0;
    	 int k = 0;
             char *ap = strtok(ligneA, sep);
    	 do
    	   {
    	     tabA[i][j] = strtod(ap, NULL);
    	     printf("tabA[%d][%d] vaut %f\n", i, j, tabA[i][j]);
    	     ap = strtok(NULL, sep);
    	     j++;
    	   } while (ap != NULL && j < NB_COL);
    	 char *bp = strtok(ligneB, sep);
    	 do
    	   {
    	     tabB[i][j] = strtod(bp, NULL);
    	     printf("tabB[%d][%d] vaut %f\n", i, k, tabB[i][j]);
    	     bp = strtok(NULL, sep);
    	     j++;
    	   } while (bp != NULL && k < NB_COL);
    	 i++;
     
          }
          fclose (entreeA);
          fclose (entreeB);
       }
       else
       {
          perror(fnameA);
          perror(fnameB);
          ret = EXIT_FAILURE;
       }
       return ret;
    }
    -----------------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exemples:
    A.txt
    1	10
    2	20
    B.txt
    1	11
    2	22
    -----------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Resultat:
    tabA[0][0] vaut 1.000000
    tabA[0][1] vaut 10.000000
    tabB[0][0] vaut 1.000000
    tabB[0][0] vaut 11.000000
    tabA[1][0] vaut 2.000000
    tabA[1][1] vaut 20.000000
    tabB[1][0] vaut 2.000000
    tabB[1][0] vaut 22.000000
    ----------------------------------------------------------------------------------------------
    Le but, maintenant, est de réaliser des opérations sur tabA[i][j] et tabB[i][j] et d'écrire
    le resultat dans un fichier C.txt. Le problème est que le rempilassage des tableaux A et B se font dans deux boucles différentes. J'ai essayé de mettre ce remplissage dans une seule boucle (voir ci-dessous), mais le resultat n'est pas correcte.
    -------------------------------------------------------------------------------------
    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
     while (fgets(ligneA, sizeof ligneA, entreeA) != NULL  &&
    	     fgets(ligneB, sizeof ligneB, entreeB) != NULL  &&
    	     i < NB_LIN)
          {
             char const sep[] = "\t ";
             int j = 0;
             char *ap = strtok(ligneA, sep);
    	 char *bp = strtok(ligneB, sep);
             do
             {
                tabA[i][j] = strtod(ap, NULL);
                printf("tabA[%d][%d] vaut %f\n", i, j, tabA[i][j]);
    	    tabB[i][j] = strtod(bp, NULL);
    	    printf("tabB[%d][%d] vaut %f\n", i, j, tabB[i][j]);
                ap = strtok(NULL, sep);
    	    bp = strtok(NULL, sep);
                j++;
             }
             while (ap != NULL && bp != NULL && j < NB_COL);
             i++;
          }
          fclose (entreeA);
          fclose (entreeB);
       }
    ------------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Resultat avec l'exemple précédent:
    tabA[0][0] vaut 1.000000
    tabB[0][0] vaut 1.000000
    tabA[1][0] vaut 2.000000
    tabB[1][0] vaut 2.000000
    -------------------------------------------------------------------------------------------

    - Est-ce que le fait de remplir les tableaux tabA et tabB dans deux boucles séparées rend difficil la création de C.txt?
    - Est-ce qu'il y a moyen de le faire d'une autre manière?

    Merci d'avance,

    Tawada

  8. #28
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    - Est-ce que le fait de remplir les tableaux tabA et tabB dans deux boucles séparées rend difficil la création de C.txt?
    - Est-ce qu'il y a moyen de le faire d'une autre manière?
    Ca dépend des traitements. Si tu as choisi de tout charger en mémoire, c'est qu'il doit y avoir une raison (traitement non séquenciel, je suppose), sinon, il suffit de faire le traitement "à la volée".

    En tout cas, c'est une question d'algo (donc de conception) et non de langage (réalisation).

    Bref, tu vas trop vite.

    Je rappelle la démarche :

    1 - définition (spécification)
    2 - conception
    3 - codage et tests unitaire (réalisation)

  9. #29
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Désolé Manu, mais je n'ai pas tout à fait compris ce que tu veux dire.
    Ok, je vois ce que c'est que la lecture séquentielle d'un fichier. Mais, "le traitement à ala volée", je ne vois pas.

    Concrétement, est ce que je dois définir une fonction qui crée A et B; ensuite dans le main je crée C?
    Je ne comprend toujours pas pourquoi je ne peux pas mettre fusionner les deux boucles créant A et B...
    Je ne sais pas si c'est les bonnes questions qu'il faut se poser, mais en tout cas mon but est tout à fait clair : à partir de A.txt et B.txt, je dois créer C.txt.

    Votre aide me sera précieuse,

    Tawada

  10. #30
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Désolé Manu, mais je n'ai pas tout à fait compris ce que tu veux dire.
    Ok, je vois ce que c'est que la lecture séquentielle d'un fichier. Mais, "le traitement à la volée", je ne vois pas.
    on the fly Ca veut dire sans stockage long des données (pas besoin de tableau).
    • Lecture des deux lignes
    • Analyse
    • Traitement
    • Ecriture du résultat

    Concrétement, est ce que je dois définir une fonction qui crée A et B; ensuite dans le main je crée C?
    Je ne comprend toujours pas pourquoi je ne peux pas mettre fusionner les deux boucles créant A et B...
    Encore une fois, ça dépend du traitement qu'il y a à faire.
    Je ne sais pas si c'est les bonnes questions qu'il faut se poser, mais en tout cas mon but est tout à fait clair : à partir de A.txt et B.txt, je dois créer C.txt.
    Mais tu n'as toujours pas expliqué quel traitement du faisais.

    En gros, tu fais C = f(A,B). Décris f().

  11. #31
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Corrige moi Manu si j'ai dit une bêtise:
    # Lecture des deux lignes : C'EST FAIT,
    # Analyse : C'EST FAIT
    # Traitement : C'EST FAIT
    # Ecriture du résultat (obtenir C): CE N'EST PAS ENCORE FAIT, le problème à mon avis est que je ne sais pas accéder à tabA et tabB puisqu'ils sont dans DEUX BOUCLES SÉPARÉES. Je pense qu'on a besoin de stocker les deux lignes respictivement dans tabA et tabB, car, je suppose, à partir de là il serait possible de créer C.

  12. #32
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Corrige moi Manu si j'ai dit une bêtise:
    # Lecture des deux lignes : C'EST FAIT,
    # Analyse : C'EST FAIT
    # Traitement : C'EST FAIT
    Alors rappelle moi quel est le traitement, parce que je n'arrive pas à le retrouver dans tout ce thread...
    # Ecriture du résultat (obtenir C): CE N'EST PAS ENCORE FAIT, le problème à mon avis est que je ne sais pas accéder à tabA et tabB puisqu'ils sont dans DEUX BOUCLES SÉPARÉES.
    Tu peux deplacer les tableaux pour qu'ils soient plus accessibles

    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
     
    {
       T a[];
       T b[];
     
       /* chargement de a */
       {
       }
     
       /* chargement de b */
       {
       }
     
     
       /* traitement de c = f(a, b)  */
       {
          T c[];
     
          /* enregistrement de c */
          {
          }
       }
    }
    Je pense qu'on a besoin de stocker les deux lignes respictivement dans tabA et tabB, car, je suppose, à partir de là il serait possible de créer C.

  13. #33
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Bonjour,
    J 'ai un problème d'enregistrement d'un tableau de réel dans un fichier text.

    Mon tabC se présente comme ça :
    tabC[0][0] vaut 2.000000
    tabC[0][1] vaut 21.000000
    tabC[1][0] vaut 4.000000
    tabC[1][1] vaut 42.000000

    Vous auriez un exemple pour me guider sur cette question?
    Merci d'avance,

    Tawada

  14. #34
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    j'ai trouvé entre temps :

    c'est fprintf()

    Tawada

  15. #35
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Bonjour à tous,
    Bon voici la suite de la résolution du problème soumis:

    Dernière version du 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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define NB_LIN 2
    #define NB_COL 2
     
    #define fnameA "A.txt"
    #define fnameB "B.txt"
     
     
    void Somme_tab (double * a, double * b, double * c, int nl, int nc )
     
    {
      int i, j, k;
      for (i=0; i<nl*nc; i++)
        {/* c[i] = a[i] + b[i]; */
        *c = *a + *b;
        a++;
        b++;
        c++;
        }
    }      
     
    int main (void)
    {
      void Somme_tab (double * , double *, double *, int , int );
     
      FILE *entreeA = fopen (fnameA, "r");            // Entrée A.txt
      FILE *entreeB = fopen (fnameB, "r");            //Entrée B.txt
      FILE *sortieC = fopen ("Resultat.txt" , "wt") ;     //Sortie =>  Resultat .txt
     
      double tabA[NB_LIN][NB_COL];
      double tabB[NB_LIN][NB_COL];
      double tabC[NB_LIN][NB_COL];  
     
      char ligneA[50];
      char ligneB[50];
      char *ap , *bp;
      char const sep[] = "\t ";
      int i , j;
     
      if (entreeA != NULL && entreeB != NULL  )
        {
          i = 0;
          while (fgets(ligneA, sizeof ligneA, entreeA) != NULL  &&
    	     fgets(ligneB, sizeof ligneB, entreeB) != NULL  &&
    	     i < NB_LIN)
          {
    	j = 0;
    	ap = strtok(ligneA, sep);
    	 do
    	   {
    	     tabA[i][j] = strtod(ap, NULL);
    	     //printf("tabA[%d][%d] vaut %f\n", i, j, tabA[i][j]);
    	     ap = strtok(NULL, sep);
    	     j++;
    	   } while (ap != NULL && j < NB_COL);
    	 j = 0;
    	 bp = strtok(ligneB, sep);
    	 do
    	   {
    	     tabB[i][j] = strtod(bp, NULL);
    	     //printf("tabB[%d][%d] vaut %f\n", i, j, tabB[i][j]);
    	     bp = strtok(NULL, sep);
    	     j++;
    	   } while (bp != NULL && j < NB_COL);
    	 i++;
          }
     
        }
      fclose (entreeA);
      fclose (entreeB);
     
      Somme_tab( (double *) tabA, (double *) tabB, (double *) tabC, NB_LIN, NB_COL);
     
     
      {
        int x;
        for (x = 0; x < i ; x++)
          {
    	int y;
     
    	for (y = 0; y <NB_COL ; y++)
    	  {
    	    printf("tabA[%d][%d] vaut %f\n", x, y, tabA[x][y]);
    	    printf("tabB[%d][%d] vaut %f\n", x, y, tabB[x][y]);
    	    printf("tabC[%d][%d] vaut %f\n", x, y, tabC[x][y]);
    	    fprintf (sortieC, "%f\n", tabC[x][y] );
    	  }
          }
      }	       
    }
    ------------------------------------------------------
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    A.txt
    1 10
    2 20
     
    B.txt
    1 11
    2 22
    On obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    tabA[0][0] vaut 1.000000
    tabB[0][0] vaut 1.000000
    tabC[0][0] vaut 2.000000
    tabA[0][1] vaut 10.000000
    tabB[0][1] vaut 11.000000
    tabC[0][1] vaut 21.000000
    tabA[1][0] vaut 2.000000
    tabB[1][0] vaut 2.000000
    tabC[1][0] vaut 4.000000
    tabA[1][1] vaut 20.000000
    tabB[1][1] vaut 22.000000
    tabC[1][1] vaut 42.000000
    Et dans Resultat.txt, on peut lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2.000000
    21.000000
    4.000000
    42.00000
    --------------------------------------------------------

    Juste il y a un problème, c'est que lorsque j'augment NB_COL (#define NB_COL ) à 4 on a ce-ci :
    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
    tabA[0][0] vaut 1.000000
    tabB[0][0] vaut 1.000000
    tabC[0][0] vaut 2.000000
    tabA[0][1] vaut 10.000000
    tabB[0][1] vaut 11.000000
    tabC[0][1] vaut 21.000000
    tabA[0][2] vaut 0.000000
    tabB[0][2] vaut -1.997746
    tabC[0][2] vaut -1.997746
    tabA[0][3] vaut 0.000000
    tabB[0][3] vaut -1.997746
    tabC[0][3] vaut -1.997746
    tabA[1][0] vaut 2.000000
    tabB[1][0] vaut 2.000000
    tabC[1][0] vaut 4.000000
    tabA[1][1] vaut 20.000000
    tabB[1][1] vaut 22.000000
    tabC[1][1] vaut 42.000000
    tabA[1][2] vaut 0.000000
    tabB[1][2] vaut 0.000000
    tabC[1][2] vaut 0.000000
    tabA[1][3] vaut 0.000000
    tabB[1][3] vaut 0.000000
    tabC[1][3] vaut 0.000000
    J'ai essayé de remédier à ce problème en rajoutant à la dernière boucle dans main la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (y = 0; y <NB_COL && tabA[x][y] !=0 &&tabB[x][y]!=0 ; y++)
    Résulat avec les entrées A.txt et B.txt :
    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
    tabA[0][0] vaut 1.000000
    tabB[0][0] vaut 1.000000
    tabC[0][0] vaut 2.000000
    tabA[0][1] vaut 10.000000
    tabB[0][1] vaut 11.000000
    tabC[0][1] vaut 21.000000
    tabA[0][2] vaut 0.000000
    tabB[0][2] vaut -1.997746
    tabC[0][2] vaut -1.997746
    tabA[1][0] vaut 2.000000
    tabB[1][0] vaut 2.000000
    tabC[1][0] vaut 4.000000
    tabA[1][1] vaut 20.000000
    tabB[1][1] vaut 22.000000
    tabC[1][1] vaut 42.000000

  16. #36
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Oups, j'ai appuyé rapidement sur Envoyer

    Donc quelqu'un peut m'aider à trouver une astuce pour contourner ce pb?

    Merci,

    Tawada

  17. #37
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Dernière version du code:
    Pas terrible...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Compiling: main.c
    main.c:13: warning: no previous prototype for 'Somme_tab'
    main.c: In function `Somme_tab':
    main.c:14: warning: unused variable `j'
    main.c:14: warning: unused variable `k'
    main.c: In function `main_':
    main.c:26: warning: nested extern declaration of `Somme_tab'
    main.c:92:2: warning: no newline at end of file
    main.c:92: warning: control reaches end of non-void function
    main.c:40: warning: 'i' might be used uninitialized in this function
    Linking console executable: D:\dev\ed02\cb\ed02.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 7 warnings
    J'ai lancé, ça m'a explosé à la tronche. (Je n'ai pas de fichier de données)



    Les traitements d'erreur, c'est pas que de la décoration...

  18. #38
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Apparemment vous l'avez compilé avec :

    gcc -Wall -W -O2 Test.c -o Test

    Pour ma part, j'ai fais ce-ci :

    > gcc -c Test.c
    > gcc -o Test Test.o
    >./Test

    Et j'ai aucun warning!

  19. #39
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 41
    Points
    41
    Par défaut
    Oui, oui .. ce n'est pas "la dernière version du code" mais ce que je voulais dire "le dernier brouillon du code"

  20. #40
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par tawada
    Apparemment vous l'avez compilé avec :

    gcc -Wall -W -O2 Test.c -o Test
    pas exactement, non... J'ai souvent publié ma config de gcc. (pas plus tard qu'aujourd'hui...)
    Pour ma part, j'ai fais ce-ci :

    > gcc -c Test.c
    > gcc -o Test Test.o
    >./Test

    Et j'ai aucun warning!
    Ben oui. Pour faire tomber la fièvre, casser le thermomètre, c'est bien connu !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [Python 2.X] Obtention de Graphe en 3D à partir de deux tableaux Nx1 et d'un tableau NxN
    Par cosupoka dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 07/11/2014, 19h38
  2. Tableau associatif à partir de deux tableaux
    Par faitor1 dans le forum Langage
    Réponses: 2
    Dernier message: 05/09/2014, 14h44
  3. Remplir un hash à partir de deux tableaux
    Par USMC666 dans le forum Langage
    Réponses: 11
    Dernier message: 21/10/2013, 09h36
  4. Faire un tableau à partir de 2 tableaux
    Par identifiant_bidon dans le forum Langage
    Réponses: 3
    Dernier message: 09/09/2011, 22h27
  5. [Tableaux] créer un tableau à partir de deux autres
    Par spaukensen dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 16h22

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