bonjour j'ai besoin d'aide

bonjour j'ai besoin d'aide - C - Programmation

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
 
 

Code :
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. /*ici on aura que des matrices carrée donc n lignes n colones*/
  6. int matrice_associee(int *A,int n,int k,int m);
  7. int affiche_matrice(int *A,int n);
  8. /********************************************FONCTION*****************************************/
  9. int matrice_associee(int *A,int n,int k,int m)
  10. int i,j;
  11.    
  12.      for(i=0;i<n;i++)//ligne
  13.     {
  14.       for(j=0;j<n;j++)//colonne
  15.       {
  16.  
  17.  if (i=j)
  18.         A[i*n+j]=2*k/m;
  19.  if (i=j-1)
  20.  A[i*n+j]=-k/m;
  21.  if (i=j+1)
  22.  A[i*n+j]=-k/m;
  23.  else
  24.  A[i*n+j]=0;
  25.   }
  26.     }
  27. void affiche_matrice(float *A, int n)
  28. {
  29.      int i,j;
  30.    
  31.  printf ("la matrice du systeme masse ressort est:\n" );
  32.      for (i=0;i<n;i++)
  33.      {
  34.          printf("                " );
  35.          for (j=0;j<n;j++)
  36.          {
  37.              printf("%1.0f ",A[i*n+j]);
  38.          }
  39.        
  40.          printf("\n" );
  41.      }
  42.      printf("\n" );
  43. }
  44. int main ()
  45. {
  46.  int n,k,m;
  47.      int *A/*,*B,*P,*C*/;
  48.  printf("Saisir la masse m:\n" );
  49.      scanf("%d",&m);
  50.      printf("Saisir la raideur k:\n" );
  51.      scanf("%d",&k);
  52.  printf("on prendra W0=%f",k/m);
  53.  printf ("combien de masse ds votre systeme:\n" );
  54.  scanf("%d",&n);
  55.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  56. A=(int*)malloc(n*n*sizeof(int));
  57.     matrice_associee(A,n,k,m);
  58. affiche_matrice(A,n);
  59. getch();
  60. free(A);
  61. }

Reply

Marsh Posté le 26-11-2007 à 23:26:13   

Reply

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 :lol:
 
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).


Message édité par gzii le 26-11-2007 à 23:33:20
Reply

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'

Reply

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. ;)

Reply

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.

Reply

Marsh Posté le 26-11-2007 à 23:38:11    

[:haha]

 


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)


Message édité par Elmoricq le 26-11-2007 à 23:38:52
Reply

Marsh Posté le 26-11-2007 à 23:38:32    

Grillé :lol:

Reply

Marsh Posté le 26-11-2007 à 23:42:20    

merci j'essai de corrigé merci encore

Reply

Marsh Posté le 26-11-2007 à 23:50:48    

Spoiler :

Les numéros de lignes passent bien avec Firefox 2.0.0.9.
C'est dont un bug ou une modif de la 3.0 beta 1

Reply

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:

 


Message édité par mamourbizbiz le 27-11-2007 à 00:07:12
Reply

Marsh Posté le 26-11-2007 à 23:57:19   

Reply

Marsh Posté le 27-11-2007 à 00:08:20    

