2017-07-06 4 views
0

「Q」や「//」などの特定の文字でループを終了するプログラムを作成したいが、それを理解できないように思う。ここでは詳細特定の文字でループを終了する

「ユーザによって提供小数 一連の数値の平均を計算するプログラムです。プログラムは一度に 番号1を入力するようユーザーに求められます、ユーザーが入力したときqそれは停止し、合計を吐き出す "

しかし、これは整数で入力する必要があり、" Q "または" // "を入力すると、プログラムが壊れて迷惑を吐き出します。これはどうすればいいですか?

に実行して、問題のイムは、あなたの割り当てを想定すると、二つの異なる入力

#include "stdafx.h" 
#include <iostream> 
#include <string> 
using namespace std; 

//variables 
double avg, num; 
char q; 

int main() 
{ 
    double sum = 0; 
    int count1 = 0; 
    while (q != 'q') { 
     cout << "Enter a number" << endl; 
     cin >> num; 
     cin >> q; 
     sum += num; 
     count1 += 1; 
    } 
    avg = sum/count1; 
    cout << "Sum: " << sum << endl; 
    cout << "Count: " << count1 << endl; 
    cout << "Average: " << avg << endl; 
    return 0; 
} 
+1

これまでに行ったコード/取り組みを示してください。 –

+2

あなたが試したことを[MCVE]を囲んで表示してください。任務の全体的なポイントは、あなたが実際にそれを行うことができるかどうかを見て、誰かがあなたのためにコードを書いてくれることを願ってSOに掲示することに頼らないことです。 – t0mm13b

+0

私は自分の仕事を追加しました。なぜなら、私がやったことがないか、どこから始めたらいいか分からないからです。私の要点は答えを得ることではなく、ガイダンスを得ることです。なぜ私はどこで始めればよいか尋ねました – alexanderbowen

答えて

3

を求めずにこれを行う方法ですが、あなたが記述本当にある、あなたは、文字列を読み取る必要がある、その後、倍増に変換されます。このような

何かが動作します:私はちょうどに沿ってあなたを助けるために、いくつかのスニペットを提供し、あなたのためのコードを書いていないよ

std::string s; 
std::cin >> s; 
if (s == "Q" || s == "//") { ... do stuff ... } 
else 
{ 
    std::stringstream ss(s); 
    double d; 
    if (!(ss >> d)) 
    { 
     std::cout << s << " doesn't appear to be a number..." << std::endl; 
    } 
    ... do whatever with d ... 
} 

+0

を吐き出すと、私の問題は2つの異なる入力はこの助けに役立ちます! – alexanderbowen

+0

std :: stringstreamは素晴らしい汎用ソリューションですが、[std :: stod](http://en.cppreference.com/w/cpp/string/basic_string/stof)はより簡潔です。 – stefaanv

関連する問題