begin process at 2012 05 28 19:20:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Compression de tableau (dans une structure)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compression de tableau (dans une structure)

mercredi 26 novembre 2008 à 13:50:57 | Compression de tableau (dans une structure)

Henker13

Bonjour, Je suis nouveau sur le forum, je me permets de poser ma question d'entrer de jeux ? J'ai un programme à faire dans le cadre de mes études dans lequel je dois gérer la location de cassettes vidéos. ( Par exemple). J'en suis pour le moment dans la partie adhèrent. Dans cette partie, je dois pouvoir créer un adhérent, le modifier, l'afficher et le supprimer. Une fois un adhérent supprimé il faut que je comprime le tableau pour ne pas laisser de case vide. Mon problème ce situ dans la partie compression. Voilà a quoi ressemble la structure adhérent struct adherent { char nom[15],prenom[15]; int numerau; }; Je crée ensuite un tableau d'adherent struct adherent tabadh[100]; Et voilà la fonction void compretab(struct adherent tabadh[]) { struct adherent temp[100]; int i=0,j=0; while (i<100) //compression dans un tableau temporaire { if(tabadh[i].nom=="aucune")//défini dans la fonction supprimer { strcpy ( temp[i].nom, tabadh[j].nom); strcpy ( temp[i].prenom, tabadh[j].prenom); // temp[i].nom=adhtab[j].nom; // temp[i].prenom=adhtab[j].prenom; i++; j++; } else { j++; } } while(i<100) //recopi du tableau temporaire dans le principal { strcpy (temp[j].nom, tabadh[j].nom); strcpy (temp[j].prenom, tabadh[j].prenom); // tabadh[j].nom=temp[j].nom; // tabadh[j].prenom=temp[j].prenom; } } lorsque je lance cette fonction le programme plante tout simplement. Je compile avec le compilateur de l'invité de commande de mac OS. J'espère vous donner suffisamment d'information pour que vous puissiez m'aider. Nésite pas si vous avez besoin de plus de détails Merci d'avance. Salutation

Philippe Javascript:Insert_Emoticon('/imgs2/smile.gif');
mercredi 26 novembre 2008 à 13:54:00 | Re : Compression de tableau (dans une structure)

Henker13

oula . . je peux le modifier . . ? je ne sais pas pourquoi les lignes n'ont pas étaient sauté . .
mercredi 26 novembre 2008 à 14:02:24 | Re : Compression de tableau (dans une structure)

Henker13