Code :
  1. /*
  2. *  DAvid.h
  3. *  Created by david bouaziz on 26/11/07.
  4. *  Copyright 2007 __MyCompanyName__. All rights reserved.
  5. */
  6. #include<stdio.h>
  7. #include<conio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. /*ici on aura que des matrices carrée donc n lignes n colones*/
  11. int matrice_associee(float *A,int n,int k,int m);
  12. void affiche_matrice(float *A,int n);
  13. /********************************************FONCTION*****************************************/
  14. int matrice_associee(float *A,int n,int k,int m)
  15. int i,j;
  16.    
  17.      for(i=0;i<n;i++)//ligne
  18.     {
  19.       for(j=0;j<n;j++)//colonne
  20.       {
  21.  
  22.  if (i=j)
  23.         A[i*n+j]=2*k/m;
  24.  if (i=j-1)
  25.  A[i*n+j]=-k/m;
  26.  if (i=j+1)
  27.  A[i*n+j]=-k/m;
  28.  else
  29.  A[i*n+j]=0;
  30.   }
  31.     }
  32. }
  33. void affiche_matrice(float *A, int n)
  34. {
  35.      int i,j;
  36.    
  37.  printf ("la matrice du systeme masse ressort est:\n" );
  38.      for (i=0;i<n;i++)
  39.      {
  40.          printf("                " );
  41.          for (j=0;j<n;j++)
  42.          {
  43.              printf("%1.0f ",A[i*n+j]);
  44.          }
  45.        
  46.          printf("\n" );
  47.      }
  48.      printf("\n" );
  49. }
  50. int main ()
  51. {
  52.  int n,k,m;
  53.      float *A/*,*B,*P,*C*/;
  54.  printf("Saisir la masse m:\n" );
  55.      scanf("%d",&m);
  56.      printf("Saisir la raideur k:\n" );
  57.      scanf("%d",&k);
  58.  printf("on prendra W0=%f",k/m);
  59.  printf ("combien de masse ds votre systeme:\n" );
  60.  scanf("%d",&n);
  61.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  62. A=(int*)malloc(n*n*sizeof(int));
  63.     matrice_associee(A,n,k,m);
  64.     printf ("allo" );
  65. affiche_matrice(A,n);
  66. getch();
  67. free(A);
  68. }


encore merci pour votre aide


Message édité par mamourbizbiz le 27-11-2007 à 00:08:52
Reply

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

Reply

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. [:dawa]


Message édité par Elmoricq le 27-11-2007 à 00:15:33
Reply

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... [:dawao]


Message édité par Elmoricq le 27-11-2007 à 00:12:08
Reply

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

Reply

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.


Message édité par Elmoricq le 27-11-2007 à 00:18:13
Reply

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

Reply

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?

Reply

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. [:dawao]

Reply

Marsh Posté le 27-11-2007 à 00:49:33    

il me donne une matrice nul:
 

Code :
  1. /*
  2. *  DAvid.h
  3. *  Created by david bouaziz on 26/11/07.
  4. *  Copyright 2007 __MyCompanyName__. All rights reserved.
  5. */
  6. #include<stdio.h>
  7. #include<conio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. /*ici on aura que des matrices carrée donc n lignes n colones*/
  11. int matrice_associee(int *A,int n,float k,float m);
  12. void affiche_matrice(int *A,int n);
  13. /********************************************FONCTION*****************************************/
  14. int matrice_associee(int *A,int n,float k,float m)
  15. int i,j;
  16.    
  17.      for(i=0;i<n;i++)//ligne
  18.     {
  19.       for(j=0;j<n;j++)//colonne
  20.       {
  21.  
  22.  if (i==j)
  23.         A[i*n+j]=2*k/m;
  24.  if (i==j-1)
  25.  A[i*n+j]=-k/m;
  26.  if (i==j+1)
  27.  A[i*n+j]=-k/m;
  28.  else
  29.  A[i*n+j]=0;
  30.   return 0;
  31.   }
  32.     }
  33. }
  34. void affiche_matrice(int *A, int n)
  35. {
  36.      int i,j;
  37.    
  38.  printf ("la matrice du systeme masse ressort est:\n" );
  39.      for (i=0;i<n;i++)
  40.      {
  41.          printf("                " );
  42.          for (j=0;j<n;j++)
  43.          {
  44.              printf("%1.0f ",A[i*n+j]);
  45.          }
  46.        
  47.          printf("\n" );
  48.      }
  49.      printf("\n" );
  50. }
  51. int main ()
  52. {
  53.  int n,*A;
  54.      float k,m,W0;
  55.  printf("Saisir la masse m:\n" );
  56.      scanf("%f",&m);
  57.      printf("Saisir la raideur k:\n" );
  58.      scanf("%f",&k);
  59.  W0=k/m;
  60.  printf("on prendra W0=%f\n",W0);
  61.  printf ("combien de masse ds votre systeme:\n" );
  62.  scanf("%d",&n);
  63.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  64. A=malloc(n*n*sizeof(float));         //inutile de caster le retour de malloc :
  65.                                        //A = (int*)malloc(...
  66.      printf ("allo1" );
  67.      getch();
  68.     matrice_associee(A,n,k,m);
  69.     printf ("allo2" );
  70. affiche_matrice(A,n);
  71. getch();
  72. free(A);
  73. return 0;
  74. }

