Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
754 connectés 

  FORUM HardWare.fr
  Programmation
  C

  a l'aide c petit mais c faux et je ne trouve pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

a l'aide c petit mais c faux et je ne trouve pas

n°935421
minimoke
beep beep
Posté le 02-01-2005 à 23:21:51  profilanswer
 

bon je vous explique vite g une structure liste comme suit :
typedef                 struct liste_s
{
  int                   val1;
  int                   val2;
  int                   tab[6];
  char                  op;
  struct liste_s        *next;
}                       *liste;
 
dans mon main g un truc du genre  
liste *t;
 
t = malloc(1000 * sizeof(liste));
for (i = 0;i < 6;i++)
  put_in_begin(&t[i], valeur, 0, 0, tableau)
 
le probleme c que je n'ai pas les bonnes valeurs apres la fonction et g remarque avec gdb que ma fonction put_in_liste initialise comme il faut  t[i] mais elle modifie aussi t[i - 1]. donc a la fin seul le dernier element i passer dans put_in_liste c a dire t[5] a les bonnes valeurs
j'ai chercher, peut etre mal mais je n'ai toujours pas trouve l'erreur.
 
merci de votre aide...
 
void    put_in_liste(liste *begin,
                     int val1,
                     char op,
                     int val2,
                     int *tab)
{
  liste elem;
  int   i;
 
  if (val1 < val2)
    swap(&val1, &val2);
  elem = malloc(sizeof (elem));
  elem->val1 = val1;
  elem->val2 = val2;
  elem->op = op;
  for (i = 0;i < 6;i++)
    elem->tab[i] = tab[i];
  elem->next = *begin;
  *begin = elem;
}


---------------
  ____
mood
Publicité
Posté le 02-01-2005 à 23:21:51  profilanswer
 

n°935423
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-01-2005 à 23:24:34  profilanswer
 

[Merci d'utiliser les tags 'code' ou 'cpp' (boutons [Fixe] ou [C/C++]]
 

minimoke a écrit :


 if (val1 < val2)
    swap(&val1, &val2);



Manque la définition de swap().


Message édité par Emmanuel Delahaye le 02-01-2005 à 23:26:02

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°935424
minimoke
beep beep
Posté le 02-01-2005 à 23:25:28  profilanswer
 

void    swap(int *a, int *b)
{
  int   tmp;
 
  tmp = *a;
  *a = *b;
  *b = tmp;
}


---------------
  ____
n°935425
minimoke
beep beep
Posté le 02-01-2005 à 23:25:46  profilanswer
 

je pense pas que c ca


---------------
  ____
n°935427
Taz
bisounours-codeur
Posté le 02-01-2005 à 23:27:41  profilanswer
 

}                       *liste;  
 
t'es sur de la vouloir ton étoile ici ?

n°935429
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-01-2005 à 23:29:12  profilanswer
 

minimoke a écrit :

je pense pas que c ca


C'est quoi  

put_in_begin(...) ?
 tableau ?


Ce serait mieux de poster du code qui compile plutôt que "un truc du genre  " ...


Message édité par Emmanuel Delahaye le 02-01-2005 à 23:31:11

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°935430
minimoke
beep beep
Posté le 02-01-2005 à 23:29:28  profilanswer
 

ben oui normalement ca pose pas de probleme


---------------
  ____
n°935431
minimoke
beep beep
Posté le 02-01-2005 à 23:29:51  profilanswer
 

ben oui il compile


---------------
  ____
n°935436
minimoke
beep beep
Posté le 02-01-2005 à 23:35:28  profilanswer
 

typedef                 struct liste_s
{
  int                   val1;
  int                   val2;
  int                   tab[6];
  char                  op;
  struct liste_s        *next;
}                       *liste;
 
void    put_in_liste(liste *begin,
                     int val1,
                     char op,
                     int val2,
                     int *tab)
{
  liste elem;
  int   i;
 
  if (val1 < val2)
    swap(&val1, &val2);
  elem = malloc(sizeof (elem));
  elem->val1 = val1;
  elem->val2 = val2;
  elem->op = op;
  for (i = 0;i < 6;i++)
    elem->tab[i] = tab[i];
  elem->next = *begin;
  *begin = elem;
}
 
