C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Re: petite aide sur mon prog

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Vincent Lascaux
Guest





PostPosted: Wed Jan 25, 2006 4:40 am    Post subject: Re: petite aide sur mon prog Reply with quote




"giovanni" <giovannisch (AT) hotmail (DOT) com> a écrit dans le message de news:
43d683f5$1 (AT) ews20 (DOT) ..
Quote:
1 2 3 4 5 donc la dans les suivant ne dois pas avoir 1 2 3 ,1 2 4,1 2 5, 2
3 4,2 3 5, 3 4 5
1 2 6 7 8 ici 1 2 6, 1 2 7,1 2 8,2 6 7,2 6 8,6 7 8 ne doit pas avoir
serie de trois chiffre
1 2 9 10 11 etc
1 2 12 13 14

Bon, en fait ce que tu veux c'est lire les 5 chiffres depuis ton fichier,
appelons X le dernier, tu veux écrire dans le fichier
1 2 (X+1) (X+2) (X+3)

Est ce que j'ai bien compris le problème ?

--
Vincent



Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed Jan 25, 2006 7:48 am    Post subject: Re: petite aide sur mon prog Reply with quote



"Vincent Lascaux" <nospam (AT) nospam (DOT) org> writes:

Quote:
"giovanni" <giovannisch (AT) hotmail (DOT) com> a écrit dans le message de news:
43d683f5$1 (AT) ews20 (DOT) ..
1 2 3 4 5 donc la dans les suivant ne dois pas avoir 1 2 3 ,1 2 4,1 2 5, 2
3 4,2 3 5, 3 4 5
1 2 6 7 8 ici 1 2 6, 1 2 7,1 2 8,2 6 7,2 6 8,6 7 8 ne doit pas avoir
serie de trois chiffre
1 2 9 10 11 etc
1 2 12 13 14

Bon, en fait ce que tu veux c'est lire les 5 chiffres depuis ton fichier,
appelons X le dernier, tu veux écrire dans le fichier
1 2 (X+1) (X+2) (X+3)

Est ce que j'ai bien compris le problème ?

Je crois qu'il veut generer des ensembles tels que toute combinaison
de 3 entiers choisis parmi les 50 premier se trouve dans un et un seul
ensemble. Je ne suis pas sur que c'est possible.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
kanze
Guest





PostPosted: Wed Jan 25, 2006 8:06 am    Post subject: Re: petite aide sur mon prog Reply with quote



Arnaud Meurgues wrote:
Quote:
Matthieu Moy wrote:

Quand tu met un truc dans la poubelle « je trie », c'est
pour que les ordures soient ordonnées de plus petit au plus
grand ? ;-)

Parce que toi, en C++, tu tries ce que tu mets à la poubelle ?
Wink

On trie à la poste, et la SNCF a des gares de triage. Le mot,
comme son équivalent en anglais, a plusieurs significations.

Dans le sens technique qui correspond à la fonction std::sort,
je me démande si ce n'est pas une mauvaise traduction. Si le mot
anglais « to sort » peut prendre à peu près toutes les
significations de trier (dans le langage courant), l'inverse
n'est pas vrai, et je crois que dans ce cas-ci, si je
rencontrais le mot « to sort » avec cette signification dans un
contexte non informatique, je le traduirais par quelque chose
d'autre : ordonner, ranger, ou peut-être même une paraphrase.
(Les allemands avaient le même problème -- qu'ils ont résolu en
créant un nouveau mot, « sortieren ». Une façon simple à
résoudre le problème:-).)

Quoiqu'il en soit, l'utilisation technique en informatique est
maintenant trop établie pour qu'on pense à la changer.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
kanze
Guest





PostPosted: Wed Jan 25, 2006 8:48 am    Post subject: Re: petite aide sur mon prog Reply with quote

giovanni wrote:
Quote:
euh oui par ordonner mais je voulais dire trier les chiffre sortie pas
quille les enregistre a nouveau
donc le prog ne doit enregistrer que une fois
3 chiffre dansles 5
donc 1 2 3 4 5 sorti et enregistrer
donc ne doit plus enregistrer s il y a
1 2 3
1 2 4
1 2 5
2 3 4
2 3 5
3 4 5
donc l prochain 1 2 5 7 8
etc

Je ne suis toujours pas sûr d'avoir compris : est-ce que tu
cherches quelque chose du genre :

typedef std::vector< int >
Vector ;

