[表示 : 全て 最新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/

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 を使って
キーボードから読み取ること。

お願いします!!!



276 名前:daigaku1nen [2009/05/26(火) 18:59:50 ]
>>274
本っっっっ当にありがとうございます。

また分からない課題が来たらここで質問しにきていいですか??

277 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:07:16 ]
>>276
次からは質問テンプレ使ったほうがいいよ
cinというキーワードがあったからC++とわかったけど
ぜんぜん違う回答になってた可能性があるからね


278 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:09:12 ]
>>276
丁寧に質問すれば、誰かが答えてくれる。

279 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:30:18 ]
>>275
@の99って、問題文あってる?

280 名前:棚大生 [2009/05/26(火) 19:37:04 ]
すいません!!!

101でした。

281 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 19:55:52 ]
>>258
ありがとうございました。

282 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:46:43 ]
>>275 @
#include <iostream>

int main()
{
int i = 101;
double a = i / 3;
double b = i / 3.;
std::cout << "101 / 3 = " << a << std::endl;
std::cout << "101 / 3. = " << b << std::endl;
return 0;
}


283 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:47:43 ]
>>275 @〜C
#include <iostream>
int main()
{
// A
int a=10,b=3,c=2;
std::cout << "\"!a && b > c\"=" << (!a && b > c) << std::endl;
std::cout << "\"!a || b > c\"=" << (!a || b > c) << std::endl;
// B
a=1;b=10;c=100;
std::cout << "\"c<b && b<a\"=" << (c<b && b<a) << std::endl;
std::cout << "\"c<b<a\"=" << (c<b<a) << std::endl;
// C
int i=100; a=i++;
std::cout << "a=i++:" << a << std::endl;
i=100; a=++i;
std::cout << "a=++i:" << a << std::endl;
return 0;
}


284 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:48:51 ]
>>275 D-1
#include <iostream>
int main()
{
int i =1, sum = 0;
for (i = 1; i <= 10; i++) // インクリメント演算子
sum += i;
std::cout << "sum:" << sum << std::endl;
return 0;
}


285 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 20:49:50 ]
>>275 D-2
#include <iostream>
int comb(int n, int r)
{
if (r == 0 || r == n) return 1;
n--; // デクリメント演算子
return comb(n, r - 1) + comb(n, r);
}
int main()
{
int i, n, r;
long x;
std::cout << "n:"; std::cin >> n;
std::cout << "r:"; std::cin >> r;
std::cout << "nCr=" << comb(n, r) << std::endl;
return 0;
}
こんなんで良いのかな。違うような気もするが。




286 名前:棚大生 [2009/05/26(火) 20:55:34 ]
>>282
ありがとうございます!!!

面倒だと思いますが、A〜Dもお願いします。


287 名前:棚大生 [2009/05/26(火) 21:04:38 ]
>>286 はすいません書き込むのが遅れました
>>283
ABに関してなんですが、coutでなぜ"\"というのが出てくるのですか?

288 名前:棚大生 [2009/05/26(火) 21:10:12 ]
>>285
重ね重ねすいません。
D-2で、できれば combを使わない方法でお願いしたいのですが。。。

289 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:15:45 ]
注文の多い料理店

290 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 21:56:26 ]
>>275 D-2 (combを使わない)
#include <iostream>
int main()
{
int i, n, r;
int x = 1;
std::cout << "n:"; std::cin >> n;
std::cout << "r:"; std::cin >> r;
for (i = n; i >= n - r + 1; i--) //デクリメント演算子
x *= i;
for (i = r; i >= 1; i--) //デクリメント演算子
x /= i;
std::cout << "nCr=" << x << std::endl;
return 0;
}
オーバーフローは全く考慮してないので注意。

291 名前:デフォルトの名無しさん [2009/05/26(火) 22:01:42 ]
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):

1!〜53!を計算して、それらの計算結果の一の位、十の位、…をそろえて(つまり右揃えで)
出力するプログラムを作成せよ。但し、その際
・適切にモジュール化、機能分割する
・53!≒4.27*10^69であることを考慮して階上値を入れる配列の大きさを決める

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: あさって
[5] その他の制限:
・配列の添え字がメモリ確保した配列要素の範囲を超えてはならない
・乗算を上の桁から行ってはいけない。
・53!の計算、出力の際に最初から1*2*3*...*53という風に、極端に
 処理効率を悪くしてはいけない。

