begin process at 2010 02 10 04:28:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

[PBM]Addition de nombres aléatoirs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[PBM]Addition de nombres aléatoirs

dimanche 15 avril 2007 à 22:48:27 | [PBM]Addition de nombres aléatoirs

Stoofleouf

Bonjour, je débute en C++ et j'ai un souci :
Je veux pouvoir générer une serie de nombre aléatoire tout en parametrant au préalable la somme des nombres qui seront générés. Je souhaiterai aussi pouvoir définir à l'avance le nombre de chiffres pairs générés.
Quelqu'un pourrait-il m'aider ?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{
  long unsigned n1=0, n2=0, n3=0, n4=0, n5=0, n6=0, n7=0;
  int pair=0;
  long poid=0;
  const long MAX = 49, MIN = 1;
 
 
  do    //on entre le nombre de chiffres pairs que l'on désire générer
  {
       printf("Nombre de numeros pairs (doit etre situe entre 0 et 7) :\n");
       scanf("%ld", &pair);
  }
  while (pair > 7 || pair < 0);
 
  do    //On demande la somme de tous les chiffres générés
  {
        printf("Poid de la grille desire (doit etre situe entre 28 minimum et 322 maximum) :\n");
        scanf("%ld", &poid);
  }
  while (poid > 322 || poid < 28);
 
 
 
  srand(time(NULL));   //Algorithme de génération
    n1 = (rand() % (MAX - MIN + 1)) + MIN;
    n2 = (rand() % (MAX - MIN + 1)) + MIN;
    n3 = (rand() % (MAX - MIN + 1)) + MIN;
    n4 = (rand() % (MAX - MIN + 1)) + MIN;
    n5 = (rand() % (MAX - MIN + 1)) + MIN;
    n6 = (rand() % (MAX - MIN + 1)) + MIN;
    n7 = (rand() % (MAX - MIN + 1)) + MIN;

   
    
     while ((n1 == n2) || (n1 == n3) || (n1 == n4) || (n1 == n5) || (n1 == n6) || (n1 == n7) || (n2 == n3) || (n2 == n4) || (n2 == n5) || (n2 == n6) || (n2 == n7) || (n3 == n4) || (n3 == n5) || (n3 == n6) || (n3 == n7) || (n4 == n5) || (n4 == n6)|| (n4 == n7) || (n5 == n6) || (n5 == n7) || (n6 == n7));
    {
           printf("%ld, %ld, %ld, %ld, %ld, %ld, %ld\n\n\n\n", n1, n2, n3, n4, n5, n6, n7);
    }
   

 
 
  system("PAUSE");   
  return 0;
}

mardi 17 avril 2007 à 23:15:20 | Re : [PBM]Addition de nombres aléatoirs

6co

Salut, j'ai du mal à suivre l'algo que tu proposes, alors j'en ai fait un vite fait (qui dit vite fait, dit non commenté et plus ou moins testé)

en gros il consiste à prendre un premier nombre, à tester s'il reste assez de différence entre la somme voulue et ce premier nombre...
ensuite, on continue de la même façon...

