2017-09-22 2 views
-3

La valeur commence à partir de 0 et peut ensuite être calculée en utilisant n'importe quel opérande de Mathématiques. Le code compile avec succès mais ne fonctionne pas. Les fenêtres du terminal affichent 'Abandonner', 'Réessayer' et 'Annuler'. La règle est que vous ne pouvez pas utiliser 2 opérandes mais simplement continuer à ajouter le nombre précédent à l'opérande actuel.Calculatrice mathématique sans 2 opérandes en C++

#include <iostream> 
#include <cmath> 

using namespace std; 

void Input(double input); 

int main() 
{ 
    double sign, input; 

    cout << "This program calculates any given number upto 1 decimal place using the following operators:" << endl; 
    cout << " '+' - Addition." << endl; 
    cout << " '-' - Subtraction" << endl; 
    cout << " '*' - Multiplication." << endl; 
    cout << " '^' - Root." << endl; 
    cout << " '/' - Division." << endl; 

    Input(input); 

    return 0; 
} 

void Input(double IN) 
{ 
    char q; 
    char sign; 
    int Val = 0.0; 

    cin >> sign >> IN; 

    while (IN != q) 
    { 

     if (sign = '-') 
      Val -= IN; 
     if (sign = '+') 
      Val += IN; 
     if (sign = '*') 
      Val *= IN; 
     if (sign = '/') 
      Val /= IN; 

     cout << endl << "Result so far is " << IN; 

     IN++; 
    } 
} 
+0

Nous vous recommandons fortement de spécifier clairement ce qui vous pose problème. Je peux voir une erreur répétée dans le code qui pourrait être le problème, mais je préfère avoir fixé des poteaux de but. – user4581301

+0

Le programme ne fonctionne pas, je veux calculer le nombre selon lequel le signe d'opération est prévu pour calculer. – Snehil

+0

Où cela ne fonctionne-t-il pas? Quelle ligne/expression? Que fait-il au lieu de ce que vous voulez qu'il fasse? – user4581301

Répondre

0

Votre principal problème est

  1. q est pas défini de sorte que le while(IN != q) deviendra un comportement non défini
  2. dans C++, pour tout type de données primitif = signifie opérateur d'affectation, et non un opérateur de comparaison. Pour comparer quelque chose, utilisez == à la place.
  3. Val est une variable avec le type de données int mais affectée avec la valeur 0.0 qui est un flottant ou un double.

Qu'est-ce que votre programme faire dans l'instruction if est: (par exemple cette déclaration if)

if (sign = '-')

  1. Le programme attribue la valeur de - qui est 45 à la sign variable
  2. Le if déclaration vérifier la sign variable pour la valeur 0
    • si la valeur est 0 alors la déclaration considérée false et le bloc est sauté
    • si la valeur est autre que 0 alors la déclaration considérée true et entrer dans le bloc
  3. le programme exécuter le code dans le bloc if

Le programme faire toutes ces 3 chose pour chaque déclaration if dans votre code, et je cours rarement mon propre code Windows donc je ne peux pas très bien pourquoi le programme donnant l'erreur Run-Time Check Failure #3-T

Un petit conseil, utilisez switch chaque fois que vous devez utiliser plusieurs instructions if, car il est plus facile à lire.

+0

Cela vaut la peine d'ajouter edit que 'Val' est un nombre entier et rejette toute fraction calculée et que' IN' n'obtient rien en tant que paramètre. – user4581301

+0

"Échec de vérification au moment de l'exécution # 3-T" est presque certainement Visual Studio arrêtant le programme lorsque 'input' est utilisé non initialisé dans' main' ou 'q' est utilisé non initialisé dans' Input'. – user4581301

+0

@ user4581301 Merci de me le rappeler, comment pourrais-je ignorer une telle erreur de type de données. Mais «Val» en tant qu'entier et étant assigné avec '/ =' n'est pas une préoccupation majeure pour moi, puisque je ne comprends pas complètement quelle est l'intention originale du programme, et je viens de signaler une erreur facile à manquer, et utiliser 'IN' comme argument de la fonction sans argument vrai n'est pas non plus un gros problème puisqu'il s'agit plus de" comment écrire un code correct "que de" comment écrire un code de travail "(puisque parfois j'utilise un argument jetable pour sélectionner fonction pour la surcharge de fonction). – PaprikaAndPepper