bonjour j'ai besoin d'aide - C - Programmation
Marsh Posté le 26-11-2007 à 23:29:18
Salut,
tu pourrais quand même mettre les erreurs que ça t'indique ! Pas envie de tout lire, bonne nuit
De plus j'ai quelques soucis d'affichage, de mauvaises indentations (ligne 26 par exemple), des lignes dont les numéros se confondent (12/13 par ex) mais ça c'est apparemment juste pour les lignes vides du code c'est peut-être un bug avec firefox (3.0b1).
Marsh Posté le 26-11-2007 à 23:33:16
le probleme c'est que je suis nul en c et la seul erreure qu il me dit c'est:
c:\docume~1\admini~1\mes documents\untitled1.c: In function `matrice_associee':
c:\docume~1\admini~1\mes documents\untitled1.c:41: parse error before `void'
Marsh Posté le 26-11-2007 à 23:37:08
Il manque une accolade fermante à la fin de ta fonction matrice_associee().
Une présentation claire du code te permet de déceler ce genre d'erreur en quelques secondes. Pense à bien indenter.
Marsh Posté le 26-11-2007 à 23:37:11
Après la ligne 33 je ne vois pas de fermeture d'accolade.
Essaie de mettre tes accolades en face les unes des autres.
Marsh Posté le 26-11-2007 à 23:38:11
edit : une fois cette accolade rajoutée il te restera ces deux warnings à corriger :
27: warning: control reaches end of non-void function
et
53: warning: double format, different type arg (arg 2)
Marsh Posté le 26-11-2007 à 23:50:48
Spoiler : Les numéros de lignes passent bien avec Firefox 2.0.0.9. |
Marsh Posté le 26-11-2007 à 23:57:19
voila j'ai corrigé quelque erreures mais je croi que ça fonctionne pas tres bien
quelqu'un serai me dire pourquoi y a t'il une erreure qui vous saute au yeux
en faite j aimerai une foi que le programe ai saisie k m et le nombre de masse
il me cree une matrice
2k/m -k/m 0 0 0 ... 0
-k/m 2K/m -k/m 0 0 ... 0
0 -k/m 2k/m -K/m 0 ... 0
0 . .
. 0 . .
. -k/m
0 ... 0 0 0 0 -k/m 2k/m
en gros d zeros partous sauf dans les trois diagonale du milieu
je c pas si je suis claire voila mon nouveau code:
Marsh Posté le 27-11-2007 à 00:08:20
Code :
|
encore merci pour votre aide
Marsh Posté le 27-11-2007 à 00:10:12
alors il saisie la m le k il m affiche une matrice quand il veu mais c pas la bonne
Marsh Posté le 27-11-2007 à 00:10:55
Je ne sais pas si c'est que à cause de ça, mais :
if (i=j)
signifie : "si j'ai bien réussi à affecter le contenu de j dans i"
Alors que ce que tu veux, c'est : "si i est égal à j"
et ça s'écrit :
if ( i == j )
Une erreur courante. Tu en as donc quelques unes à corriger.
Marsh Posté le 27-11-2007 à 00:11:51
Par contre, merci de faire un effort sur l'orthographe, on a parfois du mal à te lire...
Marsh Posté le 27-11-2007 à 00:13:48
ok je vais faire un effort pour l'orthographe mais je suis pas bon la dedans non plus merci je vais corrigé ça et je vai essayé d'avancer
Marsh Posté le 27-11-2007 à 00:15:19
Autre chose => tu alloues un pointeur d'entier à A. Sauf que tu as définis A comme étant un pointeur de nombres flottants. Ta variable A doit être de type int*, et non float*.
De même, lorsque tu utilises malloc(), pense à vérifier que l'allocation mémoire s'est bien passée en testant que le retour n'est pas NULL, et gérer l'erreur si ça arrive.
Dernière chose, inutile de caster le retour de malloc :
A = (int*)malloc(...
Tu peux écrire directement :
A = malloc(...
Encore une dernière chose, promis c'est la dernière, vraiment, je crois, enfin je pense :
Tes fonctions main() et matrice_associee() sont sensées retourner une valeur de type int. Or tu n'as écris aucun return qui va avec.
Marsh Posté le 27-11-2007 à 00:22:46
Merci j'essai de comprendre ce que tu m'as di je corrige et je revien
Marsh Posté le 27-11-2007 à 00:30:22
heu si je met int* A toute les valeurs qui vont etre dans mon tableau devrons etre des entier?
Marsh Posté le 27-11-2007 à 00:41:14
Oui.
De toute façon :
malloc(n*n*sizeof(int));
signifie : allocation de mémoire de taille n * n * (taille d'un entier)
Avec cette information, il ne devrait pas être très dur pour toi d'arriver à avoir des nombres flottants.
Marsh Posté le 27-11-2007 à 00:49:33
il me donne une matrice nul:
Code :
|
Marsh Posté le 27-11-2007 à 01:06:38
mince je ne trouve pas il me donne toujours une matrice nulle
Marsh Posté le 27-11-2007 à 01:08:31
je me rapproche de la veritée?
Code :
|
Marsh Posté le 27-11-2007 à 01:19:04
en faite il ne rentre pas dans la fonction matrice_associé
Marsh Posté le 27-11-2007 à 01:22:03
il me demande de saisir K et M
il me donne K/M
et il maffiche une matrice NXN de la taille que je lui ai demandé mais avec des zero partout
Marsh Posté le 27-11-2007 à 01:24:47
Comment ça il ne rentre pas dans ta fonction matrice_associée ?
Marsh Posté le 27-11-2007 à 01:26:04
j'ai mis un printf dans ma fonction et il ne l'affiche pas a l'ecran
Marsh Posté le 27-11-2007 à 01:26:58
Code :
|
Marsh Posté le 27-11-2007 à 01:42:02
Tes erreurs sont lignes : (14 & 21) et 50
Pour 14 et 21, tu devrais avoir la réponse dans les warning de ton compilateur et pour 50, lis la doc de printf ...
Marsh Posté le 27-11-2007 à 01:55:58
ok 14 et 21 sont corrigé maintenant je regarde pour la 50
Marsh Posté le 27-11-2007 à 02:11:12
Olivier51 a écrit : Tes erreurs sont lignes : (14 & 21) et 50 |
donc j'ai bien corrigé les erreur 14&21 mais pour la 50 je trouve pas maintenant il rentre bien dans la fonction mai il me donne une erreur d adresse memoire c surment a cause de la ligne 50 mais je trouve pas
Marsh Posté le 27-11-2007 à 02:20:34
bon voila mon programme:
Code :
|
Marsh Posté le 27-11-2007 à 02:31:31
mais ligne 49 je ne voi pas ce qu il ne va pas je lui dit d'ecrire dans la matrice un float genre 1,123
Marsh Posté le 27-11-2007 à 06:51:32
Inutile de up toutes les 2h en pleine nuit, y a des gens qui dorment.
Surtout qu'il n'y a plus de malloc() dans ton programme, donc oui effectivement, maintenant ça plante.
Et pour le reste de ton comportement, il te faut juste savoir que lorsque tu écris :
if ...
if ...
if ...
else ...
Le else ne s'applique qu'au tout dernier if. Donc forcément ça marche moins bien.
Marsh Posté le 27-11-2007 à 10:52:35
J'aurais calculé i-j ou j-i et fait un switch selon les valeurs (-1, 0, 1, autre) au lieu des "if" à la suite, je trouve ça plus clair.
Marsh Posté le 27-11-2007 à 11:25:51
Vu les difficultés rencontrées avec if..else, return et autres accolades, je préfère y aller doucement. T'as vu, j'ai même pas causé de scanf()
Marsh Posté le 27-11-2007 à 22:10:04
Elmoricq a écrit : Vu les difficultés rencontrées avec if..else, return et autres accolades, je préfère y aller doucement. T'as vu, j'ai même pas causé de scanf() |
Merci pour votre aide
je crois que je v faire une petite pause dans mon programme parce que a force de le bidouiller je sais plus ou j'en suis une bonne nuit de sommeil et je repart
merci encore a tous
oui effectivement je comprend mieux au sujet des if et des else pourquoi j avais que ma dernière diagonal de non nul
je crois que l'idee du switch est excellente je vai essaye de voir comment switch fonctionne merci
Marsh Posté le 27-11-2007 à 22:25:56
Code :
|
Juste regardé par Google, comme scanf aussitôt vu aussitôt oublié, je suis un poisson rouge
(Suis toujours obligé de jeter un coup d'oeil dans un autre de mes sources pour voir le sens des paramètres ou ce genre de choses).
Il ne faut pas oublier les break (à moins que ça soit volontaire) sinon le code du case suivant s'exécute à la suite
Marsh Posté le 27-11-2007 à 22:46:44
Super ça fonctionne je suis trop content bon c'esy sur j'y suis pas arrivé tout seul alors un grand merci a vous tous
voici mon nouveau code:
Code :
|
Marsh Posté le 26-11-2007 à 23:26:13
quelqu'un peut me dire pk ça compil pas svp j'ai chercher mai je trouve pas c pour demain merci