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

  FORUM HardWare.fr
  Programmation
  C

  Besoin d'une astuce

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'une astuce

n°1065750
d'jo
Posté le 29-04-2005 à 14:32:11  profilanswer
 

C'est vrai que j'ai quand meme du mal.lol enfin bon 4 td c'est un peu chaud .
J'aimerai également fabriquer une matrice  
 
 a b c d....z
 b c d .....a
 c
 .
 .
 z          a
 
Si quelqu'un à une idée ?
Je pensais utiliser un pointeur de pointeur mais comme je vous le disais c'est encor tres flou dans ma tete !

mood
Publicité
Posté le 29-04-2005 à 14:32:11  profilanswer
 

n°1065795
niemad
Posté le 29-04-2005 à 15:03:51  profilanswer
 

Ca depend un peu de ce que tu compte faire avec ta matrice. Si tu connais par avance la taille de ta matrice tu peux eviter le pointeur de pointeur en declarant un tableau (par exemple char matrice[26][26] pour celle que tu montre sur ton post). Tu peux alors te deplacer dans ta matrice en utilisant matrice[i][j].
Si tu ne connais pas la taille de ta matrice a la base tu es oblige de passer par un pointeur de pointeur du type char **matrice et apres tu alloues la taille avec des malloc lorsque tu connais les dimensions. Si en plus tu veux faire grossir ta matrice au fur et a mesure dans ton programme il va falloir que tu fasses des listes chainees.

n°1065852
skelter
Posté le 29-04-2005 à 15:37:25  profilanswer
 

pas de liste chainee mais une bibliotheque pour gere un objet matrice qui s'occupe des reallocation d'une zone (MxN) et de l'indexation (ligne,colonne), mais vu son niveau ce serais stupide
utilises char matrice[26][26] et te fais pas chier avec des pointeur de pointeur qui ne permettent surement pas d'allouer une matrice

n°1065859
d'jo
Posté le 29-04-2005 à 15:40:16  profilanswer
 

non non  je connais sa taille c en effet 26,26 mais c pour la construire que je cherche une astuce plutot que de  taper a la bourrain 26*26 cases ! lol
C a d trouvé une relation entre matrice[i][j] et les lettres de l'alphabet .

n°1065877
zombinette
Posté le 29-04-2005 à 15:50:57  profilanswer
 

considere ta matrice M[i,j] et le tableau a de taille 26 sachant que a[0] = a, a[1] = b .... a[25] = z et est donc statique  
 
dans ta matrice en vraiment pseudo code, je fais vite ^^
 
pour i de 0 à 25 :  
  if (i+j)<26 then M[i,j] = a[i+j]
 
  if (i+j)>=26 then M[i,j] = a[(i+j)-26)]
 
voilà je crois que comme ça c bon ^^


Message édité par zombinette le 29-04-2005 à 19:56:57
n°1065896
zombinette
Posté le 29-04-2005 à 15:56:52  profilanswer
 

ah sinon pour la construire, ta matrice, un double malloc et le tour est joué !

n°1065925
Elmoricq
Modérateur
Posté le 29-04-2005 à 16:09:03  profilanswer
 

d'jo a écrit :

non non  je connais sa taille c en effet 26,26 mais c pour la construire que je cherche une astuce plutot que de  taper a la bourrain 26*26 cases ! lol
C a d trouvé une relation entre matrice[i][j] et les lettres de l'alphabet .


 
Relation ?
 
Tu as 26 lettres dans l'alphabet.
Tu dois faire un décalage de 1 lettre par ligne jusqu'à faire tous les décalages à gauche possibles => 26 décalages possibles.
 
Donc : ta matrice doit faire 26 x 26 en taille, et elle ne changera pas de taille tant que tu resteras sur l'alphabet français.
 
A partir de là, pourquoi tu trouves ça bourrin de taper "char matrice[26][26];", mais que tu cherches une "astuce" quand même ?
Ou mieux encore, tu tapes "char matrice[26*26]" et tu n'utilises ainsi qu'un tableau à 1 dimension.
 
Je ne te comprends pas.
 
Sinon pour la remplir, je verrais bien l'utilisation du modulo 26 sur 'a'.
 
EDIT : j'avais mis le code, puis j'ai réalisé que c'était dans le cadre d'un TP... donc la solution tu dois la chercher seul.


Message édité par Elmoricq le 29-04-2005 à 16:11:22
n°1065963
d'jo
Posté le 29-04-2005 à 16:27:46  profilanswer
 

ouai merci je c , j aime bien trouver seul mais je rechigne pas sur les indications ;)