Reply

Marsh Posté le 27-11-2007 à 01:06:38    

mince je ne trouve pas il me donne toujours une matrice nulle

Reply

Marsh Posté le 27-11-2007 à 01:08:31    

je me rapproche de la veritée?

Code :
  1. /*
  2. *  DAvid.h
  3. *  Created by david bouaziz on 26/11/07.
  4. *  Copyright 2007 __MyCompanyName__. All rights reserved.
  5. */
  6. #include<stdio.h>
  7. #include<conio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. /*ici on aura que des matrices carrée donc n lignes n colones*/
  11. void matrice_associee(float *A,int n,float k,float m);
  12. void affiche_matrice(float *A,int n);
  13. /********************************************FONCTION*****************************************/
  14. void matrice_associee(float *A,int n,float k,float m)
  15. int i,j;
  16.    
  17.      for(i=0;i<n;i++)//ligne
  18.     {
  19.       for(j=0;j<n;j++)//colonne
  20.       {
  21.  
  22.  if (i==j)
  23.         A[i*n+j]=2*k/m;
  24.  if (i==j-1)
  25.  A[i*n+j]=-k/m;
  26.  if (i==j+1)
  27.  A[i*n+j]=-k/m;
  28.  else
  29.  A[i*n+j]=0;
  30.   }
  31.     }
  32. }
  33. void affiche_matrice(float *A, int n)
  34. {
  35.      int i,j;
  36.    
  37.  printf ("la matrice du systeme masse ressort est:\n" );
  38.      for (i=0;i<n;i++)
  39.      {
  40.          printf("                " );
  41.          for (j=0;j<n;j++)
  42.          {
  43.              printf("%1.0f ",A[i*n+j]);
  44.          }
  45.        
  46.          printf("\n" );
  47.      }
  48.      printf("\n" );
  49. }
  50. int main ()
  51. {
  52.  int n;
  53.      float *A,k,m,W0;
  54.  printf("Saisir la masse m:\n" );
  55.      scanf("%f",&m);
  56.      printf("Saisir la raideur k:\n" );
  57.      scanf("%f",&k);
  58.  W0=k/m;
  59.  printf("on prendra W0=%f\n",W0);
  60.  printf ("combien de masse ds votre systeme:\n" );
  61.  scanf("%d",&n);
  62.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  63. A=malloc(n*n*sizeof(float));         //inutile de caster le retour de malloc :
  64.                                        //A = (int*)malloc(...
  65.      printf ("allo1" );
  66.      getch();
  67.     matrice_associee(A,n,k,m);
  68.     printf ("allo2" );
  69. affiche_matrice(A,n);
  70. getch();
  71. free(A);
  72. return 0;
  73. }


Reply

Marsh Posté le 27-11-2007 à 01:17:16    

Ca te donne quoi afficher sur l'écran ?

Reply

Marsh Posté le 27-11-2007 à 01:19:04    

en faite il ne rentre pas dans la fonction matrice_associé

Reply

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

Reply

Marsh Posté le 27-11-2007 à 01:24:47    

Comment ça il ne rentre pas dans ta fonction matrice_associée ?

Reply

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

Reply

Marsh Posté le 27-11-2007 à 01:26:58    