int
main()
{
std::string line ;
int lineNo = 0 ;
while ( std::getline( std::cin, line ) ) {
++ lineNo ;
std::istringstream s( line ) ;
Vector v(
(std::istream_iterator< int >( s )),
(std::istream_iterator< int >()) ) ;
if ( (s && ! s.eof())
Quote:
| v.size() != 5 ) {
std::cerr << "Erreur de format : ligne " << lineNo

std::endl ;
} else {
std::cout << DisplayVector< 0 >( v ) << ':' <<
std::endl ;
std::sort( v.begin(), v.end() ) ;
std::set< Vector > perm3 ;
do {
Vector v3( v.begin(), v.begin() + 3) ;
std::sort( v3.begin(), v3.end() ) ;
perm3.insert( v3 ) ;
} while ( std::next_permutation( v.begin(), v.end() ) )
;
std::copy( perm3.begin(), perm3.end(),
std::ostream_iterator< DisplayVector< 4 > >(
std::cout, "n" ) ) ;
std::cout.flush() ;
}
}
return std::cout ? EXIT_SUCCESS : EXIT_FAILURE ;
}

(La classe template DisplayVector est un hack :

template< int indent >
class DisplayVector
{
public:
DisplayVector( Vector const& v )
: myVect( &v )
{
}

friend std::ostream&operator<<(
std::ostream& dest,
DisplayVector const&source )
{
for ( Vector::const_iterator i = source.myVect->begin() ;
i != source.myVect->end() ;
++ i ) {
dest << ( i == source.myVect->begin()
? std::string( indent, ' ' )
: std::string( ", " ) )
<< *i ;
}
return dest ;
}
private:
Vector const* myVect ;
} ;

.. Mais j'étais trop paresseux d'écrire les boucles comme il
aurait fallu. Au fond, ce qu'il faut, c'est un ostream_iterator
avec un séparateur, et non un terminateur.)

En passant, un peu plus de soin dans l'écriture du français ne
nuira en rien. Tu n'es pas le seul non francophone à y poster.
Qu'il y a des fautes, passons -- mes contributions dans
it.comp.lang.c++ en sont pleines. Mais un peu de ponctuation et
de capitalisation serait déjà une amélioration considérable.

Aussi, on répond après le texte auquel on répond, en coupant ce
qui n'est pas important pour la réponse.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
giovanni
Guest





PostPosted: Wed Jan 25, 2006 11:24 am    Post subject: Re: petite aide sur mon prog Reply with quote

euh non donc un emble de trois chiffre deja sorti dans la combinaison ne
doive plus sortir si en veu dans la combinaison 5 = 1 2 3 4 5 en a les
combinaison de trois chiffre suivant
Quote:
1 2 3
1 2 4
1 2 5
2 3 4
2 3 5
3 4 5
don ne dois plus sauver 1 34 2 67 5 parce que il y a 1 2 3 qui est deja

sauver dans le 1 2 3 4 5


"kanze" <kanze (AT) gabi-soft (DOT) fr> a écrit dans le message de news:
[email]1138176377.340661.173080 (AT) z14g2000cwz (DOT) googlegroups.com[/email]...
Arnaud Meurgues wrote:
Quote:
Matthieu Moy wrote:

Quand tu met un truc dans la poubelle « je trie », c'est
pour que les ordures soient ordonnées de plus petit au plus
grand ? ;-)

Parce que toi, en C++, tu tries ce que tu mets à la poubelle ?
Wink

On trie à la poste, et la SNCF a des gares de triage. Le mot,
comme son équivalent en anglais, a plusieurs significations.

Dans le sens technique qui correspond à la fonction std::sort,
je me démande si ce n'est pas une mauvaise traduction. Si le mot
anglais « to sort » peut prendre à peu près toutes les
significations de trier (dans le langage courant), l'inverse
n'est pas vrai, et je crois que dans ce cas-ci, si je
rencontrais le mot « to sort » avec cette signification dans un
contexte non informatique, je le traduirais par quelque chose
d'autre : ordonner, ranger, ou peut-être même une paraphrase.
(Les allemands avaient le même problème -- qu'ils ont résolu en
créant un nouveau mot, « sortieren ». Une façon simple à
résoudre le problème:-).)

Quoiqu'il en soit, l'utilisation technique en informatique est
maintenant trop établie pour qu'on pense à la changer.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Back to top
Franck Branjonneau
Guest





PostPosted: Wed Jan 25, 2006 1:16 pm    Post subject: Re: petite aide sur mon prog Reply with quote

"kanze" <kanze (AT) gabi-soft (DOT) fr> écrivait:

Quote:
std::sort( v.begin(), v.end() ) ;
std::set< Vector > perm3 ;
do {
Vector v3( v.begin(), v.begin() + 3) ;
std::sort( v3.begin(), v3.end() ) ;
perm3.insert( v3 ) ;
} while ( std::next_permutation( v.begin(), v.end() ) ) ;

C'est perm3.insert( v3.begin(), v3.end() ) ; ?

Quel est l'intérêt du std::sort ?

--
Franck Branjonneau

Back to top
Arnaud Meurgues
Guest





PostPosted: Wed Jan 25, 2006 2:15 pm    Post subject: Re: petite aide sur mon prog Reply with quote

giovanni wrote:

Quote:
don ne dois plus sauver 1 34 2 67 5 parce que il y a 1 2 3 qui est deja
sauver dans le 1 2 3 4 5

Et à quoi ça sert ?

Le savoir permettrait peut-être de mieux comprendre.

--
Arnaud

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jan 25, 2006 3:08 pm    Post subject: Re: petite aide sur mon prog Reply with quote

On Tue, 24 Jan 2006 09:23:57 +0100, Arnaud Meurgues :

Quote:
C'est pas sympa.

Sans doute. Désolé. À l'avenir, j'essaierai de me contenter de plonker
silencieusement.


Back to top
giovanni
Guest





PostPosted: Wed Jan 25, 2006 10:44 pm    Post subject: Re: petite aide sur mon prog Reply with quote

euh a rien juste aprendre a savoir trater ca avec c++ calculer reprendre
donnee du calcul savoir si resultat sorti alors aller au suivant traiter
fichier fermer.
"Arnaud Meurgues" <news.arnaud (AT) meurgues (DOT) non.fr.invalid> a écrit dans le
message de news: 43d78786$0$29530$626a54ce (AT) news (DOT) free.fr...
Quote:
giovanni wrote:

don ne dois plus sauver 1 34 2 67 5 parce que il y a 1 2 3 qui est deja
sauver dans le 1 2 3 4 5

Et à quoi ça sert ?

Le savoir permettrait peut-être de mieux comprendre.

--
Arnaud



Back to top
giovanni
Guest





PostPosted: Thu Jan 26, 2006 3:13 am    Post subject: Re: petite aide sur mon prog Reply with quote

voici le code modifie mais le probleme se situe

fichier2.open("resultat.txt", ios::in);
if(!fichier2){
cerr << "error: file output ne peu l ouvrir.n";
exit(1);}
while(!fichier2.eof()){
fichier2 >> nba[1] >> nba[2] >> nba[3]>> nba[4] >> nba[5] ;}

a cause au debut je lui fais cree le fichier

//std::ofstream out("resultat.txt", std::ios::app);
//out << nb_1;
// out <<" ";
// out << nb_2 ;
// out <<" ";
// out << nb_3;
//out <<" ";
//out << nb_4 ;
// out <<" ";
// out << nb_5 ;
//out <<":n ";

donc ouvert je pense et s arete a la ligne ne peu ouvrir le fichier cerr <<
"error: file output ne peu l ouvrir.n";


a propos je sais manque la boucle de controle des trois chiffre donc le if
(t<3) ne pas regarder plus loin ...pou linstant



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


using namespace std;

