Aller au contenu

Le truc dont tout le monde se branle...


ClarkGaybeul

Messages recommandés

Posté(e) (modifié)
et les commentaires... :ninja:

Yep, j'allais le faire (et c'est fait)

//************************ Application console (C++)****************************
//******************************************************************************
// PROGRAMME : Le compte est bon
// DATE : 02/05/07
// OBJET : ou pas
// LIMITES : ou pas
// AUTEUR(S) : bluejark
//******************************************************************************
/* si vous construisez un projet et si vous utilisez une des bibliothèques de
iutupadte (cf. aide en ligne) : -1- décommentez la ligne suivante et cliquez
sur [projet|options du projet|parametre|editeur de lieus|ajouter fichier]
puis rechercher la(les) bibliothèque(s) *.a sous ...\dev-cpp\lib\iut_tlse3
-2- dans le paragraphe suivant décommentez le(s) fichiers(s) d'entête *.h ou
*.hpp qui permet(tent) d'inclure les déclaration des fonctions utilisées */
//#define _IUT_TLSE3_PROJ

/* Ce paragraphe permet de déclarer les fonctions des fichiers suivants :
conio-bis - gestion de fenêtres dos, de couleurs, lecture sans écho...
dos-bis - gestion du temps, attentes...
frame - tracé de cadres, grilles, traits, flèches...
transcode - affichage avec accents ou sans accent sous dos ou windows
keys-fr - liste des clés sous forme de noms symboliques
iutupdate - inclut tous les fichiers précédents en une seule fois
(cf le fichier de présentation iutupdate.pdf dans l'aide en ligne)
=> pour utiliser les bibliothèques "décommenter" les lignes correspondantes */
//#include <iut_tlse3\iutupdate.hpp> //inclut en une fois tous les fichiers
//#include <iut_tlse3\frame.hpp> //inclut en outre conio-bis
//#include <iut_tlse3\conio-bis.h>
//#include <iut_tlse3\dos-bis.h>
//#include <iut_tlse3\transcode.hpp>
//#include <iut_tlse3\keys-fr.h>


#include <iostream> // flux d'entrée sortie
#include <iomanip> // manipulateurs de flux
#include <cstdlib> // bibliothèque c standart
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <fstream>
#include <iut_tlse3\iutupdate.hpp>

using namespace std; // permet d'utiliser les flux cin et cout

//*************************** Déclaration globale ******************************
/***** constante *****/

/******* type ********/
typedef int tabobjets [15];
typedef char regles[500];
/***** fonction ******/
void choix_menu (int &choixmenu) //Oriente le choix primaire de l'utilisateur
{
//Décla

//Actions
do{cout<<"1.Regles"<<endl<<"2.Le but defini"<<endl<<"3.Objets definis"<<endl<<"4.Random"<<endl;
cin>>choixmenu;
if(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4)
cout<<endl<<"Mauvais choix."<<endl<<endl;
}while(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4);
}

void choisirbut (int &lebut) //Permet de choisir le but à atteindre
{
//Décla

//Actions
do{
cout<<"Donnez moi un chiffre entre 100 et 999"<<endl;
cin>>lebut;
}
while (lebut<100 or lebut>999);
}