292 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:10:34 ]
>>291
むずいな

293 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:14:50 ]
はぁ?

294 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:39:56 ]
>>291
多倍長整数の乗算の実装をしろってことでおk?
制限の2つ目からもそんなニオイが感じられるし
3つ目の制限は 53!=52!(直前に計算済み)x53をしろってことかな

295 名前:真面目に質問! [2009/05/26(火) 22:41:55 ]
【授業】:C++

【問題文】:

@以下のプログラムを実行した際,戻り値として何が表示されるか。

#include <iostream>
int main()
{
int a,d,e;
a = 10;
d = a ==10;
e = a < 10;
cout << e <<"\t"<< d <<endl;
}

Aa=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。

BAのプログラムを実行した際,戻り値として何が表示されるか。

【期限】:09.05.27 12:00


何の事を言っているのかサッパリです。。。
よろしくお願いします。



296 名前:棚大生 [2009/05/26(火) 22:45:00 ]
>>290
どうもありがとうございました。
なんとかなりそうです。

297 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:56:50 ]
>>291 なんとか1レスに納めた。修正ヨロ
#include<stdio.h>
#define MB_UNIT 10000
#define MB_SIZE 18
typedef struct tag_mb_t{ long data[MB_SIZE]; }mb_t;
mb_t mb_mul(mb_t a, int n){
long i, tmp, carry=0;
for(i=0;i<MB_SIZE;i++){
tmp=a.data[i]*n+carry;
a.data[i]=tmp%MB_UNIT;
carry=tmp/MB_UNIT;
}
return a;
}
int mb_sprint(char buf[MB_SIZE*4+1], mb_t a){
char i, *p=buf;
for(i=MB_SIZE-1;i>0 && a.data[i]==0;i--);
p+=sprintf(p, "%ld", a.data[i]);
for(i--;i>=0;i--) p+=sprintf(p, "%04ld", a.data[i]);
return p-buf;
}
int main(void){
char buf[MB_SIZE*4+1], i, len53;
mb_t x[54]={{{1}}};
for(i=1;i<=53;i++) x[i]=mb_mul(x[i-1], i);
len53=mb_sprint(buf, x[53]);
for(i=1;i<=53;i++){
mb_sprint(buf, x[i]);
printf("%*s\n", len53, buf);
}
return 0;
}

298 名前: ◆XjTlXLIlH2 [2009/05/26(火) 23:10:11 ]
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
めもりのついていない4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかるプログラムをC言語で書く。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:
forやwhileなどを主に使ったプログラムにしたいのですがよくわからなかったのでよろしくお願いします。


299 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:14:51 ]
>>298
4 0
1 3
1 0
0 1
4 1
2 3


300 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:21:16 ]
>>299
0 3
3 0
3 3
4 2
0 2
2 0

301 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:35:34 ]
>>295
(1) 0 1
(2)
#include <iostream>
int main()
{
int a,b,c,d,e;
a = 10; b = 3; c = 4;
d = c>a && c>b;
e = c>a || c>b;
cout << e <<"\t"<< d <<endl;
}
(3) 1 0
よほどおかしな環境でない限りはこうなるとは思うが、
コンパイラ/OSが書いてない以上実行結果は妄想。

302 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:42:15 ]
>>291
#include <stdio.h>
#include <stdlib.h>
typedef struct tag_LINT{
  int sz_array;
  int* value;
} LINT;
LINT* create_lint(int keta){ // size:桁
  LINT* lint = (LINT*)malloc(sizeof(LINT));
  lint->sz_array = keta / 4 + 1;
  lint->value = (int*)calloc( sizeof(int), lint->sz_array);
  return lint;
}
LINT* copy_lint(LINT* lint){
  LINT* copy = (LINT*)malloc(sizeof(LINT));
  copy->sz_array = lint->sz_array;
  copy->value = (int*)calloc( sizeof(int), lint->sz_array);
  return copy;
}
LINT* mul_lint_int(LINT* l_num, int r_num){
  int carry = 0;
  //for (int i=l_num->sz_array-1; i>=0; i--){
  for (int i=0; i < l_num->sz_array; i++){
        int tmp = l_num->value[i] * r_num + carry;
    l_num->value[i] = tmp % 10000;
    carry = tmp / 10000;
  }
  return l_num;
}
>>303に続く

303 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:44:20 ]
>>302の続き

