Petit Problème - C++ - Programmation
Marsh Posté le 11-11-2016 à 18:04:29
theshockwave a écrit : = est un opérateur d'affectation. Dans tes if, tu voulais utiliser == qui est l'opérateur de comparaison |
Code :
|
Ah d'accord l'erreur de débutant
Merci beaucoup
J'avais oublié les parenthèses aussi
Marsh Posté le 11-11-2016 à 18:27:22
Grâce à toi j'ai avancé mais j'ai un autre soucis, bien qu'il soit mineur cette fois:
Code :
|
Au lieu de "Vous avez joué: " la console m'affiche "Vous avez jouÚ: ". merci encore
Marsh Posté le 11-11-2016 à 19:14:14
C'est un problème d'encodage. La table de caractères de ton éditeur de texte n'est pas la même que la table de caractères utilisée par ta console.
Si tu te restreins aux seuls caractères de la table ASCII, tu éviteras ce genre de souci (mais tu n'auras pas droit aux accents)
Marsh Posté le 11-11-2016 à 20:12:56
Le fait qu'il m'affiche un Ú veut surement dire qu'il y a aussi un caractère qui sera remplacé par é une fois compilé. Comment je trouve ce caractère?
Marsh Posté le 11-11-2016 à 22:42:39
Code :
|
Je laisse ça là si quelqu'un veut l'essayer ou changer quelque chose.
Je me demande bien comment je pourrais optimiser ce code...
Marsh Posté le 12-11-2016 à 01:04:37
ryngetsu a écrit : Le fait qu'il m'affiche un Ú veut surement dire qu'il y a aussi un caractère qui sera remplacé par é une fois compilé. Comment je trouve ce caractère? |
Le problème, c'est que tu n'as pas de garantie sur la table de caractères utilisée par la personne qui exécutera ton programme.
Donc oui, tu peux trouver quel caractères te donnera un "é" dans ton cas, mais ce ne sera pas standard et pas portable, d'où ma recommandation d'éviter ces caractères, pour t'assurer que tes messages seront lisibles par tous.
Marsh Posté le 12-11-2016 à 01:09:08
ryngetsu a écrit : Je me demande bien comment je pourrais optimiser ce code... |
Très honnêtement, pour un programme de ce genre, il n'y a aucune raison de se demander comment l'optimiser : ton processeur va se tourner les pouces en permanence en attendant les entrées de ton utilisateur.
Par contre, en terme de maintenabilité, tu as quelques options qui se présentent à toi.
Commence par identifier les blocs de logique et les mettre sous forme de fonction, par exemple, plutôt que d'avoir l'intégralité de ton programme directement dans ta fonction main.
Ton "goto Jeu" est quelque chose que n'importe quel programmeur professionnel te dira immédiatement de retirer. Tu peux sans doute exprimer ta boucle de jeu de manière plus élégante.
Une suggestion : essaye de décrire dans une manière un peu abstraite le déroulement d'une partie, ca devrait te guider sur la construction de ton code.
Marsh Posté le 12-11-2016 à 02:01:03
theshockwave a écrit : |
Sauf que des textes français sans accents c'est pas beau.
Perso j'utilise la méthode de mettre le bon code en écriture héxa. Le problème c'est que le compilateur va râler car parfois il ne voit pas où se termine le code héxa, genre "méchant" --> "m\x82chant" avec c qui est une valeur héxa valide. Ma solution c'est de rajouter des guillemets "m""\x82""chant", le processeur va réunir les chaînes de caractères au moment de la compilation. C'est du bricolage (et je n'ai testé qu'en C, pas C++) qui risque de ne pas fonctionner selon les encodages utilisés mais à l'époque ça avait réglé mon problème.
è ""\x8A""
é ""\x82""
â ""\x83""
ä ""\x84""
à ""\x85""
ç ""\x87""
ù ""\x97""
ê ""\x88""
C'est le codepage 437 je crois (-->Wikipédia).
Après il doit y avoir un moyen de modifier l'encodage de la console avec les fonctions du système d'exploitation voire avec la bibliothèque standard peut-être.
Marsh Posté le 12-11-2016 à 08:43:21
theshockwave a écrit : |
Merci les gars je commence à comprendre. Je vais essayer de faire ça en héxadécimal.
Pour l'optimisation, c'est pas une question de CPU même si ça le sera dans des programmes plus avancés, c'est plutôt une question d'apprendre à faire un code plus rapide et surtout plus lisible et moins lourd.
J'avais vu que le Goto est une mauvaise chose mais je savais pas comment l'éviter et je suis en train de chercher un moyen d'avoir les scores affichés en permanence.
Marsh Posté le 12-11-2016 à 15:14:27
rat de combat a écrit : Sauf que des textes français sans accents c'est pas beau. |
J'ai essayé et ça a marché en C++. Merci bien.
Marsh Posté le 14-11-2016 à 17:12:48
ryngetsu a écrit : |
Plutôt que des macros objectivement assez dégueux, regarde plutôt du côté des locales.
Code :
|
Le plus portable est d'encoder son fichier source en utf8, comme indiqué en commentaire. N'importe quel éditeur moderne propose cette option. Malheureusement, un commentaire est ce qu'on peut faire de mieux en C++ à l'heure actuelle. A ma connaissance, le standard ne propose pas grand chose concernant l'encodage des fichiers sources.
Marsh Posté le 14-11-2016 à 18:13:03
Ohla j'en suis qu'au début ^^
Je connais ni clocale ni setlocale et j'ai encore moins de connaissainces par rapport à l'encodage UTF 8
Marsh Posté le 30-11-2016 à 11:43:40
In this code, the syntax of all the if statements are wrong.
You didn't put brackets around the conditions in this code.
Marsh Posté le 11-11-2016 à 14:07:31
Bonjour à tous. Récemment je me suis mis à approfondir mes aptitudes en C++ et je commence par une Pierre Feuille Ciseau en texte dans la console mais j'ai un petit souci:
Le code est le suivant:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
int a=0;
int b=0;
int c=0;
int e=0;
int f=0;
int j=0;
int i;
string sign;
cout << "Bienvenu.";
Jeu:{
cout << "Choisis ton signe: nn";
cout << " Pierre n";
cout << " Feuille n";
cout << " Ciseaux nn";
cout << "n Quel est ton signe? ";
cin >> sign;
for(i=0; i<4; i++){
cout << "nnnnnnnnnnnn";
}
if sign = "Pierre"{
a=1;
}
if sign = "Feuille"{
a=2;
}
if sign = "Ciseaux"{
a=3;
}
b = rand() % 3 + 1;
} return 0;
}
Le soucis est que je n'arrive pas à nettoyer l'écran (j'évite d'utiliser les commandes system) et que j'ai le message "error: expected '(' before 'sign'" dans les trois lignes du if.
J'ai essayé en ajoutant/enlevant accolades ou parenthèses mais rien ne résolu le problème. Merci beaucoup.
---------------
Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu’il est stupide. – Albert Einstein