Code :
  1. /*
  2. *  DAvid.h
  3. *  Created by david bouaziz on 26/11/07.
  4. *  Copyright 2007 __MyCompanyName__. All rights reserved.
  5. */
  6. #include<stdio.h>
  7. #include<conio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. /*ici on aura que des matrices carrée donc n lignes n colones*/
  11. int matrice_associee(float *A,int n,float k,float m);
  12. void affiche_matrice(float *A,int n);
  13. /********************************************FONCTION*****************************************/
  14. void matrice_associee(float *A,int n,float k,float m)
  15. int i,j;
  16.         printf ("matriceassocie\n\n\n\n\n\nplouffff\n" );
  17.      for(i=0;i<n;i++)//ligne
  18.     {
  19.       for(j=0;j<n;j++)//colonne
  20.       {
  21.  
  22.  if (i==j)
  23.         A[i*n+j]=2*k/m;
  24.  if (i==j-1)
  25.  A[i*n+j]=-k/m;
  26.  if (i==j+1)
  27.  A[i*n+j]=-k/m;
  28.  else
  29.  A[i*n+j]=0;
  30.   }
  31.     }
  32. }
  33. void affiche_matrice(float *A, int n)
  34. {
  35.      int i,j;
  36.    
  37.  printf ("la matrice du systeme masse ressort est\n" );
  38.      for (i=0;i<n;i++)
  39.      {
  40.          printf("                " );
  41.          for (j=0;j<n;j++)
  42.          {
  43.              printf("%1.0f ",A[i*n+j]);
  44.          }
  45.        
  46.          printf("\n" );
  47.      }
  48.      printf("\n" );
  49. }
  50. int main ()
  51. {
  52.  int n;
  53.      float *A,k,m,W0;
  54.  printf("Saisir la masse m:\n" );
  55.      scanf("%f",&m);
  56.      printf("Saisir la raideur k:\n" );
  57.      scanf("%f",&k);
  58.  W0=k/m;
  59.  printf("on prendra W0=%f\n",W0);
  60.  printf ("combien de masse ds votre systeme:\n" );
  61.  scanf("%d",&n);
  62.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  63. A=(float*)malloc(n*n*sizeof(float));
  64.     matrice_associee(A,n,k,m);
  65.     printf ("allo2" );
  66. affiche_matrice(A,n);
  67. getch();
  68. free(A);
  69. return 0;
  70. }

Reply

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

Reply

Marsh Posté le 27-11-2007 à 01:55:58    

ok 14 et 21 sont corrigé maintenant je regarde pour la 50

Reply

Marsh Posté le 27-11-2007 à 02:11:12    

Olivier51 a écrit :

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


 
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

Reply

Marsh Posté le 27-11-2007 à 02:20:34    

bon voila mon programme:

Code :
  1. /*
  2. *  DAvid.h
  3. *  Created by david bouaziz on 26/11/07.
  4. *  Copyright 2007 __MyCompanyName__. All rights reserved.
  5. */
  6. #include<stdio.h>
  7. #include<conio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. /*ici on aura que des matrices carrée donc n lignes n colones*/
  11. void matrice_associee(float *A,int n,float k,float m);
  12. void affiche_matrice(float *A,int n);
  13. /********************************************FONCTION*****************************************/
  14. void matrice_associee(float *A,int n,float k,float m)
  15. int i,j;
  16.         printf("matriceassocie\n\n\n\n\n\nplouffff\n" );
  17.      for(i=0;i<n;i++)//ligne
  18.     {
  19.       for(j=0;j<n;j++)//colonne
  20.       {
  21.  
  22.  if (i==j)
  23.         A[i*n+j]=2*k/m;
  24.  if (i==j-1)
  25.  A[i*n+j]=-k/m;
  26.  if (i==j+1)
  27.  A[i*n+j]=-k/m;
  28.  else
  29.  A[i*n+j]=0;
  30.   }
  31.     }
  32. }
  33. void affiche_matrice(float *A, int n)
  34. {
  35.      int i,j;
  36.    
  37.  printf ("la matrice du systeme masse ressort est\n" );
  38.      for (i=0;i<n;i++)
  39.      {
  40.          for (j=0;j<n;j++)
  41.          {
  42.           printf("%7.3f",A[i*n+j]);
  43.          }
  44.          printf("\n" );
  45.      }
  46.      printf("\n" );
  47. }
  48. int main ()
  49. {
  50.  int n;
  51.      float *A,k,m,W0;
  52.  printf("Saisir la masse m:\n" );
  53.      scanf("%f",&m);
  54.      printf("Saisir la raideur k:\n" );
  55.      scanf("%f",&k);
  56.  W0=k/m;
  57.  printf("on prendra W0=%f\n",W0);
  58.  printf ("combien de masse ds votre systeme:\n" );
  59.  scanf("%d",&n);
  60.  printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  61.     matrice_associee(A,n,k,m);
  62. affiche_matrice(A,n);
  63. getch();
  64. free(A);
  65. return 0;
  66. }