void    init(liste *tab, int *val, int index)
{
  liste elem;
  int   *myval;
  int   i;
 
  myval = duptab(val, 6);
  myval[index] = 0;
  put_in_liste(&tab[index], val[index], 0, 0, myval, tab);
  free(myval);
}
 
int     main(int ac, char **av)
{
  liste *tab;
  int   *val;
  int   i;
 
  tab = malloc(1000 * sizeof(liste));
  val = test_entree(ac, av); // recupere 6 valeurs entree en param ca marche
  for(i = 0;i < 6;i++)
    init(tab, val, i);
  return (0);
}


---------------
  ____
n°935442
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-01-2005 à 23:46:35  profilanswer
 

[Les balises code. Deuxième édition... Lire les regles du forums, merci...]


Gni ?


gcc.exe --c main.c -o dexe/main.o -W  -Wall  -ansi  -O2
 
main.c: In function `put_in_liste':
main.c:20: warning: implicit declaration of function `swap'
main.c:21: warning: implicit declaration of function `malloc'
main.c:21: warning: assignment makes pointer from integer without a cast
main.c: In function `init':
main.c:37: warning: implicit declaration of function `duptab'
main.c:37: warning: assignment makes pointer from integer without a cast
main.c:39: too many arguments to function `put_in_liste'
main.c:40: warning: implicit declaration of function `free'
main.c:33: warning: unused variable `elem'
main.c:35: warning: unused variable `i'
main.c: In function `main':
main.c:49: warning: assignment makes pointer from integer without a cast
main.c:51: warning: implicit declaration of function `test_entree'
main.c:51: warning: assignment makes pointer from integer without a cast


C'est si compliqué que ça de poster un code complet ? Qui me dit que le problème n'est pas dans le code que tu ne fournis pas ?
 


Message édité par Emmanuel Delahaye le 02-01-2005 à 23:51:02

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 02-01-2005 à 23:46:35  profilanswer
 

n°935446
Taz
bisounours-codeur
Posté le 02-01-2005 à 23:54:02  profilanswer
 

minimoke a écrit :

ben oui normalement ca pose pas de probleme


ah, bon, dans ce cas tu n'alloues jamais d'espace pour des 'struct list_s' mais que pour des pointeurs. A toi de voir. Mais comme le dit Emmanuel, c'est pas la peine d'aller plus loin si tu donnes quelque chose qui ne compile même pas.

n°935447
minimoke
beep beep
Posté le 02-01-2005 à 23:59:35  profilanswer
 

http://minimoke.free.fr/test/test.c
voila un truc qui compile.  
Sinon je nai pas besoin d'allouer de l'espace pour une structure car je definie que des liste donc elles sont definie par un pointeur.


---------------
  ____
n°935451
Taz
bisounours-codeur
Posté le 03-01-2005 à 00:17:33  profilanswer
 

et alors tu le stockes ou ton pointeur *next ?

n°935453
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-01-2005 à 00:18:38  profilanswer
 

minimoke a écrit :

http://minimoke.free.fr/test/test.c
voila un truc qui compile.  
Sinon je nai pas besoin d'allouer de l'espace pour une structure car je definie que des liste donc elles sont definie par un pointeur.



gcc.exe -c main.c -o dexe/main.o -W  -Wall  -ansi  -O2
 
main.c: In function `print_usage':
main.c:12: warning: implicit declaration of function `printf'
main.c:13: warning: implicit declaration of function `exit'
main.c: In function `test_entree':
main.c:49: warning: implicit declaration of function `malloc'
main.c:49: warning: assignment makes pointer from integer without a cast
main.c:53: warning: implicit declaration of function `atoi'
main.c: In function `duptab':
main.c:69: warning: assignment makes pointer from integer without a cast
main.c: In function `put_in_liste':
main.c:99: warning: assignment makes pointer from integer without a cast
main.c: In function `init':
main.c:117: too many arguments to function `put_in_liste'
main.c:118: warning: implicit declaration of function `free'
main.c:111: warning: unused variable `elem'
main.c:113: warning: unused variable `i'
main.c: In function `main':
main.c:127: warning: assignment makes pointer from integer without a cast


Je veux bien aider, mais j'aime pas qu'on se foute de moi.  
Bonsoir.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°935456
minimoke
beep beep
Posté le 03-01-2005 à 00:23:32  profilanswer
 

ben c bon c juste que les fonctions sont dans le desordres ca compile si tu veut tu peux rajouter les definitions des fonctions pour enlever les warnings mais la n'est pas le probleme. le seul truc qu g oublier d'enlever c le ", tab" dans put_in _liste


---------------
  ____
n°935457
Taz
bisounours-codeur
Posté le 03-01-2005 à 00:24:28  profilanswer
 

non, il manque des tas de #include

n°935458
minimoke
beep beep
Posté le 03-01-2005 à 00:26:37  profilanswer
 

g fait ca vite fait car j'allais pas balancer 10 tones de codes donc excuser moi pour les oubli d'include mais je voudrais juste savoir ce qu'il cloche dans ma fonction put_in_liste et je ne trouver pas necessaire de vous envoyer tout le code


---------------
  ____
n°935464
ffomnislas​h
Posté le 03-01-2005 à 00:57:34  profilanswer
 

ton but c'est de faire un tableau de liste ?

n°935469
minimoke
beep beep
Posté le 03-01-2005 à 01:39:42  profilanswer
 

oui en fait je doit coder le compte est bon avec un graphe
de ce genre (tableau de liste)


---------------
  ____
n°935470
minimoke
beep beep
Posté le 03-01-2005 à 01:40:19  profilanswer
 

g tout fait sauf qu'il y a juste ce probleme a regler


---------------
  ____
n°935475
Taz
bisounours-codeur
Posté le 03-01-2005 à 01:47:28  profilanswer
 

ben c'est quand tu veux pour écouter ma recommandation

n°935476
ffomnislas​h
Posté le 03-01-2005 à 01:49:17  profilanswer
 

Je pige pas tous ton code mais cette ligne tes sur qu'elle est necessaire ?
 

Code :
  1. void    put_in_liste(liste *begin,
  2.                      int val1,
  3.                      char op,
  4.                      int val2,
  5.                      int *tab)
  6. {
  7.   liste elem;
  8.   int   i;
  9.   if (val1 < val2)
  10.     swap(&val1, &val2);
  11.   elem = malloc(sizeof (elem));
  12.   elem->val1 = val1;
  13.   elem->val2 = val2;
  14.   elem->op = op;
  15.   for (i = 0;i < 6;i++)
  16.     elem->tab[i] = tab[i];
  17.   elem->next = *begin; //cette ligne
  18.   *begin = elem;
  19. }


 
Le dernier element de ta liste doit avoir next qui pointe vers NULL non?
Ca fait un peu boucle ton truc
 
Et Taz a raison met ton  code sur le forum avec les balise !


Message édité par ffomnislash le 03-01-2005 à 01:50:12
n°935477
Taz
bisounours-codeur
Posté le 03-01-2005 à 01:51:55  profilanswer
 

je parle pas de ça bordel : je parle que quand on écrit  
 
# elem = malloc(sizeof (elem));
#   elem->val1 = val1;
#   elem->val2 = val2;
 
on a alloué un struct s_list * et pas un struct s_list donc ça part dans le décors :o
 
voir mon premier post

n°935478
ffomnislas​h
Posté le 03-01-2005 à 01:55:25  profilanswer
 

oauis spa faux ton truc là :D
 
C'est Emmanuel Delahaye qui rale pour le code :D en faite


Message édité par ffomnislash le 03-01-2005 à 01:56:04
n°935516
minimoke
beep beep
Posté le 03-01-2005 à 09:15:23  profilanswer
 

oups merci taz.
C ce que je me suis dit ce matin dans mon lit j'y ai repencer.


---------------
  ____
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  a l'aide c petit mais c faux et je ne trouve pas

 

Sujets relatifs
besoin de beaucoup d'aide sur la réalisation d'un codage Huffman en C [BESOIN AIDE Dreamweaver] Créa Site Web avec Panier de Vente en Ligne
aide : problème pour un compteur de visiteur sur un siteBesoin d'aide pour un exercice.
petit sondage pour les programmeursPrincipes d'héritage et de polymorphisme... à l'aide !
Aide sur une contrainte d'integrité...Un petit conseil concernant la valeur d'une variable
aide pour création forcée d'un fichier txt (et écriture)...[JDBC] Mon programme trouve pas les drivers
Plus de sujets relatifs à : a l'aide c petit mais c faux et je ne trouve pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR