[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 07/15 20:46 / Filesize : 150 KB / Number-of Response : 397
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題片付けます 126代目



1 名前:デフォルトの名無しさん [2009/05/18(月) 23:06:51 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 125代目
pc12.2ch.net/test/read.cgi/tech/1240226599/

175 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:20:11 ]
>>172 Part125_146
#include <stdio.h>
#include <float.h>
#include <math.h>
int main() {
double e1, e2;
unsigned int n;

e1 = 1.0;
printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON);
for(n=1; n<4294967295u; n++) {
e2 = e1 / 10.0;
if(1.0 == (1.0 + e2)) break;
e1 = e2;
}
printf("%.15e %d\n", e1, n-1);
}

176 名前:173 [2009/05/23(土) 19:35:12 ]
>>174
言葉足らずで申し訳ありません……
迷路探索のソースはいくつか探すことが出来たのですが、
更に最短経路を探すものが見つからなくて今回お願いしました……

177 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:45:01 ]
>>176
普通の迷路なら経路はただ一つなんじゃない?
経路が複数あるって、巡回路の最適解を求めるような問題?

178 名前:173 [2009/05/23(土) 19:57:20 ]
>>177
上手く言えませんが壁の配置によっては経路が複数あります
袋小路とかも含めて総当たりで経路を調べる、のだとしたら巡回路の問題なのかもしれません
すみません、あまりよくわかってません……

179 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:01:59 ]
>>173
再起関数で、深さをカウントしていって、144段(縦*横)以上になったら打ち切れば良いよ。
で手数をへらして検索。

180 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:48:53 ]
>>173
最短経路が必要な場合は、2DRPGの最短移動アルゴリズムを使えばいいよ。

12x12の配列Aをワークとして用意する。型はintでいいや。
Aはすべて-1で初期化しておく。
まずスタート地点の決定。これは総当たりだから省略。
現在の探索深度を示すワーク int depth を用意して0に初期化する。
さて探索だけど、

1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
2.Aを全探索して、値がdepthになっているものがあれば、
 その上下左右(斜めも移動できるなら斜めも)に移動可能かどうかを
 調べる。移動可能で、かつその位置に対応するAが-1なら、その位置に
 depth+1を書き込む。
 移動可能な位置がゴールなら終了。4へ。
3.A全体を操作し終わるまで調べて、ひとつもdepthがなければ終了。ゴールには到達できない。
 1つでもdepthがあれば、++depthして、2を繰り返す。

4.ここからが最短経路探索。
 まずゴールには到達しているから、ゴールのdepthは分かってる。
 そこから 上下左右のAの値が depth-1 になっている位置が最短経路。
 複数ある場合の処理は好きなようにすればいいが、今回は単純に最初に
 みつかった場所へ移動すればいいだろう。
5.これを繰り返してスタートに到達するまで続ける。なおスタートには必ず到達できる。

181 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:51:41 ]
>>180
すまん

×1.スタート地点を現在値nowPositionに設定して、それに対応するAに0を代入する。
○1.スタート地点に対応するAに0を代入する。

182 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:55:26 ]
ちなみに医学部の卒業研究見学したけど、怖かった。

犬を生きたまま仰向けで四肢を固定し、毛を剃って電気メスで腹を切る。

肋骨をノコギリで切って、心臓にいろいろな電気信号を与えて生体の反応を調べる。

もちろん全身麻酔はしてるけど、生体の反応を損ねないようにギリギリの量にしてるから、ピクピク動いてた。


183 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:12:16 ]
>>179
>>173
>手順としてはスタート地点の探索→経路の探索→バックトレースによる最短経路の探索、と行えばいい。
を満たせなくね?



184 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:21:39 ]
スタート地点も探索で見つけないといけない?
予め指定がないと、何処から始めたら良いものやら。

185 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:34:53 ]
多分出題者が間違ってるんだろうが、バックトレースじゃなくてバックトラックだろうな。

186 名前:デフォルトの名無しさん [2009/05/23(土) 21:35:20 ]
流石にスタート地点は総当たりじゃないかなあ
そうでなかったらうーん