n°1066185
zombinette
Posté le 29-04-2005 à 19:12:52  profilanswer
 

tu n as pas reussi a transformer mes indications en code?
c'est pas très compliqué une fois les relations trouvées, non?

n°1066205
d'jo
Posté le 29-04-2005 à 19:41:31  profilanswer
 

non non c bon merci beaucoup g pu avancé mais j 'avou je reste bouche bée devant ta rapidité

mood
Publicité
Posté le 29-04-2005 à 19:41:31  profilanswer
 

n°1066653
Sve@r
Posté le 30-04-2005 à 12:10:47  profilanswer
 

zombinette a écrit :

considere ta matrice M[i,j] et le tableau a de taille 26 sachant que a[0] = a, a[1] = b .... a[25] = z et est donc statique  
 
dans ta matrice en vraiment pseudo code, je fais vite ^^
 
pour i de 0 à 25 :  
  if (i+j)<26 then M[i,j] = a[i+j]
 
  if (i+j)>=26 then M[i,j] = a[(i+j)-26)]
 
voilà je crois que comme ça c bon ^^


 
Bon, je fais encore plus vite: M[i][j]=(i + j) % 26 + 'a'  :D


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1066674
Elmoricq
Modérateur
Posté le 30-04-2005 à 12:27:33  profilanswer
 

C'est ce que j'avais marqué avant mon edit, mais au final je voulais pas lui donner la solution de son TD. ;)


Message édité par Elmoricq le 30-04-2005 à 12:27:46
n°1066818
d'jo
Posté le 30-04-2005 à 14:33:45  profilanswer
 

merci beaucoup j'avais trouvé aussi mais en beaucoup plus compliqué j'avoue que je ne comprend pas ton expression ??
le % et le + 'a' ?? g encore jamais vu ca  mais bravo


Message édité par d'jo le 30-04-2005 à 14:34:03
n°1066853
jercmoi
Posté le 30-04-2005 à 15:22:33  profilanswer
 

Le % te donne le reste dans une division : 5%2 te renvoie 1. Cela permet de regrouper en une seule expression les deux cas précédents i+j<26 et i+j>=26.
'a' est le code ASCII de a : il vaut 97 en décimal. En effet, il faut savoir que dans ton tableau tu ne stockes pas les caractères, mais leur code ASCII.
edit : comme cela, tu n'as plus besoin de ton tableau a qui te donnait la lettre de l'alphabet correspondant à l'indice du tableau.


Message édité par jercmoi le 30-04-2005 à 15:24:36
n°1066932
skelter
Posté le 30-04-2005 à 16:35:43  profilanswer
 

'a' est une constante (type int) dont la valeur depend du jeu de caractere qui n'est pas forcement l'ascii

n°1066937
Elmoricq
Modérateur
Posté le 30-04-2005 à 16:42:31  profilanswer
 

jercmoi a écrit :

Le % te donne le reste dans une division : 5%2 te renvoie 1. Cela permet de regrouper en une seule expression les deux cas précédents i+j<26 et i+j>=26.


 
C'est ce qu'on appelle courament le modulo ;)
 
Très pratique pour faire cycler n'importe quoi comme, ici, des lettres.

n°1066946
d'jo
Posté le 30-04-2005 à 16:50:21  profilanswer
 

ok merci je comprend mieux

n°1066947
d'jo
Posté le 30-04-2005 à 16:51:08  profilanswer
 

Ce forum est bien plus interessant et plus instructif que mon cours !
;)


Message édité par d'jo le 30-04-2005 à 16:51:24
n°1066987
Emmanuel D​elahaye
C is a sharp tool
Posté le 30-04-2005 à 17:38:55  profilanswer
 

d'jo a écrit :

Ce forum est bien plus interessant et plus instructif que mon cours !
;)


Normal, les gens qui contribuent sont des spécialistes, des passionés et souvent des professionels. C'est rarement le cas d'un prof...


Message édité par Emmanuel Delahaye le 30-04-2005 à 17:39:19

---------------
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/

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

  Besoin d'une astuce

 

Sujets relatifs
besoin d'aide je suis novice en progbesoin d'aide: protéger userform ac mot de passe
[PHP] Besoin de conseil pour structurer mon codebesoin de codes
besoin urgent d'une base de donnée AccessVBA & Combobox - besoin d'aide -
urgent, svp, j'ai besoin de l'aide sur ce programme en cVraiment besoin d'aide SVP :') !!!! Récupérer vidéo JT
Besoin d'aide pour mettre en ligne bcp de texte[ PHP ] Besoin d'une astuce pour imagecreatefrom***
Plus de sujets relatifs à : Besoin d'une astuce


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