-2

簡単な質問です。大学の課題でポートフォリオ C++ の質問をしています。標準偏差です。私の質問は、ファイルから複数の文字列を読み取ることです。こちらのテキストを参照してください。

ファイル から一連のスコアを読み取り、scored.datその平均値と標準偏差を に出力する C++ プログラムを設計して作成しますcout

実際の方程式を気にするつもりはありません。その部分はほぼソートされています。私のクエリは、ファイルから読み取ったテキストを文字列に出力することに直接基づいています。たとえば、ドキュメントに次の 3 つのスコアがあるとします。

10
15
11

テキストをそのまま出力する代わりに、テキストを 3 つの文字列にします。

Score_One (これは 10 になります)
Score_Two (これは 15 になります)
Score_Three (これは 11 になります)

私がここで意味を成していることを願っています。ありがとう。

4

2 に答える 2

1

あなたはこのようなことをする必要があります:

int raw_score_one = 11; //you have already set this but for the sake of clarity
std::stringstream output;
output << raw_score_one;
std::string Score_One = output.str(); 

スコアごとに..

于 2012-11-15T20:47:22.627 に答える
1

これは、書くのが楽しかっただけの解決策であり、私が期待する解決策ではありません。娯楽や教育的価値もあるかもしれません。基本的な考え方は、書かれたものを次のように評価することです

    std::cout << 10 << 15 << 11 << reset << '\n';
    std::cout << 1 << 2 << 3 << reset << '\n';

これを実現するには、少し機械が必要ですが、それほど悪くはありません。コードはブローです:

#include <locale>
#include <iostream>
#include <algorithm>

static int index(std::ios_base::xalloc());
static std::string const names[] = { "One", "Two", "Three", "Four", "Five" };
static std::string const score("Score_");
static std::string const other(" (Which would be ");
std::ostream& reset(std::ostream& out)
{
    out.iword(index) = 0;
    return out;
}

struct num_put
    : std::num_put<char>
{
    iter_type do_put(iter_type to, std::ios_base& fmt, char_type fill,
                     long v) const {
        to = std::copy(score.begin(), score.end(), to);
        if (fmt.iword(index) < 5) {
            to = std::copy(names[fmt.iword(index)].begin(),
                           names[fmt.iword(index)].end(), to);
            ++fmt.iword(index);
        }
        else {
            throw std::runtime_error("index out of range!");
        }
        to = std::copy(other.begin(), other.end(), to);
        to = this->std::num_put<char>::do_put(to, fmt, fill, v);
        *to++ = ')';
        *to++ = ' ';
        return to;
    }
};

int main()
{
    std::cout.imbue(std::locale(std::locale(), new num_put));
    std::cout << 10 << 15 << 11 << reset << '\n';
    std::cout << 1 << 2 << 3 << reset << '\n';
}
于 2012-11-15T20:23:17.967 に答える