187 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:53:30 ]
>>173
やってみた
基本的に >>180 の内容
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9230.c

188 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 22:19:36 ]
>>187
「構造体やポインタはやってない」の制限にひっかかってるよw

189 名前:185 mailto:sage [2009/05/23(土) 22:22:45 ]
ごめん。オレが勘違いしてたようだ。
バックトレースって、ゴールから逆にたどるって意味だなきっと。
>>180のやり方で良さそうだね。

190 名前:187 mailto:sage [2009/05/23(土) 22:24:36 ]
>>173
>>188 の指摘を受けて >>187 の修正版
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9231.c

191 名前:172 mailto:sage [2009/05/24(日) 00:24:38 ]
>>175
ありがとうございました

192 名前:175 mailto:sage [2009/05/24(日) 01:02:49 ]
>>172 間違い。1.0!=1.0+εとなる最小のεではなかった。
#include <stdio.h>
#include <float.h>
#include <math.h>
int main() {
  double e1, e2;
  unsigned int n;

  e1 = DBL_MIN;
  printf("%.15e %.15e\n", DBL_MIN, DBL_EPSILON);
  for(n=1; n<4294967295u; n++) {
    e2 = e1 * 10;
    if(1.0 != (1.0 + e2)) break;
    e1 = e2;
  }
  printf("%.15e %d\n", e1, n-1);
}

193 名前:172 mailto:sage [2009/05/24(日) 11:56:33 ]
>>175
>>192
訂正ありがとうございます



194 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:51:50 ]
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9232.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C++
[4] 期限: 5月26日朝
[5] その他の制限:よろしくおねがいします

195 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:46:05 ]
>>170
ありがとうございます。

196 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:44:53 ]
>>194
なんでうpろだ使ったんだwwwww

197 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:57:13 ]
wwwwwww
うけたwwwww

198 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:51:42 ]
一行伝えるのに資源使いすぎw

199 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:47:24 ]
宿題スレで分岐限定法の課題はあったでしょうか?
あったのであれば、教えてもらいたいです。

200 名前:194 の心の声 mailto:sage [2009/05/24(日) 19:38:49 ]
>>196
ろだにあげておくとweb検索で引っかかりにくいし、
どういう問題を依頼したかスレのログに残らないから。
そんな事も分からないのに問題解けるのかよw

201 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:41:44 ]
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9233.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
5/26日午前9時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ配列まで習ってます

PCで規制が掛かっていたので携帯からの書き込みで申し訳ありません


202 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:57:33 ]
>>201
課題1
my_sort_strings()は、どうやって並べ替える文字列を取得すれば良いですか?

203 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:08:03 ]
引数を何にするのかも問題のうちだろ、jk



204 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:16:14 ]
>>203
並べ替えの対象となるポインタ配列はmainのローカル変数
my_sort_strings()は引数なし

205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:19:37 ]
>>204
なんでそうなるんだ?

> 課題1
> 文字配列のソートを行って出力する以下のプログラムを完成させよ
> ただし、my_sort_stringsはポインタ配列とそのよう素数を因数として、
> 登録されている文字配列を昇順に並べ替える関数である。

因数は引数の間違いで
関数プロトタイプはこうなるだろ
void my_sort_strings(char **p,int n);


206 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:20:25 ]
アホか、問題文では省略されてる引数を補って書くんだよw

207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:21:23 ]
わかるとは思うが206は204あてな

208 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:28:14 ]
プロトタイプまで書かれていても、それを書き換えても良いのかね?
私なら、まず確認のためにどうするか聞くが。

209 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:38:21 ]
そんなことより課題2を読む限り
課題1は先頭の一文字だけでソートするべきなのか?

210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:39:24 ]
みたいだね。
2見る前に書いたらmin_index()がまんま2の仕様になってたw

211 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:02 ]
C++始めたばかりのド素人なんですが質問させてください。
「数直線上で4つの整数を入力して二種類の区画を指定し、その区画が重なるか否かを
 判定するプログラム」
