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

  FORUM HardWare.fr
  Programmation
  C++

  [C] Erreur de syntaxe...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Erreur de syntaxe...

n°264483
raph93
Posté le 07-12-2002 à 20:34:09  profilanswer
 

------------------------------
 
1er probleme :
 
j'obtiens cette erreur , dans les lignes surlignées en noir , ca vient de koi ??
 

Parse Error Before "T"

[PROBLEME RESOLU]
 
-----------------------------------
 
2e probleme :  
 

incompatible types in assignment


 
j'obtiens cette erreur sur les 3 lignes surlignés en rouge...
 
---------------------------------------
 
#include <stdio.h>
 
#define MAX 9
 
typedef struct {
 
 char nom[20];
 int region[98];
 float ChAff;
 
 } T[MAX] ;
 
 
void Tri() {
 
int p[98];
int i=0;
 
for (i=0 ; i < MAX ; i++ ) {
 
 if (T[i].region > T[i+1].region) {
 
 p = T[i].region;
 T[i].region = T[i+1].region;
 T[i+1].region = p;

         
        }
 
 }
 
}
 
void Aff_reg() {
 
 
int i=0 ;
int reg = T[i].region ;
float s = 0;
 
while (T[i].region != "" ) {
 
 if (T[i].region == reg) {
 s = T[i].chAff;
        }
 
 else {
 
 printf("Total region %d = %f\n" , T[i].region ; s);
 reg = T[i].region;
 s=0 ;
 }
 
 i++;
 }
 
main() {
 
Tri();
Aff_reg();
 
}


Message édité par raph93 le 08-12-2002 à 11:51:36

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
mood
Publicité
Posté le 07-12-2002 à 20:34:09  profilanswer
 

n°264489
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 07-12-2002 à 20:41:52  profilanswer
 

typedef struct {
 
char nom[20];
int region[98];
float ChAff;
 
} T[MAX] ;
 
moi je veux bien que tu définisse un type, encore faut-il lui donner un nom


---------------
du bon usage de rand [C] / [C++]
n°264498
leneuf22
Posté le 07-12-2002 à 21:14:53  profilanswer
 

Ce typedef struct est tout à fait correct !
Pas besoin d'y coller un nom

n°264500
leneuf22
Posté le 07-12-2002 à 21:17:16  profilanswer
 

Le problème est que tu n'as pas déclaré ton tableau.
T n'est pas un tableau, c'est juste un raccourci pour dire "tableau de 9 objets de ma struct"
 
Essaye comme ça :
 
typedef struct {
 
char nom[20];
int region[98];
float ChAff;
 
} montype;
montype T[MAX];
 
Mais si tu relis ton code, tu auras d'autres surprises : il manque un '}'...


Message édité par leneuf22 le 07-12-2002 à 21:26:14
n°264504
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 07-12-2002 à 21:22:36  profilanswer
 

ce que je veux dire c'est que ici, le but ce n'est pas de définir un type mais d'instancier un tableau de MAX structure.
 
 

Code :
  1. typedef struct {
  2. char nom[20];
  3. int region[98];
  4. float ChAff;
  5. } montype;
  6. montype T[MAX];

 :jap:


---------------
du bon usage de rand [C] / [C++]
n°264639
raph93
Posté le 08-12-2002 à 11:37:03  profilanswer
 

:bounce:


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°264640
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 11:39:46  profilanswer
 

:heink:  :??:


---------------
du bon usage de rand [C] / [C++]
n°264641
raph93
Posté le 08-12-2002 à 11:40:51  profilanswer
 


 
topic edité  :D
 
y'a une 2e erreur


Message édité par raph93 le 08-12-2002 à 11:41:16

---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°264642
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 11:43:42  profilanswer
 

aujourd'hui dimanche, nous avons un gagant qui confond pointeur et tableau et qui ne sait pas copier un tableau dans un autre :lol:


---------------
du bon usage de rand [C] / [C++]
n°264643
raph93
Posté le 08-12-2002 à 11:44:16  profilanswer
 

Taz@PPC a écrit :

