Script conversion duree
Résolu
godLike
Messages postés
277
Statut
Membre
-
pacorabanix -
pacorabanix -
Bonjour,
Voilà j'ai commencer un petit script en C++ sur Visual C++ 2005 qui demande à l'utilisateur de rentrer une durée en nombre de seconde. Ce script permet de convertir la durée entrée en seconde et de la mettre en Hh:Mm:Ss.
Donc j'ai ce code :
// tp_duree.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
struct TDuree
{
int nbSeconde;
int nbMinute;
int nbHeure;
void initialiser(int nbSec);
void initialiser(TDuree autreD);
void afficher();
int nbSecondes();
bool inferieurA(TDuree autreD);
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
TDuree operator+(TDuree autreD);
};
void TDuree::initialiser(int nbSec)
{
this->nbSeconde=(nbSec%60);
this->nbHeure=(nbSec/3600);
nbSec-=(this->nbSeconde)-(3600*this->nbHeure);
this->nbMinute=(nbSec/60);
}
int nbSecondes()
{
int nbSec;
return nbSec;
}
void TDuree::initialiser(TDuree autreD)
{
this->nbSeconde=d1.nbSeconde;
this->nbMinute=d1.nbMinute;
this->nbHeure=d1.nbHeure;
}
void TDuree::afficher()
{
cout<<"Nombre de seconde(s) :"<<this->nbSeconde<<endl;
cout<<"Nombre de minute(s) :"<<this->nbMinute<<endl;
cout<<"Nomnre d'heure(s) :"<<this->nbHeure<<endl;
}
int main()
{
int nbSec;
TDuree d1,autreD;
cout<<"Entrez une valeur en secondes"<<endl;
cin>>nbSec;
d1.initialiser(nbSec);
autreD.initialiser(d1);
d1.afficher();
autreD.afficher();
return 0;
}
Donc quand je l'execute, voici ma première erreur :
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(41) : error C2065: 'd1' : identificateur non déclaré
cela correspond à la fonction
void TDuree::initialiser(TDuree autreD)
{
this->nbSeconde=d1.nbSeconde; // le d1 de cette ligne
this->nbMinute=d1.nbMinute;
this->nbHeure=d1.nbHeure;
}
donc j'ai essayé dans ma fonction de trafiquer des trucs mais en vain, je suis vraiment perdu :(
et voici les suivantes (qui je pensent vont être réglées si j'arrive à regler la 1ere) :
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(41) : error C2228: la partie gauche de '.nbSeconde' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(42) : error C2228: la partie gauche de '.nbMinute' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(43) : error C2228: la partie gauche de '.nbHeure' doit avoir un class/struct/union
1> le type est ''unknown-type''
Merci par avance, cordialement.
Voilà j'ai commencer un petit script en C++ sur Visual C++ 2005 qui demande à l'utilisateur de rentrer une durée en nombre de seconde. Ce script permet de convertir la durée entrée en seconde et de la mettre en Hh:Mm:Ss.
Donc j'ai ce code :
// tp_duree.cpp : définit le point d'entrée pour l'application console.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
struct TDuree
{
int nbSeconde;
int nbMinute;
int nbHeure;
void initialiser(int nbSec);
void initialiser(TDuree autreD);
void afficher();
int nbSecondes();
bool inferieurA(TDuree autreD);
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
TDuree operator+(TDuree autreD);
};
void TDuree::initialiser(int nbSec)
{
this->nbSeconde=(nbSec%60);
this->nbHeure=(nbSec/3600);
nbSec-=(this->nbSeconde)-(3600*this->nbHeure);
this->nbMinute=(nbSec/60);
}
int nbSecondes()
{
int nbSec;
return nbSec;
}
void TDuree::initialiser(TDuree autreD)
{
this->nbSeconde=d1.nbSeconde;
this->nbMinute=d1.nbMinute;
this->nbHeure=d1.nbHeure;
}
void TDuree::afficher()
{
cout<<"Nombre de seconde(s) :"<<this->nbSeconde<<endl;
cout<<"Nombre de minute(s) :"<<this->nbMinute<<endl;
cout<<"Nomnre d'heure(s) :"<<this->nbHeure<<endl;
}
int main()
{
int nbSec;
TDuree d1,autreD;
cout<<"Entrez une valeur en secondes"<<endl;
cin>>nbSec;
d1.initialiser(nbSec);
autreD.initialiser(d1);
d1.afficher();
autreD.afficher();
return 0;
}
Donc quand je l'execute, voici ma première erreur :
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(41) : error C2065: 'd1' : identificateur non déclaré
cela correspond à la fonction
void TDuree::initialiser(TDuree autreD)
{
this->nbSeconde=d1.nbSeconde; // le d1 de cette ligne
this->nbMinute=d1.nbMinute;
this->nbHeure=d1.nbHeure;
}
donc j'ai essayé dans ma fonction de trafiquer des trucs mais en vain, je suis vraiment perdu :(
et voici les suivantes (qui je pensent vont être réglées si j'arrive à regler la 1ere) :
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(41) : error C2228: la partie gauche de '.nbSeconde' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(42) : error C2228: la partie gauche de '.nbMinute' doit avoir un class/struct/union
1> le type est ''unknown-type''
1>c:\users\matroska\documents\visual studio 2005\projects\tp_duree\tp_duree\tp_duree.cpp(43) : error C2228: la partie gauche de '.nbHeure' doit avoir un class/struct/union
1> le type est ''unknown-type''
Merci par avance, cordialement.
A voir également:
- Script conversion duree
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Modifier durée story facebook - Guide
- Durée lien wetransfer - Accueil - Services en ligne
2 réponses
bool inferieurA(TDuree autreD);
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
1) prends l'habitude de faire des class au lieu des struct, niveau conception objet (ce que fait piteusement struct) ce sera au final plus propre et clair. (Mais ce n'est pas le souci de ton prog)
2) lorsque tu fais de telles fonctions :
bool inferieurA(TDuree autreD);
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
il faut mieux passer en paramètres des "const TDuree&" au lieu des "TDuree". Sinon le programme fait une copie à chaque fois, ce qui peut être lourd (et sera problématique lorsque tu feras des class pour diverses raisons). Le "&" fait une référence au lieu d'une copie. le "const" c'est pour que ce soit plus propre, car en tu ne souhaites pas modifier les paramètres.
3) dans ce genre de fonction :
tu fais une erreur de logique. Tu veux retourner la valeur de nbSec de ton "objet" ?
Là tu déclares une *nouvelle* variable nbSec locale à la fonction, et qui masque l'autre. De plus tu ne l'initialises pas, ce qui fait qu'au final cette fonction va retourner quelque chose de complètement imprévisible.
4) Pour ton problème : tu veux copier des choses d'une autre variable "autreD" mais dans ton code tu marques "d1." ...
5)utilises les balises < code > comme ça les espaces seront préservés ;) (pour la lecture)
voilà bonne soirée et bonne continuation
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
1) prends l'habitude de faire des class au lieu des struct, niveau conception objet (ce que fait piteusement struct) ce sera au final plus propre et clair. (Mais ce n'est pas le souci de ton prog)
2) lorsque tu fais de telles fonctions :
bool inferieurA(TDuree autreD);
bool operator<(TDuree autreD);
TDuree total(TDuree autreD);
il faut mieux passer en paramètres des "const TDuree&" au lieu des "TDuree". Sinon le programme fait une copie à chaque fois, ce qui peut être lourd (et sera problématique lorsque tu feras des class pour diverses raisons). Le "&" fait une référence au lieu d'une copie. le "const" c'est pour que ce soit plus propre, car en tu ne souhaites pas modifier les paramètres.
3) dans ce genre de fonction :
int nbSecondes()
{
int nbSec;
return nbSec;
}
tu fais une erreur de logique. Tu veux retourner la valeur de nbSec de ton "objet" ?
Là tu déclares une *nouvelle* variable nbSec locale à la fonction, et qui masque l'autre. De plus tu ne l'initialises pas, ce qui fait qu'au final cette fonction va retourner quelque chose de complètement imprévisible.
4) Pour ton problème : tu veux copier des choses d'une autre variable "autreD" mais dans ton code tu marques "d1." ...
5)utilises les balises < code > comme ça les espaces seront préservés ;) (pour la lecture)
voilà bonne soirée et bonne continuation
Ok parce qu'en fait j'avais oublié un truc pour ça que j'avais void TDuree::initialiser(TDuree autreD)
Au lieu d'avoir void TDuree::initialiser(TDuree d1).
C'était ma mon main, j'avais oublié de corriger cette ligne:
autreD.initialiser(autreD);
donc là j'ai écrit
autreD.initialiser(d1);
et .. ça marche =)
merci bcp.
Au lieu d'avoir void TDuree::initialiser(TDuree d1).
C'était ma mon main, j'avais oublié de corriger cette ligne:
autreD.initialiser(autreD);
donc là j'ai écrit
autreD.initialiser(d1);
et .. ça marche =)
merci bcp.