Platoche Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 allez, viens rejoindre la secte de ceux qui ne comprennent ni les femmes ni l'Equipe.fr.... ouai il le faut Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 photo prise par un pote de Grenoble. le "public" visé par cette boutique n'est pas dur à reconnaitre. lachez vos comm Citer
Akinsson Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 (modifié) Voilà, j'ai fait mon rebelle sur le topic après match Je maintiens que le nul n'aurait pas été un scandale Modifié 5 mai 2007 par Aki Citer
edu Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Voilà, j'ai fait mon rebelle sur le topic après match Je maintiens que le nul n'aurait pas été un scandale C'est vrai que le terme de "match nul" est ici tres adapté Citer
Mikhaïl Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Malgrès cette belle saison, j'ai un gout amer entre les non-matchs à l'extèrieur et l'arbitrage peu souvent clément envers nous. Puis j'ai l'impression que y a qu'à Toulouse qu'on refuse des buts valables, j'aimerais en voir des arbitres qui refusent ces même buts au Vélodrome . Pourtant, Sadran n'a pas l'air si désabusé envers l'arbitrage dans son interview, il doit se dire que ca sert à rien et la joue grand seigneur, mais au fond il a les boules j'imagine Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Quelqu'un sait comment on ouvre un putain de fichier (.txt) en c++? Il me semblait que c'était ifstream fichier_in(); open.fichier_in(test.txt); Mais ça marche pas..fichier_in(test.txt).open non plus, etc.. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Quelqu'un sait comment on ouvre un putain de fichier (.txt) en c++? Il me semblait que c'était ifstream fichier_in(); open.fichier_in(test.txt); Mais ça marche pas..fichier_in(test.txt).open non plus, etc.. fopen puis fread ? Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 fopen puis fread ? je penche aussi pour cette solution Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 fopen puis fread ? fopen("test test.txt"); fopen("test.txt"); Marche pô.. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 fopen("test test.txt"); fopen("test.txt"); Marche pô.. http://www.cplusplus.com/reference/clibrar...tdio/fopen.html Tu codes sous quel logiciel ? Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 (modifié) fopen("test test.txt"); fopen("test.txt"); Marche pô.. faut indiquer si t"ouvres en lecture, écriutre, lecture/écriture édit: le lien de FF reprend ça, je me sui fait grillé je cherchais aussi un lien Modifié 5 mai 2007 par BenBDF Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 http://www.cplusplus.com/reference/clibrar...tdio/fopen.html Tu codes sous quel logiciel ? sous Dev cpp j'vais voir le lien, ça devrait m'aider faut indiquer si t"ouvres en lecture, écriutre, lecture/écriture édit: le lien de FF reprend ça, je me sui fait grillé je cherchais aussi un lien c'est la première fois que j'utilise les fichiers, j'vais essayer de me démerder avec.. J'me suis tapé la programmation du jeu "le compte est bon" cf romejko, c'est pas compliqué mais ça fait plaisir de voir que ça marche après (je vais voir) 630 lignes (donc 580 écrites environ).. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 sous Dev cpp j'vais voir le lien, ça devrait m'aider c'est la première fois que j'utilise les fichiers, j'vais essayer de me démerder avec.. J'me suis tapé la programmation du jeu "le compte est bon" cf romejko, c'est pas compliqué mais ça fait plaisir de voir que ça marche après (je vais voir) 630 lignes (donc 580 écrites environ).. Au fait, ne pas oublier le fclose Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Au fait, ne pas oublier le fclose la mémoire te dira merci Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 ifstream fichier_in; fichier_in.open ("test.txt"); en fait, ces 2 lignes me conviennent à merveille. si quelqu'un veut s'éclater au jeu "le compte est bon", ya aucun problème. //************************ Application console (C++)**************************** //****************************************************************************** // PROGRAMME : Le compte est bon // DATE : 02/05/07 // OBJET : ou pas // LIMITES : ou pas // AUTEUR(S) : bluejark //****************************************************************************** /* si vous construisez un projet et si vous utilisez une des bibliothèques de iutupadte (cf. aide en ligne) : -1- décommentez la ligne suivante et cliquez sur [projet|options du projet|parametre|editeur de lieus|ajouter fichier] puis rechercher la(les) bibliothèque(s) *.a sous ...\dev-cpp\lib\iut_tlse3 -2- dans le paragraphe suivant décommentez le(s) fichiers(s) d'entête *.h ou *.hpp qui permet(tent) d'inclure les déclaration des fonctions utilisées */ //#define _IUT_TLSE3_PROJ /* Ce paragraphe permet de déclarer les fonctions des fichiers suivants : conio-bis - gestion de fenêtres dos, de couleurs, lecture sans écho... dos-bis - gestion du temps, attentes... frame - tracé de cadres, grilles, traits, flèches... transcode - affichage avec accents ou sans accent sous dos ou windows keys-fr - liste des clés sous forme de noms symboliques iutupdate - inclut tous les fichiers précédents en une seule fois (cf le fichier de présentation iutupdate.pdf dans l'aide en ligne) => pour utiliser les bibliothèques "décommenter" les lignes correspondantes */ //#include <iut_tlse3\iutupdate.hpp> //inclut en une fois tous les fichiers //#include <iut_tlse3\frame.hpp> //inclut en outre conio-bis //#include <iut_tlse3\conio-bis.h> //#include <iut_tlse3\dos-bis.h> //#include <iut_tlse3\transcode.hpp> //#include <iut_tlse3\keys-fr.h> #include <iostream> // flux d'entrée sortie #include <iomanip> // manipulateurs de flux #include <cstdlib> // bibliothèque c standart #include <stdlib.h> #include <string.h> #include <stdio.h> #include <fstream> #include <iut_tlse3\iutupdate.hpp> using namespace std; // permet d'utiliser les flux cin et cout //*************************** Déclaration globale ****************************** /***** constante *****/ /******* type ********/ typedef int tabobjets [15]; /***** fonction ******/ void choix_menu (int &choixmenu) { //Décla //Actions cout<<w2d("1.Règles")<<endl<<"2.Ee but defini"<<endl<<"3.Objets définis"<<endl<<"4.Random"<<endl; cin>>choixmenu; } void choisirbut (int &lebut) { //Décla //Actions do{ cout<<"Donnez moi un chiffre entre 100 et 999"<<endl; cin>>lebut; } while (lebut<100 or lebut>999); } void choisirobjets (tabobjets &objets) { //Décla int i,j; int etat; //Actions for (i=0;i<6;i++) objets[i]=0; for (i=0;i<6;i++) { do { etat=0; cout<<endl<<"Donnez votre chiffre n°"<<i+1<<" :"<<endl; cin>>objets[i]; if (objets[i]==1 or objets[i]==2 or objets[i]==3 or objets[i]==4 or objets[i]==5 or objets[i]==6 or objets[i]==7 or objets[i]==8 or objets[i]==9 or objets[i]==10 or objets[i]==25 or objets[i]==50 or objets[i]==75 or objets[i]==100) {for (j=0;j<i;j++) if (objets[i]!=objets[j]) { etat=etat+0; } else etat=1; } else etat=1; } while (etat==1); } } void creerbut (tabobjets objects, int &lebut) { //Décla int i,j,k,inter; tabobjets objets; //Actions do { for (k=0;k<6;k++) {objets[k]=objects[k];} i=rand()%6; lebut=objets[i]; for (j=i;j<5;j++) objets[j]=objets[j+1]; i=rand()%5; lebut=lebut*objets[i]; for (j=i;j<4;j++) objets[j]=objets[j+1]; i=rand()%4; inter=objets[i]; for (j=i;j<3;j++) objets[j]=objets[j+1]; i=rand()%3; lebut=lebut+objets[i]*inter; for(j=i;j<2;j++) objets[j]=objets[j+1]; i=rand()%2; lebut=lebut-objets[i]; for(j=i;j<1;j++) objets[j]=objets[j+1]; lebut=lebut+objets[0]; } while (lebut<100 || lebut>999); } void creerobjets (tabobjets &objets, int lebut) { //Décla tabobjets liste={1,2,3,4,5,6,7,8,9,10,25,50,75,100}; int i,j,k,l,m,n,a,test; //Actions test=0; for (i=0;i<14;i++) {for(j=0;j<14;j++) {for(k=0;k<14;k++) {for(l=0;l<14;l++) {for(m=0;m<14;m++) {for(n=0;n<14;n++) {if (i!=j && i!=k && i!=l && i!=m && i!=n && j!=k && j!=l && j!=m && j!=n && k!=l && k!=m && k!=n && l!=m && l!=n && m!=n) { a=(liste[i]*liste[j])+(liste[k]*liste[l])-liste[m]+liste[n]; if(a==lebut) {test=test+1; if (test==1) {objets[0]=liste[i]; objets[1]=liste[j]; objets[2]=liste[k]; objets[3]=liste[l]; objets[4]=liste[m]; objets[5]=liste[n]; } } } } } } } } } } void genererbut(int &lebut) { //Décla //Actions srand(time(NULL)); lebut=rand()%900+100; } void affichageobjetsbut (tabobjets &objets, int attempt) { //Décla int i; //Actions cout<<endl<<"Vos 6 nombres sont: "<<endl; for (i=0;i<6;i++) {cout<<objets[i]<<" "; } cout<<endl<<"Le but est: "; cout<<attempt<<endl; } void traitement (tabobjets objects, int &lebut, int butreel) { //Décla char op; int choix,a,b,i,test,valobjet; tabobjets objets; int testm,testd; //Actions do{ for(i=0;i<6;i++) {objets[i]=objects[i];} testm=0; testd=0; cout<<endl<<"Faites votre premier calcul"<<endl; do{ test=0; cin>>a; for(i=0;i<6;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<5;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<w2d("Mauvais choix d'opérateur. Choix: +,-,*,/")<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<5;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<4;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[4]=a*b; } else if(op=='/') objets[4]=a/b; else if (op=='+') objets[4]=a+b; else if (op=='-') objets[4]=a-b; if (objets[4]<0) {testm=1;} if(op=='/') { if((objets[4]*!=a)//Regarde si a/b == (a/:angry:*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<5;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<w2d("Voulez vous arrêter ici?0/1: "); cin>>choix; } while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<5;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre second calcul"<<endl; do{ test=0; cin>>a; for(i=0;i<5;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<4;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<w2d("Mauvais choix d'opérateur. Choix: +,-,*,/")<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<4;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<3;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[3]=a*b; } else if(op=='/') objets[3]=a/b; else if (op=='+') objets[3]=a+b; else if (op=='-') objets[3]=a-b; if (objets[3]<0) {testm=1;} if(op=='/') { if((objets[3]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<4;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<w2d("Voulez vous arrêter ici?0/1: "); cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<4;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<w2d("Faites votre troisième calcul")<<endl; do{ test=0; cin>>a; for(i=0;i<4;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<3;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<w2d("Mauvais choix d'opérateur. Choix: +,-,*,/")<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<3;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<2;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[2]=a*b; } else if(op=='/') objets[2]=a/b; else if (op=='+') objets[2]=a+b; else if (op=='-') objets[2]=a-b; if (objets[2]<0) {testm=1;} if(op=='/') { if((objets[2]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<3;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<w2d("Voulez vous arrêter ici?0/1: "); cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<3;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<w2d("Faites votre quatrième calcul")<<endl; do{ test=0; cin>>a; for(i=0;i<3;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<2;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<w2d("Mauvais choix d'opérateur. Choix: +,-,*,/")<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<2;i++) {if (b==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<1;i++) {objets[i]=objets[i+1];} } } while (test==0); if(op=='*') {objets[1]=a*b; } else if(op=='/') objets[1]=a/b; else if (op=='+') objets[1]=a+b; else if (op=='-') objets[1]=a-b; if (objets[1]<0) {testm=1;} if(op=='/') { if((objets[1]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); for(i=0;i<2;i++) cout<<endl<<"Ojbet"<<i+1<<":"<<objets[i]; cout<<endl<<"Le but est: "<<butreel; do{ cout<<endl<<w2d("Voulez vous arrêter ici?0/1: "); cin>>choix; }while(choix!=0 && choix!=1); if (choix==1) { do{ test=0; cout<<endl<<"Entrez votre nombre"; cin>>lebut; for(i=0;i<2;i++) {if(lebut==objets[i]) {test=test+1;} else test=test; } }while(test==0); cout<<endl<<"Votre total est "<<lebut<<endl; } else { do{ testm=0; testd=0; cout<<endl<<"Faites votre dernier calcul"<<endl; do{ test=0; cin>>a; for(i=0;i<2;i++) {if (a==objets[i]) {test=test+1; valobjet=i;} else test=test; } if (test==0) {cout<<"Nombre 1 invalide. Rechoisissez-en un:"<<endl;} else {for(i=valobjet;i<1;i++) {objets[i]=objets[i+1];} } } while (test==0); do{ cin>>op; if (op!='+' && op!='-' && op!='/' && op!='*') cout<<w2d("Mauvais choix d'operateur. Choix: +,-,*,/")<<endl; } while (op!='+' && op!='-' && op!='/' && op!='*'); do{ test=0; cin>>b; for(i=0;i<1;i++) {if (b==objets[i]) {test=test+1;} else test=test; } if (test==0) {cout<<"Nombre 2 invalide. Rechoisissez-en un:"<<endl;} } while (test==0); if(op=='*') {objets[0]=a*b; } else if(op=='/') objets[0]=a/b; else if (op=='+') objets[0]=a+b; else if (op=='-') objets[0]=a-b; if (objets[0]<0) {testm=1;} if(op=='/') { if((objets[0]*!=a)//Regarde si a/b == (a/B)*b, pour voir s'il n'y a pas troncature {testd=1;} } }while(testm==1 || testd==1); lebut=objets[0]; cout<<endl<<"Votre total est: "<<lebut<<endl; } }}} } //*************************** Programme principal ****************************** int main (int argc, char *argv[]) { // Déclaration locale int choixdumenu, but, bututil; tabobjets six; int i; int reboot; FILE * fichier; // Action fichier=fopen ("test.txt","r"); do { choix_menu(choixdumenu); if (choixdumenu==2) { choisirbut(but); creerobjets(six,but); } else if (choixdumenu==3) {choisirobjets(six); creerbut(six,but); } else if (choixdumenu==4) { genererbut(but); creerobjets(six,but); } affichageobjetsbut (six, but); cout<<"Proposez votre solution"; traitement(six,bututil,but); cout<<"Voulez vous recommencer? 0 pour non, 1 pour oui"; cin>>reboot; } while (reboot==1); // retour au sytème d'exploitattion cout << endl; system("pause"); return (0); } //**************************** Fin du programme *******************************[/codebox] Amusez vous bien. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 ifstream fichier_in; fichier_in.open ("test.txt"); en fait, ces 2 lignes me conviennent à merveille. si quelqu'un veut s'éclater au jeu "le compte est bon", ya aucun problème. Amusez vous bien. Et le fclose Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et le fclose il veut pas te croire, quel rebelle Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et le fclose il veut pas te croire, quel rebelle Ca marchait très bien :ninja: Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. Citer
FF Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Ca marchait très bien Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. Il faut copier le contenu du fichier dans ta chaine de caractères, et pas le fichier directement dans la chaine. Donc fopen, puis fread, et le contenu du buffer dans ta chaine... Et puis fclose Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Il me reste un dernier point où je galère, mais j'vais pas vous demander pourquoi on ne peut pas strcpy mon fichier_in dans une chaine de caractères, hein. ouais c'est u peu vieux pour moi et FF a très bien répondu je pense il est costaud Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Et puis fclose Effectivement, le compilateur n'a pas apprécié le non closage.. Bon eh bien je galère avec les fichiers, je verrai ça avec le prof'. Merci quand même Tcho Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée. Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow. La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens. En même temps on est sur le LTDTLMSB :geek: Citer
GandhiWallemme Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Cependant il faut préférer la fonction strncpy à la focntion strcpy qui présente une énorme faille de sécurité du fait qu'aucune taille de chaine d'entrée n'est spécifiée. Ainsi un petit malin pour passer dans ton code un chaine trop grande permettant un accès à des données qui n'auraient pas du l'être grace à un magnifique Overflow. La fonction strncpy prend en argument une taille pour la chaine de caractère limtant l'effet précédent. il y a tout de meme une technique mais bon je ne vais pas m'étendre la dessus, ça fait mal à la tête de la plupart des gens. En même temps on est sur le LTDTLMSB :geek: Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. Citer
Bengijol Posté(e) 5 mai 2007 Posté(e) 5 mai 2007 Ouais, enfin vient fouiner dans mon jeu le compte est bon si t'as que ça à branler (et si je le fous sur le net), ça me dérangera pas. ça peut servir on sait jamais et il faudrait que tu le mette sur le net et que l'on ait besoin de passer une variable en GET ou par formulaire donc c pas immédiat comme faille non plus mais bon mon coté geek a repris le dessus un court instant. Citer
Messages recommandés
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.