Probleme avec getline istringstream dans un for [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
25 mars 2005
-
Messages postés
1
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
-
bonjour je suis en train de créer un programme lisant un lsystem et en resort des coordonnées...
J'en suis au début cad la lecture du fichier lsystem:
celui ci ce compose de cette manière:
1ere ligne : nombre de regles
2nde ligne: nbre de caracteres max par regles
a partir de la 3eme : les regles lignes par lignes.

voici le code :
#include
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <string>
#include <sstream>


using namespace std;


// Le programme recoit 5 paramètres sur la ligne de commande :
// 1- le nom d'un fichier contenant la description d'un L-system.
// 2- un nombre en virgule flottante indiquant la longueur d'un segment.
// 3- un nombre en virgule flottante indiquant un angle de rotation (indiqué en radians).
// 4- un entier indiquant un n° de génération.
// 5- le nom d'un fichier dans lequel le programme doit écrire ses résultats.


main(int argc, char **argv)
{
char **regles;
double l,a;
int g,nr,mc;
string R,n,m;
l=atof(argv[2]);
a=atof(argv[3]);
g=atoi(argv[4]);
ifstream fi(argv[1]);
ofstream fo(argv[5]);

getline(fi,n);
istringstream N(n);
N>>nr;
getline(fi,m);
istringstream M(m);
M>>mc;
regles=new char*[mc+1];
*regles=new char[nr];

for(int i=0;i!=nr+1;i++)
{
getline(fi,R);
istringstream RG(R);
RG >> regles[i];
cout<<regles[i]<<endl;
system("pause");
}
system("pause");
}



Le code compile avec devc++5 et le programme se lance, cependant le programme s'arrete dans le for lors de la lecture de la derinière regle dans le fichier... fin bref je ne comprend pas car ca fonctionne pour le regles davant qui se mettent tranquillement dans le tableau regle pis lors de la dernière le for ne se finit mm pas le prog se quitte...
merci de votre aide...

7 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Il y a une mauvaise gestion du tableau
regles=new char*[nr];
for(i = 0; i < nr; i++)
regle[i] = new char[mc+1];

=> cela crée un tableau de nr chaines de mc char.

pour lire :
for(i=0;i < nr;i++)
{
}

// pour deétruire le tableau :
for(i = 0; i < nr; i++)
delete[] regle[i];
delete[] regle;
Messages postés
3
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
25 mars 2005

merciiii bcp...

c bien sympa ca ma fait gagner pas mal de tps ;)
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Tu gagnerais beaucoup de temps en utilisant la STL :)
Messages postés
3
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
25 mars 2005

heu... c koi la STL ?
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
4
Une partie de la bibliothèque standard du C++ (SL) proposant divers
type de conteneurs et d'algorithmes génériques basés autour du concept
d'iterateur. On l'appel STL (Standard Template Library, bibliothèque
standard de modeles) car c'était son nom à l'époque du C++
pré standard, elle à été dévelopée par SGI et HP à partir de 1994.



L'article sur wikipedia:

http://fr.wikipedia.org/wiki/Standard_Template_Library



La documentation sur le site de SGI:

http://www.sgi.com/tech/stl/





Par exemple l'entete <string> que tu utilises et le modele
std::basic_string (dont std::string est un typedef) fait partie de la
STL.
Messages postés
1
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
1 avril 2005

C'est pas bien de faire faire sont projet info par d'autre ...

Madame Warzée y met tellement de coeur ...



heheheh
Messages postés
1
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005

Bonjour je constate que Riminii a eu le même projet informatique que moi,

en revanche je n'arrive pas sur DEV ++ à mettre un fichier en entrée comment est ce qu'on peut faire??