[Résolu] Je suis bloqué, j'aurais besoin d'un petit coup de main ...

DruideDruide Membre
février 2006 modifié dans API AppKit #1
J'en suis vraiment à  mes tout débuts en Objective-C.

A fin de faire les dents ! Je suis en train de me taper (avec plaisir) le livre de Aaron Hillegass "Cocoa Progrmming for Mac OS X " second edition. J'en suis au troisième chapitre.

Histoire de bien de bien maà®triser les concepts du livre. Je me suis lancé dans la confection d'une calculatrice qui gère les parenthèses et les différentes priorités des opérations.

Aussi l'affichage des opérations devrait se faire comme ceci: (1+2)*3=9. Autrement dit on tape la formule et quand on insère le signe égale, si la formule est correcte, le résultat s'affiche en bout de ligne.
résolu
Donc quand le signe " = " apparaà®t, dans un premier temps, je fait en sorte de décortiquer la formule en différend éléments (les parenthèse, les nombres et les opérateurs) que je place dans leurs ordres d'apparition dans un NSMutableArray.

Je précise que la formule bien que comportant des nombres se présente sous la forme du chaà®ne de caractères.


for (1; incrementA < a; incrementA++) {


caractere = [afficheurChar characterAtIndex:incrementA];

      xCaractere = caractere; """ C'est ici que ça plante. Ce que vous voyez-là  c'est la version la plus simple pour exprimer l'idée de base.

[size=10pt]Cet-à -dire que xCaractère est un NSMutableString et caractere est une variable local de type char.

ça ne fonctionne pas et je ne comprend pas pourquoi. J'ai comme l'impression que ça doit être très simple. J'ai fouillé dans tout mes livres et j'ai rien trouvé fasse l'affaire.

J'ai vraiment essayé de toute sorte de façon et ça plante tout le temps. Je suis vraiment bloqué si quelqu'un pouvait m'aider ça serait vraiment gentil.

[/size]




if ((caractere == 'X') | (caractere == '/') | (caractere == '+') | (caractere == '-')) {

[operateur setString:xCaractere];

if (flagChiffreEnConstruction = 1) {
[mutalbleArrayIssueDeAfficheurChar_Formule addObject:chiffreEnConstrucion];
[mutalbleArrayIssueDeAfficheurChar_Formule addObject:operateur];
[chiffreEnConstrucion setString:nil];
flagA = 0;
}
else {
[mutalbleArrayIssueDeAfficheurChar_Formule addObject:operateur];
}
}
else {
if ((caractere == ',') |(caractere == '0') | (caractere == '1') | (caractere == '2') | (caractere == '3') | (caractere == '4') | (caractere == '5') | (caractere == '6') | (caractere == '7') | (caractere == '8') | (caractere == '9')) {
if (flagA = '0') {
[chiffreEnConstrucion setString: xCaractere];
flagA = 1;
flagChiffreEnConstruction = 1;
}
else {
[chiffreEnConstrucion appendString: xCaractere];

}
}
else {
beep(); // C'est la place ou je devrai prendre en concidération les paranthèses.
}
}
}







Réponses

Connectez-vous ou Inscrivez-vous pour répondre.