A voir également:
- Aide pour un programme en langage C.
- Langage ascii - Guide
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Langage binaire - Guide
- Forcer la fermeture d'un programme - Guide
3 réponses
Salut CoderForCodess,
Tu n'expliques pas quel est le problème que tu rencontres. Il est "urgent" que tu le précises.
Là tu postes juste un énoncé.
Je pensais utiliser des boucles (while) pour me permettre d'effectuer ses calcules.
Oui, c'est une façon de faire. Tu as une autre question ?
Une question plus problématique est de savoir si :
Tu es dans quel cas de figure ?
Dal
P.S. : "calcul" et "terme" sont deux noms masculins
Tu n'expliques pas quel est le problème que tu rencontres. Il est "urgent" que tu le précises.
Là tu postes juste un énoncé.
Je pensais utiliser des boucles (while) pour me permettre d'effectuer ses calcules.
Oui, c'est une façon de faire. Tu as une autre question ?
Une question plus problématique est de savoir si :
- on te donne la suite en question que tu dois simplement traduire en C, ou que tu dois concevoir un programme qui gère une suite donnée, auquel cas ton programme ne permettra que de donner des résultats pour la suite en question codée en dur dans le programme (ce qui rend ton exercice très facile)
- ou si tu dois faire un programme qui, à partir d'une notation mathématique quelconque décrivant la suite fournie en entrée avec une interaction quelconque avec l'utilisateur, doit analyser cette entrée et l'interpréter sous la forme d'une séquence d'opérations à réaliser correspondant à la suite pour donner les résultats attendus en sortie (ce qui est beaucoup plus difficile car cela implique de parser et tokeniser une entrée, définir une grammaire,...)
Tu es dans quel cas de figure ?
Dal
P.S. : "calcul" et "terme" sont deux noms masculins
Salut,
Merci de ta réponse !
J'avais une autre question ! Je voulais savoir comment on pourrait faire pour que le programme ne calcule que la somme des termes paires de la suite ?
-Exemple de ma boucle while pour calculer la somme des termes paires de la suite (a vérifier) :
while (2*i <= n) {
first = 2 * first + 1 + (i*2);
S = S + first;
i = i + 1;
}
printf("%f\n", S);
return S;
Merci d'avance !
Merci de ta réponse !
J'avais une autre question ! Je voulais savoir comment on pourrait faire pour que le programme ne calcule que la somme des termes paires de la suite ?
-Exemple de ma boucle while pour calculer la somme des termes paires de la suite (a vérifier) :
while (2*i <= n) {
first = 2 * first + 1 + (i*2);
S = S + first;
i = i + 1;
}
printf("%f\n", S);
return S;
Merci d'avance !
Si je me fais une fonction pour afficher les termes successifs de la suite et que je la lance pour 6 termes avec first égal à 0.0
j'obtiens :
Ces données me permettent d'écrire mes tests pour somme_n_premiers_termes() et pour somme_n_premiers_termes_pairs().
Pour somme_n_premiers_termes_pairs() je vois que le 1er terme pair est 4, que le second terme pair est 26 et le 3ème est 120.
Les tests doivent donc être comme ceci :
Les tests passent somme_n_premiers_termes() telle qu'écrite précédemment avec ta boucle précédente.
Par contre, ils échouent au premier test de somme_n_premiers_termes_pairs(), ligne 14, avec ta nouvelle boucle :
Ton code doit passer ce test, et les 2 autres qui suivent.
Dal
#include <stdio.h> #include <assert.h> void affiche_n_premiers_termes(int n, float first) { assert(n > 0 && "le nombre de termes à additionner doit au moins " "être égal à 1"); int i = 0; while (i < n) { first = 2 * first + 1 + i; i = i + 1; printf("terme n°%d \t = %f\n", i, first); } }
j'obtiens :
terme n°1 = 1.000000
terme n°2 = 4.000000
terme n°3 = 11.000000
terme n°4 = 26.000000
terme n°5 = 57.000000
terme n°6 = 120.000000
Ces données me permettent d'écrire mes tests pour somme_n_premiers_termes() et pour somme_n_premiers_termes_pairs().
Pour somme_n_premiers_termes_pairs() je vois que le 1er terme pair est 4, que le second terme pair est 26 et le 3ème est 120.
Les tests doivent donc être comme ceci :
/* tests somme_n_premiers_termes() */ printf("tests somme_n_premiers_termes()\n"); assert(somme_n_premiers_termes(1, 0.0) == 1.0); assert(somme_n_premiers_termes(2, 0.0) == 5.0); assert(somme_n_premiers_termes(3, 0.0) == 16.0); assert(somme_n_premiers_termes(4, 0.0) == 42.0); assert(somme_n_premiers_termes(5, 0.0) == 99.0); assert(somme_n_premiers_termes(6, 0.0) == 219.0); printf("tous les tests sont passés avec succès\n"); printf("--------------------------------------\n\n"); /* tests somme_n_premiers_termes */ printf("tests somme_n_premiers_termes_pairs()\n"); assert(somme_n_premiers_termes_pairs(1, 0.0) == 4.0); assert(somme_n_premiers_termes_pairs(2, 0.0) == 30.0); assert(somme_n_premiers_termes_pairs(3, 0.0) == 150.0); printf("tous les tests sont passés avec succès\n"); printf("--------------------------------------\n\n");
Les tests passent somme_n_premiers_termes() telle qu'écrite précédemment avec ta boucle précédente.
Par contre, ils échouent au premier test de somme_n_premiers_termes_pairs(), ligne 14, avec ta nouvelle boucle :
tests somme_n_premiers_termes_pairs()
Pour first = 0.000000, la somme des n = 1 premiers termes pairs de la suite vaut 1.000000
a.out: 37587262.c:72: main: Assertion `somme_n_premiers_termes_pairs(1, 0.0) == 4.0' failed.
Abandon
Ton code doit passer ce test, et les 2 autres qui suivent.
Dal
Je pense avoir compris comment faire pour calculer la somme des termes d'une suite !
Je demande a l'utilisateur d'entrée une valeur pour une variable "float n;" (donc je demande a l'utilisateur, le nombre de termes dans sa suite)
Ensuite, Je lui demande la valeur du premier terme de sa suite pour la variable "float first;".
Après, l'utilisateur peut choisir l'option qu'il souhaite (par exemple : calculer la somme ou le produit des termes de sa suite) (switch and case)
Au final, quand l'utilisateur choisi de calculer la somme des termes de sa suite, le programme va sur un des cases et exécute une boucle while.
Voici la boucle while en question pour calculer la somme des termes de sa suite :
case 1:
system("cls");
while (i < n) {
first = 2 * first + 1 + i;
S = S + first;
i = i + 1;
}
printf("La somme des termes de la suite vaut %.1f\n", S);
break;
C'est correct ou pas ?
Merci d'avance de ta réponse et excellente soirée a toi !
à condition que i et S soient bien initialisés à 0 avant d'entrer dans la boucle, ce while devrait permettre, en fin d'exécution d'obtenir la somme des n premiers termes de cette suite particulière.
en ce qui me concerne, j'aime bien tester les choses et construire mes programmes de manière à ce que je puisse écrire les tests.
comme ceci :