int main()
{
clock_t start = clock();
int count;
count=0;
ifstream fichier;
int nb[10],t; ;

ifstream fichier2;
int nba[10]; ;
ifstream result;
{
int cout1;

for ( cout1 = 0 ; cout1 <= 10;
nb[cout1]=0 ,nba[cout1]=0,
cout1 = (cout1 + 1)) ;
}
//ofstream outfile("resultat.txt", ios::out);
//if(!outfile){
//cerr << "error: file output ne peu l ouvrir.n";
// exit(1);
// }

fichier.open("calc.txt", ios::in);
while (!fichier.eof()) {
fichier >> nb[1] >> nb[2] >> nb[3]>> nb[4] >> nb[5] ;
//fichier2.open("calc2.txt", ios::in);
//if(!fichier2){
// cerr << "error: file output ne peu l ouvrirn";
// exit(1);}
//while(!fichier2.eof())

nba[1]=nb[1];
nba[2]=nb[2];
nba[3]=nb[3];
nba[4]=nb[4];
nba[5]=nb[5];


//fichier2 >> nb_00 >> nb_11 >> nb_22 >> nb_33 >> nb_44 >> nb_55 ;
//printf(" ligne a1 %d", nb_11);
//printf(" %d", nb_22);
//printf(" %d", nb_33);
//printf(" %d", nb_44);
//printf(" %dn", nb_55);
printf(" ligne nb %d", nb[1]);
printf(" %d", nb[2]);
printf(" %d", nb[3]);
printf(" %d", nb[4]);
printf(" %dn", nb[5]);
//std::ofstream out("resultat.txt", std::ios::app);
//out << nb_1;
// out <<" ";
// out << nb_2 ;
// out <<" ";
// out << nb_3;
//out <<" ";
//out << nb_4 ;
// out <<" ";
// out << nb_5 ;
//out <<":n ";
do
{

fichier2.open("resultat.txt", ios::in);
if(!fichier2){
cerr << "error: file output ne peu l ouvrir.n";
exit(1);}
while(!fichier2.eof()){
fichier2 >> nba[1] >> nba[2] >> nba[3]>> nba[4] >> nba[5] ;}
{
int cout;

for ( cout = 0 ; cout <= 6; cout = cout + 1
, cout );
{
int cout2;

for ( cout2 = 0 ; cout2 <= 6; cout2 = cout2 + 1,
cout2 );
}
}
if (t<3){
std::ofstream out("resultat.txt", std::ios::app);
out << nb[1];
out <<" ";
out << nb[2] ;
out <<" ";
out << nb[3];
out <<" ";
out << nb[4];
out <<" ";
out << nb[5];
out <<":n ";
nba[1]=nb[1];
nba[2]=nb[2];
nba[3]=nb[3];
nba[4]=nb[4];
nba[5]=nb[5];
}
++nb[5];
if (nb[5]==51)
{nb[4]=nb[4]+1;
nb[5]=1;}
if (nb[4]==51)
{nb[3]=nb[3]+1;
nb[4]=1;}
if (nb[3]==51)
{nb[2]=nb[2]+1;
nb[3]=1;}
if (nb[2]==51)
{nb[1]=nb[1]+1;
nb[2]=0;}

}
while (nb[1] < 99) ;

//system("pause");
}

// chiudere file
fichier.close();
fichier.clear() ;

clock_t end = clock();
int elapsed_sec = (end-start)/CLOCKS_PER_SEC; // not CLK_TCK !!!
cout << "nThat took " << elapsed_sec << " seconds.n";

system("pause");
return(0);


}




"giovanni" 43d7ff58$1 (AT) ews20 (DOT) ..
Quote:
euh a rien juste aprendre a savoir trater ca avec c++ calculer reprendre
donnee du calcul savoir si resultat sorti alors aller au suivant traiter
fichier fermer.
"Arnaud Meurgues" <news.arnaud (AT) meurgues (DOT) non.fr.invalid> a écrit dans le
message de news: 43d78786$0$29530$626a54ce (AT) news (DOT) free.fr...
giovanni wrote:

don ne dois plus sauver 1 34 2 67 5 parce que il y a 1 2 3 qui est deja
sauver dans le 1 2 3 4 5

Et à quoi ça sert ?

Le savoir permettrait peut-être de mieux comprendre.

--
Arnaud





Back to top
Vincent Lascaux
Guest





PostPosted: Thu Jan 26, 2006 6:11 am    Post subject: Re: petite aide sur mon prog Reply with quote


Quote:
#include <cstdlib
#include #include #include #include #include #include

using namespace std;

int main()
{
clock_t start = clock();
int count;
count=0;

int count = 0;
mais count n'est pas utilisé, donc à supprimer

Quote:
ifstream fichier;
int nb[10],t; ;

Tu peux ne mettre qu'un seul ;
t n'est pas initialisé et est lu uniquement à la fin (t < 3), je comprends
pas, et le compilateur non plus (ton code a un comportement indéfini)
Défini tes variables le plus tard possible

Quote:
ifstream fichier2;

fichier2 n'est pas un nom descriptif

Quote:
int nba[10]; ;

Tu peux ne mettre qu'un seul ;
Pourquoi allouer 10 entier quand tu n'en utilises que 5 (remarque valable
pour nb)
nba n'est pas un nom descriptif