void print_lint(LINT* l_num){
  for (int i=l_num->sz_array-1; i>=0; i--){
    printf("%04d", l_num->value[i]);
  }
  printf("\n");
}
int main(void){
  LINT* n = create_lint(70); // 53!≒4.27*10^69
  n->value[0] = 1;
  for (int i=1; i<=53; i++){
        mul_lint_int(n, i);
    printf("%2d!= ", i);
    print_lint(n);
  }
  return 0;
}

リロード忘れてて>>297で答えてたなorz
でもとりあえずw

304 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:50:43 ]
+ ;
* ☆_+
: , xヾ:、__,..-‐‐:、、,へ.........._
         く '´::::::::::::::::ヽ
          /0:::::::::::::::::::::::', free議論が始まる前にf逃げて〜!!!
       =  {o:::::::::(;´Д`):::}
         ':,:::::::::::つ:::::::つ
      =   ヽ、__;;;;::/
           し"~(__)

305 名前:294=302=303 mailto:sage [2009/05/27(水) 00:09:48 ]
>>304 スマソw
>>302-303の修正
1. // size:桁 -> 消し忘れ
2. copy_lint関数 -> 使ってないから消して
3. 追加
LINT* delete_lint(LINT* lint){
  free(lint->value);
  free(lint);
}
4. 変更
main関数のreturn前に
  delete_lint(n);
を追加
5. 出力部分で先頭部分を空白にするならfor文を
bool f=true;
for (int i=l_num->sz_array-1; i>=0; i--){
  if (f && (0!=l_num->value[i]))  f=false;
  printf( (f? "    ": "%04d"), l_num->value[i]);
}
に変更



306 名前:デフォルトの名無しさん mailto:age [2009/05/27(水) 00:13:43 ]
【質問テンプレ】
[1] 授業単元:C言語
[2]問題1 テキストファイルにある文字列を空白で区切って一行ごとに表示する
例 I have a pen とテキストファイルにかかれていたらほかのファイルに
I
have
a
pen
と表示する
問題2 問題1で1行ごとに表示した文字列の4行目の文字列をほかのファイルにコピーする
例の場合はpenをコピーし、また別のファイルにpenと出力させる。
問題3 問題1で作った文字列で区切る物を利用してアルファベット、スペース、数字の数を数えるプログラム
例 as 123 rtd xxとファイルに入力されていたらアルファベットは3こ、数字は2こ、スペースは3個と表示
1,2,3はそれぞれ別のプログラムですが2,3では1のものを利用します。
[3] 環境
 [3.1] OS: Windows
 [3.2] VisualC++
 [3.3] 言語: C
[4] 期限:5月29日まで



307 名前:デフォルトの名無しさん [2009/05/27(水) 01:23:07 ]
[1] 授業単元: C++演習
[2] 問題文(含コード&リンク):
  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9234.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual C++
 [3.3] 言語: C++
[4] 期限: 27日まで
[5] その他の制限:vectorを習ったばかりです



308 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:53:29 ]
>>306

問題1--------------------
#include <stdio.h>
int main(void)
{
int c, last;
for (; (c = getchar()) != EOF; ) {
if (c == ' ')
if (last == ' ') ;
else putchar('\n');
else
putchar(c);
last = c;
}
return 0;
}


309 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:54:38 ]
>>306

問題2--------------------
#include <stdio.h>
#include <string.h>
#define MAXBUF 1000
int main(void)
{
unsigned char buf[MAXBUF];
int count = 0, continued = 0;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
if (!continued) count++;
if (count == 4)
fputs(buf, stdout);
if (strlen(buf) == MAXBUF - 1 && buf[MAXBUF - 2] != '\n')
continued = 1;
else
continued = 0;
}
return 0;
}


310 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:55:22 ]
>>306

問題3--------------------
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c;
int found_digit = 0, found_alpha = 0;
int numeric_count = 0, alpha_count = 0, line_count = 0;
while((c = getchar()) != EOF) {
if (c == '\n') {
line_count++;
if (found_digit) numeric_count++;
if (found_alpha) alpha_count++;
found_digit = 0;
found_alpha = 0;
}
if (isdigit(c)) found_digit = 1;
if (isalpha(c)) found_alpha = 1;
}
printf("アルファベットは%d個、数字は%d個、空白は%d個です\n",
alpha_count, numeric_count, line_count - 1);
return 0;
}

311 名前:307の間違い mailto:sage [2009/05/27(水) 01:56:20 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9255.txt

312 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:00:58 ]
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9259.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 6月初旬
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9260.c
現在できているプログラムですが、ツーペアの判定が上手くいきません。どなたか改善をお願いします。

313 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 02:07:23 ]
>>306
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9256.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9257.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9261.c

314 名前: ◆Xf1zvf6ius mailto:sage [2009/05/27(水) 02:51:52 ]
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9262.txt
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9263.txt

[3] 環境
 [3.1] OS:XP
 [3.2] textpad
 [3.3] 言語: C++
[4] 期限: 5月末
よろしくお願いします。

315 名前:馬路 [2009/05/27(水) 03:30:09 ]
お願いします。

【授業】:プログラミング(C++)

【問題文】:

@以下のプログラムを実行した際,戻り値として何が表示されるか。

#include <iostream>
int main()
{
int a,d,e;
a = 10;
d = a ==10;
e = a < 10;
cout << e <<"\t"<< d <<endl;
}

Aa=10,b=3,c=4とすると、c>aかつc>bの戻り値、c>aまたはc>bの戻り値を出力するプログラムを作成せよ。

BAのプログラムを実行した際,戻り値として何が表示されるか。

【期限】:09.05.27 12:00



316 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 04:11:24 ]
>>315
>>301

317 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 04:23:45 ]
>>314
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9265.cpp

問題文以上に余計な関数とか書いたから邪魔なら省いてくれ

318 名前:307の間違い mailto:sage [2009/05/27(水) 04:36:18 ]
>>298 再帰とか2分木とか考えてる暇がないのには理由がある、役不足。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9266.txt

319 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 05:32:23 ]
[1] 授業単元:プログラミング入門C++
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9267.txt

[3] 環境
 [3.1] OS:XP
 [3.2] Turbo C++
 [3.3] 言語: C++
[4] 期限: 今日18時まで
かなり初歩だと思いますがよろしくお願いいたします。



320 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:17:32 ]
>>319
#include <iostream>
using namespace std;
int passMinutes(const int start, const int end) { return end - start; }
int main()
{
const int MIN_INADAY = 24*60;
int h1, m1, h2, m2;
cout << "開始時間(0-23):"; cin >> h1;
cout << "開始分(0-59):"; cin >> m1;
cout << "終了時間(0-23):"; cin >> h2;
cout << "終了時間(0-59):"; cin >> m2;
// 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する
// endは27:00等の入力も受け付けるが、startは、00:00〜23:59の範囲に丸められる
int start = h1*60+m1;
int end = h2*60+m2;
if(start < 0) {
start = 0;
h1 = 0;
m1 = 0;
} else if(start >= MIN_INADAY) {
start = MIN_INADAY - 1;
h1 = 23;
m1 = 59;
}
int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end);
cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl;
cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl;
return 0;
}

321 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:24:17 ]
>>319 ごめ。endが負の数になる場合のチェックを入れ忘れてた。
#include <iostream>
using namespace std;
int passMinutes(const int start, const int end) { return end - start; }
int main()
{
const int MIN_INADAY = 24*60;
int h1, m1, h2, m2;
cout << "開始時間(0-23):"; cin >> h1;
cout << "開始分(0-59):"; cin >> m1;
cout << "終了時間(0-23):"; cin >> h2;
cout << "終了時間(0-59):"; cin >> m2;
// 入力は省略。h1:m2 > h2:m2 の場合、h2:m2は翌日の時間だと判断する
// startは、00:00〜23:59の範囲に丸められるがendは最小値だけが00:00に丸められる。
int start = h1*60+m1;
int end = h2*60+m2;
if(start < 0) {
start = h1 = m1 = 0;
} else if(start >= MIN_INADAY) {
start = MIN_INADAY - 1;
h1 = 23;
m1 = 59;
}
if(end < 0) { end = h2 = m2 = 0; }
int tm = (start <= end) ? passMinutes(start, end) : passMinutes(start, MIN_INADAY) + passMinutes(0, end);
cout << h1 << "時" << m1 << "分から" << h2 << "時" << m2 << "分までの時間" << endl;
cout << (tm / 60) << "時間" << (tm % 60) << "分です" << endl;
return 0;
}

322 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 07:51:14 ]
>>306
>>313 訂正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9256.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9257.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9268.c
0〜9、A〜Z、a〜z以外の ( # ! などの対策を追加

323 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:18:12 ]
>>312
ワンペアの判定結果を使う。
ツーペア判定関数の引数に、最初に見つけたワンペアカードを追加する。
ツーペア判定関数は、ワンペア以降から二組目のセットを見つけ、あればそのカード番号を返す。
ワンペアがなければ、そもそも呼ぶ必要もなさそう。

324 名前: ◆UlBEcxSSxE [2009/05/27(水) 09:58:29 ]
[1] 授業単元:プログラミング入門A
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9269.txt
[3] 環境
 [3.1] OS:Ubuntu Linux 8.
 [3.2] コンパイラ名とバージョン: gcc 4.2
 [3.3] 言語: C
[4] 期限: 5月29日17:00
[5] その他の制限: アップしたファイルに詳しく書いてあります。

いろいろやってみたのですが難しいです。再帰版はいろいろ調べてみて
何とかなるような気もするのですが、非再帰版はどうやったらいいのか
見当がつかず、あと2日で両方は無理そうです。よろしくお願いします。


325 名前:デフォルトの名無しさん [2009/05/27(水) 10:04:19 ]
すみません。 急ぎで知りたいことがあります。
unsigned int 型の数字が、ランダムで生成されて
すでに生成済みか、未生成かを知りたいです。
高速で省メモリにするにはどうしたらいいですか?



326 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:14:29 ]
r(0), r(1), r(2), ... みたいに自然数からの関数rを使って「乱数列」を与える
ことができて、さらにrの逆関数が作れれば簡単。でもそんな乱数列は
あるのかなあ。

そうでなければ、生成した乱数を適当な集合を表すデータ構造(ハッシュか
何か)に突っ込んでおくという愚直な方法しか思いつかないや。でもこれだと
省メモリにはならないかも。




327 名前:325 [2009/05/27(水) 10:15:59 ]
数字はたくさんあり、メモリに保存するとしたら数ギガになる場合がしりたいです。
メモリはたかだか30Mの使用で処理したいです。

328 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:16:03 ]
>>325
スレ違い

ダブらない乱数を発生させたい(それはもう乱数じゃない)なら
 つttp://pc12.2ch.net/test/read.cgi/tech/1192628099/l50
そうでないなら
【初心者歓迎】C/C++室 Ver.65【環境依存OK】
 つttp://pc12.2ch.net/test/read.cgi/tech/1239326399/l50

329 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 10:35:10 ]
>>325
30M*8bit=240M=240,000,000 MAX

330 名前:デフォルトの名無しさん [2009/05/27(水) 10:37:29 ]
>>326
ランダムの数字って言うのは、すでにハッシュ値(CRC,SHA)のことなんです。
質問のため言い換えました。
重複ファイルや重複URLを検出したいのですがいい方法ないかなとおもいました。
ググたところ、パトリシア トライ、ダブル配列あたりが使えそうなのでこのあたりでいってみます。

331 名前:デフォルトの名無しさん [2009/05/27(水) 11:41:58 ]
bitデータの2分木で、子がある1、子がない0として記録しておけばかなり縮む。探索は木の左からと決める。
一次元の配列に格納したらデータの更新が難しいが。 追加する部分以降を移動しなければいけない。

332 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 14:07:44 ]
お願いします。
授業単元ソフトウェア製作実習
osソラリス
コンパイラ gcc
言語 c
制限 台形の面積を求めるのに(上底+下底)*高さ/2を使ってください
。できればいかにも初心者が書いたようなプログラムにしてくれる
と助かります。
高さhが2で上底aと下底bが次のような4つの合計を求めるプログラムをfor文をつかって作成せよ。
台形(1)a=0b=2^2h=2面積=
台形(2)a=2^2b=4^2h=2面積=
台形(3)a=4^2b=6^2h=2面積=
台形(4)a=6^2b=8^2h=2面積=
四つの台形の面積の合計=
以上でお願いします。

333 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:01:30 ]
>>43

334 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:22:54 ]
>>332

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9270.txt

こんなんで良い? ちなみに解の妥当性までは確認してない

335 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:46:51 ]
>>320>>321
ありがとうございました!



336 名前:初心者 [2009/05/27(水) 15:48:34 ]
C++で
#include <iostream.h>
main()
{

int a=10,b=3,c=2,d=0,e=0;
d = !a && b>c;
e = !a || b>c;
cout << d <<"\t"<< e <<endl;
}
を実行した結果はどうなりますか?

337 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:53:05 ]
実行してみりゃいいだろw






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

前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