slt a tous,
g une toute petite question en ce qui concerne la commande ifstream ( qui permet la lecture de données inscrites dans un fichier texte).
voila: g mis ceci,
ifstream fichier("décembre.txt");
char txt [1024];
fichier>>txt;
cout<<("************ DECEMBRE ************")<<endl;
cout < <"donnees:"<<endl<<endl;
cout<<txt<<endl<<endl;
int i;
for(i=0;i<50;i++)
{
fichier>>txt;
cout<<txt<<endl<<endl;
}
mais le probleme est que mon fichier " décembre.txt" ne contient que trois lignes d´infos, et donc le programme réinsrit la derniere ligne jusqu´à ce qu´il affiche 50 lignes.
ma question est:
comment faire pour que le programme n´affiche qu le nombre exact de lignes qu´il y a dans le fichier sans pour autant que je doive à chaque fois changer le nombre de la boucle " for"(ici c´est 50)
merci d´avance
1 c´est 1 ![]()
le chiffre
comme 1=1 , bah la boucle boucle en permanence
je te montre un programme d´exemple :
int main()
{
/ / entree dans la boucle infinie
while(1)
{
/ / le choix
int choix;
cout<<"entrez le chiffre";
cin>> choix;
/ / on teste la valeur du resultat
if(choix==1)
{
/ / si la valeur est 1
cout<<"vous avez ecrit un";
}
/ / pareil pour 2,3,4
/ / 5 pour quitter ?
if( choix == 5)
{
break;
}
/ / parenthese de fin de la boucle while
}
return 0;
/ / fin du programme
}
slt a tous,
g un probleme avec la commande ifstream, je vous explique. g mis ces lignes de codes:
ifstream fichier("décembre.txt");
char txt [1024];
fichier>>txt;
cout<<("************ DECEMBRE ************")<<endl;
cout < <"donnees:"<<endl<<endl;
cout<<txt<<endl<<endl;
int i;
for(i=0;i<50;i++)
{
fichier>>txt;
cout<<txt<<endl<<endl;
}
et tout s´affiche bien, sauf que le fichier " décembre" ne comporte que cinq ligne de textes et que donc le programme affiche plein de fois la dernière ligne jusq´à ce qu´il ai afficher 50 lignes de données ( car le nombre de fois que la boucle s´effectue est égal à 50.
ma question est la suivante:
comment faire pour que le programme n´affiche que le nombre de ligne de texte contenues dans le fichier " décembre" sans pour autant que je doive à chaque fois ouvrir le code source c++ pour modifier la boucle " for" en fonction du nombre de ligne de données
merci d´avance
le break casse la boucle ?
Parce que comment retourne t-on au menu quand onse trouve dans le sous titre n°1 par exemple ?
Par " Break" ? Ou Break sert juste à casser pour s´échapper du programme ? Merci ![]()
Je me demande comment fait-on sa propre librairie, faut-il insérer de l´assembleur dans le code c++ ou es-ce entièrement en c++. Pourriez-vous me dire un peu comment c´est fait ou un tuto pour en faire?
Désolé je ne sais pas.
je ne comprends pas!
je bloque avec ce -> et ca menerve!
ca veut dire quoi?
( vous me l´avez expliqué mais la..........jai du mal)
vous pouvez me le dire dela maniere la plus simple possible merci d´avance
c la que jai vu -> ( apres je devrai comprendre le reste ^^)
/ *
SDL_Surface* LoadBMP(char* fichier) / / 2eme forme
{
SDL_Surface* f = SDL_LoadBMP(fichier); // charge l´image dans f en RAM
SDL_Surface* surface=SDL_CreateRGBSurface(SDL_HWSURFACE, 1024, 768, 32, 0, 0, 0, 0); / / cree une image en VRAM
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,firstscreen,&); // copie l´image f de la RAM vers firstscreen en VRAM
SDL_FreeSurface(f); / / supprime la surface f : inutile maintenant --> libere la mémoire
return surface;
}
/ *
SDL_Surface* LoadBMP(char* fichier,int vram=1) / / 3e forme
{
SDL_Surface* f = SDL_LoadBMP(fichier); // charge l´image dans f en RAM
SDL_Surface* r=NULL;
if ( vram)
r=SDL_CreateRGBSurface(SDL_HWSURFACE, f->w, f->h, 32, 0, 0, 0, 0);// cree une image en VRAM
if ( r==NULL) vram=0; // Si plus de place en VRAM, alors r= NULL.
if ( !vram)
r=SDL_CreateRGBSurface(SDL_SWSURFACE, f->w, f->h, 32, 0, 0, 0, 0); / / cree une image en VRAM
SDL_Rect R=Rect(0,0,f->w,f->h);
SDL_BlitSurface(f,NULL,r,&); // copie l´image f de la RAM vers firstscreen en VRAM
SDL_FreeSurface(f); / / supprime la surface f : inutile maintenant --> libere la mémoire
return r;
}
super, encore un problème !
Cette fois, j´ai mes fourchettes de conditions
/ / entrée du choix
cout < < " Votre choix est :";
cin > > choix;
cout < < endl;
/ / Pour quitter choix n°5
if ( choix == 5)
{
cout < < " Merci d´avoir utilise Babas Travail et Energies Version educative 2.0" < < endl;
system ( "Pause");
return 0;
}
/ / Erreur choix
if ( choix > 5 && choix < 1);
{
cout < < " Vous vous etes trompes. Merci d´entrer une valeur entre 1 et 5";
}
/ / L´energie cinétique choix n°1
if ( choix == 1 ) ;
{
. ....
}
---------------------------------------
Je ne comprends pas, si je tape n´importe quel chiffre, j´obtiens tous les messages.
Par exemple, si je tapes " 7" dansla variable " choix", c´est comme toutes mes fourchettes de condition
if ( choix == 5);
if ( choix > 5 && choix < 1);
if ( choix == 1 ) ;
affichent ce qui leur est alloué..
Si je tape 7, l´ordinateur pense donc que variable choix = 7 = 5 = > 5 = < 1 ce qui est parfaitement illogique....
En fait, il l´affiche dans l´ordre, comme si cela ne dépendait d´aucune fourchette de condition....
Vous pensez que cela vient de quoi ?
Sinon, j´ai toujorus un problème de boucle....
Merci d´avance de votre aide....
( Faut dire que depuis la fin dela matinée,je suis sur l´ordi,alors je commence à saturer... ai-je rater un truc ? ??)
@+ tard
sonic66 > > Le signe -> veut dire qu´un pointeur pointe sur quel que chose exemple.
SDL_Screen *Something;
Something->w;//Le pointeut de clsse prends l´adresse du membre w.
extasy89 > > le membre tellp donne la longueur, donc tu dois faire:
ifstream fichier("décembre.txt");
char txt [1024];
int longueur;
fichier>>txt;
cout<<("************ DECEMBRE ************")<<endl;
cout<<"donnees:"<<endl<<endl;
cout<<txt<<endl<<endl;
int i;
longueur=fichier.tellp();
for(i=0;i<longueur;i++)
{
fichier>>txt;
cout<<txt<<endl<<endl;
}
a ok!
si ca prend ladreese dun int=3 par exemple , ca reviendra au meme que decrire 3!
j´ai compris!
!!!!!
a ok!
si ca prend ladreese dun int=3 par exemple , ca reviendra au meme que decrire 3!
j´ai compris!
!!!!!
sonic66 > > Regarde se code.
int main()
{
int i=3;
int *f=&
*f=4;
cout < <i<<endl;
system("PAUSE");
}
Tu pense qu´il afficheras combien?
super, encore un problème !
Cette fois, j´ai mes fourchettes de conditions
/ / entrée du choix
cout < < " Votre choix est :";
cin > > choix;
cout < < endl;
/ / Pour quitter choix n°5
if ( choix == 5)
{
cout < < " Merci d´avoir utilise Babas Travail et Energies Version educative 2.0" < < endl;
system ( " Pause");
return 0;
}
/ / Erreur choix
if ( choix > 5 && choix < 1);
{
cout < < " Vous vous etes trompes. Merci d´entrer une valeur entre 1 et 5";
}
/ / L´energie cinétique choix n°1
if ( choix == 1 ) ;
{
. . ...
}
---------------------------------------
Je ne comprends pas, si je tape n´importe quel chiffre, j´obtiens tous les messages.
Par exemple, si je tapes " 7" dansla variable " choix", c´est comme toutes mes fourchettes de condition
if ( choix == 5);
if ( choix > 5 && choix < 1);
if ( choix == 1 ) ;
affichent ce qui leur est alloué..
Si je tape 7, l´ordinateur pense donc que variable choix = 7 = 5 = > 5 = < 1 ce qui est parfaitement illogique....
En fait, il l´affiche dans l´ordre, comme si cela ne dépendait d´aucune fourchette de condition....
Vous pensez que cela vient de quoi ?
Sinon, j´ai toujorus un problème de boucle....
Merci d´avance de votre aide....
( Faut dire que depuis la fin dela matinée,je suis sur l´ordi,alors je commence à saturer... ai-je rater un truc ? ? ?) Sinon, mes boucles posent toujorus problème :´(
@+ tard
3
( je ne suis pas sur)
car f est seulement a l´adresse de i , je ne pense donc pas qu´il pourrai changer les donnés de i
sonic66 > > Tombé dans le piege 4 ![]()
alors?
j´ai reussi le test? ^^
ho le co*!
ca veut pas dire f egal 4 mais ce qui a a l´adresse de i egal 4 ! chuis trop bete ![]()
allez! refais ce probleme et je te trouve la reponse
!
tu ma eu!
personne ne sait ?
Si ça se trouve, la réponse est évidente, mais bon, je crois ne plus avoir très bien les idées en place, lol
merci d´avance...