Aller au contenu

Le truc dont tout le monde se branle...


ClarkGaybeul

Messages recommandés

Posté(e) (modifié)

Voilà, j'ai fait mon rebelle sur le topic après match :ninja:

Je maintiens que le nul n'aurait pas été un scandale :blink:

Modifié par Aki
Posté(e)
Voilà, j'ai fait mon rebelle sur le topic après match :ninja:

Je maintiens que le nul n'aurait pas été un scandale :blink:

C'est vrai que le terme de "match nul" est ici tres adapté :ninja:

Posté(e)

Malgrès cette belle saison, j'ai un gout amer entre les non-matchs à l'extèrieur et l'arbitrage peu souvent clément envers nous. Puis j'ai l'impression que y a qu'à Toulouse qu'on refuse des buts valables, j'aimerais en voir des arbitres qui refusent ces même buts au Vélodrome :blink: .

Pourtant, Sadran n'a pas l'air si désabusé envers l'arbitrage dans son interview, il doit se dire que ca sert à rien et la joue grand seigneur, mais au fond il a les boules j'imagine :ninja:

Posté(e)
Quelqu'un sait comment on ouvre un putain de fichier (.txt) en c++?

Il me semblait que c'était

ifstream fichier_in();

open.fichier_in(test.txt);

Mais ça marche pas..fichier_in(test.txt).open non plus, etc.. :blink:

fopen puis fread ?

Posté(e) (modifié)
fopen("test test.txt");

fopen("test.txt");

Marche pô..

faut indiquer si t"ouvres en lecture, écriutre, lecture/écriture

édit: le lien de FF reprend ça, je me sui fait grillé je cherchais aussi un lien :blink:

Modifié par BenBDF
Posté(e)

sous Dev cpp

j'vais voir le lien, ça devrait m'aider

faut indiquer si t"ouvres en lecture, écriutre, lecture/écriture

édit: le lien de FF reprend ça, je me sui fait grillé je cherchais aussi un lien :blink:

c'est la première fois que j'utilise les fichiers, j'vais essayer de me démerder avec..

J'me suis tapé la programmation du jeu "le compte est bon" cf romejko, c'est pas compliqué mais ça fait plaisir de voir que ça marche après (je vais voir) 630 lignes (donc 580 écrites environ).. :ninja:

Posté(e)
sous Dev cpp

j'vais voir le lien, ça devrait m'aider

c'est la première fois que j'utilise les fichiers, j'vais essayer de me démerder avec..

J'me suis tapé la programmation du jeu "le compte est bon" cf romejko, c'est pas compliqué mais ça fait plaisir de voir que ça marche après (je vais voir) 630 lignes (donc 580 écrites environ).. :ninja:

Au fait, ne pas oublier le fclose :blink:

Posté(e)

ifstream fichier_in;

fichier_in.open ("test.txt");

en fait, ces 2 lignes me conviennent à merveille. :ninja:

si quelqu'un veut s'éclater au jeu "le compte est bon", ya aucun problème.

//************************ 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];
/***** fonction ******/
void choix_menu (int &choixmenu)
{
//Décla

//Actions
cout<<w2d("1.Règles")<<endl<<"2.Ee but defini"<<endl<<"3.Objets définis"<<endl<<"4.Random"<<endl;
cin>>choixmenu;
}