aujourd'hui dimanche, nous avons un gagant qui confond pointeur et tableau et qui ne sait pas copier un tableau dans un autre :lol:  


 
le C c pas ma tasse de Thé  :D


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
mood
Publicité
Posté le 08-12-2002 à 11:44:16  profilanswer
 

n°264644
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 11:48:53  profilanswer
 

Code :
  1. p = T[i].region;
  2. T[i].region = T[i+1].region;
  3. T[i+1].region = p;


 
regin est un tableau donc pas une l-value c'est à dire que ca peut pas etre a gauche d'un '='
 
puisqu'apparemment tu ne connais pas les pointeurs, on va faire simple.
 
ici ce que tu veux c'est permuter 2 tableaux, donc tu passes par un tableau temporaire: en tout il y a 3 copies. mais la copie de tableau en C ce n'est pas une affectation (deja parce qu'avec des tableaus le = ne marche po), c'est la recopie élément par élément.
 
du genre une petite fonction

Code :
  1. void tabcpy(int t1[], int t2[], unsigned n_elements)
  2. {
  3.   unsigned i;
  4.   for(i=0; i<n_elements; ++i)
  5.   {
  6.     t1[i]=t2[i];
  7.   }
  8. }
  9. tabcpy(p, T[i].region, 98);


 
 
il existe des routines optimisées en C, mais tu as tout le temps de découvrir ça.


Message édité par Taz@PPC le 08-12-2002 à 11:50:09

---------------
du bon usage de rand [C] / [C++]
n°264645
raph93
Posté le 08-12-2002 à 11:53:08  profilanswer
 

Taz@PPC a écrit :

Code :
  1. p = T[i].region;
  2. T[i].region = T[i+1].region;
  3. T[i+1].region = p;


 
regin est un tableau donc pas une l-value c'est à dire que ca peut pas etre a gauche d'un '='
 
puisqu'apparemment tu ne connais pas les pointeurs, on va faire simple.
 
ici ce que tu veux c'est permuter 2 tableaux, donc tu passes par un tableau temporaire: en tout il y a 3 copies. mais la copie de tableau en C ce n'est pas une affectation (deja parce qu'avec des tableaus le = ne marche po), c'est la recopie élément par élément.
 
du genre une petite fonction

Code :
  1. void tabcpy(int t1[], int t2[], unsigned n_elements)
  2. {
  3.   unsigned i;
  4.   for(i=0; i<n_elements; ++i)
  5.   {
  6.     t1[i]=t2[i];
  7.   }
  8. }
  9. tabcpy(p, T[i].region, 98);


 
 
il existe des routines optimisées en C, mais tu as tout le temps de découvrir ça.


 
merci , c pas gagner


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°264647
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 08-12-2002 à 11:57:10  profilanswer
 

est ce que tu comprends déjà?
 
 
sinon, plus compliqué, tu as dans string.h la fonction memcpy, beaucoup plus rapide
 

Code :
  1. const unsigned N=98;
  2. type tablo1[N];
  3. type tablo2[N];
  4. /* ...des trucs ... */
  5. memcpy(tablo1, tablo2, N*sizeof(type)); // tablo1 est maintenant identique à tablo2


 


---------------
du bon usage de rand [C] / [C++]
n°264648
raph93
Posté le 08-12-2002 à 12:02:33  profilanswer
 

Taz@PPC a écrit :

est ce que tu comprends déjà?
 
 
sinon, plus compliqué, tu as dans string.h la fonction memcpy, beaucoup plus rapide
 

Code :
  1. const unsigned N=98;
  2. type tablo1[N];
  3. type tablo2[N];
  4. /* ...des trucs ... */
  5. memcpy(tablo1, tablo2, N*sizeof(type)); // tablo1 est maintenant identique à tablo2


 
 


 
jsuis en train d'essayer de decortiquer ton post precedent  :)


---------------
Nothing can stop me, I'm never satisfied, I take what i want, refuse to be denied...
n°265046
Musaran
Cerveaulté
Posté le 09-12-2002 à 00:43:23  profilanswer
 

Code :
  1. //Help macros for aggregates (array or structure)
  2. //Parts are for C++
  3. //Doesn't pretend to be standard compliant, portable, fully protected, or bugless.
  4. //Required
  5. #include <memory.h>
  6. #include <stddef.h>
  7. #include <assert.h>
  8. //Test if argument is an array, not a pointer or address
  9. //array  : returns 1/true (string litterals are arrays)
  10. //pointer: returns 0/false
  11. //litteral: error '&' on constant
  12. //other   : error subscript requires array or pointer type
  13. #define ISARRAY(a) ( (void*)&(a)==(void*)&(a)[0] )
  14. //Number of array elements
  15. #define DIMOF(a) ( assert(ISARRAY(a)) ,\
  16.                    sizeof(a)/sizeof(a)[0] )
  17. //The following come in 2 versions each:
  18. //fast  : expression, doesn't suit C++ allocating types. MAY only be faster.
  19. //normal: statement , can work with different destination & source types.
  20. //(result is undefined if areas overlap !)
  21. //Copy n array elements from src into dst (arrays or pointers)
  22. #define ARRAYCOPYN(dst,src,n) do{for(ptrdiff_t i= (n)-1 ; i>=0 ; --i)\
  23.                                   (dst)[i]= (src)[i] ;}while(0)
  24. #define ARRAYCOPYNFAST(dst,src,n) ( assert(sizeof(src)[0]==sizeof(dst)[0]) ,\
  25.                                     memcpy( dst, src, (n) * sizeof (src)[0] ) )
  26. //Copy array elements...
  27. //...from srcfirst included (array or pointer)...
  28. //...to   srcafter excluded (pointer on same array as srcfirst)...
  29. //...into dst               (array or pointer).
  30. #define ARRAYCOPYRANGE(dst,srcfirst,srcafter)     ARRAYCOPYN    ( dst, srcfirst, (srcafter)-(srcfirst) )
  31. #define ARRAYCOPYRANGEFAST(dst,srcfirst,srcafter) ARRAYCOPYNFAST( dst, srcfirst, (srcafter)-(srcfirst) )
  32. //Copy src to dst (both arrays of same dimension)
  33. #define ARRAYCOPY(dst,src)   do{ assert(ISARRAY(dst) && ISARRAY(src) && DIMOF(src)==DIMOF(dst)) ;\
  34.                                  ARRAYCOPYN    (dst, src, DIMOF(src));}while(0)
  35. #define ARRAYCOPYFAST(dst,src) ( assert(ISARRAY(dst) && ISARRAY(src) && DIMOF(src)==DIMOF(dst)) ,\
  36.                                  ARRAYCOPYNFAST(dst, src, DIMOF(src)) )