【出力結果例

区画A:2 5
区画B:1 3
重なる    】

となるプログラムを作成してみたんですが、↓のでいいでしょうか?
正確な問題文や細かい所は都合により今は見れないので、不明瞭な点もあるかと思いますが、
よければ添削お願いします。あと、使うのはIf文のみでお願いします。

212 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:36:47 ]
#include <iostream>
using namespace std;
int main()
{
int x1,x2,x3,x4;
cout << "区画A:”;
cin >> x1 >> x2;
cout <<"区画B:”;
cin >> x3 >> x4;

If(x4<x1 && x3<x1 && x4<x2 && x3<x2){
cout<<"重ならない”<<endl;
If(x2<x3 && x1<x3 && x2<x4 && x1<x4){
cout<<"重ならない”<<endl;
}
else{
cout<<"重なる”<<endl;
}
return 0;
}

213 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:40:57 ]
テンプレに沿っていないので正規の質問とはみなされていない故
オブジェクション。
これは断じてC言語やC++言語の問題ぢゃなく、論理(ロジック)
の問題。



214 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:51:31 ]
If文は使えないな

215 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:53:12 ]
失礼しました。
授業単元:基本プログラミング
問題文:>>211
OS:Windows
コンパイラ名:g++
言語:C++
期限:明日の午後6時まで
その他の制限:If文のみ使用

です!
ロジックも含めて、文法が合ってるかや無駄な部分がないかなどの意見も頂けたらと思い
質問させて頂きました、スレ違いでしたら申し訳ないありませんでしたorz

216 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:57:58 ]
1の右端が2の左端より大きくて1の左端が2の右端より小さいとき重なる

217 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:13:18 ]
>>216の言うとおり、重なるときを考えた方がわかりやすい
あと、本当にx1<x2,x3<x4になってるか入力値のチェックも欲しい


218 名前:211 mailto:sage [2009/05/24(日) 22:30:14 ]
>>216>>217
なるほど…
そっちのやり方も今試してみたんですが、x1x2x3x4の値はそれぞれ自由なので、
例えば出力結果

区画A:15 6
区画B:7 −8
重なる

にもなるようにしないといけないので、整数の入力値の場合分けがかなり面倒になって
プログラムが>>211より長くなってしまうかなと思ってるんんですがどうでしょう…
といっても、>>211のプログラムとロジックで矛盾や穴などが無いかも自分では自信が無いのですが…
なにぶん今はプログラムを実行できる環境にいないので机上の空論状態なんですorz

219 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:36:28 ]
>>211
区間の両端の数値は区間の中なのか外なのかが決まってないと
区間A:1 4
区間B:4 6
のとき重なっていると見なすかどうかが決められない。
区間A:1 1
区間B:1 6
も同様。両端の値は区間の中なの?外なの?

220 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:38:07 ]
>>219
>>212だとどちらも重なるだろ

221 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:41:38 ]
>>218
x1,x2とx3,x4をそれぞれ小さい順に並べ替える
if ((x3 < x1 && x1 < x4 || x3 < x2 && x2 < x4) ||
(x1 < x3 && x3 < x2 || x1 < x4 && x4 < x2)) {
重なっている
}


222 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:46:00 ]
>>218
先に大小みて入れ替えるほうが簡潔でわかりやすいと思うが
if(x1 > x2) { int temp = x1; x1 = x2; x2 = temp;}
if(x3 > x4) { int temp = x3; x3 = x4; x4 = temp;}
if(x1 < x4 && x2 > x3) cout << "重なる";
else cout << "重ならない";


223 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:51:40 ]
>>219
あ、言葉足らずでごめんなさい、端が点と点で重なってる場合も重なってるとみなされます

>>221
おお、なるほど
それだとif文も一つで済んでいいですね!
参考になりました、ありがとうございます!



224 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:53 ]
>>222
ごめんなさい、まだ授業でtempを習ってないもので…
でも後学のためになりました、ありがとうございます

225 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:56:56 ]
すべての数が不一致であることを前提とする。4つの数で
最大の元が属する区画名をA,最小の元が属する区画名をBとする。
A=Bの時は重なる
A<>Bの場合、区画Aで4数最大のものでないものをy
区画Bの元で4数最小でないものをzとする。
重なるのはy<zの場合のみ

上のことをコーディングすれば良いんぢゃ?
(変数は常に値渡しされるとは限らないから関数内で
勝手に変更することはC++では許されない。念の為)

226 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:01:01 ]
>>220 >>211 数値の型がわかんなかったのでテンプレで。数値の入力部分は好きにどうぞ。
#include <iostream>
template <class T> class Range {
public:
Range() {}
Range(const T& v0, const T& v1) { create(v0, v1); }
Range(const Range<T>& s) { *this = s; }
virtual ~Range() {}
const Range<T>& operator=(const Range<T>& s) { min_ = s.min_; max_ = s.max_; return *this; }
void create(const T& v0, const T& v1) { if(v0 < v1) { min_ = v0; max_ = v1; } else { min_ = v1; max_ = v0; } }
bool isIntersect(const Range<T>& s) const {
if(min_ <= s.min_) {
return max_ >= s.min_; // 接するのも交わりと見なす
//return max_ > s.min_; // 接するものは交わりとは見なさない
} else {
return s.isIntersect(*this);
}
}
private:
T min_;
T max_;
};
int main()
{
Range<int> r0(2,5);
Range<int> r1(1,3);
if(r0.isIntersect(r1)) {
cout << "重なる" << endl;
} else {
cout << "重ならない" << endl;
}
}

227 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:04:34 ]
沢山のアドバイスありがとうございました!
色々と参考になりました
お陰様でいっぱしの形になって提出できそうです
これからも精進します(`・ω・´)

228 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:07:15 ]
>>221
>>222
うっ、if文のみ使用って、判定にswitchとかを使うなという意味じゃないのか・・・
ごめん。

229 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:09:15 ]
>>212 == >>216 で合ってる。医女

230 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:18:47 ]
>>201 min_index() を使ってない my_strcmp() の使い方が分からなかったので strcmp() と同じだと仮定
課題1
void my_sort_strings(char **p,int n)
{
int i, j;

for(i=0;i<n;i++)
{
for(j=0;j+1<n-i;j++)
{
if(*p[j]>*p[j+1]) swap_strings(p, j, j+1);
}
}
}

課題2
void lexicograhic_sort(char **p,int n)
{
int i, j;

for(i=0;i<n;i++)
{
for(j=0;j+1<n-i;j++)
{
if(my_strcmp(p[j], p[j+1])>0) swap_strings(p, j, j+1);
}
}
}

231 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:09:02 ]
自由課題:可憐な カレン ダーを作ってくれ


232 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:12:14 ]
【質問テンプレ】
[1] テキストファイル
[2]Write a program to parse words onto separate lines; that is, locate
and write each word to its own line.(課題文は英文で与えられている)
[3] 環境
 
[3.1] OSWindows
 [3.2]VisualC++
 [3.3] 言語:C
[4] 期限: (2009年5月26日9:30)
[5] 制限はなし


233 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:26:18 ]
>>232 合ってるかどうか分からんけど
#include<stdio.h>

int main(void){
char buf[100+1];

while(scanf("%100s", buf)==1){
puts(buf);
}
return 0;
}



234 名前:デフォルトの名無しさん mailto:age [2009/05/25(月) 01:42:40 ]
>>232に追加 テキストファイルを作成する必要がある。


235 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:56:36 ]
1111 aaaa ddd dddd-dfgg ddddd 9999. 2222 dddd ggg, gggg 444-
444 sss ddddd ccc -
ddd rrrr345 333 444. >>232
#include <stdio.h>
int main(){
  int c, cr = 1, minus = 0;

  while( (c = getchar()) != EOF ){
    if(c == ' ' || c == '\t') {
      if(minus == 1) ; /* minus_space_return */
      else if(cr != 0) putchar('\n'); /* space_minus_return */
      cr = 0;
    } else if(c == '\n') {
      if(minus == 1) ; /* minus_return */
      else if(cr != 0) putchar('\n');
      cr = 0;
      minus = 0;
    } else if(c == ',' || c == '.') {
      if(minus == 1) putchar('-');
      if(cr != 0) putchar('\n');
      cr = 0;
      minus = 0;
    } else if(c == '-') {
      minus = 1;
    } else {
      if(minus == 1) putchar('-'); /* minus_not return */
      putchar(c);
      cr = 1;
      minus = 0;
    }
  }
}

236 名前:デフォルトの名無しさん [2009/05/25(月) 13:12:58 ]
[1]数理物理
[2]問題文:
ルジャンドル多項式のゼロ点(Pn(x)=0を満たすx)を求めたい。

@ n=4 の時 (解析解あり。)
A n=10の時 (解析解なし。)

の2つの場合についてニュートン法または2分法を用いて求めよ。

ttp://www.mns.kyutech.ac.jp/~kamada/suuributuri/sub2.html
[3]OS:Linux/コンパイラ:わかんね/言語C
[4]5/26まで

お願いします。

237 名前:194 mailto:sage [2009/05/25(月) 17:15:46 ]
資源を使いすぎた者ですが、num_putファセットどなたか分かる方いませんか?
ぐぐっても日本語の文献がほとんどヒットしません。英語のは見つかりますがどれも例がめちゃ難しいのしかないです
問題の意味は、このファセットを使って230764530を出力すると1000単位でコンマをつけて出力するようにしろとのことです
なので「230,764,530」になるといいです よろしこおねがいします

238 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 17:53:00 ]
std::locale locale_;
OutIt outit;
std::ios_base& format = ;

std::num_put<charT, OutIt>& hoge = std::use_faset<std::num_put<charT, OutIt>(locale_);
hoge.put(outit, format, char, value);

こんな感じで後は自分で設定すればいいよ

239 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:23:52 ]
>>237
MSDNに載ってるじゃないか。英語だけど、丸写しでもうごいたぞ??

#include <iostream>
//ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx
//230764530

int main(){
    long Val = 230764530;
    std::locale Loc("japanese");

    std::cout.imbue(Loc);
    std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); 
    return 0;
}

240 名前:194 mailto:sage [2009/05/25(月) 18:33:33 ]
>>239
すみません
エラー: ‘_Iter’は‘std::basic_ostream<char, std::char_traits<char> >’のメンバではありませんという
コンパイルエラーになるのですが何かわかりますでしょうか


241 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:53:40 ]
>>240
_Iterはイテレータをtypedefしたものだと思うのだが、最初にアンダースコアが入ってるからベンダ定数かもしれん。
俺の使ってるコンパイラはVC9EE(VC2008)なんだが、おまいさんはなにをつかってるんだい?

うちではちゃんと通るし230,764,530とでる。

で、ちょっと改変してみた。これで動かなかったら俺の範疇外だ。
#include <iostream>
//ttp://msdn.microsoft.com/ja-jp/library/31fhezza.aspx
//230764530

int main(){
    long Val = 230764530;
    std::locale Loc("japanese");
    //std::locale::global(std::locale("japanese"));
    

    std::cout.imbue(Loc);
    //std::use_facet<std::num_put<char>>(Loc).put(std::basic_ostream<char>::_Iter(std::cout.rdbuf()),std::cout,' ',Val); 
    std::use_facet<std::num_put<char>>(Loc).put(std::ostreambuf_iterator<char>(std::cout.rdbuf()),std::cout,' ',Val); 
    return 0;
}

242 名前:194 mailto:sage [2009/05/25(月) 19:13:16 ]
>>241
大変失礼しました。
最初にVisualStudioを使っていますと書いておきながらg++でコンパイルしていました。
上記のコードも試したのですが
terminate called after throwing an instance of 'std::runtime_error'
what(): locale::facet::_S_create_c_locale name not valid
Abort trap
というエラーになりました。しかし、VC++2008で試したところ問題なく動いたので、これで十分です。
ありがとうございました。

243 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:27:47 ]
[1] 授業単元: 上級者のためのC++
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9234.txt
[3] 環境
 [3.1] OS: ウィンドウズXP
 [3.2] コンパイラ名とバージョン: VisualC++2008
 [3.3] 言語: C++
[4] 期限: 2009年5月28日朝まで
[5] その他の制限: 難しいですが何卒よろしくおねがいします



244 名前:デフォルトの名無しさん [2009/05/25(月) 20:05:55 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9235.txt
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 5月27日12:00
[5] その他の制限: 是非、よろしくお願いします

245 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:22:06 ]
>>243
1 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9236.txt

246 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:32:18 ]
>>243
2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9237.txt

247 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:21:23 ]
>>244
(1) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9239.txt
(2) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9240.txt

248 名前:デフォルトの名無しさん [2009/05/25(月) 21:21:24 ]
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9238.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: 明日5月26日 23:30まで
[5] その他の制限: 特にありません。

問題数が多いです。
お手数ですがどうかよろしくお願いいたします。


249 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:36:12 ]
またフィボナッチ…

250 名前:デフォルトの名無しさん [2009/05/25(月) 22:21:20 ]
>>247さん、ありがとうございます。
ただ、(2)のプログラムの
#include <iterator>
#include <algorithm>
という2つのインクルードを初めてみました。これはどういう場合に使うのでしょうか?
やはりこれを使わないとプログラムは難しくなってしまうんですか?

251 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:23:31 ]
ぐぐれ

252 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:26:41 ]
>>250
ソート処理をstd::sort、出力をstd::ostream_iteratorに丸投げしているため。
これらを見たことないとなるとソートは自分で書きなさいってことなのかね

253 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:57:48 ]
>>250 バブルソートで書き直してみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9243.txt



254 名前:デフォルトの名無しさん [2009/05/25(月) 23:16:31 ]
1] 授業単元:C++演習
[2] 問題文
以下のプログラムをもとに、入力された文字列に!があったら!?に置き換えよ
(ヒント s.insert(i,t)を用いよ)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9244.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:明日まで

プログラムを習い始めたばかりで、
よくわかってないのですがよろしくお願いします。


255 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:24:45 ]
[1] 授業単元:ソフトウェア
[2] 問題文
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9245.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VisualC++
 [3.3] 言語:C
[4] 期限:明後日までにおねがいします。

256 名前:243 mailto:sage [2009/05/26(火) 00:12:33 ]
>>245
>>246
助かりました!有難うございました。

257 名前:デフォルトの名無しさん [2009/05/26(火) 00:15:55 ]
>>252 >>253
ありがとうございます。調べてみたんですが、便利ですね・・・
今までこんな話は聞いたことなかったし、ソートの問題は自分で書いてました。
今回の問題でもソート・出力は自分でやったほうがいいかと思ってます。
でも、ひとつ勉強になりました。ありがとうございました。

258 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 00:20:19 ]
>>255
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9247.c

259 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 00:36:48 ]
>>230
ありがとうございます
もしまた頼る時があったらよろしくお願いします

260 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:03:31 ]
>>259
姑息な最適化なら任せてくれ

261 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 01:17:02 ]
おっと誤爆だったみたいだ

262 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:14:14 ]
>>236
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9248.c

263 名前:248 [2009/05/26(火) 09:30:23 ]
>>248です。

フィボナッチは解決いたしました。
(5_1)も出来そうなので、(5_3)以降をお願いいたします。

問題文(含コードンク)kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9238.txt



264 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:56:01 ]
(5_3)
void binary(int n)
{
if(n>1) binary(n>>1);
printf("%d", n & 1);
}

265 名前:デフォルトの名無しさん [2009/05/26(火) 10:13:22 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ゼロで初期化したint型変数,float型変数,double型変数をそれぞれ3個ずつ用意し,それぞれに1,0.1,0.01を1000回加えてそれぞれの結果を画面に出力するアルゴリズムを考え,それにしたがってプログラムを作成せよ.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:秀丸
 [3.3] 言語:C言語
[4] 期限:5月28日
[5] その他の制限: 関数はまだ習っていません。本当に基礎をやっています。


266 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 10:46:06 ]
#include <stdio.h>

int main(void)
{
int i, a = 0, b = 0, c = 0;
float fa = 0, fb = 0, fc = 0;
double da = 0, db = 0, dc = 0;

for(i=0; i<1000; i++) {
a += 1;
b += 0.1;
c += 0.01;
fa += 1;
fb += 0.1;
fc += 0.01;
da += 1;
db += 0.1;
dc += 0.01;
}

printf("%d %d %d\n", a, b, c);
printf("%f %f %f\n", fa, fb, fc);
printf("%f %f %f\n", da, db, dc);

return 0;
}

267 名前:デフォルトの名無しさん [2009/05/26(火) 11:47:50 ]
>>262
ありがとうございます。
非常に助かりました。

268 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 15:20:55 ]
>>248

(5_4)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9249.txt
(5_5)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9250.txt
(5_6)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9251.txt
(5_7)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9252.txt

円盤の数は任意だが、ここでは5にしてある。


269 名前:デフォルトの名無しさん [2009/05/26(火) 15:35:04 ]
[1] プログラム演習
[2] 問題文
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9254.txt
文字列を入力し空行が入力されたら、今まで入力されたものを表示する。
[3] 環境
[3.1] OSWindows
 [3.2]VisualC++
 [3.3] 言語:C++
[4] 期限: 今日中
[5] 制限はなし

途中までやっていたんですが、空行の時の条件がうまくできません。
よろしくお願いします。



270 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:09:24 ]
>>269
getline(cin,s)使ってみたら?

271 名前:デフォルトの名無しさん [2009/05/26(火) 16:46:56 ]
>>270
ありがとうございました
できました
簡単なトコでのミスだったんですね

272 名前:デフォルトの名無しさん [2009/05/26(火) 16:49:57 ]
>>268 お疲れ様です。本当にありがとうございました!

273 名前:daigaku1nen [2009/05/26(火) 18:26:48 ]
プログラミングの授業で
a,b,c,d,eを cin でキーボードから読み取り
{a÷(b×c)+d×(b+3)}÷(e×2) の計算の答えを出力するプログラミングをつくる課題が出たのですが、

演算子の優先順を考慮すると、どう変換して書けばいいのか全く分かりません。
助けてください。
提出期限は今日の0時までです。。。



274 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 18:50:32 ]
>>273
#include <iostream>
int main()
{
double a,b,c,d,e;
std::cout << "a:"; std::cin >> a;
std::cout << "b:"; std::cin >> b;
std::cout << "c:"; std::cin >> c;
std::cout << "d:"; std::cin >> d;
std::cout << "e:"; std::cin >> e;
std::cout << (a/(b*c)+d*(b+3))/(e*2) << std::endl;
return 0;
}


275 名前:棚大生 [2009/05/26(火) 18:51:13 ]
C++の課題なのですが、教えてください。
提出期限は 5/28午前0時 です。

昨日、一昨日と2日間粘りましたがチンプンカンプンです。
問題は下記の通りです。
@
int i=99;と設定されていたら、
i/3 と i/3. では結果が異なる。
プログラミングを作成することによって、i/3 と i/3.を評価せよ。
(a,bを実数としてi/3 と i/3.をa,bに代入することとする。)
A
a=10, b=3, c=2 として
!aかつb>cの戻り値、!aまたはb>cの戻り値を求めるプログラムを作成せよ。
B
a=1,b=10,c=100のとき
c<b && b<a と c<b<a は同じものではない。
上記のことをプログラム化して確かめよ。
C
i=100で a=i++, a=++iの値を確かめるプログラムを作成せよ。
D
1から10までの和を計算するプログラムをインクリメント演算子を用いて、作成せよ。
デクリメント演算子を用いて、nCmを計算するプログラムを作成せよ。但し、n,mは cin を使って
キーボードから読み取ること。

お願いします!!!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<150KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef