 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Vincent Lascaux Guest
|
Posted: Wed Jan 25, 2006 4:40 am Post subject: Re: petite aide sur mon prog |
|
|
"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
|
Posted: Wed Jan 25, 2006 7:48 am Post subject: Re: petite aide sur mon prog |
|
|
"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
|
Posted: Wed Jan 25, 2006 8:06 am Post subject: Re: petite aide sur mon prog |
|
|
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 ?
|
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
|
Posted: Wed Jan 25, 2006 8:48 am Post subject: Re: petite aide sur mon prog |
|
|
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
|
Posted: Wed Jan 25, 2006 11:24 am Post subject: Re: petite aide sur mon prog |
|
|
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 ?
|
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
|
Posted: Wed Jan 25, 2006 1:16 pm Post subject: Re: petite aide sur mon prog |
|
|
"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
|
Posted: Wed Jan 25, 2006 2:15 pm Post subject: Re: petite aide sur mon prog |
|
|
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
|
Posted: Wed Jan 25, 2006 3:08 pm Post subject: Re: petite aide sur mon prog |
|
|
On Tue, 24 Jan 2006 09:23:57 +0100, Arnaud Meurgues :
Sans doute. Désolé. À l'avenir, j'essaierai de me contenter de plonker
silencieusement.
|
|
| Back to top |
|
 |
giovanni Guest
|
Posted: Wed Jan 25, 2006 10:44 pm Post subject: Re: petite aide sur mon prog |
|
|
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
|
Posted: Thu Jan 26, 2006 3:13 am Post subject: Re: petite aide sur mon prog |
|
|
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
|
Posted: Thu Jan 26, 2006 6:11 am Post subject: Re: petite aide sur mon prog |
|
|
| 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
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
Ici tu lis t que tu n'as jamais initialisé
--
Vincent
|
|
| Back to top |
|
 |
kanze Guest
|
Posted: Thu Jan 26, 2006 8:34 am Post subject: Re: petite aide sur mon prog |
|
|
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
|
Posted: Thu Jan 26, 2006 7:17 pm Post subject: Re: petite aide sur mon prog |
|
|
"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 |
|
 |
|
|
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
|
|