BeCe999 | Bonjour,
J'ai un problème sur une fonction de date comme dit dans mon titre.
Je ne comprend pas pourquoi le mktime me renvoie -1
C'est pour faire un calculateur de temps pour un jeu en ligne.
Voici le code :
Code :
- #include <iostream>
- #include "math.h"
- #include "time.h"
- using namespace std;
- double calculateur(int coor_vivi_attaquant_x, int coor_vivi_attaquant_y, int coor_vivi_cible_x, int coor_vivi_cible_y, char unite[15]);
- int main()
- {
- // Déclarations des variables
- char village_cible[40], village_attaquant[40];
- int coor_vivi_cible_x, coor_vivi_cible_y, coor_vivi_attaquant_x, coor_vivi_attaquant_y;
- char unite[15];
- double resultat = 0, resultat_soustra = 0, resultat_heure = 0, resultat_min = 0, resultat_sec = 0;
- double resultat_floor = 0;
- int resultat_floor_int = 0;
- struct tm temps = { 0 };
- // Phase de demande
- cout << "Quel est le nom du village attaquant ?" << endl;
- cin >> village_attaquant;
- cout << "Quels sont ses coordonnees en X ?" << endl;
- cin >> coor_vivi_attaquant_x;
- cout << "Quels sont ses coordonnees en Y ?" << endl;
- cin >> coor_vivi_attaquant_y;
- cout << "Quel est le nom du village cible ?" << endl;
- cin >> village_cible;
- cout << "Quels sont ses coordonnees en X ?" << endl;
- cin >> coor_vivi_cible_x;
- cout << "Quels sont ses coordonnees en Y ?" << endl;
- cin >> coor_vivi_cible_y;
- cout << "Quelle est l'unite la plus lente ?" << endl;
- cin >> unite;
-
- //mise en place du resultat dans une structure tm
- resultat = calculateur(coor_vivi_attaquant_x, coor_vivi_attaquant_y, coor_vivi_cible_x, coor_vivi_cible_y, unite);
- resultat_floor = floor(resultat);
- temps.tm_mday = resultat_floor;
- resultat_soustra = resultat - resultat_floor;
- resultat_heure = resultat_soustra * 24;
- resultat_floor = floor(resultat_heure);
- temps.tm_hour = resultat_floor;
- resultat_soustra = resultat_heure - resultat_floor;
- resultat_min = resultat_soustra * 60;
- resultat_floor = floor(resultat_min);
- temps.tm_min = resultat_floor;
- resultat_soustra = resultat_min - resultat_floor;
- resultat_sec = resultat_soustra * 60;
- resultat_floor = floor(resultat_sec);
- temps.tm_sec = resultat_floor;
- //affichage
- cout << temps.tm_mday << "/" << temps.tm_mon << "/" << temps.tm_year << " ";
- cout << temps.tm_hour << " : " << temps.tm_min << " : " << temps.tm_sec << endl;
- cout << "Soit : " << temps.tm_mday << " jour(s), " << temps.tm_hour << " heure(s), " << temps.tm_min << " minute(s) et "
- << temps.tm_sec << " seconde(s)." << endl;
- time_t epoch = mktime(&temps);
- cout << epoch << endl;
- return 0;
- }
- double calculateur(int coor_vivi_attaquant_x, int coor_vivi_attaquant_y, int coor_vivi_cible_x, int coor_vivi_cible_y, char unite[15])
- {
- double valeur = 0, valeur2 = 0, result_valeur = 0, absolue = 0, absolue2 = 0;
- double puissance = 0, puissance2 = 0, racine = 0, valeur_calculee = 0;
- int unites_const = 0;
- char comte[15] = "Comte", templier[15] = "Templier", ecuyer[15] = "Ecuyer", sauvage[15] = "Sauvage", grand_arc[15] = "Grand Arc";
- char eclaireur[15] = "Eclaireur", croise[15] = "Croise", chevalier_noir[15] = "Chevalier Noir", belier[15] = "Belier";
- char trebuchet[15] = "Trebuchet";
- if (strcmp(unite, comte) == 0)
- unites_const = 35;
- if (strcmp(unite, templier) == 0)
- unites_const = 22;
- if (strcmp(unite, ecuyer) == 0)
- unites_const = 18;
- if (strcmp(unite, sauvage) == 0)
- unites_const = 18;
- if (strcmp(unite, grand_arc) == 0)
- unites_const = 18;
- if (strcmp(unite, trebuchet) == 0)
- unites_const = 30;
- if (strcmp(unite, eclaireur) == 0)
- unites_const = 9;
- if (strcmp(unite, croise) == 0)
- unites_const = 10;
- if (strcmp(unite, chevalier_noir) == 0)
- unites_const = 11;
- if (strcmp(unite, belier) == 0)
- unites_const = 30;
- valeur = coor_vivi_cible_x - coor_vivi_attaquant_x;
- valeur2 = coor_vivi_cible_y - coor_vivi_attaquant_y;
- absolue = fabs(valeur);
- absolue2 = fabs(valeur2);
- puissance = pow(absolue, 2);
- puissance2 = pow(absolue2, 2);
- result_valeur = puissance + puissance2;
- racine = sqrt(result_valeur);
- valeur_calculee = racine * unites_const * 60 / 86400;
- return valeur_calculee;
- }
|
Si quelqu'un peut m'aider je lui en serais très reconnaissant je galère dessus depuis pas mal de temps. |