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

  FORUM HardWare.fr
  Programmation
  C

  bonjour j'ai besoin d'aide

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

bonjour j'ai besoin d'aide

n°1649209
mamourbizb​iz
Posté le 26-11-2007 à 23:26:13  profilanswer
 

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

mood
Publicité
Posté le 26-11-2007 à 23:26:13  profilanswer
 

n°1649210
gzii
court-circuit
Posté le 26-11-2007 à 23:29:18  profilanswer
 

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
n°1649211
mamourbizb​iz
Posté le 26-11-2007 à 23:33:16  profilanswer
 

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'

n°1649212
Elmoricq
Modérateur
Posté le 26-11-2007 à 23:37:08  profilanswer
 

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

n°1649213
gzii
court-circuit
Posté le 26-11-2007 à 23:37:11  profilanswer
 

Après la ligne 33 je ne vois pas de fermeture d'accolade.
Essaie de mettre tes accolades en face les unes des autres.

n°1649214
Elmoricq
Modérateur
Posté le 26-11-2007 à 23:38:11  profilanswer
 

[: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
n°1649215
gzii
court-circuit
Posté le 26-11-2007 à 23:38:32  profilanswer
 

Grillé :lol:

n°1649216
mamourbizb​iz
Posté le 26-11-2007 à 23:42:20  profilanswer
 

merci j'essai de corrigé merci encore

n°1649220
gzii
court-circuit
Posté le 26-11-2007 à 23:50:48  profilanswer
 

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

n°1649221
mamourbizb​iz
Posté le 26-11-2007 à 23:57:19  profilanswer
 

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
mood
Publicité
Posté le 26-11-2007 à 23:57:19  profilanswer
 

n°1649222
mamourbizb​iz
Posté le 27-11-2007 à 00:08:20  profilanswer
 

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
n°1649225
mamourbizb​iz
Posté le 27-11-2007 à 00:10:12  profilanswer
 

alors il saisie la m le k il m affiche une matrice quand il veu mais c pas la bonne

n°1649226
Elmoricq
Modérateur
Posté le 27-11-2007 à 00:10:55  profilanswer
 

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
n°1649227
Elmoricq
Modérateur
Posté le 27-11-2007 à 00:11:51  profilanswer
 

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
n°1649228
mamourbizb​iz
Posté le 27-11-2007 à 00:13:48  profilanswer
 

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

n°1649229
Elmoricq
Modérateur
Posté le 27-11-2007 à 00:15:19  profilanswer
 

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
n°1649230
mamourbizb​iz
Posté le 27-11-2007 à 00:22:46  profilanswer
 

Merci j'essai de comprendre ce que tu m'as di je corrige et je revien

n°1649234
mamourbizb​iz
Posté le 27-11-2007 à 00:30:22  profilanswer
 

heu si je met int* A toute les valeurs qui vont etre dans mon tableau devrons etre des entier?

n°1649236
Elmoricq
Modérateur
Posté le 27-11-2007 à 00:41:14  profilanswer
 

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]

n°1649238
mamourbizb​iz
Posté le 27-11-2007 à 00:49:33  profilanswer
 

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

n°1649241
mamourbizb​iz
Posté le 27-11-2007 à 01:06:38  profilanswer
 

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

n°1649242
mamourbizb​iz
Posté le 27-11-2007 à 01:08:31  profilanswer
 

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


n°1649243
Olivier51
Posté le 27-11-2007 à 01:17:16  profilanswer
 

Ca te donne quoi afficher sur l'écran ?

n°1649244
mamourbizb​iz
Posté le 27-11-2007 à 01:19:04  profilanswer
 

en faite il ne rentre pas dans la fonction matrice_associé

n°1649246
mamourbizb​iz
Posté le 27-11-2007 à 01:22:03  profilanswer
 

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

n°1649248
Olivier51
Posté le 27-11-2007 à 01:24:47  profilanswer
 

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

n°1649249
mamourbizb​iz
Posté le 27-11-2007 à 01:26:04  profilanswer
 

j'ai mis un printf dans ma fonction et il ne l'affiche pas a l'ecran

n°1649250
mamourbizb​iz
Posté le 27-11-2007 à 01:26:58  profilanswer
 

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

n°1649254
Olivier51
Posté le 27-11-2007 à 01:42:02  profilanswer
 

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

n°1649255
mamourbizb​iz
Posté le 27-11-2007 à 01:55:58  profilanswer
 

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

n°1649257
mamourbizb​iz
Posté le 27-11-2007 à 02:11:12  profilanswer
 

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

n°1649258
mamourbizb​iz
Posté le 27-11-2007 à 02:20:34  profilanswer
 

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

n°1649259
mamourbizb​iz
Posté le 27-11-2007 à 02:31:31  profilanswer
 

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
 

n°1649266
mamourbizb​iz
Posté le 27-11-2007 à 04:47:56  profilanswer
 

help me please

n°1649272
Elmoricq
Modérateur
Posté le 27-11-2007 à 06:51:32  profilanswer
 

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
n°1649407
gzii
court-circuit
Posté le 27-11-2007 à 10:52:35  profilanswer
 

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.

n°1649461
Elmoricq
Modérateur
Posté le 27-11-2007 à 11:25:51  profilanswer
 

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]

n°1649939
mamourbizb​iz
Posté le 27-11-2007 à 22:10:04  profilanswer
 

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

n°1649950
gzii
court-circuit
Posté le 27-11-2007 à 22:25:56  profilanswer
 

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
n°1649955
mamourbizb​iz
Posté le 27-11-2007 à 22:46:44  profilanswer
 

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


mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  bonjour j'ai besoin d'aide

 

Sujets relatifs
Besoin Vitesse de calculCherche aide pour simplifier du code ...
Problème menu blockmenu en CSS sous IE6. A l'aide[Bash] Besoin d'aide.
ptite aide en php pour une fonction mailAide pour la création d'un flux RSS
Aide PHPBBAide programmation galerie xml
Attacher une image a l'aide de SendMessage(BM_SETIMAGE... sous MFCBonjour, besoin d'aide svp
Plus de sujets relatifs à : bonjour j'ai besoin d'aide


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