13,060
回編集
| 31行目: | 31行目: | ||
<br> | <br> | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
#include < | #include <QCoreApplication> | ||
#include < | #include <QFile> | ||
#include <QTextStream> | #include <QTextStream> | ||
#include < | #include <iostream> | ||
#include <vector> | #include <vector> | ||
#include < | #include <limits> | ||
#include < | #include <cmath> | ||
int main(int argc, char *argv[]) | |||
{ | |||
QCoreApplication a(argc, argv); | |||
// 数値データを生成 : sin曲線 y = sin(x) | |||
int iSize = 100; | |||
std::vector<double> lx(iSize, 0.0), | |||
ly(iSize, 0.0); | |||
double dx = 2 * M_PI / iSize; | |||
for (int i = 0; i < iSize; i++) { | |||
lx[i] = i * dx; | |||
ly[i] = sin(lx[i]); | |||
} | |||
// 出力形式の選択 | |||
int formatChoice; | |||
std::cout << "Choose output format:\n"; | |||
std::cout << "1. Fixed-point notation\n"; | |||
std::cout << "2. Scientific notation (e-notation)\n"; | |||
std::cout << "Enter your choice (1 or 2): "; | |||
std::cin >> formatChoice; | |||
// 入力バッファをクリア | |||
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); | |||
// | |||
// 精度の設定 | |||
int precision; | |||
std::cout << "Enter the number of decimal places (1-15): "; | |||
std::cin >> precision; | |||
precision = std::max(1, std::min(15, precision)); // 1から15の範囲に制限 | |||
// 入力バッファをクリア | |||
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); | |||
// | // 数値データをテキストデータに変換 | ||
QString strFileData; | |||
QTextStream strStream(&strFileData); | |||
strStream.setRealNumberPrecision(precision); | |||
if (formatChoice == 1) { | |||
strStream.setRealNumberNotation(QTextStream::FixedNotation); | |||
{ | } | ||
else { | |||
strStream.setRealNumberNotation(QTextStream::ScientificNotation); | |||
} | } | ||
for(int i = 0; i < iSize; i++) { | |||
strStream << lx[i] << ", " << ly[i] << "\n"; | |||
for(int i = 0; i < iSize; i++) | |||
} | } | ||
// | // ファイル名の入力 | ||
std::cout << "Enter the file name to save the CSV data (e.g., data.csv): "; | |||
std::string fileName; | |||
std::getline(std::cin, fileName); | |||
QString FileName = QString::fromStdString(fileName); | |||
// 全テキストデータを書き込む | |||
QFile File(FileName); | QFile File(FileName); | ||
if (!File.open(QIODevice::WriteOnly)) { | |||
std::cerr << "Unable to open file: " << File.errorString().toStdString() << std::endl; | |||
return -1; | |||
} | } | ||
QTextStream OutStream(&File); | QTextStream OutStream(&File); | ||
OutStream << strFileData; | |||
File.close(); | |||
std::cout << "Data has been successfully saved to " << fileName << std::endl; | |||
return 0; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||