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. #41
    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 corrige . J'espère que ça va pas exploser cette fois-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
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define NB_LIN 2
    #define NB_COL 4
     
    #define fnameA "A.txt"
    #define fnameB "B.txt"
     
     
    void Somme_tab (double * a, double * b, double * c, int nl, int nc )
    {
      int i;
      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];   
     
     
      if (entreeA != NULL && entreeB != NULL  )
        {	
          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;
    	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);
    	 j = 0;
     
    	 char *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 < NB_LIN ; x++)
          {
    	int y;
     
    	for (y = 0; y <NB_COL && tabA[x][y] !=0 &&tabB[x][y]!=0 ; 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] );
    	  }
          }
      }	  
      return 0;     
    }

  2. #42
    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
    Je corrige . J'espère que ça va pas exploser cette fois-ci ...
    Vu que je n'ai toujours pas de fichier de données et que tu ne testes pas l'ouverture des fichiers,



    Je fais quoi maintenant ?
    Pas de Wi-Fi à la maison : CPL

  3. #43
    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
    Nooon.. ne me dis pas que ça a causé autant de dégât.. :-)

    Bon, je rappelle (car je les ai déjà donné bien avant) les ficiers d'entrée :

    A.txt
    1 10
    2 20


    B.txt
    1 11
    2 22

  4. #44
    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
    Bon, je rappelle (car je les ai déjà donné bien avant) les ficiers d'entrée :

    A.txt
    1 10
    2 20


    B.txt
    1 11
    2 22
    La question n'est pas là. Les fichiers peuvent être absents, dans le mauvais répertoire, inaccessibles... C'est à toi de tester la valeur retournée par fopen() : NULL = erreur.
    Pas de Wi-Fi à la maison : CPL

  5. #45
    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, j'ai rajouté ça en amont de la première boucle dans le main :

    if (entreeA == NULL || entreeB == NULL )
    {
    printf ("---------Fichiers d'entrée introuvables------------\n");
    return -1;

    }
    else{
    ...
    }

  6. #46
    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 réitère encore ma question...

    i
    l y a un problème, c'est que lorsque j'augment NB_COL (#define NB_COL ) à 4 on a ce-ci :

  7. #47
    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
    Ok, j'ai rajouté ça en amont de la première boucle dans le main :

    if (entreeA == NULL || entreeB == NULL )
    {
    printf ("---------Fichiers d'entrée introuvables------------\n");
    return -1;
    Pour être portable :
    }
    else{
    ...
    }
    Pas de Wi-Fi à la maison : CPL

  8. #48
    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
    Je réitère encore ma question...

    i
    l y a un problème, c'est que lorsque j'augment NB_COL (#define NB_COL ) à 4 on a ce-ci :
    Normal, les tableaux ne sont pas initialisés...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       double tabA[NB_LIN][NB_COL]={0};
       double tabB[NB_LIN][NB_COL]={0};
       double tabC[NB_LIN][NB_COL]={0};
    Pas de Wi-Fi à la maison : CPL

  9. #49
    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 merci.

    Tu as une idée de la réponse à l'autre question?

    Merci d'avance,

  10. #50
    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
    Tu as une idée de la réponse à l'autre question?
    Euh, quelle question ? Je m'y perd... (Ne pas hésiter à être précis, ça aide...)
    Pas de Wi-Fi à la maison : CPL

  11. #51
    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
    immpeccable! ça marche!
    Merci Manu!

    J'ai encore 2 autres questions.
    ---------------- Question 1 ---------------------------
    C'est à propos de la fonction Somme_tab.
    Dans sa version actuelle elle permet d'additionner terme à terme les
    réels de tabA et tabB.
    Au fait, je voudrais avoir comme résultat ce-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C.txt
    1   Somme_tab (a11 , b11)  Somme_tab (a12 , b12)  etc...
    2   Somme_tab (a21 , b21)  Somme_tab (a22 , b22)  etc...
    3   Somme_tab (a31 , b31)  Somme_tab (a32 , b32)  etc...
    ------------------ Question 2 ---------------------------------
    Comment il faut faire si on ne connaît pas à priori la valeur de NB_COL

    ENCORE MERCI!!!

  12. #52
    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
    J'ai encore 2 autres questions.
    ---------------- Question 1 ---------------------------
    C'est à propos de la fonction Somme_tab.
    Dans sa version actuelle elle permet d'additionner terme à terme les
    réels de tabA et tabB.
    Au fait, je voudrais avoir comme résultat ce-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C.txt
    1   Somme_tab (a11 , b11)  Somme_tab (a12 , b12)  etc...
    2   Somme_tab (a21 , b21)  Somme_tab (a22 , b22)  etc...
    3   Somme_tab (a31 , b31)  Somme_tab (a32 , b32)  etc...
    Euh, ça me dépasse...
    ------------------ Question 2 ---------------------------------
    Comment il faut faire si on ne connaît pas à priori la valeur de NB_COL
    Tableaux dynamiques. C'est une FAQ...
    Pas de Wi-Fi à la maison : CPL

  13. #53
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par tawada
    J'ai encore 2 autres questions.
    ---------------- Question 1 ---------------------------
    C'est à propos de la fonction Somme_tab.
    Dans sa version actuelle elle permet d'additionner terme à terme les
    réels de tabA et tabB.
    Au fait, je voudrais avoir comme résultat ce-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C.txt
    1   Somme_tab (a11 , b11)  Somme_tab (a12 , b12)  etc...
    2   Somme_tab (a21 , b21)  Somme_tab (a22 , b22)  etc...
    3   Somme_tab (a31 , b31)  Somme_tab (a32 , b32)  etc...
    Euh, ça me dépasse...
    Je crois qu'il demande comment ecrire son tableau dans le fichier sortie sous forme de tableau... En effet, pour le moment il fait comme ceci:

    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
     {
        int x;
        for (x = 0; x < NB_LIN ; x++)
          {
       int y;
     
       for (y = 0; y <NB_COL && tabA[x][y] !=0 &&tabB[x][y]!=0 ; 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] );
         }
          }
      }
    Pour le faire, faut arrêter d'aller à la ligne à chaque écriture et mettre un caractère '\n' seulement à la fin de la boucle externe (en mettant donc des espaces entre les nombres).

    Jc

  14. #54
    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
    Bien vu Jc pour la mise en forme de tableau du C.txt.Merci.
    Pour ce qui est de l'opration somme sur les bons éléments de tabA et tabB, c'est fait maintenant.

    Mais ce n'est pas fini. Car dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        int x;
        for (x = 0; x < NB_LIN ; x++)
          {
       int y;
          for (y = 0; y <NB_COL && tabA[x][y] !=0 &&tabB[x][y]!=0 ; y++)
         {
           ..
      }
    les valeurs nulles de tabA et tabB sont exclus..
    c'est à dire, lorsqu'on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    A.txt
    0 0
    2 20
     
    B.txt
    1 11
    2 22
    On obtient:

    On perd donc la première ligne dans C.

    Si on omet de mettre : && tabA[x][y] !=0 &&tabB[x][y]!=0 dans le code précédent, et pour des grandes valeurs de NB_COL, des zéros indésirables seront affichés.
    Je pense que je dois passer par non pas une valeur fixée de NB_COL, mais une valeur variable.
    Je suis entrain de lire comment utiliser malloc()
    Si vous avez une autre suggestion, je suis preneur.

    Tawada

  15. #55
    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,

    Grâce à vos conseils, j'ai trouvé ce que je cherche!
    Merci!!

    Tawada

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

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