j'espère que cela pourra t'aider,
et j'aimerais aussi connaitre le but final d'un tel algorithme
(y en a-til un ? ou c'est juste un exercice ? )

bon courage,
6co

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>

using namespace std;


unsigned int nb_alea(unsigned int debut,unsigned int fin,unsigned int parite)
{
    // retourne une nombre aléatoire pair si parite=0, impair si parite=1 ou quelconque sinon
    unsigned int nb;
    nb=rand() % (fin-debut+1) + debut;
 if (parite!=2)
     while ((nb%2)!=parite)
         nb=rand() % (fin-debut+1) + debut;
    return nb;
}    

unsigned int parite(int pairs, int impairs)
{
    if (pairs!=0 && impairs!=0)
        return 2;
    if (pairs!=0)
        return 0;
    return 1;
}    

int main(int argc, char *argv[])
{
    unsigned char nombre[7];
  unsigned int somme, somme_test_1, somme_test_2;
  unsigned int pairs=10,impairs;
  unsigned int i,j,k;
    
 
    cout << "Donnez la somme désirée (entre 28 et 322)";
    while (somme<=28 || somme >=322)
    {
   cin >> somme;
        if (somme<=28 || somme >=322)
            cout << "Donnez un nombre entre 28 et 322    ";
    }
    cout << "Donnez le nombre de pairs désiré (entre 0 et 7)";
    while (pairs<=0 ||  pairs>=7)
    {
   cin >> pairs;
   if (pairs<=0 || pairs >=7)
            cout << "Donnez un nombre entre 0 et 7    ";
    }

 // initialisation nombre aléatoires
    srand(time(NULL));
 // premier test, la quantité de nombre impairs et la somme doivent etre de meme parité :
    impairs = 7 - pairs;
    if ((somme - impairs)%2 != 0)
    {
        cout << "Problème impossible à résoudre";
        return 1;
    }    
    
    // on trouve un premier nombre
    somme_test_1=0;
    nombre[0]=0;
    for (k=0 ; k<6; k++)
    {    
      
      somme_test_2=0;
      while (somme_test_2>somme || somme_test_2==0)
      {
       somme_test_2=somme_test_1;
          nombre [k]=nb_alea(1, somme, parite (pairs, impairs));
       somme_test_2+=nombre[k];
       for ( i=k+1; i<pairs; i++)
           somme_test_2+=2;
       for ( j=k; j<impairs; j++)
           somme_test_2+=1;
    
      }
      if (nombre [k]%2 == 0) pairs--; else impairs --;
      
      somme_test_1 += nombre[k];    
      
    }
    
    nombre[6]=somme-somme_test_1;
    
    for (k=0; k<7;k++)
    cout << (int)nombre[k] << " " ;
    
    return 0;
}




Cette discussion est classée dans : min, n1, n4, n2, n3


Répondre à ce message

Sujets en rapport avec ce message

Bitwise... [ par MeltedMind ] Wise ou not wise là est la question.Je me demandais... sur le fonctionnement primaire de nos petites machines. 1+ 1 = 10, c'est bien connu mais comme multiplication de 2 vecteurs vers marices C++ [ par cadet1401 ] voila j'essaye de réaliser un programme dans lequel je multiplie 2 vecteurs et dont le resultat doit etre affiché dans une matrice.voici mon code sour [TABLEAUX 2D] comment passer un tableau 2D dans une fonction ? [ par Zenith ] bonjour, je suis novice en C, et je voudrais passer un tableau 2D dans une fonction.le but de mon programme est de générer 6 combinaisons de 6 entiers Access violation lors de l'overture d'un fichier [ par dud1410 ] salut tout le monde,voici mon code,for (int kt = 0; kt { for (int i = 0; i  {FILE *fin1=fopen("D:\\oppack\\min_inter_tti.txt","rb");counter++;whil valeur max et min [ par devamos ] bonjour,J'aimerais bien s'il vous plait savoir comment rediger un prog qui donne la valeur maximal et minimal d'un tableau donnée.et merci. fonction min max [ par devamos ] bonjour,j'aimerais des corrections,si vous pouvez m'aider j'ai ecri ces instructions en devc++,,, c'est une fonction qui cherche le max et le min dans [A SUPPRIMER]min_projet [ par you147 ] salut tout les mondes je suis étudiant  en réseaux informatiques j'ai comme  mini- projet une petit application tchat entre client/serveur des simples bug d'execution pour ecrire dans un fichier en C [ par sebtheboss4 ] Bonjour, je suis encore un novice en C, voici un petit programme qui fait rien de très durs. Je souhaite enregistrer une phrase lors de la compilation passage en mode graphique turbo c [ par jsuititidu27 ] bonjour à tous, j'ai découvert le turbo C et j'ai un exo à résoudre, voilà :tracer une fonction f(x). on entre les réels a et b sur lequel on va trace éliminer les doublons ! [ par jekburn ] Bonsoir, J'ai demandé de l'aide y'a 2 semaines, mais là je suis toujours bloqué ! Please help ! Je cherche à supprimer les doublons que me sort mon p


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales