Faire une somme

Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
- - Dernière réponse : cs_criss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
- 6 mars 2003 à 22:19
voila un autre truc, peut-etre JHelp tu verrais le truc dans ca :)

le debut et comme le jeu du nombre mysterieux, mais apres g pas compri comment faire la somme mais aussi ce qu'il a voulu dire par la donnee de remise, voila le probleme:
Réaliser un projet Java (un seul) qui saisit et valide un entier impair n entre 51 et 251 inclusivement. Il affiche des messages appropriés si la donnée est invalide. Dès que la donnée est valide, le projet permet alors de calculer et d'afficher la somme suivante:

somme = 1 + 1/3 + 1/5 + 1/7 + . . . + 1/n

en utilisant la boucle do ? while ?.

en utilisant la boucle while ?.

en utilisant la boucle for


(ce sont là trois manières différentes d'obtenir le même résultat).

Le projet doit fonctionner pour plusieurs entiers tant que l'utilisateur décide de continuer.


Données pour la remise

Première série de données : 26, 301, 75

L'usager veut continuer

Deuxième série de données : 204, 101

L'usager décide de quitter.

merci

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Afficher la suite 

11 réponses

Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
9
0
Merci
Salut,
pour ta somme :
// on prend la variable n comme limite
// boucle do while
int somme = 0;
int i = 1;
do
{
   somme += 1/i;
   i +=2 ;
}while(i <= n);

// boucle while
somme=0;
i=1;
while (i <= n)
{
     somme += 1/i;
     i += 2;
}

//boucle for
somme = 0;
for (i=1 ; i <= n ; i+2) 
   somme += 1/i;

Voila, pour ce qui est de la donnée de remise, à mon avis, c'est un jeu d'essai pour que tu testes avec ces valeurs là
Duss
Commenter la réponse de cs_Duss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
merci, g fais presque la mm chose, mais je n'arrive pas a valider le nombre n, peut-etre que c la fatigue et comme ont dit, je dois dormir la dessus et demain est un autre jour ;)

public static void main(String[] args) throws IOException {
// constantes permettant de limiter le choix par l'ordinateurfinal int  BORNE_INF 51, BORNE_SUP 251;
// reponse de l'usager
    char reponse;

// le nombre saisit par par l'usager
int n;
// declarer la somme et la valeur a ajouter
int somme;
int valeur;
// utilisation de la boucle Do...While pour calculer la somme 
   do{ 
 somme = 0; /* on intialise la somme */
 valeur= 1; /* premiere valeur a ajouter dans la somme */ 
// Methode permettant de choisir un nombre aléatoire
 n = Utile.lireEntier("Entrez un entier impair entre 51 et 251: ");
// valider le choix le nombre
           while (n < BORNE_INF || n > BORNE_SUP)
                System.out.println(" Veuillez entrer un nombre compris entre 51 et 251: ");
                  if ( n % 2 == 0 )
                 
    System.out.println(" Veuillez entrer un nombre impair! : ");
           
                  else{
        	           somme += valeur ;
        	           valeur += 1/n ;
                      }        System.out.println(" Somme 1 +...+ 1/n" +" " + somme ); 
// demander si l'usager veut continuer
reponse = Utile.lireCaractere("\n\n\t\tVoulez-vous continuer? (o/n): ");
reponse = Character.toUpperCase(reponse);
   }while( reponse == 'O');

}

Dans la boucle while qui gere la validation de l'entier n, il ne fais que me repeter le message d'erreur a l'infini, g pas vu l'etincelle

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
9
0
Merci
Salut,
pour ta boucle while c'est normal car il faut que tu refasse saisir le nombre sinon ca bouge pas et du coup tu boucle !!
Duss
Commenter la réponse de cs_Duss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
c regle pour la validation mais par contre kan j'affiche la somme de la forme " 1+....+1/n" le resultat donne tjrs 1 !!

do{ 
 somme = 0; /* on intialise la somme */
     i = 1; /* premiere valeur a ajouter dans la somme */ 
// Methode permettant de choisir un nombre aléatoire n = Utile.lireEntier("Entrez un entier impair entre 51 et 251: ");
 // boucle Do...While pour faire la somme
  do{
// valider le choix le nombre
       if  ( (n < BORNE_INF || n > BORNE_SUP) || n % 2 == 0) {
           System.out.println(" Veuillez entrer un nombre impair compris entre 51 et 251: ");
               n = Utile.lireEntier("Refaites votre choix : ");
               }
           else {
            somme += 1/i ;
        	        i +=2 ;                
                } 
   }while ( i <= n); 


pk ca m'affiche tjrs somme = 1 ????
ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
9
0
Merci
euh c'est quoi ce premier do ?
Duss
Commenter la réponse de cs_Duss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
ben la premiere boucle Do..While c pour faire le choix si l'usager veux continuer le tirage ou pas, elle finit avec While( reponse == 'O')
a l'interieur de cette boucle g mis un if pour valider le nombre n etant impair et 51<= n >=251
l'ordinateur force l'usager a entrer un bon nombre et ca marche, dans le else du if g mis notre condition qui est:
somme += 1/i
i+=2
mais comme je t'es dis la somme me viens tjrs = 1, soit qu'il choisit par exemple 51 ou 251 ou 249 :sad)
j'aurai pas du??

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
357
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
30 mars 2011
0
Merci
kaloway
Commenter la réponse de kaloway
Messages postés
890
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
29 juillet 2004
9
0
Merci
ecoute, moi j'ai testé le script et ca marche, ca me donne 2 et des brouettes !!!
Duss
Commenter la réponse de cs_Duss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
mais duss, comme dit Kaloway ca donne tjrs 1, comme si il prend la vlaeur somme+ = 1/i et comme i on l'a initialisé a 1, il ne fait que ca.
sauf si tu as declaré i etant float comme a dit Kaloway.
sinon tu vois ou l'erreure dans mon travail en le comparant au tien??
merci
ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
Kaloway
tu me dis en 2) ajouter une variable X(float) initialisé a 1, elle va faire le travail de ce que g mis?? a savoir valeur( ou i)=1?? je la remplace par X=1??
et si je ne remplace pas, quel serait le lien entre valeur( ou i ) et X?? car i je l'es incrémente de 2 comme ca elle sera tjrs impaire et g mis jusqu'a ce que i<=n, donc jusqu'au nombre choisi
ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
0
Merci
et oui, Kaloway bien vu, il fallait le float pour la somme et i pas le int :blush)
thxs alot
ne fais pas ce que je dis, ne dis pas ce que je fais :)
Commenter la réponse de cs_criss