void choisirbut (int &lebut)
{
//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)
{
//Décla
int i,j;
int etat;
//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
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])
{
etat=etat+0;
}
else etat=1;
}
else etat=1;
}
while (etat==1);
}
}
void creerbut (tabobjets objects, int &lebut)
{

//Décla
int i,j,k,inter;
tabobjets objets;
//Actions
do
{
for (k=0;k<6;k++)
{objets[k]=objects[k];}

i=rand()%6;
lebut=objets[i];
for (j=i;j<5;j++)
objets[j]=objets[j+1];
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);
}
void creerobjets (tabobjets &objets, int lebut)
{
//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,test;
//Actions
test=0;
for (i=0;i<14;i++)
{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)
{
a=(liste[i]*liste[j])+(liste[k]*liste[l])-liste[m]+liste[n];
if(a==lebut)
{test=test+1;
if (test==1)
{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)
{
//Décla

//Actions
srand(time(NULL));
lebut=rand()%900+100;
}
void affichageobjetsbut (tabobjets &objets, int attempt)
{
//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)
{
//Décla
char op;
int choix,a,b,i,test,valobjet;
tabobjets objets;
int testm,testd;
//Actions
do{
for(i=0;i<6;i++)
{objets[i]=objects[i];}
testm=0;
testd=0;
cout<<endl<<"Faites votre premier calcul"<<endl;
do{
test=0;
cin>>a;
for(i=0;i<6;i++)
{if (a==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;}
else {for(i=valobjet;i<5;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<w2d("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])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
else {for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
}
}
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)//Regarde si a/b == (a/:angry:*b, pour voir s'il n'y a pas troncature
{testd=1;}
}
}while(testm==1 || testd==1);
for(i=0;i<5;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<w2d("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<5;i++)
{if(lebut==objets[i])
{test=test+1;}
else test=test;
}
}while(test==0);
cout<<endl<<"Votre total est "<<lebut;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre second calcul"<<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;}
else {for(i=valobjet;i<4;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<w2d("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])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
else {for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
}
}
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)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature
{testd=1;}
}
}while(testm==1 || testd==1);
for(i=0;i<4;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<w2d("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;
}
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<w2d("Faites votre troisième calcul")<<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;}
else {for(i=valobjet;i<3;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<w2d("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])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
else {for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
}
}
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)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature
{testd=1;}
}
}while(testm==1 || testd==1);
for(i=0;i<3;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<w2d("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;
}
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<w2d("Faites votre quatrième calcul")<<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;}
else {for(i=valobjet;i<2;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<w2d("Mauvais choix d'opérateur. Choix: +,-,*,/")<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<2;i++)
{if (b==objets[i])
{test=test+1;
valobjet=i;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
else {for(i=valobjet;i<1;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
if(op=='*')
{objets[1]=a*b;
}
else if(op=='/')
objets[1]=a/b;
else if (op=='+')
objets[1]=a+b;
else if (op=='-')
objets[1]=a-b;
if (objets[1]<0)
{testm=1;}
if(op=='/')
{
if((objets[1]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature
{testd=1;}
}
}while(testm==1 || testd==1);
for(i=0;i<2;i++)
cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i];
cout<<endl<<"Le but est: "<<butreel;
do{
cout<<endl<<w2d("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;
}
}while(test==0);
cout<<endl<<"Votre total est "<<lebut<<endl;
}
else
{
do{
testm=0;
testd=0;
cout<<endl<<"Faites votre dernier calcul"<<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;}
else {for(i=valobjet;i<1;i++)
{objets[i]=objets[i+1];}
}
}
while (test==0);
do{
cin>>op;
if (op!='+' && op!='-' && op!='/' && op!='*')
cout<<w2d("Mauvais choix d'operateur. Choix: +,-,*,/")<<endl;
}
while (op!='+' && op!='-' && op!='/' && op!='*');
do{
test=0;
cin>>b;
for(i=0;i<1;i++)
{if (b==objets[i])
{test=test+1;}
else test=test;
}
if (test==0)
{cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;}
}
while (test==0);
if(op=='*')
{objets[0]=a*b;
}
else if(op=='/')
objets[0]=a/b;
else if (op=='+')
objets[0]=a+b;
else if (op=='-')
objets[0]=a-b;
if (objets[0]<0)
{testm=1;}
if(op=='/')
{
if((objets[0]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature
{testd=1;}
}
}while(testm==1 || testd==1);
lebut=objets[0];
cout<<endl<<"Votre total est: "<<lebut<<endl;
}
}}}
}
//*************************** Programme principal ******************************
int main (int argc, char *argv[])
{
// Déclaration locale
int choixdumenu, but, bututil;
tabobjets six;
int i;
int reboot;
FILE * fichier;
// Action
fichier=fopen ("test.txt","r");
do
{
choix_menu(choixdumenu);
if (choixdumenu==2)
{
choisirbut(but);
creerobjets(six,but);
}
else if (choixdumenu==3)
{choisirobjets(six);
creerbut(six,but);
}
else if (choixdumenu==4)
{
genererbut(but);
creerobjets(six,but);
}
affichageobjetsbut (six, but);
cout<<"Proposez votre solution";
traitement(six,bututil,but);
cout<<"Voulez vous recommencer? 0 pour non, 1 pour oui";
cin>>reboot;
}
while (reboot==1);
// retour au sytème d'exploitattion
cout << endl;
system("pause");
return (0);
}
//**************************** Fin du programme *******************************[/codebox]

Amusez vous bien.

:blink:

Posté(e)
ifstream fichier_in;

fichier_in.open ("test.txt");

en fait, ces 2 lignes me conviennent à merveille. :ninja:

si quelqu'un veut s'éclater au jeu "le compte est bon", ya aucun problème.

Amusez vous bien.

:blink:

Et le fclose :ninja:

Posté(e)
Et le fclose :blink:

il veut pas te croire, quel rebelle :ninja:

Ca marchait très bien :ninja: :ninja:

Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. :angry:

Posté(e)
Ca marchait très bien :angry::blink:

Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. :ninja:

Il faut copier le contenu du fichier dans ta chaine de caractères, et pas le fichier directement dans la chaine.

Donc fopen, puis fread, et le contenu du buffer dans ta chaine...

Et puis fclose :ninja:

Posté(e)
Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. :blink:

ouais c'est u peu vieux pour moi et FF a très bien répondu je pense :ninja:

il est costaud :ninja:

Posté(e)

Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée.

Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow.

La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens.

En même temps on est sur le LTDTLMSB :blink: :geek: :ninja:

Posté(e)
Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée.

Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow.

La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens.

En même temps on est sur le LTDTLMSB :blink: :geek: :ninja:

Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. :ninja:

Posté(e)
Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. :blink:

ça peut servir on sait jamais :ninja:

et il faudrait que tu le mette sur le net et que l'on ait besoin de passer une variable en GET ou par formulaire donc c pas immédiat comme faille non plus mais bon mon coté geek a repris le dessus un court instant.

:ninja::angry::ninja:

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.