void choisirobjets (tabobjets &objets) //Permet de choisir les 6 nombres que l'utilisateur pourra utiliser
{
//Décla
int i,j;
int etat;
int a;
//Actions
for (i=0;i<6;i++)
objets[i]=0;
for (i=0;i<6;i++)
{
do
{
etat=0;
cout<<endl<<"Donnez votre chiffre n°"<<i+1<<" :"<<endl;
cin>>objets[i];
if (objets[i]==1 or objets[i]==2 or objets[i]==3 or objets[i]==4 or objets[i]==5 or //Vérifie que le nombre appartient à la liste
objets[i]==6 or objets[i]==7 or objets[i]==8 or objets[i]==9 or objets[i]==10 or
objets[i]==25 or objets[i]==50 or objets[i]==75 or objets[i]==100)
{for (j=0;j<i;j++)
if (objets[i]!=objets[j])//Vérifie que tous les nombres sont différents
{
etat=etat+0;
}
else etat=1;
}
else etat=1;
}
while (etat==1);
}
}
void creerbut (tabobjets objets, int &lebut) //Crée le but à atteindre en fonction des 6 nombres
{

//Décla
int i,j,k,inter;
tabobjets objects;
//Actions
srand(time(NULL)); //Débloque la commande du hasard (sans ça, le hasard ne s'effectue que la première fois)
do
{
for (k=0;k<6;k++)
{objets[k]=objects[k];}//Recopie les objets dans un nouveau tableau afin de garder les valeurs initiales en cas de redémarrage de boucle
i=rand()%6; //Via les rand(), la même ligne de calcul est effectué à chaque fois, mais les valeurs sont différentes à chaque tour de boucle
lebut=objets[i];
for (j=i;j<5;j++)
objets[j]=objets[j+1];//Ecrasement de la valeur déjà utilisée
i=rand()%5;
lebut=lebut*objets[i];
for (j=i;j<4;j++)
objets[j]=objets[j+1];
i=rand()%4;
inter=objets[i];
for (j=i;j<3;j++)
objets[j]=objets[j+1];
i=rand()%3;
lebut=lebut+objets[i]*inter;
for(j=i;j<2;j++)
objets[j]=objets[j+1];
i=rand()%2;
lebut=lebut*objets[i];
for(j=i;j<1;j++)
objets[j]=objets[j+1];
lebut=lebut+objets[0];
}
while (lebut<100 || lebut>999);//Vérifie la contrainte de valeur concernant le but à atteindre
}
void creerobjets (tabobjets &objets, int &possibilite, int lebut)//Crée les objets à partir du but
{
//Décla
tabobjets liste={1,2,3,4,5,6,7,8,9,10,25,50,75,100};
int i,j,k,l,m,n,a,op;
//Actions
possibilite=0;
for (i=0;i<14;i++)//Les 6 boucles sont là pour tester toutes les possibilités..
{for(j=0;j<14;j++)
{for(k=0;k<14;k++)
{for(l=0;l<14;l++)
{for(m=0;m<14;m++)
{for(n=0;n<14;n++)
{if (i!=j && i!=k && i!=l && i!=m && i!=n && j!=k && j!=l && j!=m && j!=n && k!=l && k!=m && k!=n && l!=m && l!=n && m!=n)//Permet de n'avoir aucune valeur identique
{srand(time(NULL));
op=rand()%4;//4 calculs sont possibles. Cette ligne en choisit un.
if(op==0)
{a=(liste[i]*liste[j])/(liste[k]+liste[l])-liste[m]+liste[n];}
else if(op==1)
{a=(liste[i]+liste[j])/(liste[k]*liste[l])+liste[m]-liste[n];}
else if (op==2)
{a=liste[i]*(liste[j]+(liste[k]*liste[l]))-(liste[m]*liste[n]);}
else
{a=(liste[i]-liste[j])*(liste[k]+liste[l])+liste[m]+liste[n];}
if(a==lebut)//Vérifie l'égalité entre le but à atteindre et la ligne de calcul.
{possibilite=possibilite+1;//Si possibilité=0, à la fin, alors il faut saisir un nouveau "but".
if (possibilite==1)//Ecriture des 6 nombres pour la première boucle.
{objets[0]=liste[i];
objets[1]=liste[j];
objets[2]=liste[k];
objets[3]=liste[l];
objets[4]=liste[m];
objets[5]=liste[n];
}
}
}
}
}
}
}
}
}
}
void genererbut(int &lebut)//Crée un but de manière aléatoire.
{
//Décla

//Actions
srand(time(NULL));
lebut=rand()%900+100;//Permet d'avoir un but compris entre 100 et 999.
}
void affichageobjetsbut (tabobjets &objets, int attempt)//Affiche les 6 nombres et le but à atteindre.
{
//Décla
int i;
//Actions
cout<<endl<<"Vos 6 nombres sont: "<<endl;
for (i=0;i<6;i++)
{cout<<objets[i]<<" ";
}
cout<<endl<<"Le but est: ";
cout<<attempt<<endl;
}
void traitement (tabobjets objects, int &lebut, int butreel)//Vérifie la syntaxe des calculs de l'utilisateur, et renvoie le total de l'utilisateur à la fin des calculs.
{
//Décla
char op;
int choix,a,b,i,test,valobjet,valobjet2;
tabobjets objets;
int testm,testd;
//Actions
do{
for(i=0;i<6;i++)
{objets[i]=objects[i];}//Recopie les 6 objets à chaque tour de boucle (si tel est le cas)
testm=0;
testd=0;
cout<<endl<<"Faites votre premier calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;//Range dans la variable a le premier nombre utilisé
for(i=0;i<6;i++)
{if (a==objets[i])//Vérifie que ce nombre correspond bien à un des 6 nombres disponibles
{test=test+1;
valobjet=i;}//Stocke la valeur du nombre utilisé grâce à l'incrément
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;//Stocke le choix de l'opération à effectuer
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');//Vérifie que cette opération correspond aux choix disponibles
do{
test=0;
cin>>b;//Stocke dans la variable b le second nombre utilisé
for(i=0;i<6;i++)
{if (b==objets[i] && i!=valobjet)//Vérifie que ce nombre correspond aux 5 nombres disponibles (le i!=valobjet correspond au 1er nombre utilisé)
{test=test+1;
valobjet2=i;}//Stocke la valeur du nombre utilisé grâce à l'incrément
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')//Effectue l'opération choisie
{objets[6]=a*b;//dans la 6eme case du tableau le résultat du calcul
}
else if(op=='/')
objets[6]=a/b;
else if (op=='+')
objets[6]=a+b;
else if (op=='-')
objets[6]=a-b;
if (objets[6]<0)
{testm=1;}//Regarde si le résultat n'est pas inférieur à 0 (contrainte du cahier des charges)
if(op=='/')
{
if((objets[6]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature (contrainte du cahier des charges)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);//Reboucle en cas de non respect du cahier des charges
if(valobjet<valobjet2)//Regarde quel incrément est le + grand pour commencer par celui-ci
{
for(i=valobjet2;i<6;i++)
{objets[i]=objets[i+1];}//Décale vers la gauche les nombres à partir de l'incrément le + grand
for(i=valobjet;i<5;i++)//Décale vers la gauche à partir du + petit incrément
{objets[i]=objets[i+1];}
}
else{//Fait la même chose, dans l'autre cas (valobjet2<valobjet)
for(i=valobjet;i<6;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<5;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<5;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];//Affiche les nouveaux nombres disponibles
cout<<endl<<"Le but est: "<<butreel;//Affiche de nouveau le but
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";//Propose l'arrêt du jeu, dans le cas où le total serait atteint
cin>>choix;//Enregistre le choix de l'utilisateur
}
while(choix!=0 && choix!=1);//Vérifie la syntaxe de la réponse
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";//Propose à l'utilisateur l'enregistrement du nombre final, dans le cas où le but serait atteint d'après l'utilisateur
cin>>lebut;//Enregistrement le but de l'utilisateur
for(i=0;i<5;i++)
{if(lebut==objets[i])//Vérifie que ce but correspond à un des nombres disponibles
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut;//Confirme le total
}
else//Continue le jeu (Répète les mêmes actions)
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre deuxième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<5;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<5;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[5]=a*b;
}
else if(op=='/')
objets[5]=a/b;
else if (op=='+')
objets[5]=a+b;
else if (op=='-')
objets[5]=a-b;
if (objets[5]<0)
{testm=1;}
if(op=='/')
{
if((objets[5]*!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<5;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<5;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<4;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<4;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<4;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre troisième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<4;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<4;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[4]=a*b;
}
else if(op=='/')
objets[4]=a/b;
else if (op=='+')
objets[4]=a+b;
else if (op=='-')
objets[4]=a-b;
if (objets[4]<0)
{testm=1;}
if(op=='/')
{
if((objets[4]*!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<4;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<3;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<3;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<3;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre quatrième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<3;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<3;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[3]=a*b;
}
else if(op=='/')
objets[3]=a/b;
else if (op=='+')
objets[3]=a+b;
else if (op=='-')
objets[3]=a-b;
if (objets[3]<0)
{testm=1;}
if(op=='/')
{
if((objets[3]*!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<3;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<2;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<2;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<2;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre dernier calcul (validez a chaque etape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<2;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'operateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<2;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[2]=a*b;
}
else if(op=='/')
objets[2]=a/b;
else if (op=='+')
objets[2]=a+b;
else if (op=='-')
objets[2]=a-b;
if (objets[2]<0)
{testm=1;}
if(op=='/')
{
if((objets[2]*!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<2;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<1;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<1;i++)
{objets[i]=objets[i+1];}
}
lebut=objets[0];//Enregistre directement le dernier nombre possible dans la variable du but de l'utilisateur
cout<<endl<<"Votre total est: "<<lebut<<endl;//Confirme le but de l'utilisateur
}
}}}
}
void comparaison (int lebutreel, int lebututil, int &redemarrer)//Compare le but de l'utilisateur et le but à atteindre, et valide la comparaison de manière explicite. Propose à l'utilisateur de refaire le calcul avec les mêmes nombres s'il a échoué.
{
if (lebutreel==lebututil)//Compare les 2 buts (de l'utilisateur, et à atteindre)
{cout<<endl<<"Bravo! Le compte est bon.";//Confirme l'égalité
redemarrer=0;}//Réduit la proposition de redémarrage avec les mêmes nombres à néant
else {cout<<endl<<"Dommage.. le compte est mauvais. Aha..";//Confirme l'inégalité
do{
cout<<endl<<"Voulez vous refaire ce calcul?0/1: ";//Propose à l'utilisateur le redémarrage du calcul avec les mêmes nombres
cin>>redemarrer;//Enregistre le choix de l'utilisateur
}while(redemarrer!=0 && redemarrer!=1);}//Vérifie la syntaxe de l'enregistrement
}
//*************************** Programme principal ******************************
int main (int argc, char *argv[])
{
// Declaration locale
int choixdumenu, but, bututil;
tabobjets six;
int i;
int reboot;
int redemarrage;
int victoire, defaite;
int possible;
// Action
victoire=0;//Met le nombre de victoire de l'utilisateur à 0
defaite=0;//Met le nombre de défaite de l'utilisateur à 0
do
{
choix_menu(choixdumenu);//Propose le menu à l'utilisateur
if (choixdumenu==2)
{do{
choisirbut(but);//Demande à l'utilisateur le but à atteindre
creerobjets(six,possible,but);//Calcule 6 nombres
if (possible==0)//Vérifie via cette variable renvoyée par la procédure, qu'on peut atteindre le but avec ces 6 nombres
cout<<endl<<"Choisissez un autre but"<<endl;
}while(possible==0);
}
else if (choixdumenu==3)
{choisirobjets(six);//Demande à l'utilisateur les 6 nombres dont il disposera
creerbut(six,but);//Calcule un but à partir de ces 6 nombres
}
else if (choixdumenu==4)
{do{
genererbut(but);//Crée un but au hasard grâce à la fonction rand() (random) compris entre 100 et 999
creerobjets(six,possible,but);
}while(possible==0);
}
do{
affichageobjetsbut (six, but);//Affiche les données (les nombres et le but)
cout<<"Proposez votre solution";
traitement(six,bututil,but);//Récupère le total calculé par l'utilisateur
cout<<endl<<w2d("Le but était de: ")<<but<<endl;//Rappele le but à atteindre
if (but==bututil)
{victoire=victoire+1;}//Incrémentation du nombre de victoire s'il ya égalité entre le but atteint par l'utilisateur et le but à atteindre
else {defaite=defaite+1;}//Incrémentation du nombre de défaite s'il n'y a pas égalité entre le but atteint par l'utilisateur et le but à atteindre
cout<<endl<<"Victoire";//Affiche le nombre de victoire (une if en fonction du nombre de victoire et donc de l'utilisation du pluriel)
if(victoire>1)
{cout<<"s: "<<victoire<<endl;}
else {cout<<": "<<victoire<<endl;}
cout<<"Defaite";//Même chose pour les défaites
if(defaite>1)
{cout<<"s: "<<defaite<<endl;}
else {cout<<": "<<defaite<<endl;}
comparaison (but,bututil,redemarrage);//Propose un redémarrage avec les mêmes nombres
}while(redemarrage==1);
do{
cout<<endl<<"Voulez vous recommencer un nouveau calcul?0/1: "<<endl;//Propose un redémarrage du jeu depuis le début
cin>>reboot;//Enregistre le choix de l'utilisateur
}while(reboot!=0 && reboot!=1);//Vérifie la syntaxe
}
while (reboot==1);//Reboucle si l'utilisateur choisit un redémarrage du jeu
// retour au sytème d'exploitattion
cout << endl;
system("pause");
return (0);
}
//**************************** Fin du programme *******************************[/codebox]

ps: c'est fini, j'arrête de vous souler avec mon programme. ;)

Ps2: Franfrou, comment fait-on pour utiliser le défilement en utilisant le code? Parce que c'est chiant de créer des posts aussi longs, et j'ai vu que tu me l'avait réduit grâce à un défilement sur mon 1er post..

Les stat's m'ont toujours fait marrer. Les 11 premiers profils (de ceux qui ont le + posté sur ce forum) ont 4 étoiles, le 12ème en a 3.

Ce 12ème est akinos. :blush:

Modifié par nee_trimer_ue_ved
Posté(e)
Ps2: Franfrou, comment fait-on pour utiliser le défilement en utilisant le code? Parce que c'est chiant de créer des posts aussi longs, et j'ai vu que tu me l'avait réduit grâce à un défilement sur mon 1er post..

Les stat's m'ont toujours fait marrer. Les 11 premiers profils (de ceux qui ont le + posté sur ce forum) ont 4 étoiles, le 12ème en a 3.

Ce 12ème est akinos. :blush:

Au moins je me démarque ;):ninja:

Posté(e)
Yep, j'allais le faire (et c'est fait)

//************************ Application console (C++)****************************
//******************************************************************************
// PROGRAMME : Le compte est bon
// DATE : 02/05/07
// OBJET : ou pas
// LIMITES : ou pas
// AUTEUR(S) : bluejark
//******************************************************************************
/* si vous construisez un projet et si vous utilisez une des bibliothèques de
iutupadte (cf. aide en ligne) : -1- décommentez la ligne suivante et cliquez
sur [projet|options du projet|parametre|editeur de lieus|ajouter fichier]
puis rechercher la(les) bibliothèque(s) *.a sous ...\dev-cpp\lib\iut_tlse3
-2- dans le paragraphe suivant décommentez le(s) fichiers(s) d'entête *.h ou
*.hpp qui permet(tent) d'inclure les déclaration des fonctions utilisées */
//#define _IUT_TLSE3_PROJ

/* Ce paragraphe permet de déclarer les fonctions des fichiers suivants :
conio-bis - gestion de fenêtres dos, de couleurs, lecture sans écho...
dos-bis - gestion du temps, attentes...
frame - tracé de cadres, grilles, traits, flèches...
transcode - affichage avec accents ou sans accent sous dos ou windows
keys-fr - liste des clés sous forme de noms symboliques
iutupdate - inclut tous les fichiers précédents en une seule fois
(cf le fichier de présentation iutupdate.pdf dans l'aide en ligne)
=> pour utiliser les bibliothèques "décommenter" les lignes correspondantes */
//#include <iut_tlse3\iutupdate.hpp> //inclut en une fois tous les fichiers
//#include <iut_tlse3\frame.hpp> //inclut en outre conio-bis
//#include <iut_tlse3\conio-bis.h>
//#include <iut_tlse3\dos-bis.h>
//#include <iut_tlse3\transcode.hpp>
//#include <iut_tlse3\keys-fr.h>
#include <iostream> // flux d'entrée sortie
#include <iomanip> // manipulateurs de flux
#include <cstdlib> // bibliothèque c standart
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <fstream>
#include <iut_tlse3\iutupdate.hpp>

using namespace std; // permet d'utiliser les flux cin et cout

//*************************** Déclaration globale ******************************
/***** constante *****/

/******* type ********/
typedef int tabobjets [15];
typedef char regles[500];
/***** fonction ******/
void choix_menu (int &choixmenu) //Oriente le choix primaire de l'utilisateur
{
//Décla

//Actions
do{cout<<"1.Regles"<<endl<<"2.Le but defini"<<endl<<"3.Objets definis"<<endl<<"4.Random"<<endl;
cin>>choixmenu;
if(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4)
cout<<endl<<"Mauvais choix."<<endl<<endl;
}while(choixmenu!=1 && choixmenu!=2 && choixmenu!=3 && choixmenu!=4);
}

void choisirbut (int &lebut) //Permet de choisir le but à atteindre
{
//Décla

//Actions
do{
cout<<"Donnez moi un chiffre entre 100 et 999"<<endl;
cin>>lebut;
}
while (lebut<100 or lebut>999);
}

void choisirobjets (tabobjets &objets) //Permet de choisir les 6 nombres que l'utilisateur pourra utiliser
{
//Décla
int i,j;
int etat;
int a;
//Actions
for (i=0;i<6;i++)
objets[i]=0;
for (i=0;i<6;i++)
{
do
{
etat=0;
cout<<endl<<"Donnez votre chiffre n°"<<i+1<<" :"<<endl;
cin>>objets[i];
if (objets[i]==1 or objets[i]==2 or objets[i]==3 or objets[i]==4 or objets[i]==5 or //Vérifie que le nombre appartient à la liste
objets[i]==6 or objets[i]==7 or objets[i]==8 or objets[i]==9 or objets[i]==10 or
objets[i]==25 or objets[i]==50 or objets[i]==75 or objets[i]==100)
{for (j=0;j<i;j++)
if (objets[i]!=objets[j])//Vérifie que tous les nombres sont différents
{
etat=etat+0;
}
else etat=1;
}
else etat=1;
}
while (etat==1);
}
}
void creerbut (tabobjets objets, int &lebut) //Crée le but à atteindre en fonction des 6 nombres
{

//Décla
int i,j,k,inter;
tabobjets objects;
//Actions
srand(time(NULL)); //Débloque la commande du hasard (sans ça, le hasard ne s'effectue que la première fois)
do
{
for (k=0;k<6;k++)
{objets[k]=objects[k];}//Recopie les objets dans un nouveau tableau afin de garder les valeurs initiales en cas de redémarrage de boucle
i=rand()%6; //Via les rand(), la même ligne de calcul est effectué à chaque fois, mais les valeurs sont différentes à chaque tour de boucle
lebut=objets[i];
for (j=i;j<5;j++)
objets[j]=objets[j+1];//Ecrasement de la valeur déjà utilisée
i=rand()%5;
lebut=lebut*objets[i];
for (j=i;j<4;j++)
objets[j]=objets[j+1];
i=rand()%4;
inter=objets[i];
for (j=i;j<3;j++)
objets[j]=objets[j+1];
i=rand()%3;
lebut=lebut+objets[i]*inter;
for(j=i;j<2;j++)
objets[j]=objets[j+1];
i=rand()%2;
lebut=lebut*objets[i];
for(j=i;j<1;j++)
objets[j]=objets[j+1];
lebut=lebut+objets[0];
}
while (lebut<100 || lebut>999);//Vérifie la contrainte de valeur concernant le but à atteindre
}
void creerobjets (tabobjets &objets, int &possibilite, int lebut)//Crée les objets à partir du but
{
//Décla
tabobjets liste={1,2,3,4,5,6,7,8,9,10,25,50,75,100};
int i,j,k,l,m,n,a,op;
//Actions
possibilite=0;
for (i=0;i<14;i++)//Les 6 boucles sont là pour tester toutes les possibilités..
{for(j=0;j<14;j++)
{for(k=0;k<14;k++)
{for(l=0;l<14;l++)
{for(m=0;m<14;m++)
{for(n=0;n<14;n++)
{if (i!=j && i!=k && i!=l && i!=m && i!=n && j!=k && j!=l && j!=m && j!=n && k!=l && k!=m && k!=n && l!=m && l!=n && m!=n)//Permet de n'avoir aucune valeur identique
{srand(time(NULL));
op=rand()%4;//4 calculs sont possibles. Cette ligne en choisit un.
if(op==0)
{a=(liste[i]*liste[j])/(liste[k]+liste[l])-liste[m]+liste[n];}
else if(op==1)
{a=(liste[i]+liste[j])/(liste[k]*liste[l])+liste[m]-liste[n];}
else if (op==2)
{a=liste[i]*(liste[j]+(liste[k]*liste[l]))-(liste[m]*liste[n]);}
else
{a=(liste[i]-liste[j])*(liste[k]+liste[l])+liste[m]+liste[n];}
if(a==lebut)//Vérifie l'égalité entre le but à atteindre et la ligne de calcul.
{possibilite=possibilite+1;//Si possibilité=0, à la fin, alors il faut saisir un nouveau "but".
if (possibilite==1)//Ecriture des 6 nombres pour la première boucle.
{objets[0]=liste[i];
objets[1]=liste[j];
objets[2]=liste[k];
objets[3]=liste[l];
objets[4]=liste[m];
objets[5]=liste[n];
}
}
}
}
}
}
}
}
}
}
void genererbut(int &lebut)//Crée un but de manière aléatoire.
{
//Décla

//Actions
srand(time(NULL));
lebut=rand()%900+100;//Permet d'avoir un but compris entre 100 et 999.
}
void affichageobjetsbut (tabobjets &objets, int attempt)//Affiche les 6 nombres et le but à atteindre.
{
//Décla
int i;
//Actions
cout<<endl<<"Vos 6 nombres sont: "<<endl;
for (i=0;i<6;i++)
{cout<<objets[i]<<" ";
}
cout<<endl<<"Le but est: ";
cout<<attempt<<endl;
}
void traitement (tabobjets objects, int &lebut, int butreel)//Vérifie la syntaxe des calculs de l'utilisateur, et renvoie le total de l'utilisateur à la fin des calculs.
{
//Décla
char op;
int choix,a,b,i,test,valobjet,valobjet2;
tabobjets objets;
int testm,testd;
//Actions
do{
for(i=0;i<6;i++)
{objets[i]=objects[i];}//Recopie les 6 objets à chaque tour de boucle (si tel est le cas)
testm=0;
testd=0;
cout<<endl<<"Faites votre premier calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;//Range dans la variable a le premier nombre utilisé
for(i=0;i<6;i++)
{if (a==objets[i])//Vérifie que ce nombre correspond bien à un des 6 nombres disponibles
{test=test+1;
valobjet=i;}//Stocke la valeur du nombre utilisé grâce à l'incrément
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;//Stocke le choix de l'opération à effectuer
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');//Vérifie que cette opération correspond aux choix disponibles
do{
test=0;
cin>>b;//Stocke dans la variable b le second nombre utilisé
for(i=0;i<6;i++)
{if (b==objets[i] && i!=valobjet)//Vérifie que ce nombre correspond aux 5 nombres disponibles (le i!=valobjet correspond au 1er nombre utilisé)
{test=test+1;
valobjet2=i;}//Stocke la valeur du nombre utilisé grâce à l'incrément
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')//Effectue l'opération choisie
{objets[6]=a*b;//dans la 6eme case du tableau le résultat du calcul
}
else if(op=='/')
objets[6]=a/b;
else if (op=='+')
objets[6]=a+b;
else if (op=='-')
objets[6]=a-b;
if (objets[6]<0)
{testm=1;}//Regarde si le résultat n'est pas inférieur à 0 (contrainte du cahier des charges)
if(op=='/')
{
if((objets[6]*;)!=a)//Regarde si a/b == (a/;)*b, pour voir s'il n'y a pas troncature (contrainte du cahier des charges)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);//Reboucle en cas de non respect du cahier des charges
if(valobjet<valobjet2)//Regarde quel incrément est le + grand pour commencer par celui-ci
{
for(i=valobjet2;i<6;i++)
{objets[i]=objets[i+1];}//Décale vers la gauche les nombres à partir de l'incrément le + grand
for(i=valobjet;i<5;i++)//Décale vers la gauche à partir du + petit incrément
{objets[i]=objets[i+1];}
}
else{//Fait la même chose, dans l'autre cas (valobjet2<valobjet)
for(i=valobjet;i<6;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<5;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<5;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];//Affiche les nouveaux nombres disponibles
cout<<endl<<"Le but est: "<<butreel;//Affiche de nouveau le but
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";//Propose l'arrêt du jeu, dans le cas où le total serait atteint
cin>>choix;//Enregistre le choix de l'utilisateur
}
while(choix!=0 && choix!=1);//Vérifie la syntaxe de la réponse
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";//Propose à l'utilisateur l'enregistrement du nombre final, dans le cas où le but serait atteint d'après l'utilisateur
cin>>lebut;//Enregistrement le but de l'utilisateur
for(i=0;i<5;i++)
{if(lebut==objets[i])//Vérifie que ce but correspond à un des nombres disponibles
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut;//Confirme le total
}
else//Continue le jeu (Répète les mêmes actions)
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre deuxième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<5;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<5;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[5]=a*b;
}
else if(op=='/')
objets[5]=a/b;
else if (op=='+')
objets[5]=a+b;
else if (op=='-')
objets[5]=a-b;
if (objets[5]<0)
{testm=1;}
if(op=='/')
{
if((objets[5]*B)!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<5;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<5;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<4;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<4;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<4;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre troisième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<4;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<4;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[4]=a*b;
}
else if(op=='/')
objets[4]=a/b;
else if (op=='+')
objets[4]=a+b;
else if (op=='-')
objets[4]=a-b;
if (objets[4]<0)
{testm=1;}
if(op=='/')
{
if((objets[4]*B)!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<4;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<3;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<3;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<3;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre quatrième calcul (validez à chaque étape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<3;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'opérateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<3;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;
valobjet2=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[3]=a*b;
}
else if(op=='/')
objets[3]=a/b;
else if (op=='+')
objets[3]=a+b;
else if (op=='-')
objets[3]=a-b;
if (objets[3]<0)
{testm=1;}
if(op=='/')
{
if((objets[3]*B)!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<3;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<2;i++)
{objets[i]=objets[i+1];}
}
for(i=0;i<2;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<"Voulez vous arrêter ici?0/1: ";
cin>>choix;
}while(choix!=0 && choix!=1);
if (choix==1)
{
do{
test=0;
cout<<endl<<"Entrez votre nombre: ";
cin>>lebut;
for(i=0;i<2;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
cout<<"Tricheur.."<<endl;
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre dernier calcul (validez a chaque etape)"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<2;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<"Mauvais choix d'operateur. Choix: +,-,*,/"<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<2;i++)
{if (b==objets[i] && i!=valobjet)
{test=test+1;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[2]=a*b;
}
else if(op=='/')
objets[2]=a/b;
else if (op=='+')
objets[2]=a+b;
else if (op=='-')
objets[2]=a-b;
if (objets[2]<0)
{testm=1;}
if(op=='/')
{
if((objets[2]*B)!=a)
{testd=1;}
}
if (testd==1)
cout<<endl<<w2d("Le reste de votre division n'est pas égal à 0.")<<endl;
if (testm==1)
cout<<endl<<w2d("Le nombre calculé est négatif.")<<endl;
}while(testm==1 || testd==1);
if(valobjet<valobjet2)
{
for(i=valobjet2;i<2;i++)
{objets[i]=objets[i+1];}
for(i=valobjet;i<1;i++)
{objets[i]=objets[i+1];}
}
else{
for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
for(i=valobjet2;i<1;i++)
{objets[i]=objets[i+1];}
}
lebut=objets[0];//Enregistre directement le dernier nombre possible dans la variable du but de l'utilisateur
cout<<endl<<"Votre total est: "<<lebut<<endl;//Confirme le but de l'utilisateur
}
}}}
}
void comparaison (int lebutreel, int lebututil, int &redemarrer)//Compare le but de l'utilisateur et le but à atteindre, et valide la comparaison de manière explicite. Propose à l'utilisateur de refaire le calcul avec les mêmes nombres s'il a échoué.
{
if (lebutreel==lebututil)//Compare les 2 buts (de l'utilisateur, et à atteindre)
{cout<<endl<<"Bravo! Le compte est bon.";//Confirme l'égalité
redemarrer=0;}//Réduit la proposition de redémarrage avec les mêmes nombres à néant
else {cout<<endl<<"Dommage.. le compte est mauvais. Aha..";//Confirme l'inégalité
do{
cout<<endl<<"Voulez vous refaire ce calcul?0/1: ";//Propose à l'utilisateur le redémarrage du calcul avec les mêmes nombres
cin>>redemarrer;//Enregistre le choix de l'utilisateur
}while(redemarrer!=0 && redemarrer!=1);}//Vérifie la syntaxe de l'enregistrement
}
//*************************** Programme principal ******************************
int main (int argc, char *argv[])
{
// Declaration locale
int choixdumenu, but, bututil;
tabobjets six;
int i;
int reboot;
int redemarrage;
int victoire, defaite;
int possible;
// Action
victoire=0;//Met le nombre de victoire de l'utilisateur à 0
defaite=0;//Met le nombre de défaite de l'utilisateur à 0
do
{
choix_menu(choixdumenu);//Propose le menu à l'utilisateur
if (choixdumenu==2)
{do{
choisirbut(but);//Demande à l'utilisateur le but à atteindre
creerobjets(six,possible,but);//Calcule 6 nombres
if (possible==0)//Vérifie via cette variable renvoyée par la procédure, qu'on peut atteindre le but avec ces 6 nombres
cout<<endl<<"Choisissez un autre but"<<endl;
}while(possible==0);
}
else if (choixdumenu==3)
{choisirobjets(six);//Demande à l'utilisateur les 6 nombres dont il disposera
creerbut(six,but);//Calcule un but à partir de ces 6 nombres
}
else if (choixdumenu==4)
{do{
genererbut(but);//Crée un but au hasard grâce à la fonction rand() (random) compris entre 100 et 999
creerobjets(six,possible,but);
}while(possible==0);
}
do{
affichageobjetsbut (six, but);//Affiche les données (les nombres et le but)
cout<<"Proposez votre solution";
traitement(six,bututil,but);//Récupère le total calculé par l'utilisateur
cout<<endl<<w2d("Le but était de: ")<<but<<endl;//Rappele le but à atteindre
if (but==bututil)
{victoire=victoire+1;}//Incrémentation du nombre de victoire s'il ya égalité entre le but atteint par l'utilisateur et le but à atteindre
else {defaite=defaite+1;}//Incrémentation du nombre de défaite s'il n'y a pas égalité entre le but atteint par l'utilisateur et le but à atteindre
cout<<endl<<"Victoire";//Affiche le nombre de victoire (une if en fonction du nombre de victoire et donc de l'utilisation du pluriel)
if(victoire>1)
{cout<<"s: "<<victoire<<endl;}
else {cout<<": "<<victoire<<endl;}
cout<<"Defaite";//Même chose pour les défaites
if(defaite>1)
{cout<<"s: "<<defaite<<endl;}
else {cout<<": "<<defaite<<endl;}
comparaison (but,bututil,redemarrage);//Propose un redémarrage avec les mêmes nombres
}while(redemarrage==1);
do{
cout<<endl<<"Voulez vous recommencer un nouveau calcul?0/1: "<<endl;//Propose un redémarrage du jeu depuis le début
cin>>reboot;//Enregistre le choix de l'utilisateur
}while(reboot!=0 && reboot!=1);//Vérifie la syntaxe
}
while (reboot==1);//Reboucle si l'utilisateur choisit un redémarrage du jeu
// retour au sytème d'exploitattion
cout << endl;
system("pause");
return (0);
}
//**************************** Fin du programme *******************************[/codebox]

ps: c'est fini, j'arrête de vous souler avec mon programme. :blush:

Ps2: Franfrou, comment fait-on pour utiliser le défilement en utilisant le code? Parce que c'est chiant de créer des posts aussi longs, et j'ai vu que tu me l'avait réduit grâce à un défilement sur mon 1er post..

Les stat's m'ont toujours fait marrer. Les 11 premiers profils (de ceux qui ont le + posté sur ce forum) ont 4 étoiles, le 12ème en a 3.

Ce 12ème est akinos. :ninja:

Balise "codebox"...

Posté(e)

Pour rester dans l'info je dirais que le Verilog c'est mieux que le VHDL.

J'ai tout à fait conscience de lancer un débat stérile entre pro-verilog et pro-VHDL mais j'assume. :ninja:

Posté(e)
Pour rester dans l'info je dirais que le Verilog c'est mieux que le VHDL.

J'ai tout à fait conscience de lancer un débat stérile entre pro-verilog et pro-VHDL mais j'assume. :ninja:

J'connais pas le verilog, mais le vhdl c'est assez basique comme langage (voire trop basique). Mais j'aime bien programmer dans ce langage :blush:

Posté(e)
J'connais pas le verilog, mais le vhdl c'est assez basique comme langage (voire trop basique). Mais j'aime bien programmer dans ce langage :ninja:

Connais pas le verilog non plus.

Posté(e)
J'connais pas le verilog, mais le vhdl c'est assez basique comme langage (voire trop basique). Mais j'aime bien programmer dans ce langage ;)

détrompes toi jeune padawan B)

tu n'as pas du te faire C*** à faire du VHDL-AMS, la partie AMS étant vraiment relou relou, puisque ça prend en compte des modèles hydrauliques, thermique et tout ce qu'on veut.... la partie chiante étant qu'on doit trouver les équations ce n'est plus juste du numérique.... Bon ça dépend aussi du prof et des exos proposés B)

Enfin ça peut vite devenir le bordel quand on fait du multi-domaine meme si c'est bien intéressant quand meme.

Je trouve le verilog encore plus sympa à mettre en place que le VHDL pour le design numérique, les 2 langages restent très très proches aucun doute mais je m'y plait mieux. Peut etre seulement l'effet de nouveauté je sais pas :blush:;)

Tu entends quoi par trop basique ? de trop haut niveau ? tu préfère le C++? le Java ?

L'assembleur ? :ninja: (sympa mais faut etre concentré)

Connais pas le verilog non plus.

le Verilog est plutot utilisé dans l'induistrie et dans le système américain tandis que le VHDL a plutot une portée européenne et universitaire/recherche. Les similitudes étant assez nombreuses. Mais je ne souviens plus trop de l'historique des 2 langages et des voies différents prises...Surement des batailles entre boites commercialisant chacun son langage etc....

Mais le VHDL se révèle utilisé (à quel point en entreprise je sais pas) pour son aspect multi-domaine ce qui n'est pas possible en Verilog.

Posté(e)
détrompes toi jeune padawan ;)

tu n'as pas du te faire C*** à faire du VHDL-AMS, la partie AMS étant vraiment relou relou, puisque ça prend en compte des modèles hydrauliques, thermique et tout ce qu'on veut.... la partie chiante étant qu'on doit trouver les équations ce n'est plus juste du numérique.... Bon ça dépend aussi du prof et des exos proposés B)

Enfin ça peut vite devenir le bordel quand on fait du multi-domaine meme si c'est bien intéressant quand meme.

Je trouve le verilog encore plus sympa à mettre en place que le VHDL pour le design numérique, les 2 langages restent très très proches aucun doute mais je m'y plait mieux. Peut etre seulement l'effet de nouveauté je sais pas :blush:;)

Tu entends quoi par trop basique ? de trop haut niveau ? tu préfère le C++? le Java ?

L'assembleur ? :ninja: (sympa mais faut etre concentré)

Je pense que je connais qu'une toute petite partie du VHDL, et à mon niveau c'est excessivement basique. Aucune possibilité de faire des boucles (on ne peut utiliser que le switch case & la if), les machines à etat simplifient beaucoup les travaux à programmer..

Je me suis toujours demandé si c'était du VHDL ou de l'AHDL que je programmai à la réflexion.. tu peux me dire les diff's si tu les connais?

A mon niveau (basique), j'ai beaucoup + de liberté daction avec le c++ qu'avec le xHDL.. B)

Posté(e) (modifié)
if(hasdru==banned)

{

joie=vcc;

}

else

joie=gnd;

end if;

:blush:

ouais B) mais attention à la syntaxe il faut mettre:

joie:= si c'est une variable

joie<= si c'est un signal

joie== si c'est une quantité libre

Ici ça serait plus la première solution je crois, mais bon je fais au pif aussi desfois :modeRelouOFF: ;)

Mais on a compris le but du programme, un remarque à la con des nos jours les tensions d'alimentation des circuits ont tendance à diminuer il ne faut pas tarder si tu veux un Vcc le plus haut possible :ninja:

Pour le AHDL je connais pas du tout mais d'après wikipédia on dirait que ça n'est qu'une variante d'un constructeur donc ça ressemble à mort.

Sinon t'inquiète pas moi aussi j'en connais qu'une toute petite partie n'ayant pas eu beaucoup de TP sur le sujet...(prof étrange ;) ). On apprend tout en stage de toutes façons. B)

Modifié par BenBDF
Posté(e)
ouais ;) mais attention à la syntaxe il faut mettre:

joie:= si c'est une variable

joie<= si c'est un signal

joie== si c'est une quantité libre

Ca marche très bien dans mon xHDL le joie=vcc; .. ;)

B)

Par pitié! B)

C'est pour faire fuir les forumeurs. :ninja:

Moh non, moh non.. généralement je ne comprends qu'une vanne sur 2 de la part d'hasdru ou de mario, à chacun sa compétence :blush:

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.