Quote:
ifstream result;
{
int cout1;

for ( cout1 = 0 ; cout1 <= 10;
nb[cout1]=0 ,nba[cout1]=0,
cout1 = (cout1 + 1)) ;

for(int i = 0; i <= 10; ++i)
nb[i] = nba[i] = 0;

est plus lisible (et du coup on n'a pas besoin du bloc car i n'est défini
que pour la boucle)

Quote:
}
//ofstream outfile("resultat.txt", ios::out);
//if(!outfile){
//cerr << "error: file output ne peu l ouvrir.n";
// exit(1);
// }

Tu pourrais prendre la peine de virer le code commenté quand tu postes ici
!!

Quote:
fichier.open("calc.txt", ios::in);

Tu aurais pu définir ta variable fichier ici

Quote:
while (!fichier.eof()) {

Cette boucle ne sert à rien... Tu t'attends à avoir 5 nombres, pas plus, pas
moins

Quote:
fichier >> nb[1] >> nb[2] >> nb[3]>> nb[4] >> nb[5] ;

En générale on compte à partir de 0. Donc je ferais plutot

for (int i = 0; i < 5; ++i)
fichier >> nb[i];

Quote:
nba[1]=nb[1];
nba[2]=nb[2];
nba[3]=nb[3];
nba[4]=nb[4];
nba[5]=nb[5];

for (int i = 0; i < 5; ++i)
nba[i] = nb[i];

Quote:
printf(" ligne nb %d", nb[1]);
printf(" %d", nb[2]);
printf(" %d", nb[3]);
printf(" %d", nb[4]);
printf(" %dn", nb[5]);

do
{

fichier2.open("resultat.txt", ios::in);
if(!fichier2){
cerr << "error: file output ne peu l ouvrir.n";
exit(1);}
while(!fichier2.eof()){
fichier2 >> nba[1] >> nba[2] >> nba[3]>> nba[4] >> nba[5] ;}
{
int cout;

for ( cout = 0 ; cout <= 6; cout = cout + 1
, cout );
{
int cout2;

for ( cout2 = 0 ; cout2 <= 6; cout2 = cout2 + 1,
cout2 );

Cette boucle ne fait rien... c'est suspect

Quote:
}
}
if (t<3){

Ici tu lis t que tu n'as jamais initialisé

--
Vincent



Back to top
kanze
Guest





PostPosted: Thu Jan 26, 2006 8:34 am    Post subject: Re: petite aide sur mon prog Reply with quote

Franck Branjonneau wrote:
Quote:
"kanze" <kanze (AT) gabi-soft (DOT) fr> écrivait:

std::sort( v.begin(), v.end() ) ;
std::set< Vector > perm3 ;
do {
Vector v3( v.begin(), v.begin() + 3) ;
std::sort( v3.begin(), v3.end() ) ;
perm3.insert( v3 ) ;
} while ( std::next_permutation( v.begin(), v.end() ) ) ;

C'est perm3.insert( v3.begin(), v3.end() ) ; ?

Non. perm3 est un std::set< Vector >, et v3 est un Vector qu'on
insère. (On pourrait arguer que ma solution n'est pas
particulièrement efficace. Je ne me suis pas gené en ce qui
concerne les copies profondes des collections. Mais pour des
ensembles de trois ou de cinq éléments, ça ne pose pas de
problème.)

Quote:
Quel est l'intérêt du std::sort ?

Pour obtenir une représentation « canonique » de l'ensemble. Au
fond, ici j'aurais pû me servir d'un std::set< int > pour
Vector, à la place d'un std::vector< int >, et faire l'économie
de std::sort ; l'abstraction est bien celui d'un ensemble, où
l'ordre n'a pas d'importance. Sans le sort, j'aurais des entrées
{1,2,3}, {1,3,2}, {2,1,3}, {2,3,1}, {3,1,2}, {3,2,1}, où je ne
veux qu'une seule entrée.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
Franck Branjonneau
Guest





PostPosted: Thu Jan 26, 2006 7:17 pm    Post subject: Re: petite aide sur mon prog Reply with quote

"kanze" <kanze (AT) gabi-soft (DOT) fr> écrivait:

Quote:
Franck Branjonneau wrote:
"kanze" <kanze (AT) gabi-soft (DOT) fr> écrivait:

C'est perm3.insert( v3.begin(), v3.end() ) ; ?

Non. perm3 est un std::set< Vector

Oups, j'ai lu trop vite.

Merci.

--
Franck Branjonneau

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.