Jeu d'échec [Résolu]

TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 sept. 2015 à 10:53 - Dernière réponse : TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention
- 24 sept. 2015 à 12:15
Bonjour, aujourd'hui je m'attaque au jeu d'échec voici l'énoncé :

programme echecs
nbgrains, total, k : numérique
debut
nbgrains <- 1
total <- 1
pour k de 2 à 64
nbgrains <- nbgrains * 2
total <- total + nbgrains
finpour
afficher total
fin


et moi j'ai codé cela :
// Programme principal
int main () {
	
	// Variables
	double nbgrains = 1 ;
	double total = 1 ;
	
	// boucle sur le jeu d'échecs
	for (int k = 2; k <= 64; ++k) 
		nbgrains = (nbgrains * 2) ;
		total += total + nbgrains ;
		

	// affichage du résultat
	printf(" Total : %lf\n ", total) ;
	
	getch () ;
	return 0 ;
	
}

Alors je sais que le getch n'est pas obligatoire ! Je pense aussi qu'il faut directement commencer avec le for car on ne peut pas lui dire d'entrez une valeur cette fois ?? Pcq il faut mettre 1 grains dans la 1ere case, ce qui est fait a l'initialisation, puis 2 grains a la 2ieme case, puis 4 grains a la 3ieme etc........................! Je ne pense pas que le printf de la fin soit juste non plus au passage !
Afficher la suite 

5 réponses

Répondre au sujet
cptpingu 3768 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par cptpingu le 24/09/2015 à 11:17
0
Utile
Bonjour.

Ça me parait correct, à part deux choses:
  • Il te manque des accolades pour ton for (si tu n'en met pas, alors ça équivaut à n'en mettre que pour la première instruction en dessous du for (l'autre sera considérée en dehors).
  • Soit tu fais "total += nbgrains", soit tu fais "total = total + nbgrains". Mais pas les deux, sinon ça fait le double.


Le code (j'ai utilisé un long long unsigned int, soit uint64_t, puisqu'il fallait un grand entier, et qu'un décimal ne servait pas ici):
#include <stdio.h>
#include <stdint.h>

int main ()
{
  uint64_t nbgrains = 1;
  uint64_t total = 1;

  printf("k: %i, total = %lu\n ", 1, total);

  for (int k = 2; k <= 64; ++k)
  {
    nbgrains = nbgrains * 2;
    total = total + nbgrains;

    printf("k: %i, total = %lu\n ", k, total);
  }

  printf(" Total : %lu\n ", total);

  return 0;
}


PS: Si tu utilises des "double", ça fonctionne aussi.


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 sept. 2015 à 11:50
0
Utile
Ohhh lala oui désolé pour le total += total + nbgrains................ c'est une erreur d'inattention.........................! D'ailleurs pour le for je commençais a m'en douter aussi, j'étais entrain de tâtonner dessus pour regarder ce que ca faisait comme résultat

Merci beaucoup pour ta réponse rapide comme toujours :)
Commenter la réponse de TheRogerFederer
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - Modifié par TheRogerFederer le 24/09/2015 à 11:58
0
Utile
Par contre quand j'exécute le programme, il m'affiche : k = 1, total = 1, ensuite k = 2, total = 3, k = 3, total = 7, etc......................., on ne dot pas avoir des puissances de 2 ?
Commenter la réponse de TheRogerFederer
cptpingu 3768 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 13 décembre 2017 Dernière intervention - Modifié par cptpingu le 25/09/2015 à 16:42
0
Utile
Dans chacune des cases, tu as effectivement des puissances de 2. De telle manière à ce que tu aies:
  • 2^0 = 1
  • 2^1 = 2
  • 2^2 = 4
  • etc..


Cependant, tu oublies un petit détail: on additionne les cases au fur et à mesure. Donc:
  • 2^0 = 1
  • 2^0 + 2^1 = 1 + 2 = 3
  • 2^0 + 2^1 + 2^2 = 1 + 2 + 4 = 7
  • etc...



Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 sept. 2015 à 12:15
0
Utile
Ohhh d'accord, j'avais omis cela merci beaucoup
Commenter la réponse de TheRogerFederer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.