Reply

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
 

Reply

Marsh Posté le 27-11-2007 à 04:47:56    

help me please

Reply

Marsh Posté le 27-11-2007 à 06:51:32    

Inutile de up toutes les 2h en pleine nuit, y a des gens qui dorment. [:dawao]

 

Surtout qu'il n'y a plus de malloc() dans ton programme, donc oui effectivement, maintenant ça plante. [:kiki]

 

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.


Message édité par Elmoricq le 27-11-2007 à 06:54:59
Reply

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.

Reply

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() [:dawa]

Reply

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() [:dawa]


 
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

Reply

Marsh Posté le 27-11-2007 à 22:25:56    

Code :
  1. switch(mavar)
  2. {
  3.     case -1:
  4.         instruction1;
  5.         break;
  6.     case 0:
  7.         instruction2;
  8.         break;
  9.     case 1:
  10.         instruction3;
  11.         break;
  12.     default:
  13.         instructionParDefaut;
  14. }


 
Juste regardé par Google, comme scanf aussitôt vu aussitôt oublié, je suis un poisson rouge :lol:
(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


Message édité par gzii le 27-11-2007 à 22:27:02
Reply

Marsh Posté le 27-11-2007 à 22:46:44    

:bounce:  
 
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 :
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. /*ici on aura que des matrices carrée donc n lignes n colones*/
  6. void matrice_associee(float *M,int n,float k,float m);
  7. void affiche_matrice(float *M,int n);
  8. /********************************************FONCTION*****************************************/
  9. void matrice_associee(float *M,int n,float k,float m)
  10. int i,j;
  11.      for(i=0;i<n;i++)//ligne
  12.     {
  13.       for(j=0;j<n;j++)//colonne
  14.       {
  15.        switch(j-i)
  16.        {
  17.        case 1:
  18.        M[i*n+j]=-k/m;
  19.        break;
  20.        case 0:
  21.        M[i*n+j]=2*k/m;
  22.        break;
  23.        case -1:
  24.        M[i*n+j]=-k/m;
  25.        break;
  26.        default:
  27.        M[i*n+j]=0;
  28.        break;
  29.        }
  30.       }
  31.      }
  32. }
  33. void affiche_matrice(float *M, int n)
  34. {
  35.      int i,j;
  36. printf ("la matrice du systeme masse ressort est:\n" );
  37.      for (i=0;i<n;i++)
  38.      {
  39.          for (j=0;j<n;j++)
  40.          {
  41.           printf("%7.3f",M[i*n+j]);
  42.          }
  43.          printf("\n" );
  44.      }
  45.      printf("\n" );
  46.      getch();
  47. }
  48. int main ()
  49. {
  50.  int n;
  51.      float *M,k,m,W0;
  52.      printf("Saisir la masse m:\n" );
  53.      scanf("%f",&m);
  54.  printf("Saisir la raideur k:\n" );
  55.      scanf("%f",&k);
  56.      W0=k/m;
  57.      printf("on prendra W0=%f\n",W0);
  58.      printf("combien de masse ds votre systeme:\n" );
  59.      scanf("%d",&n);
  60.      printf("ce sera donc une matrice carrée %dx%d\n",n,n);
  61. M = malloc(n*n*sizeof(float));
  62. matrice_associee (M,n,k,m);
  63. affiche_matrice(M,n);
  64. getch();
  65. free(M);
  66. return 0;
  67. }


Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed