シンタックスハイライト
ナビゲーションに移動
検索に移動
シンタックスハイライト (英: syntax highlighting)は、プログラムのコードを書く時に文字がカラフルになるアレのことである。コードが見やすくなるという効果がある。
例[編集]
以下は、整数または小数を空白または改行で区切って記述してあるnumbers.txt
のファイルからデータを読み込み、最大値・最小値・平均値・中央値を計算、数値を昇順にソートし、その結果をresult.txt
に出力するコードである。[1]
コード(長いよ) |
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
#include <iomanip>
#include <algorithm>
#include <sstream> // 空ファイルチェック用
using namespace std;
bool isFileEmpty(ifstream& file) {
return file.peek() == ifstream::traits_type::eof();
}
int main() {
ifstream infile("numbers.txt");
ofstream outfile("result.txt");
if (!infile) {
cerr << "入力ファイルを開けませんでした。" << endl;
return 1;
}
if (!outfile) {
cerr << "出力ファイルを作成できませんでした。" << endl;
return 1;
}
// ファイルが完全に空かチェック
if (isFileEmpty(infile)) {
outfile << "ファイルが空です。" << endl;
cout << "ファイルが空です。" << endl;
return 0;
}
vector<double> numbers;
double number;
double sum = 0;
double max_value = numeric_limits<double>::lowest(); // double用の最小値
double min_value = numeric_limits<double>::max();
// ファイルの読み取り(無効なデータをスキップ)
while (infile >> number) {
numbers.push_back(number);
sum += number;
if (number > max_value) max_value = number;
if (number < min_value) min_value = number;
}
// 無効なデータしかなかった場合
if (numbers.empty()) {
outfile << "有効な数値が見つかりませんでした。" << endl;
cout << "有効な数値が見つかりませんでした。" << endl;
return 0;
}
int count = numbers.size();
double average = sum / count;
// 昇順にソート
sort(numbers.begin(), numbers.end());
// 中央値の計算
double median;
if (count % 2 == 1) {
median = numbers[count / 2];
} else {
median = (numbers[count / 2 - 1] + numbers[count / 2]) / 2.0;
}
// 結果をファイルに書き出し(小数点2桁表示)
outfile << fixed << setprecision(2);
outfile << "最大値: " << max_value << endl;
outfile << "最小値: " << min_value << endl;
outfile << "平均値: " << average << endl;
outfile << "中央値: " << median << endl;
outfile << "昇順にソートされた数値リスト: " << endl;
for (double n : numbers) {
outfile << n << " ";
}
outfile << endl;
infile.close();
outfile.close();
cout << "結果を result.txt に書き出しました。" << endl;
return 0;
}
|
- ↑ AIに書いてもらいました。間違ってたら直してください。