From fb0acec701432a5057576ee30b8783a621d4d042 Mon Sep 17 00:00:00 2001 From: j202424 Date: Wed, 13 Dec 2023 13:41:43 +0900 Subject: [PATCH 1/2] add my impression --- 14_Git.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 14_Git.cpp diff --git a/14_Git.cpp b/14_Git.cpp new file mode 100644 index 0000000..10d9f9b --- /dev/null +++ b/14_Git.cpp @@ -0,0 +1,91 @@ +#include +#include +#include +#include + +// 関数宣言 +double calculateMean(const std::vector& scores); +double calculateStandardDeviation(const std::vector& scores, double mean); +void calculateZScores(const std::vector& scores, double mean, double stdDev, std::vector& zScores); +void printResults(const std::vector& scores, const std::vector& zScores, const std::string& subject); + +int main() { + // テストの点数データ + std::vector scienceScores = {65, 80, 67, 35, 58, 60, 72, 75, 68, 92, 36, 50, 25, 85, 46, 42, 78, 62, 84, 70}; + std::vector englishScores = {44, 87, 100, 63, 52, 60, 58, 73, 55, 86, 29, 56, 89, 23, 65, 84, 64, 27, 86, 84}; + + // 平均点の計算 + double scienceMean = calculateMean(scienceScores); + double englishMean = calculateMean(englishScores); + + // 標準偏差の計算 + double scienceStdDev = calculateStandardDeviation(scienceScores, scienceMean); + double englishStdDev = calculateStandardDeviation(englishScores, englishMean); + + // 偏差値の計算 + std::vector scienceZScores; + calculateZScores(scienceScores, scienceMean, scienceStdDev, scienceZScores); + + std::vector englishZScores; + calculateZScores(englishScores, englishMean, englishStdDev, englishZScores); + + // 結果の表示 + printResults(scienceScores, scienceZScores, "理科"); + printResults(englishScores, englishZScores, "英語"); + + return 0; +} + +// 平均点の計算 +double calculateMean(const std::vector& scores) { + int sum = 0; + for (int score : scores) { + sum += score; + } + return static_cast(sum) / scores.size(); +} + +// 標準偏差の計算 +double calculateStandardDeviation(const std::vector& scores, double mean) { + double sumSquaredDifferences = 0; + for (int score : scores) { + double difference = score - mean; + sumSquaredDifferences += difference * difference; + } + return sqrt(sumSquaredDifferences / scores.size()); +} + +// 偏差値の計算 +void calculateZScores(const std::vector& scores, double mean, double stdDev, std::vector& zScores) { + zScores.clear(); + for (int score : scores) { + double zScore = (score - mean) / stdDev * 10 + 50; + zScores.push_back(zScore); + } +} + +// 結果の表示 +void printResults(const std::vector& scores, const std::vector& zScores, const std::string& subject) { + std::cout << subject << "の結果:\n"; + std::cout << "平均点: " << calculateMean(scores) << "\n"; + std::cout << "標準偏差: " << calculateStandardDeviation(scores, calculateMean(scores)) << "\n"; + std::cout << "合計点: " << std::accumulate(scores.begin(), scores.end(), 0) << "\n"; + + // 点数の高い順に並べ替え + std::vector> sortedScores; + for (int i = 0; i < scores.size(); ++i) { + sortedScores.push_back({scores[i], zScores[i]}); + } + + std::sort(sortedScores.begin(), sortedScores.end(), [](const auto& a, const auto& b) { + return a.second > b.second; + }); + + // 結果の表示 + std::cout << "点数の高い順:\n"; + for (const auto& entry : sortedScores) { + std::cout << "点数: " << entry.first << ", 偏差値: " << entry.second << "\n"; + } + + std::cout << "-----------------------------\n"; +} From 834ab12f73e374bb7b00884f6ec1dd052afa89bd Mon Sep 17 00:00:00 2001 From: j202424 Date: Wed, 13 Dec 2023 15:02:05 +0900 Subject: [PATCH 2/2] change English --- 14_Git.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/14_Git.cpp b/14_Git.cpp index 10d9f9b..29fb178 100644 --- a/14_Git.cpp +++ b/14_Git.cpp @@ -30,8 +30,8 @@ int main() { calculateZScores(englishScores, englishMean, englishStdDev, englishZScores); // 結果の表示 - printResults(scienceScores, scienceZScores, "理科"); - printResults(englishScores, englishZScores, "英語"); + printResults(scienceScores, scienceZScores, "Science"); + printResults(englishScores, englishZScores, "English"); return 0; } @@ -66,10 +66,10 @@ void calculateZScores(const std::vector& scores, double mean, double stdDev // 結果の表示 void printResults(const std::vector& scores, const std::vector& zScores, const std::string& subject) { - std::cout << subject << "の結果:\n"; - std::cout << "平均点: " << calculateMean(scores) << "\n"; - std::cout << "標準偏差: " << calculateStandardDeviation(scores, calculateMean(scores)) << "\n"; - std::cout << "合計点: " << std::accumulate(scores.begin(), scores.end(), 0) << "\n"; + std::cout << subject << "result:\n"; + std::cout << "AvarageScore: " << calculateMean(scores) << "\n"; + std::cout << "Standard Deviation: " << calculateStandardDeviation(scores, calculateMean(scores)) << "\n"; + std::cout << "TotalScore: " << std::accumulate(scores.begin(), scores.end(), 0) << "\n"; // 点数の高い順に並べ替え std::vector> sortedScores; @@ -82,9 +82,9 @@ void printResults(const std::vector& scores, const std::vector& zSc }); // 結果の表示 - std::cout << "点数の高い順:\n"; + std::cout << "Sort Score:\n"; for (const auto& entry : sortedScores) { - std::cout << "点数: " << entry.first << ", 偏差値: " << entry.second << "\n"; + std::cout << "Score: " << entry.first << ", Deviation value: " << entry.second << "\n"; } std::cout << "-----------------------------\n";