Calcul d une somme en langage C
Fermé
Fadia
-
26 oct. 2011 à 13:25
fiddy
fiddy
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
A voir également:
- Fonction somme en c
- écrire un programme qui calcule la somme - Meilleures réponses
- Calculer la somme en langage c - Meilleures réponses
- Fonction somme algorithme - Forum - Programmation
- Fonction somme excel - Guide
- Fonction somme si couleur - Guide
- Fonction somme ne fonctionne pas ✓ - Forum - Excel
- Somme dans excel toujours =0 ✓ - Forum - Excel
3 réponses
newkiss
26 oct. 2011 à 13:39
- Messages postés
- 127
- Date d'inscription
- mardi 7 septembre 2010
- Statut
- Membre
- Dernière intervention
- 12 janvier 2015
26 oct. 2011 à 13:39
A tout hazard car je n'ai pas de compilateur C sous la main.
#include <stdio.h> #include <conio.h> int puissance ( int k,int p) { int i; int res = 0; for (i=1;i<=p;i++){ res = res * k;} return res; } double somme ( int n, int p) { int s=0; int k; for (k=1;k<=n;k++) { s=s+puissance(k,p));} } main () { int n; int p; printf (" donner un nombre "); scanf("%d",&n); printf (" donner une puissance"); scanf("%d",&p); printf (" la somme est %.0f ",somme (n,p)); getch (); }
Fukstib
Modifié par Fukstib le 26/10/2011 à 13:38
- Messages postés
- 67
- Date d'inscription
- jeudi 8 septembre 2011
- Statut
- Membre
- Dernière intervention
- 25 avril 2013
Modifié par Fukstib le 26/10/2011 à 13:38
#include <stdio.h> #include <conio.h> int puissance ( int k,int p) { if (p>0) return k*puissance (k,p-1); else return 1; } double somme ( int k) { int p,s=1,i; for (i=1;i<=p;i++) s=s+puissance (k,p); } main () { int n; printf (" donner un nombre "); scanf("%d",&n); printf (" la somme est %.0f ",somme (n)); }
Prend pour exemple n = 2 .
Tu appelles somme avec n = 2, donc dans somme ton k = 2.
Tu boucles s = 1 + puissance(2,p..?) p n'a pas de valeur déjà. Commence déjà par donner une valeur à p en fonction de ce que tu attends de cette variable.
tu oublier quelque important chose
#include <stdio.h>
#include <conio.h>
int puissance ( int k,int p) ;
double somme ( int k);
main ()
{
int n;
double p;
printf (" donner un nombre ");
scanf("%d",&n);
p=somme(n);
printf (" la somme est %f ",p);
}
int puissance ( int k , int p)
{ int puis;
int i;
puis=1;
for (i=1;i<=p;i++)
{
puis=puis*k;
}
return puis;
}
double somme ( int k)
{ int p;
int s=1;
int i;
for (i=1;i<=k;i++)
s=s+puissance(k,p);
return s ;
}
#include <stdio.h>
#include <conio.h>
int puissance ( int k,int p) ;
double somme ( int k);
main ()
{
int n;
double p;
printf (" donner un nombre ");
scanf("%d",&n);
p=somme(n);
printf (" la somme est %f ",p);
}
int puissance ( int k , int p)
{ int puis;
int i;
puis=1;
for (i=1;i<=p;i++)
{
puis=puis*k;
}
return puis;
}
double somme ( int k)
{ int p;
int s=1;
int i;
for (i=1;i<=k;i++)
s=s+puissance(k,p);
return s ;
}
fiddy
9 déc. 2014 à 12:02
- Messages postés
- 11067
- Date d'inscription
- samedi 5 mai 2007
- Statut
- Contributeur
- Dernière intervention
- 23 avril 2022
9 déc. 2014 à 12:02
Non, il n'a rien oublié (la déclaration des prototypes n'est pas obligatoire...).
En revanche, ton code n'est pas standard... Donc aucune plus-value sur un sujet datant de 3 ans...
En revanche, ton code n'est pas standard... Donc aucune plus-value sur un sujet datant de 3 ans...
Fukstib
Modifié par Fukstib le 26/10/2011 à 14:57
- Messages postés
- 67
- Date d'inscription
- jeudi 8 septembre 2011
- Statut
- Membre
- Dernière intervention
- 25 avril 2013
Modifié par Fukstib le 26/10/2011 à 14:57
Pour répondre à la question initiale sans donner le code tout fait:
"je voudrais s'il vous plait calculer cette somme: la Somme des K^p ( n>=0 et p>=0) de k=1 à k=n
ce que je veux savoir , est ce que p est fixe?? "
C'est à toi de décider si p est fixe ou non.
Ce qui est sûr c'est que ton K varie de 1 à n.
Somme des k^p, si p est fixe: 1^2 + 2^2 + 3^2 + 4^2 + 5 ^2
Somme des k^p, si p varie: il faut voir si il varie en même temps que k, ou si il varie une fois que k a pris toutes les valeurs entre 1 et n...
Le plus simple est effectivement que p soit fixe et que seul k varie.
"je voudrais s'il vous plait calculer cette somme: la Somme des K^p ( n>=0 et p>=0) de k=1 à k=n
ce que je veux savoir , est ce que p est fixe?? "
C'est à toi de décider si p est fixe ou non.
Ce qui est sûr c'est que ton K varie de 1 à n.
Somme des k^p, si p est fixe: 1^2 + 2^2 + 3^2 + 4^2 + 5 ^2
Somme des k^p, si p varie: il faut voir si il varie en même temps que k, ou si il varie une fois que k a pris toutes les valeurs entre 1 et n...
Le plus simple est effectivement que p soit fixe et que seul k varie.
Fukstib
26 oct. 2011 à 20:03
- Messages postés
- 67
- Date d'inscription
- jeudi 8 septembre 2011
- Statut
- Membre
- Dernière intervention
- 25 avril 2013
26 oct. 2011 à 20:03
Je poste la solution puisque le sujet devient calme:
#include <stdio.h> int puissance ( int k,int p) { int n, res= 1; for (n =1; n <= p; n++) res = res * k; return res; } double somme ( int p, int k) { int i; double s; for (i=0; i<= k; i++) s=s+puissance (i,p); return s; } main () { int p,k; printf("Calcul de la somme des K^p avec K variant de 0 a n, et p fixe.\n\nDonnez la valeur de p= "); scanf("%d",&p); printf("\nDonnez la valeur du nombre (la somme ira de 0 a k) :k= "); scanf ("%d", &k); printf ("\nCalcul...\n\nLa somme est %.0f ",somme (p,k)); }
26 oct. 2011 à 13:47
for (i=1;i<=p;i++){ res = res * k;}
Si tu initialises "res" à 0, il sera toujours nul. res = 0*k
26 oct. 2011 à 13:48
26 oct. 2011 à 14:53
Le problème est qu'il n'y a pas de return dans la fonction somme.
Il faudrait mettre un return "s", sinon la valeur de "somme (n,p)" sera toujours la même..
PS: j'ai mis en gras une parenthèse en trop qu'il faut aussi enlever.