begin process at 2012 02 12 06:16:46
  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 besoin d'aide pour corrigé mon exercice [ par darktn ] Salut Tout le monde , j'ai quelque bug dans ce programme besoin d'aide , Le But De faire une deuxième matrice contient les Caractère qui ce trouve dan lecture de fichiers (commence bien mais le programme s'arrete) [ par vercd7am ] Bonjour, j'ai un probleme avec le programme suivant; je veux lire deux fichiers, l'un contient une colonne de nombres, l'autre des coordonnees: je lis help un example banale sur les template(c++) [ par menouni67 ] Salut SVP j'arrive pas à comprendre l'erreur sur ce morceau de code (compilé en dev c++) #include using namespace std; template T min(T a,T b){ Utilisation de MEX [ par nomadstorm ] Bonjour, J'ai un programme en C qui fonctionne et je voudrais le faire fonctionner sous MatLab afin de pouvoir traiter immédiatement et rapidement min-projet [ par ghaziguesmi ] En fait, ce min-projet pour Windows uniquement (min-projet de fin d'étude). Merci, mais votre aide, je vois que avant de commence le min-projet, il fa Besoin d'une petite aide ... [ par celialita ] j'ai ce programme qui cherche le min d'un tableau de 10 entiers . on renvoie sa position , pas sa valeur. int MINTAB ( int T[10]) { int i, min=0; for recherche valeur min dans un tableau ? [ par cur2009 ] Bonjour, J'ai besoin de votre aide pour me corriger le code que j'ai crée ci-dessous. ce code permet d'afficher la valeur minimale qui se trouve dans [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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,293 sec (3)

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