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

  FORUM HardWare.fr
  Programmation
  C

  Array Proleme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Array Proleme

n°1744912
raoul11
Posté le 11-06-2008 à 16:20:25  profilanswer
 

Salut a tous
j ai un Probleme d array. j ai defini une fonction comme suite
adresse= 0x45;
PORT[12]={'0x12','0x14','0x45','0x52'}
Pass[12]={'RA1','Ra2','RA3','Ra4'}
 
char trouver( char addresse)
{
int i=0;
int a=0;
for (i=0;i<17;i++)
{
  if(Port[i]=adresse)
{
  a=i;
}
}
return Pass[a];
}
 
et j aimerais que cette fonction me retourne Ra3. que puije faire pour ameliorer le Programme.  
A++

mood
Publicité
Posté le 11-06-2008 à 16:20:25  profilanswer
 

n°1744933
Elmoricq
Modérateur
Posté le 11-06-2008 à 16:47:05  profilanswer
 

"PORT[12]" et "Pass[12]" ok, mais de quel type ? Et pourquoi "12" ?
 
Dans ta boucle for, d'où sort le 17 ?
C'est pas génant de parcourir PORT jusqu'à 17 valeurs quand ce tableau n'en contient que 12 ? [:opus dei]
(Hint : les magic numbers, çaÿ mal)
 
De plus, y a pas comme un problème entre "addresse" et "adresse" ? [:petrus dei]

n°1744937
raoul11
Posté le 11-06-2008 à 16:53:23  profilanswer
 

Ok c est juste que j ecrivais de nouveau le programm sans copier de mon programme nous pouvons reduire les array a 4.  que puije faire pour resoudre mon Probleme. C est tres important pour moi

n°1744940
Elmoricq
Modérateur
Posté le 11-06-2008 à 16:54:10  profilanswer
 

Eh bien ton problème, en dehors du fait que ton programme est truffé de fautes et qu'il est illisible, c'est que tu confonds "=" avec "==".

n°1744945
raoul11
Posté le 11-06-2008 à 17:00:47  profilanswer
 

c est sous l effet dela rapitide que j ai commis ces faute sinon il fonctione chez moi et je n ai que la premiere lette (R) et j aimerais avoir Ra3

n°1744949
mIRROR
Chevreuillobolchévik
Posté le 11-06-2008 à 17:02:52  profilanswer
 

printf("RA3" );
 
en une ligne [:dawa]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1744950
Elmoricq
Modérateur
Posté le 11-06-2008 à 17:04:12  profilanswer
 

Donc si je résume, tu as recopié à la main comme un malpropre un code foireux, parce que tu es pressé, au lieu de faire un copier-coller. J'ai bon ?

 

À priori c'est juste ton type de retour qui n'est pas bon, tu ne renvoies qu'un char donc tu n'as qu'un caractère. Mais vu le bordel que c'est depuis tout à l'heure, j'voudrais être sûr que t'as pas commis d'autres erreurs.
Fais un copier-coller de ton code qu'on y voie plus clair.


Message édité par Elmoricq le 11-06-2008 à 17:04:28
n°1744957
raoul11
Posté le 11-06-2008 à 17:15:53  profilanswer
 

je taravaille sur mon Laptop qui n est pas connecter a internet et je n ai pas de USB pour copier. voici le code sans faute
char adresse= 0x45;  
char PORT[4]={'0x12','0x14','0x45','0x52'}  
char Pass[4]={'RA1','Ra2','RA3','Ra4'}  
 
char trouver( char addresse)  
{  
int i=0;  
int a=0;  
for (i=0;i<3;i++)  
{  
  if(Port[i]=adresse)  
{  
  a=i;  
}  
}  
return Pass[a];  
}  

n°1744959
mIRROR
Chevreuillobolchévik
Posté le 11-06-2008 à 17:22:25  profilanswer
 

et ca compile ca [:petrus dei]


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1744960
Elmoricq
Modérateur
Posté le 11-06-2008 à 17:23:05  profilanswer
 

S'il est recopié sans faute, alors toutes mes remarques ci-dessus sont valides, ainsi que plusieurs autres :

  • char PORT[4] = {'0x12', ... => sans les apostrophes, tes valeurs.  
  • "char Pass[4] = {'RA1', ..." => Non. "RA1" est une chaîne de caractères, donc un "const char *", et non un char tout seul. Le tableau "Pass" doit donc être de type "const char * Pass[4]" (ou const char * Pass[] vu que tu l'initialises à la volée)
  • char trouver(char addresse) => tu n'utilises jamais le paramètre "addresse", à la place tu utilises la variable globale "adresse". C'est moche et probablement faux.
  • for (i=0;i<3;i++)  => Non. Ta boucle va tourner sur les valeurs de 0 à 2 inclus, donc tu vas "oublier" la dernière valeur de ton tableau "PORT".
  • if(Port[i]=adresse)   => Faux. Tu confonds "=" et "==".
  • if(Port[i]=adresse)   => Uh ? Elle s'appelait pas "PORT" ta variable ?
  • return Pass[a];   => comme vu précédemment, ce qu'est censé contenir le tableau "Pass", ce sont des const char *. Or ta fonction retourne un "char".

mood
Publicité
Posté le 11-06-2008 à 17:23:05  profilanswer
 

n°1744962
Elmoricq
Modérateur
Posté le 11-06-2008 à 17:25:11  profilanswer
 

mIRROR a écrit :

et ca compile ca [:petrus dei]

 

Surement pas.

 

Juste pour le fun :

$ gcc -Wall taiste.c
taiste.c:3:15: warning: multi-character character constant
taiste.c:3: warning: overflow in implicit constant conversion
taiste.c:3:22: warning: multi-character character constant
taiste.c:3: warning: overflow in implicit constant conversion
taiste.c:3:29: warning: multi-character character constant
taiste.c:3: warning: overflow in implicit constant conversion
taiste.c:3:36: warning: multi-character character constant
taiste.c:3: warning: overflow in implicit constant conversion
taiste.c:4: error: parse error before "char"
taiste.c:4:15: warning: multi-character character constant
taiste.c:4:21: warning: multi-character character constant
taiste.c:4:27: warning: multi-character character constant
taiste.c:4:33: warning: multi-character character constant
taiste.c: In function `trouver':
taiste.c:12: error: `Port' undeclared (first use in this function)
taiste.c:12: error: (Each undeclared identifier is reported only once
taiste.c:12: error: for each function it appears in.)
taiste.c:17: error: `Pass' undeclared (first use in this function)

Message cité 1 fois
Message édité par Elmoricq le 11-06-2008 à 17:25:20
n°1744968
mIRROR
Chevreuillobolchévik
Posté le 11-06-2008 à 17:40:04  profilanswer
 

Elmoricq a écrit :


 
Surement pas.
 
Juste pour le fun :


 
je sais :D
mais j ai encore du mal a comprendre quelques trucs
si je fous

Code :
  1. const char* Pass[]


 
je me prends un warning sur le type de retour
mais si je declare

Code :
  1. char Pass[4][4]


j ai plus d erreur mais je trouve ca crade et pas flexible


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1744972
raoul11
Posté le 11-06-2008 à 17:44:15  profilanswer
 

u08 FKT[22]="0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16";
//Eingänge PORTA und PORTB von 0x40 für RA0 bis 0x4F für RB7
//Ausgänge PORTC(außer RC6 und RC7), PORTD und PORTE(RE0 und RE1) von 0x60 für RC0 bis 0x6F für RE1
char adress=0x42;
const char PORT[16]={"0x40","0x41","0x42","0x43","0x44","0x45","0x46","0x47","0x48","0x49","0x4A","0x4B","0x4C","0x4D","0x4E","0x4F"};
const char Pass[16]={"RA0","A1","RA2","RA3","RA4","RA5","RA6","RA7","RB0","RB1","RB2","RB3","RB4","RB5","RB6","RB7"};
 
 
char FindPort(char adress)
{
 int i=0;
 int a=0;
 u08 c=0;
 for(i=0;i<=16;i++)
 {
 
 if(PORT[i]==adress)
   a=i;
 }
 
return (Pass[a]);
}
jaimerais avoir le resultat RA2

n°1745391
matafan
Posté le 12-06-2008 à 12:38:07  profilanswer
 

1) Si PORT[16] est bien un tableau de char, il faut elever les "
2) C'est char *Pass[16], pas char Pass[16].
3) De même FincPort doit retourner un char *, pas un char
4) Tes tableaux ont 16 éléments, les indices vont donc de 0 à 15. Si tu list la case 16 ça va pas aller.


Message édité par matafan le 12-06-2008 à 12:38:38
n°1745393
Taz
bisounours-codeur
Posté le 12-06-2008 à 12:42:33  profilanswer
 

z'en avez du courage les gens. Soit le type a un problème de syntaxe et à ce moment là, il expose clairement la ligne qui ne va pas, soit ça n'est pas un problème de syntaxe et il donne un programme qui compile. La ce programme y a 4 photes par ligne, c'est un programme jamais compilé, tapé dans word.


Message édité par Taz le 12-06-2008 à 12:42:39
n°1745419
Elmoricq
Modérateur
Posté le 12-06-2008 à 13:23:50  profilanswer
 

Mon courage a des limites, j'ai abandonné depuis mon dernier post.
 
raoul11 > Ce qu'il te faut à ce stade, plus qu'une solution à ton problème, c'est étudier un vrai cours de C. Je te propose d'acheter un livre : "Le Langage C", de Kernighan et Ritchie.

n°1745433
raoul11
Posté le 12-06-2008 à 13:47:59  profilanswer
 

je compte le faire. merci tout de meme por votre aide. serait il possible de retourner un string, si oui comment le definir. j ai avancer d un pas grace a matafan.

n°1745435
Elmoricq
Modérateur
Posté le 12-06-2008 à 13:48:54  profilanswer
 

Y a pas de string en C. Pas de chaînes de caractères, ça n'existe pas.
 
Ce sont des tableaux de caractères, et il faut donc que tu en retournes l'adresse via un pointeur (de type char* donc).


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

  Array Proleme

 

Sujets relatifs
[VBA] Petite Question sur les Array's[RESOLU] PHP+Array + boucle while
Maple, méthode RSA, type arrayTaille d'une Array en JavaScript
Passer un objet Array à une fonction JS[Résolu] Recherche avancée dans un array
Upload de fichier + création de répertoire: Erreur d'Array !!?Variables varaibles et Array : compatible ?
[RESOLU] Array ou pas Array, mon intersect semble dire NON !Trier une array - arbre
Plus de sujets relatifs à : Array Proleme


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