Je reçois une chaine de caractère de type <nombre1>/<nombre> ex 1020 / 14754
J'aimerais récupérer le tout dans un char, que le programme récupère les deux nombres, me les mettes dans des double et pour les faire calculer à la fin.
Actuellement, je bloque sur le traitement:
Il faudrait après le char c = entrer[i];
récupérer chaque chiffre pour reformer le nombre dans un double, et une fois un espace détecter supprimer jusqu'au prochain chiffre pour rebelote.
Je n'ai pas les compétences nécessaires mais j'aimerais si possible avoir des pistes même différentes de ma méthode, sans donner une réponse ( je ne travaillerais pas sinon ;( ).
C'est moins évident qu'il n'y parait car strtod prend un tableau de char en argument mais pas un string: - #include <iostream> #include <string> #include <cstdlib> int main(void) { std::string entree; std::getline(std::cin, entree); std::cout << "*" << entree << "*" << std::endl; char *end; double nombre = std::strtod(entree.c_str(), &end); std::cout << nombre << std::endl; std::cout << "*" << std::strtod(end, &end) << std::endl; } - *1234 5678* 1234 *5678
Le Tout est souvent plus grand que la somme de ses parties.
Je resterai "simple" pour éviter de me cogner le décodage du séparateur.
#include <sstream>
....
// en supposant que l'on ait une chaine au départ et pas un fichier
std::string in = "1020 / 14754";
std::istringstream iss(in);
double d1, d2;
std::string sep;
if (! (iss >> d1 >> sep >> d2) || sep != "/" )
throw ...
// note pour bien faire, on pourrait aussi tester qu'il ne reste rien dans le flux
Est-il possible d'avoir le "cout" final dans le press papier directement ? car l'objectif est d'être rapide.
L'objectif du programme est de terminer un challenge IRC. Je dois rentrer une commande a un bot sur un Chanel IRC ce bot me renvoie donc une suite comme préciser plus haut <nombre1> / <nombre2> ensuite j'ai 2 secondes pour pour renvoyer le résultat "c'est un peu court ^^'. je ne connais pas bien les chat IRC donc je ne sais pas s’il est possible de récupérer les valeurs du bot dans le programme.
Pour plus de précision il s'agit du challenge sur le site capture the flag section programmation premier challenge.
Il existe d'autre méthode mais j'aimerais me spé en C++ d'ou la raison de rechercher une solution en c++.
Est-il possible d'avoir le "cout" final dans le press papier directement ? car l'objectif est d'être rapide.
L'objectif du programme est de terminer un challenge IRC. Je dois rentrer une commande a un bot sur un Chanel IRC ce bot me renvoie donc une suite comme préciser plus haut <nombre1> / <nombre2> ensuite j'ai 2 secondes pour pour renvoyer le résultat "c'est un peu court ^^'. je ne connais pas bien les chat IRC donc je ne sais pas s’il est possible de récupérer les valeurs du bot dans le programme.
Pour plus de précision il s'agit du challenge sur le site capture the flag section programmation premier challenge.
Il existe d'autre méthode mais j'aimerais me spé en C++ d'ou la raison de rechercher une solution en c++.
Est-il possible d'avoir le "cout" final dans le press papier directement ? car l'objectif est d'être rapide.
L'objectif du programme est de terminer un challenge IRC. Je dois rentrer une commande a un bot sur un Chanel IRC ce bot me renvoie donc une suite comme préciser plus haut <nombre1> / <nombre2> ensuite j'ai 2 secondes pour pour renvoyer le résultat "c'est un peu court ^^'. je ne connais pas bien les chat IRC donc je ne sais pas s’il est possible de récupérer les valeurs du bot dans le programme.
Pour plus de précision il s'agit du challenge sur le site capture the flag section programmation premier challenge.
Il existe d'autre méthode mais j'aimerais me spé en C++ d'ou la raison de rechercher une solution en c++.
Pourquoi tu as viré le traitement de l'erreur? Si le décodage n'est pas possible, il faut le signaler.
Et vu ce qui est fait, pas besoin de toute la partie cin -> getline -> chaine -> istringstream. Tu peux directement extraire depuis std::cin
Quant à la vitesse, ce n'est pas sur cette partie que tu vas avoir un problème.
Après côté intégration avec le cannal IRC, aucune idée de comment ça va marcher.
Okk merci des détails, je ne m'y connais pas en traitement d'erreur et throw me bloquer le lancement quand il arrivé après le if je ne savais pas pourquoi...
Parce qu'il fallait remplacer les 3 points, ou l'ensemble par la gestion des erreurs qui va bien.
Là ton sqrt ne s'exécutera que s'il y a une erreur dans le décodage. Je doute que cela soit ce que tu veuilles.
Ah Je recode ça quand je peux, et j'enverrais le final pour savoir si j'ai mieux bosser ^^;
merci pour l'assistance.
Je suis unique, comme toi !
Traitement d'un string
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.