Compteur, sortie.

Signaler
Messages postés
6
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
-
Messages postés
6
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
-
Bonjour, voila je suis en train de m'essayer a la programation et au C++, et je n'arrive pas a faire plusieurs trucs et je ne comprends pas pourquoi. Mon programme me permet d'afficher le file.txt suivant, mais pour qu'il soit complet et qu'il marche j'aimerais ajouter un petit detail.
j'aimerais arriver a faire en sorte qu'a partir de la 2eme ligne "subgraph cluster2", cette ligne s'incrémente pour avoir subgraph cluster3, et etc...J'ai éssayé de faire des compteurs mais celui-ci me marque toutes les itérations a la suite et de partout, donc je le fais mal !

mon fichier texte de sortie :

digraph G {
rankdir=BT;
subgraph cluster0 {
 ev5;
 ev5-> ev4;
 ev5-> ev2;
 ev6;
 ev6-> ev4;
 }
subgraph cluster1 {
subm
 ev4;
 ev4-> ev1;
 ev4-> ev3;
 ev2;
}
subgraph cluster 2 {
 ev1;
 ev1-> ev0;
 ev2;
 ev2-> ev0;
 ev3;
}
subgraph cluster 2 { // subgraph cluster3
 ev0;
 ev0-> ev0;
}
subgraph cluster 2 { // subgraph cluster4
 ev0;
}
subgraph cluster 2 { //subgraph cluster5
 ev0;
}
}

mon programme.cpp :

#include <c_port.h>
#include <c_api.h>
#include <c_path.h>
#include
#include <fstream>

//Gestionnaire de ressources
#include /* Pour pouvoir utiliser init_resource_manager() */

#include <c_out.h> /* pour le mode verbose */

using namespace std;

ofstream file("file.txt");

void function parse_operation(T_machine* mch) {

T_op* operation=mch->get_operations();
while (operation != NULL) {
cout << "Operation name : " << operation->get_op_name()->get_value() << endl;
file << " " << operation->get_op_name()->get_value() << ';' << endl;
// Definition de l'operation
T_op *def_op = operation->get_definition();
T_ident *ref_op = def_op->get_ref_operation();

while (ref_op) {
cout << " Ref_op = " << ref_op->get_name()->get_value() << endl;
file << " " << operation->get_op_name()->get_value() << '-' << '>' << " " << ref_op->get_name()->get_value() << ';' << endl;

ref_op = (T_ident*) ref_op->get_next();
}
operation = (T_op*)operation->get_next();
}
}

int function main(int argc, char* argv[]) {
const string filename=argv[1];
file << "digraph G {" << endl;
file << "rankdir=BT;" << endl;
file << "subgraph cluster0 {" << endl;
//Initialisation du systeme des ressources
init_resource_manager() ;

// Initialisation du compilateur
init_compiler() ;
set_verbose_mode() ;

cout << "Reading file: " << argv[1] << endl;
T_betree *betree= compiler_syntax_analysis(filename.c_str());

// Chargement de tous les composants de la colonne de raffinement
betree=compiler_semantic_analysis(betree);

T_machine *mch = betree->get_root();
T_machine *mcha = mch;
mch = mch->get_ref_specification(); // Specification de la colonne de raffinement
parse_operation(mcha);
file << " }" << endl;
file << "subgraph cluster1 {" << endl;

do{
file << "subgraph cluster2" << endl;
cout << "Current component : " << mcha->get_machine_name()->get_name()->get_value() << endl;
mcha = mcha->get_ref_abstraction();
parse_operation(mcha);
file << "}" << endl;
}
while (mch != mcha);
file << '}' << endl;
}

merci d'avance !

1 réponse

Messages postés
6
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009

j'ai oublier de vous dire, tout doit se faire, je pense aux alentours (avant, aprés) de la boucle, donc la ligne clé est, je crois parse_opérations(mcha);