CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] amélioration clarté programme

dolloe
dolloe
Niveau 9
25 septembre 2010 à 08:52:40

Bonjour, je travaille en C et j'aurais besoin d'un peu d'aide.

Dans mon programme, je suis amené à calculer certaines grandeurs de façon discrétisées. J'utilise donc une boucle for..
Mais pour calculer ces grandeurs, j'utilise d"autres grandeurs physiques définies mathématiquement.( Par exemple je dois définir un tableau B[i] qui est nul si i<io et B[i]=Bo*sin(p*i) autrement avec des if.)

Le truc c'est que toutes ces grandeurs sont à la suite dans mon main après la boucle for (donc une succession de if). Je voudrais essayer d'apporter de la clarté en faisant des fonctions , mais je n'y arrive pas .

Quelqu'un pourrait me dire comment faire, en utilisant l'exemple de B[i] si possible.

Merci par avance.

godrik
godrik
Niveau 30
25 septembre 2010 à 17:26:42

Je n'ai pas bien compris ton probleme. Peux tu l'expliquer plus clairement ?

dolloe
dolloe
Niveau 9
25 septembre 2010 à 17:44:44

En fait je dois modéliser des expressions temporelles. Pour ce faire je les discrétise.
Par exemple j'ai B(t)= 0 si t<t0 (t0 fixé)
B(t)= Bo*sin(wb*t) sinon

Je discrétise en créant un tableau B[i] défini par :
if i>to/h B[i]=0
else B[i]=Bo*sin(wb*p*i)

J' ai plusieurs autres expressions de ce genre définies par morceaux.

Le truc c'est que c'est que je l'utilise après pour du calcul. Mais comme un bourrin, je définis tout dans le main qui ressemble à ca

// définition des variables
for (i=0; i<N;i++)
// définition des expressions comme B[i]

// calcul
//écriture dans un fichier
//Fin du programme

Je demande comment rendre mon code plus clair en créant des fonctions par exemple.

Je sais pas si j'ai été très clair:S .

godrik
godrik
Niveau 30
25 septembre 2010 à 18:30:00

Je comprends mieux maintenant. Si j'ai bien compris, tu as des fonctions mathematique f1, f2, f3, ... que tu veux discretiser dans des tableaux A, B, C,...
Une chose que tu peux faire est de remplir les tableaux (comme B[i]) dans des fonctions differentes de facon a separer le code qui discretise ta fonction du code qui qui l'utilise.

Tu aurais ainsi une fonction discretise_f1 qui prendrait un tableau en parametre et les different parametre de ta discretisation (j'imagine qu'il doit y avoir un pas quelque part) et qui remplis de tableau.

Ainsi, la definition de f1 est renseigne de facon independante du reste du code.

Est ce bien de cela que tu parles ?

dolloe
dolloe
Niveau 9
25 septembre 2010 à 18:45:09

Oui c'est exactement ca :D. Je veux des fonctions indépendantes mais après les appeler pour faire des calculs (c'est surtout là que je sais pas trop comment faire ).
Le pas est est p dans l'exemple.

godrik
godrik
Niveau 30
25 septembre 2010 à 22:06:39

quel est le probleme ? il faut utiliser une fonction classiquement. Je te conseille de retourner te plonger dans un cours de C si tu ne sais pas faire ca. Ou de donner un exemple de code qui ne fonctionne as alors que tu penses que ca devrait fonctionner. (et en expliquant qu'est ce qui te fait dire qu'il ne fonctionne pas, comme un message d'erreur par exemple)

dolloe
dolloe
Niveau 9
26 septembre 2010 à 11:05:34

J'ai crée une fonction f1 du type
void f1(double *B,int n,int p,double Bo,double wb)
{ for i=0...etc
//définition de f1

}

main :
//définition des paramètres.
boucle for
// j'essaie juste d'afficher B pour le moment
printf("% f\n", f1(B[i],n,p,Bo,wb)),

il me met unable convert double to double* in f1...

Kaoron
Kaoron
Niveau 9
26 septembre 2010 à 11:52:08

Je plussoie pour une révision de C qui serait la bienvenue. B[i] que tu passe comme argument à la fonction f1 est de type double, c'est une valeur affectée par :

if i>to/h B[i]=0
else B[i]=Bo*sin(wb*p*i)

Le prototype de f1 attend un pointeur sur double (l'adresse dun double) et pas un double, il faut soit passer un pointeur &B[i], soit changer le type attendu dans le prototype de fonction.

dolloe
dolloe
Niveau 9
26 septembre 2010 à 13:30:08

En fait je crois que je n'ai jamais trop compris l'histoire des pointeurs en C ni comment savoir si une fonction est de type void ou double.
Pourrais tu me réexpliquer ?

J'ai changé en mettant &B[i] mais ca ne marche pas .

Merci en tout cas

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment