ここから本文です

C++のファイル出力について 私は今、あるプログラムを改築するような研究をし...

aer********さん

2011/12/416:05:08

C++のファイル出力について

私は今、あるプログラムを改築するような研究をしているのですが、初心者なのでなかなかはかどらないです。
そこで、皆さんに質問したいので、そのプログラムにおけるごく一部を抜粋します

時間によって、5つある部屋にそれぞれ、あるタンクから物質を取り込む装置(in)と排出する装置(out)が循環するように、接続されていて、
その2種類の装置の起動のONとOFFを0、1の2進法で表しています。

int i, l, m, n
ofstream fout;

for (i=0; i<5; i++) {
for (l=0; l<60; l++) {
for (m=0; m<=3; m++) {

//右辺で、onの1とoffの0の2パターンと、2種類の装置で、2×2=4パターンを表しています。
n = 1;
room[i].in[l] = (m & n) / n; n = n << 1;
room[i].out[l] = (m & n) / n; n = n << 1;

}}}

これを時間によって、5つある部屋からそれぞれ接続されているinとoutの2種類の装置が起動していく経過を0と1で
羅列していく結果を、CSVファイルに出力したいのですがわかりません。
下のように、時間の下に時間をinとoutの下にそれぞれが時間によって起動した様子が0か1で並んでいくようにしたいんですが、上記の計算結果を下記とリンクさせて出力するのにどこを編集していけば良いのかわかりません。

fout.open("switch.csv");
fout << "時間,in,out"<< endl;
if (!fout)
{
cout << "出力ファイルをオープンできません\n";
exit(1);
}
fout.close();



この一部の抜粋だけで、皆さんが解釈できるかもわからないのですが、お願いします!!
何かの情報が抜けているとか、CSVファイルの行列の出力の仕方のコツとか、ヒントになりそうなこととかなんでもいいので、
回答お願いします!!

補足csvでは下記のように、出力したいと思っています。それぞれの部屋のinとoffの下に、計算結果の0と1を表示していきたいです。

例.
__________部屋a ___部屋b___ 部屋c___ 部屋d___ 部屋e
時間 ___in_out__ in_out __in_out ___in_out___ in_out
1________ 0_1______ 0_1_____ 1_0 _______0_1 ______1_0
2________ 1_0______ 1_0_____ 0_1_______ 1_0______ 0_1


閲覧数:
221
回答数:
1

違反報告

ベストアンサーに選ばれた回答

久遠人さん

編集あり2011/12/514:28:50

[補足]に基づいて書き換えたがもともとのロジックがおかしいような気がする。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int i, l, m, n;
ofstream fout;
struct {
int in[60];
int out[60];
} room[5];
fout.open("switch.csv");
if (!fout) {
cout << "出力ファイルをオープンできません\n";
exit(1);
}
fout << "\t\t部屋a\t\t部屋b\t\t部屋c\t\t部屋d\t\t部屋e" << endl;
fout << "時間\tin\tout\tin\tout\tin\tout\tin\tout\tin\tout" << endl;
for (l=0; l<60; l++) {
fout << l;
for (i=0; i<5; i++) {
for (m=0; m<=3; m++) {
//右辺で、onの1とoffの0の2パターンと、2種類の装置で、2×2=4パターンを表しています。
n = 1;
room[i].in[l] = (m & n) / n; n = n << 1;
room[i].out[l] = (m & n) / n; n = n << 1;
}
fout << ",\t\t" << room[i].in[l] << ",\t" << room[i].out[l];
}
fout << endl;
}
fout.close();
}


CSVファイルの中身の具体例を書いたほうが分かりやすいのでは?

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int i, l, m, n;
ofstream fout;
struct {
int in[60];
int out[60];
} room[5];
fout.open("switch.csv");
if (!fout) {
cout << "出力ファイルをオープンできません\n";
exit(1);
}
fout << "時間,in,out"<< endl;
for (i=0; i<5; i++) {
for (l=0; l<60; l++) {
for (m=0; m<=3; m++) {
//右辺で、onの1とoffの0の2パターンと、2種類の装置で、2×2=4パターンを表しています。
n = 1;
room[i].in[l] = (m & n) / n; n = n << 1;
room[i].out[l] = (m & n) / n; n = n << 1;
fout << l << ',' << room[i].in[l] << ',' << room[i].out[l] << endl;
}
}
}
fout.close();
}

これじゃないんだろう。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる