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 :

Tableau dynamique à 2 dimensions


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par défaut Tableau dynamique à 2 dimensions
    Je souhaiterais lire les lignes d'un fichier et que certaines données issues de ce fichier soient stockées dans un tableau qui s'agrandi au fur et a mesure de la lecture des lignes du fichiers. Par exemple a la lecture de la 10eme ligne le tableau aura 10 poste, au passage a la ligne suivante il en aura 11 etc...

    Ce tableau serait a 2 dimensions, dont 1 fixe car je recupere 2 elements du fichier.

    Code de la boucle while de lecture du fichier + boucle d'affichage du contenu du tableau dynamique :

    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
     
    while(!feof(f_in))
    	{
    		if (fgets(lineIn,sizeof(lineIn),f_in))
    		{
     
    			tabMiMaj = (int**)malloc(2*sizeof(int));
     
    			for(i = 0; i < 2; i++)
    			{
    				tabMiMaj[i] = (int*)malloc(nbrArt * sizeof(int));
    			}
     
    			//GetField : permet de recuperer un element d'une ligne a
                            //partir de son numero d'ordre dans la ligne
    			tabMiMaj[0][nbrArt] = atoi(GetField(0,lineIn));
    			tabMiMaj[1][nbrArt] = atoi(GetField(1,lineIn));
     
    			nbrArt ++;
    			printf("%d\n",nbrArt);
    		}
    	}
     
    	for(i = 0 ; i < nbrArt ; i++)
    	{
    		for(j = 0 ; j < 2 ; j++)
    		{
    			printf("numero article : %d \n numero major : %d\n",tabMiMaj[j][i]);
    		}
    	}
    Je précise que ma fonction GetField() marche parfaitement...malheureusement je crois que qu'a chaque malloc mes donnees ne sont pas conservees, a moins que le probleme soit ailleurs car l'affichage me retourne des donnees completement erronees, et qui plus est, tout le temps les memes....

    Merci pour votre aide.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,

    Tout d'abord, je doute que l'usage d'un tableau dans ce cas soit intéressant... Je pencherais plutôt pour une liste, mais bon...

    Dans le code donné nbrArt n'est pas initialisée...
    Ensuite, tu as d'énormes problèmes de mémoire... A chaque ligne lue dans ton fichier, tu alloues un tableau (de plus en plus grand) sans jamais supprimer le précédent...
    Et à chaque tableau alloué tu ne remplis que la dernière ligne...

    Si tu veux effectivement conserver tes tableaux, tu dois à chaque tour de boucle allouer un tableau assez grand, le remplir avec celui de la boucle précédente, le compléter avec tes nouvelles données puis détruire le tableau de la boucle précédente...
    Bref, une liste c'est mieux...

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je n'ai même pas regardé après la première ligne..

    MAIS QU'EST-CE QU'ON VOUS APPREND ?????

    feof NE FAIT PAS CE QUE TU PENSES QU'IL FAIT...

    Relis la documention, ce n'est pas comme ça qu'on lit un fichier...

    Ensuite, écris un pseudo-algo en TEXTE, ça 'aidera, parce là, comme mentionné dans le post précédent, c'est du grand n'importe quoi..

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    c'est du code de bourrin sans reflechir et qui n'a aucun sens

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par défaut
    Ok.... bon bah desole... en tout cas j'ai quand meme appris que je ne lisais pas les fichiers comme il fallait et je vais de ce pas voir la doc...

    Par contre c'est vrai qu'une liste ce n'est peut etre pas plus mal, et peut etre plus simple...

    Et pour information si j'ecris effectivement du code de bourrin c'est tout simplement parce que j'ai un timing TRES serré et qui ne dépend pas de moi...

    En tout cas merci quand meme.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par koktel_dfr
    ..Et pour information si j'ecris effectivement du code de bourrin c'est tout simplement parce que j'ai un timing TRES serré et qui ne dépend pas de moi...
    Rien à voir avec le timing serré...

    On ne programme pas comme on va à l'épicerie acheter un sucre d'orge...

    Il faut savoir un minimum ce qu'on fait..

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Citation Envoyé par souviron34
    Rien à voir avec le timing serré...

    On ne programme pas comme on va à l'épicerie acheter un sucre d'orge...

    Il faut savoir un minimum ce qu'on fait..
    Ca me fait toujours marrer de lire des ayatolah du code distribuer des leçons sous couvert d'avoir l'expérience.
    Je peux très bien et sortir que le C est un language maintenant dépassé et que seuls les vieux qui n'ont pas su s'adapter l'utilise encore. Je pourrais le dire, mais je m'en abstiendrai car chaque language a sa force et sa légitimité. De la même manière, chaque méthode a ses avantages et blamer un posteur parce qu'il produit du code de bourrin de la manière dont tu le fais me parait puéril, arrogant et hors de propos.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    • Primo ce n'est pas moi qui ai écris "code de bourrin"
    • Secondo quand je m'étonne du manque de connaissances, c'est que réellement je me demande comment les langages sont enseignés. C'est la 10 ième faute de ce genre (feof) depuis 5 jours..
    • Tertio, comme dit dans de multiples posts (et sur le forum Langages) C a encore de beaux jours devant lui, et sert toujours à fabriquer les OS
    • Quarto, je ne me sens aucunement ayatollah, simplement je tente d'aider certaines personnes ici, mais il y a des choses où il faut commencer par APPRENDRE. Je sais bien qu'on ne vous pas élevés comme ça, vous êtes des bons depuis que vous êtes nés.. Mais désolé de te décevoir, c'est faux.
    • Et quinto je parlais uniquement du fait que la justification de demander de l'aide parce qu'on a un "timing serré, on n'est pas ici sur www.jefaistesdevoirs.com . Et que le délai serré n'empêche pas de présenter correctement, ce qui au passage accélère les choses car permet un débuggage plus aisé.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    +1 un avec ce qui est par souviron34, et le timing n'est pas une excuse pour mal ecrire/presenter son code (bourrin et j'assume)

  10. #10
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par koktel_dfr
    Et pour information si j'ecris effectivement du code de bourrin c'est tout simplement parce que j'ai un timing TRES serré et qui ne dépend pas de moi...
    Tu n'as pas le temps d'ecrire ton programme correctement mais tu as le temps de mal l'ecrire et de le debugger?

Discussions similaires

  1. Tableau dynamique à deux dimensions
    Par David Fouejio dans le forum MFC
    Réponses: 4
    Dernier message: 05/03/2007, 09h37
  2. [HashSet] Tableau dynamique à 2 dimensions
    Par ppopov dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/01/2007, 16h21
  3. Réponses: 4
    Dernier message: 19/12/2006, 20h06
  4. declaration d'un tableau dynamique 2 dimensions
    Par mike600river dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/05/2006, 08h53
  5. Réponses: 1
    Dernier message: 09/03/2006, 17h25

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