C'est pour t'aider à comprendre :ange: .
 
Non, sérieux, pourquoi il n'y a pas des trucs comme ça en standard ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°265057
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 07:28:09  profilanswer
 

vade retro! efface moi ce post tout de suite!


---------------
du bon usage de rand [C] / [C++]
n°266185
Musaran
Cerveaulté
Posté le 10-12-2002 à 02:29:46  profilanswer
 

Non non.
 
On est en C ici, il faut être courageux et assumer les horreurs nécessaires.
Et encore, j'ai pas tout mis.
 
Mais bien masqué dans un header, je t'assure que c'est plus propre.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°266219
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 10-12-2002 à 08:41:40  profilanswer
 

:whistle:


---------------
du bon usage de rand [C] / [C++]

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

  [C] Erreur de syntaxe...

 

Sujets relatifs
[php] erreur ligne 34Erreur pour un OutputFileStream
[java] c quoi cette erreur (wrong version 48.0)?Erreur javascript:(
Une bête erreur MySQL... j'en suis sûr....[C++]Erreur d'éxecution / namespace
[C++/Direct X] erreur dans un DirectInput[PHP] $_POST --> Erreur !
[JSP] Pourquoi cette erreur ?Erreur de compilation / comment on appelle une methode d'une class?
Plus de sujets relatifs à : [C] Erreur de syntaxe...


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