void compretab(struct adherent tabadh[],int indexf) { struct adherent temp[100]; int i=0,j=0; while (i<100) //compression dans un tableau temporaire { if(tabadh[i].nom=="aucune") { strcpy ( temp[i].nom, tabadh[j].nom); strcpy ( temp[i].prenom, tabadh[j].prenom); // temp[i].nom=adhtab[j].nom; // temp[i].prenom=adhtab[j].prenom; i++; j++; } else { j++; } } while(i<100) //recopi du tableau temporaire dans le principal { strcpy (temp[j].nom, tabadh[j].nom); strcpy (temp[j].prenom, tabadh[j].prenom); // tabadh[j].nom=temp[j].nom; // tabadh[j].prenom=temp[j].prenom; } }
jeudi 27 novembre 2008 à 12:32:29 | Re : Compression de tableau (dans une structure)

rt15

Membre Club Administrateur CodeS-SourceS
Bienvenue !

Et oui pas moyen d'éditer ses messages, et les copiers collers partent parfois en live... A noter dans les outils (A gauche), de quoi coloriser le code. Mais moi il me fait le double de sauts de lignes qu'il ne faudrait... Et il y a aussi un bouton pour prévisualiser dans la RichTextBox en cas de doute.

void compretab(struct adherent tabadh[], int indexf)
{
  struct adherent temp[100];
  int i=0, j=0;

  while (i < 100) // Compression dans un tableau temporaire
  {
    if(tabadh[i].nom == "aucune")
    {
      strcpy(temp[i].nom, tabadh[j].nom);
      strcpy(temp[i].prenom, tabadh[j].prenom);
      // temp[i].nom = adhtab[j].nom;
      // temp[i].prenom = adhtab[j].prenom;
      i++;
      j++;
    }
    else
    {
      j++;
    }
  }

  while(i < 100) // Recopie du tableau temporaire dans le principal
  {
    strcpy(temp[j].nom, tabadh[j].nom);
    strcpy(temp[j].prenom, tabadh[j].prenom);
    // tabadh[j].nom = temp[j].nom;
    // tabadh[j].prenom = temp[j].prenom;
  }
}
jeudi 27 novembre 2008 à 12:47:43 | Re : Compression de tableau (dans une structure)

rt15

Membre Club Administrateur CodeS-SourceS
Ah oui tu as un problème au fait.

Ta première boucle -> i s'incrémente moins vite que j. Donc tu peux te retrouver avec un j de 200... -> hors tableau -> plantage. Il faut faire du while j < 100

Ta deuxième boucle -> tu fait un while i, puis tu utilises j comme indice pour accèder au tableau. Et tu n'incrémente pas i/j dans ta boucle.

if(tabadh[i].nom == "aucune") -> Ca, ça ne veut rien dire. C'est un test de pointeur. Utilise strcmp à la place. Et je crois que tu voulais écrire !=.

Autre problème, en sortie de première boucle, ton tableau temporaire contient moins de données que le tableau d'entrée. Dans ta deuxième boucle, tu recopie tout le tableau temporaire (les 100 cases) dans le tableau principal. Problème, les 100 cases du temporaire n'ont pas toutes été initialisées -> strcpy va méchament planter en essayant de recopier les données non initialisées.

Tu n'as pas besoin d'un tableau temporaire : sachant que dans ta première boucle i s'incrémente forcément moins que j, tu n'écraseras jamais tes données.

Ton code manque quelque peu de rigueure et de réflexion. N'hésite pas à te relire et utilise régulièrement des printf (Ou un bon débogueur !) pour voir ce qu'il se passe. Je crois que Code::Blocks est dispo sur MAC. Il dispose un débogueur non pas incroyable mais suffisant.

[troll]
Et accessoirement, achète toi un vrai PC.
[/troll]



Cette discussion est classée dans : tableau, structure, compression, struct, adherent


Répondre à ce message

Sujets en rapport avec ce message

structure pointant sur un tableau de structures [ par timy94 ] BonjourVoila mon problème. En C j'ai une structure ayant comme élément un pointeur sur un tableau de structures. Comment faire le malloc et comment ac comment lire et ecrire un tableau de structure sur un fichier en C [ par DBA2010 ] salut à tout le monde, je suis entrain de faire un programme de gestion des étudiants,et je suis besoin de savoir comment faire pour lire et écrire u PB structure C [ par lectpe ] Bonjour.Je désire réaliser un arbre binaire en C.Pour celà, j'ai déclaré une structure :typedef struct Tree{   char Node;   struct Tree *Left;   struc Initialisation d'une grosse structure [ par moucht8 ] Bonjour,Je vais essayé de résumé mon exercice ^^ J'ai un tableau de villes:char villes[NB_VILLES][LONGNOM]= {"paris","arras","reims","dijon","metz"};E Structure tableau memoire partage [ par chiro2000 ] Bonjour, Je suis face a un dileme je m entraine sur les memoires partages; j essaye de partage des donnes entre plusieurs processus Voici ma structu tableau dynamique de structure plusieurs structure différente en C ? [ par Nico_35136 ] Bonjour a tous, Voila je débute dans l'allocation dynamique en C voici mon problème. Je possédé 5 structure de taille différentes qui vont contenir filemapping et un peu plus [ par PADYVEN ] bonjour,bon j'ai un probleme tout simple je pense qui concerne le file mappingje veux partager des données entre deux applicationsc'est données sont e Enregister un tableau de structures dans un fichier [ par krolis ] salut tout le monde. Je voudrais savoir comment faire pour enregistrer un tableau de structure dans un fichier. J'ai essayé mais ça marche pas. Veuill tri de tableau de structure [ par samhmi ] Je veux trier un tableau de structure selon le degre décroissant tel que chaque case est de structure suivantestruct sommet{    int degré;    int arc[


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,337 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales