2017-04-20 2 views
0

Je veux calculer le périmètre ou la surface d'un carré. Si l'utilisateur tape c=calculate perimeter et a=area. Le programme saute après les commandes cin>>a>>c;. Que devrais-je faire?en utilisant la commande if (cin >>) en C++

#include<iostream> 
#include <string> 
using namespace std; 
int main() 
{ 
    int kenar; //kenar means side length 
    string c,a; 
    cout<<"karenin kenar uzunlugunu girin :"; 
    cin>>kenar; 
    cout<<"cevre icin c, alan icin a girin :";// type c for perimeter,a for area 
    cin>>a>>c; 

     if (cin>>c) 
     { 
      cout<<4*kenar<<endl; 
     } 
     else if (cin>>a) 
     { 
      cout<<kenar*kenar<<endl; 
     } 
     else 
     { 
      cout<<"yanlis giris"<<endl; //cout<<"you type wrong"" 
     } 
} 
+0

Si vous essayez de comparer quelque chose, vous devez utiliser '>', 'pas >>'. '>>' est pour lire des flux d'entrée. –

Répondre

2

Fondamentalement, vous devriez avoir une variable qui devrait soit la valeur « c » ou « a » en fonction de l'entrée utilisateur. Vous pouvez ensuite utiliser cette variable pour vérifier ce que l'utilisateur est entré comme ci-dessous:

int main() 
{ 
    int kenar; 
    char option; //note I have changed it to char 
    cout<<"karenin kenar uzunlugunu girin :"; 
    cin>>kenar; 
    cout<<"cevre icin c, alan icin a girin :"; 
    cin>>option; 

    if (option == 'c') 
    { 
     cout<<4*kenar<<endl; 
    } 
    else if (option == 'a') 
    { 
     cout<<kenar*kenar<<endl; 
    } 
    else 
    { 
     cout<<"yanlis giris"<<endl; //cout<<"you type wrong"" 
    } 
} 
+0

tant merci :) ça fonctionne bien! – husamsdu

0

cin >>c essaie de lit un mot dans la chaîne c. if(cin>>c) vérifie si vous avez lu avec succès un mot.

Cela n'a rien à voir avec l'utilisateur qui a entré le mot "c". Vous avez une variable nommée c. Qu'est-ce que vous vouliez sans doute est std::string operation, de sorte que vous pouvez tester

if (cin>>operation) { 
    if (operation=="c") { 
    // ... 
    } 
    else (operaion=="a") { 
    // ... 
    }