C/C++の宿題片付けます 125代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/04/20(月) 20:23:19【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】 http://chomework.sakura.ne.jp/
【wiki】 http://www23.atwiki.jp/homework/
前スレ
C/C++の宿題片付けます 124
http://pc12.2ch.net/test/read.cgi/tech/1235927586/
0002デフォルトの名無しさん
2009/04/20(月) 21:09:04前スレhttp://pc12.2ch.net/test/read.cgi/tech/1235927586/948へ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9047.txt
0003デフォルトの名無しさん
2009/04/20(月) 23:58:25[1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク):• 別途配布するプログラムを,リンクせずにコンパ
イルのみする.(オブジェクトファイルを生成する)
- 手順を報告する
• コンパイラオプションにより,アセンブラコードを
生成させる.
- オブジェクトファイル毎に生成されたアセンブ
ラコードを報告する(処理を行っている部分の
み抜粋する).
[3] 環境
[3.1] OS: XP
[3.2] Visual Studio 2008
[3.3] C
[4] 期限:4/22の朝八時
家に環境無いからお願いします。
0004デフォルトの名無しさん
2009/04/21(火) 00:16:35[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9049.txt
[3] 環境
[3.1] OS:ソラリス
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:4/24の9時
お願いします
0005デフォルトの名無しさん
2009/04/21(火) 00:28:01#include <stdio.h>
int main()
{
int list[] = { 10000, 2000, 1000, 500, 100, 50, 10, 5, 1 }, money, i;
printf("How much? > ");
scanf("%d", &money);
printf("========\n");
for(i = 0; i < sizeof(list) / sizeof(int); i++){
printf("%d->%d\n", list[i], money / list[i]);
money %= list[i];
}
return 0;
}
0006デフォルトの名無しさん
2009/04/21(火) 00:50:10あれのコードマップ(補助漢字を除いた部分)をC言語のプログラムで生成する課題をやってるんだけど、
家のパソ(ウインドウズ)でVISUALC++上で作ったら、A1〜Fe(151〜225)の数字を文字列として出力しても全然違う文字が出てしまう。
それとはずらした範囲で同じことをやったら、今度は飛び飛びで出力されてしまう。
プログラムはFOR文で一ビットと二ビットの数字を特定の範囲で虱潰しにするだけのもので、
あってるはずなんだけど、何で出来ないのかわからない。
もしかしたらLINUX上でやらなきゃ駄目なのか?(本来はLINUXのコマンドプロンプトでやるように言われた課題なので)、
って思ったんだけど、やっぱそうなのかな?
ASKIIVerの課題もあるんだけど、そっちは普通に上手く行ってた。
0007デフォルトの名無しさん
2009/04/21(火) 00:51:01プログラム自体は合ってると思うから、やっぱ他所で聞きます。すいません。
0008デフォルトの名無しさん
2009/04/21(火) 00:54:090009デフォルトの名無しさん
2009/04/21(火) 01:09:06[2] 問題文(含コード&リンク): 3名の名前と性別、10桁の会員番号を入力し表示せよ
*会員番号は数字のみで入力し、2,6桁目の後に「-」を出力で表示せよ
入力(1234567890)→出力(12-3456-7890)
*入力された会員番号が10桁に満たない場合、
または大きい場合は再度入力する指示を入れること
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: 04/22 09:00
[5] その他の制限: 構造体名{ person_t }メンバ{ name,sei,mem }を使用しています
宜しくお願いします
0010デフォルトの名無しさん
2009/04/21(火) 01:52:52[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9050.txt
[3] 環境
[3.1] OS:指定なし
[3.2] コンパイラ名とバージョン:GCC
[3.3] 言語:C/C++どちらでも
[4] 期限: 2009年4月24日23:59まで
[5] その他の制限: 制約は特にないが(変数名などに関して)読みやすいプログラムを心がけること
うるう年や年越しがこんがらがってしまいました
宜しくお願いします
0011デフォルトの名無しさん
2009/04/21(火) 01:53:33#include <stdio.h>
int add(int a, int b) {
return a+b;
}v
oid main()
{
int a, b;
int s;
a = 10;
b = 20;
s = add(a, b);
printf("%d+%d=%d\n", a, b, s);
}
0012デフォルトの名無しさん
2009/04/21(火) 02:02:00丸投げする前にExcelで考えてみたら気が変わったかもな
0013デフォルトの名無しさん
2009/04/21(火) 02:04:22UTF-8だと?
0014デフォルトの名無しさん
2009/04/21(火) 02:18:58ttp://d.hatena.ne.jp/jitsu102/20070924/1190561951
プロジェクトの設定
「プロジェクト」->「プロパティ」を選択。
「構成プロパティ」「C/C++」「出力ファイル」を選択。(画面左ツリー)
「アセンブリの出力:アセンブリコード、コンピュータ語コード、ソースコード(/FAcs)」に設定し、「OK」をクリック。(画面右)
ビルド後にプロジェクトフォルダの「Debug」フォルダに「%プロジェクト名%.cod」という名前でアセンブリコードが生成される。
0015デフォルトの名無しさん
2009/04/21(火) 03:29:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9052.c
こんなもんか。
もしかして、勝てるパターン(相手がミスる)があればいい?
Bが翌日を渡せば勝てるのに、翌月を渡して負ける(=Aが勝つ)とか有り?
0016デフォルトの名無しさん
2009/04/21(火) 03:30:380017デフォルトの名無しさん
2009/04/21(火) 03:38:110018デフォルトの名無しさん
2009/04/21(火) 11:22:55ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9054.txt
0019デフォルトの名無しさん
2009/04/21(火) 16:11:41[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9060.cpp
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 4月23日
[5] その他の制限:参考というか、この程度のレベルでということで授業で習ったサンプルを載せてます
あと2日しかありませんが、よろしくお願いします
0020デフォルトの名無しさん
2009/04/21(火) 16:25:27ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9061.txt
確保したメモリは解放してないが
プロセス終了時に解放されるはず
0021デフォルトの名無しさん
2009/04/21(火) 17:35:18[2]問題文:逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。
x1=0,x2=1とおいて計算を始める。許容誤差は10^-5、
反復回数は30回とする。
・#include "stdafx.h"
#include <stdio.h>
#include <math.h>)として始めること。
[3]環境
[3.1]OS:windous XP
[3.2]コンパイラ名とバージョン:Visual Studio.NET2003
[3.3]言語:C++
[4]期限:4月27日
[5]その他:プログラミングは全くの素人で、申し訳ありませんがよろしくお願いします。
0022デフォルトの名無しさん
2009/04/21(火) 18:44:49> プロセス終了時に解放されるはず
ttp://blog.livedoor.jp/aamatome/archives/448403.html
0023デフォルトの名無しさん
2009/04/21(火) 18:46:590024デフォルトの名無しさん
2009/04/21(火) 18:48:04ここがお前の縄張りなの?せいぜい持論を展開していな、レベルの低い集団w
0025デフォルトの名無しさん
2009/04/21(火) 18:52:36いいたいことがあるなら具体的にコードで書かないと長文さんに怒られちゃうぞw
0026デフォルトの名無しさん
2009/04/21(火) 18:58:24> ガーベジコレクション機能がないプログラミング言語(の処理系)では
ttp://e-words.jp/w/E382ACE383BCE38399E382B8E382B3E383ACE382AFE382B7E383A7E383B3.html
> これが不完全なOSは次第に利用可能なメモリが減ってゆくため、
ttp://tech.sinby.com/wiki_ja/index.php?lex%20%A4%C8%20strdup%20%A4%F2%BB%C8%A4%A6
> strdup を使えばどこかで開放しなければならない。
分かりましたか、皆さん?言っておきながらこれでしょ?
こんなスレ、もとからレベルが低いって分かっていましたが
随分と安っぽいプライドで虚勢を張っているおバカちんがいることも。
どうせお山の大将なんでしょ、せーんせいw
指導した生徒のレベルはどんなもんかね?是非学校名、企業名を教えて下さい。
こちらとは縁がないでしょうけど、念のために回避したいので。
0027デフォルトの名無しさん
2009/04/21(火) 18:59:38あれ?日本語が通じなかった?お前の中ではそうなんでしょ?
コンピュータの中では知りませんけど、処理系によっては、ね。
0028デフォルトの名無しさん
2009/04/21(火) 19:02:030029デフォルトの名無しさん
2009/04/21(火) 19:05:500030デフォルトの名無しさん
2009/04/21(火) 19:25:13Cなら固定長でいいじゃん
可変長を使いたいならC++のstd::stringなりstr:vectorを使えよ
0031デフォルトの名無しさん
2009/04/21(火) 19:32:43#include <stdlib.h>
int main()
{
void* pv = malloc(50000000);
scanf("%*c");
return 0;
}
VC++6.0 SP6 の Debug Release それぞれでビルドして確認したが
プロセスが終了したらちゃんと解放されたぞ(XP Home SP3)
メモリリークが問題になるのはプロセスが残ってる場合だぞ
すぐ終わるプロセスでもきちんと解放するに越したことはないが
0032デフォルトの名無しさん
2009/04/21(火) 19:35:07それを突っ込まれると常人には理解できない長文を連投して大暴れ。
何度大恥かいても一向に成長しないw
0033デフォルトの名無しさん
2009/04/21(火) 19:41:36後釣り宣言することもあるな。
0034デフォルトの名無しさん
2009/04/21(火) 19:51:11[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9064.txt
[3] 環境
[3.1] OS: XP
[3.2] Visual Studio 2008
[3.3] C++
[4] 期限:4月中
2番の部分だけでもよろしくお願いいたします。
0035デフォルトの名無しさん
2009/04/21(火) 20:04:54003635
2009/04/21(火) 20:06:030037デフォルトの名無しさん
2009/04/21(火) 20:37:030038デフォルトの名無しさん
2009/04/21(火) 20:53:510039デフォルトの名無しさん
2009/04/21(火) 21:32:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9065.txt
stdafx.hの中身がわからんので、空ファイルでおkなようにした
0040デフォルトの名無しさん
2009/04/21(火) 21:44:31[2] 問題文(含コード&リンク):入力された文字列を2進数の文字列として
解釈し、10進数に変換し画面出力しなさい。
入力にはライブラリ関数putcharを使用すること。
Enterキーのみが押された場合、エラーを表示し、再入力する。
0,1以外の文字が入力された場合、エラーを表示し、再入力する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語:C言語
[4] 期限: 2009/04/23
よろしくお願いします。
0041デフォルトの名無しさん
2009/04/21(火) 21:46:310042デフォルトの名無しさん
2009/04/21(火) 21:46:360043あさやん ◆Pgie40NoFo
2009/04/21(火) 21:48:060044デフォルトの名無しさん
2009/04/21(火) 21:50:56getcharでした!
0045ぷるるるん
2009/04/21(火) 22:10:53なにかヒントをいただきたく、
書き込みます。
2バイト文字を、
24*24の二次元テーブルに代入する
ex)
"大"の場合、
000000000000000000000000
000000000011000000000000
000000000011000000000000
000000000011000000000000
000011111111111111100000
000011111111111111100000
000000000011000000000000
000000000111100000000000
000000001100110000000000
000000011000011000000000
000000110000001100000000
000001100000000110000000
(これは24*12ですが・・・)
のような処理をしたいのですが、
どのようにアプローチすればよいのか、
アドバイスご教授願います。
これは、
ドットビューという
点図ディスプレイに表示させるための
ものです。
0046デフォルトの名無しさん
2009/04/21(火) 22:16:16#include <stdio.h>
int main(void)
{
int ch, n;
while(1) {
n = 0;
ch = getchar();
if(ch!='\n') {
while(ch=='0' || ch == '1') {
n = n * 2 + ch - '0';
ch = getchar();
}
if(ch == '\n') break;
}
printf("error\n");
while(ch!='\n') ch = getchar();
}
printf("%d", n);
return 0;
}
0047デフォルトの名無しさん
2009/04/21(火) 22:23:21本当に助かりました!!有難うございました。
0048デフォルトの名無しさん
2009/04/21(火) 22:25:27Boost.Random使っていいの? それなら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9066.txt
0049デフォルトの名無しさん
2009/04/21(火) 22:28:08[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9067.txt
[3] 環境
[3.1] win
[3.2] gcc
[3.3] c
[4] 期限: 今日中にお願いします
[5] よろしくおねがいします
0050デフォルトの名無しさん
2009/04/21(火) 22:33:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9068.txt
>>48 レスまでかぶるとこだったww
0051デフォルトの名無しさん
2009/04/21(火) 22:39:46なんか2分法さっき書いた気がする
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9069.txt
0052デフォルトの名無しさん
2009/04/21(火) 23:00:24C++でゲームを作っています
画像ファイルを別にもっていて、例えばゲーム.exeを機動すると画像ファイルを読み込んで表示するようにしています
このときに同一フォルダに画像がないと実行しても表示されないと思うのですが
これらを一つにまとめた実行体?を作ることってできますか
0053デフォルトの名無しさん
2009/04/21(火) 23:08:04できます
リソースでググればおk
0054デフォルトの名無しさん
2009/04/21(火) 23:10:28[2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語: C
[4] 期限: 今日明日中にお願いします 。
[5]期限短いですが全然わからないのでよろしくおねがいします。
0055デフォルトの名無しさん
2009/04/21(火) 23:10:42しらべてみます
0056デフォルトの名無しさん
2009/04/21(火) 23:25:06ありがとうございました。
今取り組んでる課題にも参考にしたいと思います。
0057デフォルトの名無しさん
2009/04/21(火) 23:42:25[2] 問題文(含コード&リンク):以下の処理できること
�@画面より入力した文字列(支出明細)と数字(金額)をファイルに保存すること。
�Aファイル名は「記入年月日.txt」になること
�B日付変わった場合、新しいファイルで保存できること
�Cファイル内容は以下の形式で保存できること
[記入年月日] [支出明細] [支出金額] [合計金額]
�D月が替わった場合、同じ月のファイル内の「合計金額」を「年月_total.txt」に以下の形式で保存できること
[年月] EXPENDITURE [合計金額]
※「年月_total.txt」ファイルの[合計金額]は同じ月の「記入年月日.txt」ファイル内の「合計金額」を合計した数字となります
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語:C++
[4] 期限: 2009/04/22 朝 06:30
日付の取得や取得した日付情報をファイル名にするとか、日付変わった時の判定と処理とかは良く分からないから、軽く説明もいただければ助かります。
宜しくお願いいたします。
005934
2009/04/22(水) 00:58:12ありがとうございます!
0060デフォルトの名無しさん
2009/04/22(水) 08:44:50遅れましたが、ありがとうございます
0061デフォルトの名無しさん
2009/04/22(水) 09:06:06スレチ
0062デフォルトの名無しさん
2009/04/22(水) 15:44:38Boost.Random使わないやり方ってあるんですか?
0063デフォルトの名無しさん
2009/04/22(水) 16:58:55[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org28097.zip.html
[3] 環境
[3.1] Linux
[3.2] g++
[3.3] c++
[4] 期限: 23日12:00迄にお願いします
[5] 演算子のオーバーロードの問題ですが、全く意味がわからないままインターネットを参考にしたら
プログラムできちゃいました(と思う)。けれどコピーしただけで全く理解出来ていないので、(2)〜(4)が答えられません
宜しくお願いします
備考:
(2)→フレンドがついていないからメンバですか?そうだとするとなぜ僕はメンバ関数にしたのでしょうか?
(3)→フレンドがついているからグローバルですか?そうだとするとなぜ僕はグローバル関数にしたのでしょうか?
(4)→とりあえずやってみたらコンパイルは通りました。値はrだけ足し算されています。これは「動作している」と
言えるのでしょうか?もし言えるとするとなぜ動作するのでしょうか?
というわけでよろしくおねがいします
0064デフォルトの名無しさん
2009/04/22(水) 17:11:16(2)グローバル関数にするとfriendにしなければならなくなるから
(3)出力演算子<<はメンバ関数にする事はできない
(4)dの虚数部が0iだから。0i以外の値を入れて検証すればよい
0065デフォルトの名無しさん
2009/04/22(水) 17:15:27ごめん(4)が間違えていた
(4)クラスComplexのコンストラクタが Complex (double a = 0.0, double b = 0.0);
とデフォルト引数を持っており、虚数部が省略された事により0.0が
自動的に代入されたから動作している
006757
2009/04/22(水) 23:09:04「取得した日付情報をファイル名にする」と「日付変わった時の判定と処理」
について、アドバイスいただけないでしょうか?^^;;
宜しくお願いします
0068デフォルトの名無しさん
2009/04/22(水) 23:11:10template< class T > void bar( T );
template<> void bar( int );
};
上の二つ目の bar は特殊化か、それともオーバーロードか。
ちなみに下はオーバーロード。
class foo {
void bar( int );
template< class T > void bar( T );
};
0069デフォルトの名無しさん
2009/04/23(木) 00:06:16特殊化
007063
2009/04/23(木) 00:23:27ありがとうございます
まだよくわからないのでもう少し詳細教えて下さい
(2)「+」のオーバーロードはフレンドでもメンバのどちらでもいけるということですが、なぜフレンドにするとよろしくないのでしょうか?
(4)デフォルト引数について勉強しました。例えばComplex x(3);とした場合、r=3.0, i=0.0の複素数が出来るのは理解しますが、そもそも
なぜ整数7が自動的にComplexとみなされるのでしょうか?(「+=」のオーバーロードの引数がComplex aだというのはわかりますが。。なぜ??)
0071デフォルトの名無しさん
2009/04/23(木) 00:28:16友達いないだろ
0072デフォルトの名無しさん
2009/04/23(木) 00:29:45(2)フレンドは別にいいけど折角クラスでprivateメンバにしている
変数が見えてしまいカプセル化の原則に反するから
(4)自動的に型変換が行われるから
これが嫌ならコンストラクタにexplicitを付けておけば = で呼び出す
形式は使えなくなる
0073デフォルトの名無しさん
2009/04/23(木) 00:34:34あなたは友達がいるんですね!?是非私とオホモダチになてークダサーイ
0074デフォルトの名無しさん
2009/04/23(木) 01:18:361行入力するごとにファイル名を生成して追加モードで書き込めば3の処理は問題ない
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
struct tm *p;
time_t now;
char fname[_MAX_PATH];
FILE *pf;
time(&now);
p = localtime(&now);
sprintf(fname, "%.4d%.2d%.2d.txt", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
pf = fopen(fname, "at");
fprintf(pf, "%.2d:%.2d:%.2d\n", p->tm_hour, p->tm_min, p->tm_sec);
fclose(pf);
return 0;
}
007563
2009/04/23(木) 03:25:14おぉ!なんかわかりましたありがとう
ところでデフォルト引数ってC言語でやったらコンパイルエラーになったみたいですが
C++の新機能ですよね?Javaにもないすよね?
(Javaは基本型だと0で初期化することはできるけど)
0076デフォルトの名無しさん
2009/04/23(木) 03:41:43template<typename T>
template<class T>
のどちらでもオッケーですが、この二つに違いがないという文章をC++ standard(英語)から探して来いと言われました。
C++ standardでぐぐるとなんかいっぱい出てくるのですが、どれかわかる人おしえてください
(文章まで見つけてくれるとなおおk)
0077デフォルトの名無しさん
2009/04/23(木) 03:56:20INTERNATIONAL STANDARD ISO/IEC 14882 Programming languages -- C++
買う気ないのでfinal draftから(差異があったらすまん)
14 - Templates
14.1 - Template parameters
-2-
There is no semantic difference between class and typename in a template-parameter. typename followed
by an unqualified-id names a template type parameter. typename followed by a qualified-name denotes
the type in a non-type
とある。
0079デフォルトの名無しさん
2009/04/23(木) 04:22:32[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9070.txt
[3] 環境
[3.1] OS: XP
[3.2] Visual Studio 2008
[3.3] C++
不備があったのでもう一度お願いします。申し訳ないです。
0080デフォルトの名無しさん
2009/04/23(木) 05:22:54ヒント:C言語なんかよりもそういう処理に特化した言語がある、あとはぐぐれ
008157
2009/04/23(木) 06:56:23ありがとうございます!!
0082デフォルトの名無しさん
2009/04/23(木) 09:39:40[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9071.txt
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] G++
[3.3] C++
[4] 期限: 23日19時迄
[5] 問題の意味がわかりません。。(C)は特に。解決って。。何が問題なのでしょうか?
よろしくおねがいします
0083デフォルトの名無しさん
2009/04/23(木) 11:09:03プログラミング言語以前に日本語が不自由過ぎるぞ
0084デフォルトの名無しさん
2009/04/23(木) 11:24:47それとも多重継承で不正とされるようなダウンキャストを
合法にする術を2つ見つけ出せというのか、どっちだろ。
後者ならわしもわからん*_*
0085デフォルトの名無しさん
2009/04/23(木) 11:59:28(a)
(b)
2.
(a)
(b)
008682
2009/04/23(木) 12:31:57そうですよね。。分かる人が見ると分かるような問題かと思いましたが、さすがにこんなんじゃわかんないですよね。
こちらの問題は諦めます。とりあえず、(a)と(b)だけでも提出したいのですがお願いできますでしょうか?
こちらも意味不明になってますでしょうか?
0087デフォルトの名無しさん
2009/04/23(木) 12:39:21[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org30032.zip.html
[3] 環境
[3.1] OS:UNIX
[3.2] g++
[3.3] C++
[4] 期限: 24日朝7:40迄にお願いします
[5] 備考:
covarianceって何でしょうか?g++でコンパイル実行すると普通に動作するのですが
何をどう修正すればよいのかサッパリなのでよろしくおねがいします
0088デフォルトの名無しさん
2009/04/23(木) 13:03:18提出期限が迫ってるみたいなんで、とりあえず解答作ってみた。
自分自身、問題の意図がつかめてない上に
厨くさいコードなんで使えんかもしれん・・・スマンw
誰か解いてあげて。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9072.zip
down_cast.cpp が (a)と(b)の解答、
down_cast2.cpp down_cast2a.cpp down_cast2b.cpp が(c)の解答ね。
008986
2009/04/23(木) 13:12:34ありがとうございます!厨くさいなんてとんでもないです。
とりあえず、「明解C++」を購入したのでこれを片手にコードの理解に努めます!
有り難うございました★☆。.:*:・"゚★('-^v)Thanks(v^-')★。.:*:・"☆★
0090デフォルトの名無しさん
2009/04/23(木) 14:20:00covariance(共変性)。
class Base {
virtual Base* clone() {}
};
class Derived {
virtual Derived* clone() {}
};
一般に、仮想関数のオーバーライドはパラメータだけでなく、
戻り値も完全に一致している必要があるが、
戻り値が基底クラスへのポインタまたは参照のときは
それを派生クラスへのポインタまたは参照に置き換えてよい、というルール。
・・・はいいとして、問題難しすぎてまったくわかりません^^
dynamic_cast を使うか、template < class T > clone( T t )みたいな外部関数を用意するしか思いつかない…
0091デフォルトの名無しさん
2009/04/23(木) 15:36:58お決まりのパターンの課題が出るだろうから、今から準備しておく。
0092デフォルトの名無しさん
2009/04/23(木) 15:37:370093デフォルトの名無しさん
2009/04/23(木) 15:40:06ここで質問される前に
0094デフォルトの名無しさん
2009/04/23(木) 15:42:36>>24
>>26
0095デフォルトの名無しさん
2009/04/23(木) 15:52:46とりあえず、ク素数を求めるコードを出すでおじゃるか?
0096デフォルトの名無しさん
2009/04/23(木) 15:55:53オナニーショーがしたいならどっかよそでやって。
0097デフォルトの名無しさん
2009/04/23(木) 16:04:00http://www23.atwiki.jp/homework/pages/7.html
0098デフォルトの名無しさん
2009/04/23(木) 16:05:38このスレを自分の縄張りだと思っている常駐引きこもり、あるいは
どこぞのランクの低い講師か大学の教授が我先にと必死だなw
0099デフォルトの名無しさん
2009/04/23(木) 16:11:33シンプソン積分とかルンゲ・クッタ法もよく出るんだがな
0100デフォルトの名無しさん
2009/04/23(木) 16:18:08>>22 >>24 >>26
0101デフォルトの名無しさん
2009/04/23(木) 16:23:19ウハッwwww俺すげっwwwwwwこんなプログラムが作れたwwww
って思う程度の低い講師や教授は、もう少し多種様々な使用目的で
作られているソフトの仕組みにも目を向けた方が良い。
何も、お前らがそれらの基本を作ったわけじゃないだろ?うざいんだよ
講師のくせして、講師風情のくせして、生徒を見下す奴ってw
0102デフォルトの名無しさん
2009/04/23(木) 16:23:49問題出る前に貼ろうとするヤツ以上に必死なヤツなんていねーよw
0103デフォルトの名無しさん
2009/04/23(木) 16:24:590104デフォルトの名無しさん
2009/04/23(木) 16:36:260105デフォルトの名無しさん
2009/04/23(木) 16:40:250106デフォルトの名無しさん
2009/04/23(木) 16:40:58お前の書いたソースは所詮、教科書に載っていたもので、各企業で使われている
企業秘密として存在もしている、技術的にも高度なコード(駄洒落ではない)には
到底及ばないし金にもならないもんねぇ〜♪
自分でちと吹いた、高度なコードw
0107デフォルトの名無しさん
2009/04/23(木) 16:47:01黙ってればボロを出さなくてすむぜ
0108デフォルトの名無しさん
2009/04/23(木) 17:19:47お前ん中ではな
0109デフォルトの名無しさん
2009/04/23(木) 17:35:07お前の学校ではな
0110デフォルトの名無しさん
2009/04/23(木) 17:59:550111デフォルトの名無しさん
2009/04/23(木) 18:01:390112デフォルトの名無しさん
2009/04/23(木) 19:27:16通信ネットワーク演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9073.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2009年5月10日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
資料が多すぎてややこしいかもですがよろしくお願いします。
0113デフォルトの名無しさん
2009/04/23(木) 19:54:140114デフォルトの名無しさん
2009/04/23(木) 22:21:38過去問の焼き直しです。
当方の環境は cygwin/Windows XP, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9074.txt
> の後に数字を入れるとその平方を小数点第一位まで表示します。
011587
2009/04/24(金) 01:07:250116デフォルトの名無しさん
2009/04/24(金) 02:40:46cocariance って聞いたことなかったので、ためしにやってみた
保証はしない
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9076.txt
ようするにclose()を仮想にせずに同じ機能を実装すればいいんだろってことで単なる力技の実装
型チェックは本当は RTTI とか使うんだろうけどその辺も気にしてない
確認は VC2008
元のソースがエラーになるのを確認した上で、修正後、以下の出力結果になることを確認
私はBです。
私はDです。
0117デフォルトの名無しさん
2009/04/24(金) 02:43:220119デフォルトの名無しさん
2009/04/24(金) 03:02:09class A {
public:
A* clone() {return clone_impl();}
virtual string identity() { return "私はAです"; }
protected:
virtual A *clone_impl() { return new A(*this); }
};
class B : virtual public A {
public:
B* clone() {return dynamic_cast<B*>(clone_impl());}
virtual string identity() { return "私はBです"; }
protected:
virtual A *clone_impl() { return new B(*this); }
};
class C : virtual public A {
public:
C* clone() {return dynamic_cast<C*>(clone_impl());}
virtual string identity() { return "私はCです"; }
protected:
virtual A *clone_impl() { return new C(*this); }
};
class D : public B, public C {
public:
D* clone() {return dynamic_cast<D*>(clone_impl());}
virtual string identity() { return "私はDです"; }
protected:
virtual A *clone_impl() { return new D(*this); }
};
012154
2009/04/24(金) 06:36:27ありがとうございます
ソース解読します
本当にありがとうございました
0122デフォルトの名無しさん
2009/04/24(金) 09:03:55http://anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
0123デフォルトの名無しさん
2009/04/24(金) 09:39:38情報処理
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9075.txt
[3] 環境
[3.1] OS
WindowsXP
[3.2] コンパイラ名とバージョン
gcc
[3.3] 言語:
C/C++
[4] 期限
2009年4月24日 23:30
[5] その他の制限: 無し
無理強いできる立場でないことは百も承知ですが 全問やっていただければ本当にありがたいです。
0124デフォルトの名無しさん
2009/04/24(金) 10:01:36#include<stdio.h>
int a[10][10]={
 {0,1,7,4,5,2,0,6,6,9},
 {3,5,8,0,0,5,6,0,3,0},
 {4,6,5,9,8,5,0,6,4,7},
 {9,7,2,0,7,3,6,7,9,3},
 {2,9,7,7,6,0,6,8,2,4},
 {7,4,2,2,3,1,4,8,9,0},
 {9,5,5,3,9,4,2,0,9,0},
 {5,3,2,9,5,4,9,0,7,7},
 {8,1,0,6,8,6,7,7,9,8},
 {2,3,3,5,5,8,4,8,2,4}};
int main(){
 int i=0,j=0,c=0;
 for(;i<10;++i)for(;j<10;++j)c+=a[i][j]%2;
 printf("%d\n",c);
}
0125デフォルトの名無しさん
2009/04/24(金) 10:18:14#include<stdio.h>
int fib(int n){return n<2?1:fib(n-1)+fib(n-2);}
int main(){
 int a[30],n=0;
 for(;n<30;++n)a[n]=fib(n+1);
 puts("隣り合う項の比");for(n=0;n<29;n++)printf("%f\n",(double)a[n+1]/a[n]);
}
0126デフォルトの名無しさん
2009/04/24(金) 10:22:49#include<stdio.h>
int fib(int n){return n<2?1:fib(n-1)+fib(n-2);}
int main(){
 int a[30],n=0;
 for(;n<30;++n)a[n]=fib(n+1);
 puts("各項を 2 で割ったあまり");for(n=0;n<30;n++)printf("%d\n",a[n]%2);
}
0127123
2009/04/24(金) 11:15:49ただ、申し訳ないのですが
全てのプログラムに対して 2:error: parse error before '&' token
(3_1)には 13:error: parse error before '&' tokenが追加されてしまいます。
0128デフォルトの名無しさん
2009/04/24(金) 11:23:43が残ってるなんてことはないよね
0129デフォルトの名無しさん
2009/04/24(金) 11:34:17#include<stdio.h>
#include<math.h>
typedef struct{int x,y,r;}circle_t;
double dist(circle_t C1, circle_t C2){
 return sqrt(pow(C2.x-C1.x,2)+pow(C2.y-C1.y,2));//(問) 円 C1 と C2 の距離を計算
}
int main(){
 circle_t C1={3,-4,2},C2={2,1,1};
 double a = 0;
 printf("C1 の中心の (x,y) 座標: (%d,%d)\n", C1.x, C1.y);
 printf("C2 の中心の (x,y) 座標: (%d,%d)\n", C2.x, C2.y);
 //(問) 円 C1 の中心と C2 の中心の x 座標の差を表示
 printf("%d\n",C2.x-C1.x);
 //(問) 円 C1 の x 座標を +2, y 座標を +1 して, 座標を再表示
 printf("%d %d\n",C1.x+2,C1.y+1);
 //関数 dist を実行し結果を表示. 初めは 0 と表示される.
 a = dist(C1,C2);
 printf("Distsnce between C1 and C2 is %lf\n", a); // 距離を表示
 return 0;
}
0130デフォルトの名無しさん
2009/04/24(金) 11:39:18Firefoxだと" "が"&nbsp"になっちゃうのか。
>>127は置換するなり,IEでコピペしなおすなりしろ。
0131デフォルトの名無しさん
2009/04/24(金) 11:50:57&nbsp;を&nbsp として空白表示になるとは。
0132123
2009/04/24(金) 11:59:06IEで確認したところ、nbspは表示されておりませんでした。
(3_3)まで確認しましたが、(3_1)がどうも最初の行(0174520669)に対してしか奇数の数が求められておらず、./aのあとに4と表示されるだけとなっております…
0133デフォルトの名無しさん
2009/04/24(金) 12:01:45各行の奇数の数を出力するの?
俺が書いたのは全部(100個)の合計だよw
直すから少し待て。
0134デフォルトの名無しさん
2009/04/24(金) 12:06:31#include<stdio.h>
int a[10][10]={
{0,1,7,4,5,2,0,6,6,9},
{3,5,8,0,0,5,6,0,3,0},
{4,6,5,9,8,5,0,6,4,7},
{9,7,2,0,7,3,6,7,9,3},
{2,9,7,7,6,0,6,8,2,4},
{7,4,2,2,3,1,4,8,9,0},
{9,5,5,3,9,4,2,0,9,0},
{5,3,2,9,5,4,9,0,7,7},
{8,1,0,6,8,6,7,7,9,8},
{2,3,3,5,5,8,4,8,2,4}};
int main(){
int i=0,j,c;
for(;i<10;++i,printf("%d\n",c))for(j=c=0;j<10;++j)c+=a[i][j]%2;
}
0135123
2009/04/24(金) 12:07:39本当にありがとうございます。
0136131
2009/04/24(金) 12:29:33#include<stdio.h>
int a[10][10]={
 {0,1,7,4,5,2,0,6,6,9},
 {3,5,8,0,0,5,6,0,3,0},
 {4,6,5,9,8,5,0,6,4,7},
 {9,7,2,0,7,3,6,7,9,3},
 {2,9,7,7,6,0,6,8,2,4},
 {7,4,2,2,3,1,4,8,9,0},
 {9,5,5,3,9,4,2,0,9,0},
 {5,3,2,9,5,4,9,0,7,7},
 {8,1,0,6,8,6,7,7,9,8},
 {2,3,3,5,5,8,4,8,2,4}};
int main(){
 int i=0,j,c;
 for(c=0;i<10;++i)for(j=0;j<10;++j)c+=a[i][j]%2;
 printf("%d\n",c);
}
0137デフォルトの名無しさん
2009/04/24(金) 12:45:47あ〜あ、参考資料を提示したのに、あれを理解できなかったとボロを出したよ、こいつwwww
0138デフォルトの名無しさん
2009/04/24(金) 12:50:39環境次第では、なんだが、そこを理解できなかったようで。これだから一部の環境でしか
通用しないクソコードを平気で書く、クソ麻呂未満の低レベル講師は・・・生徒だったら
まだやり直せるけど、お前がいい年こいたオッサンなら、人生無駄にしてきたと思え。
0139デフォルトの名無しさん
2009/04/24(金) 12:52:46麻呂ではない俺がおじゃるを付けて発言しただけだからw
クソースとおじゃるで麻呂になれるよ、あんたも?
0140デフォルトの名無しさん
2009/04/24(金) 13:20:110141デフォルトの名無しさん
2009/04/24(金) 13:26:26>[3]環境
>[3.1]OS:windous XP
>[3.2]コンパイラ名とバージョン:Visual Studio.NET2003
>[3.3]言語:C++
>>19の環境に対して>>20の答えでプロセス終了時にメモリリークがおきると思ってた低脳乙
0142デフォルトの名無しさん
2009/04/24(金) 14:35:09読むのがめんどくさい流れなので帰ります
0143デフォルトの名無しさん
2009/04/24(金) 14:40:00[2] 問題文(含コード&リンク): http://pc12.2ch.net/test/read.cgi/tech/1232627790/369
intersectionメソッドが返す整数の列は文字列であること。整数の間には、"2,3,5"のように必ず,で区切ることとし、文字列の先頭や末尾には余分な,を付けないこと。
intersectionメソッドが返す整数の列は必ず数値の小さい順に並べること
intersectionメソッドに与えられる引数は、第一引数、第二引数それぞれについて、配列内の要素はかならず小さい順に並んでおり、一つの配列の中に同じ値が2回出てくることはないものと仮定してよい
集合の要素としてはint型で扱えるあらゆる整数に対応すること。また集合の要素数も実用的に扱える範囲のさまざまな要素数に対応すること
積集合が空の場合は、""を返すこと。
class a_set {
public:
static char *intersection(int* a, int* b) {
// 結果を保存する文字列
// TODO: aとbの積集合を求めて、結果をresultに文字列として格納
// 結果を返す
return result;
}
}
int main() {
int a[] = {2, 3, 10, 35};
int b[] = {3, 5, 10, 18};
cout << a_set::intersection(a, b) << endl;
}
[3] 環境
[3.1] OS: Windows 2000以降
[3.2] コンパイラ名とバージョン: VC7以降 (/Za オプション)
[3.3] 言語: C++
例題の答えは、3,10
0144デフォルトの名無しさん
2009/04/24(金) 15:47:42aとかbの要素数はどうやって intersection に教えたらいいの?
0145143
2009/04/24(金) 15:58:51static string intersection(vector<int> a, vector<int> b);
に修正お願いします。(.n.)
0146デフォルトの名無しさん
2009/04/24(金) 16:02:190147デフォルトの名無しさん
2009/04/24(金) 16:04:46あと、C++ならSTLで一発だし。
0148デフォルトの名無しさん
2009/04/24(金) 16:09:21こんどからセミコロンもちゃんとつけろよ
Firefoxの動作が一般に正しい動作
IEは気を利かせすぎ
0150デフォルトの名無しさん
2009/04/24(金) 16:27:55わざと嫌がらせしてんの?
0151デフォルトの名無しさん
2009/04/24(金) 16:31:58バブルソートなんて習う必要がないが、効率の悪いものから良いものへ、
そういうのを学ぶのも、現在発展途上の案件に対し、発展させる考えを
持たせるにはあっても良い授業だ。そもそも、時代の変化と共に、こういった技術は
どんどん進化している。今あるものが大昔からあるものから最近発見されたものまで
その歴史を知るが良い。
0152デフォルトの名無しさん
2009/04/24(金) 17:05:56>>15
ありがとうございました
!canwin()として再帰させているあたりが参考になりました
1600〜2009年が与えられますが
2004年くらいが与えられると再帰の回数が多くなって答えを出すのに時間がかかってしまいました
メモ化しようと思ったのですが先手後手をどう扱えばいいか分からずできませんでした
>>12
Excelは持っていないので>>15と紙を使って規則性を考えてみました
この問題は2009年4月24日を渡したら勝ちですが
渡す月+日の奇偶が重要らしく、ここでは4+24=28なので
与えられた日付がY年M月D日のとき、基本的にM+Dが奇数ならAの勝ち
例外で、4月30日と6月30日はAの勝ち、Y年がうるう年ならY年2月29日はAの負けとなるようでした
ちなみに渡す月日が奇数のとき、Aの勝ち負けが反転して
例外が2月29日と4月30日と6月30日ではなく、9月30日と11月30日になるようでした
0153デフォルトの名無しさん
2009/04/24(金) 17:11:32#include <vector>
#include <algorithm>
#include <string>
#include <iostream>
#include <sstream>
class a_set {
public:
static std::string intersection( const std::vector< int > &a, const std::vector< int > &b ) {
std::vector< int > v;
std::set_intersection( a.begin(), a.end(), b.begin(), b.end(), back_inserter( v ) );
if ( v.empty() ) {
return "";
} else {
std::string s; std::stringstream ss;
std::vector< int >::const_iterator iter = v.begin();
ss << *iter; ++iter;
for ( ; iter != v.end(); ++iter ) {
ss << "," << *iter;
}
s = ss.str();
return s;
}
}
};
int main() {
using namespace std;
int a[] = {2, 3, 10, 35}; int b[] = {3, 5, 10, 18};
vector< int > v1( &a[0], &a[3] ); vector< int > v2( &b[0], &b[3] );
cout << a_set::intersection( v1, v2 ) << endl;
}
0154デフォルトの名無しさん
2009/04/24(金) 17:14:42ちょっと間違えました
うるう年じゃないときに2月28日が相手に渡ったら負けるだけで、
基本的にM+Dが奇数ならAの勝ち、例外で、4月30日と6月30日はAの勝ち
だけでした
0155デフォルトの名無しさん
2009/04/24(金) 17:18:56PCを扱うに於いて
0156デフォルトの名無しさん
2009/04/24(金) 17:19:32std::string s; std::stringstream ss;
std::vector< int >::const_iterator iter = v.begin();
ss << *iter; ++iter;
for ( ; iter != v.end(); ++iter ) {
ss << "," << *iter;
}
s = ss.str();
の部分は
std::string s; std::stringstream ss;
copy( v.begin(), v.end(), std::ostream_iterator< int >( ss, "," ) );
s = ss.str();
s.resize( s.size() -1 );
と書いたほうがSTLっぽかったかな。
0157123
2009/04/24(金) 17:44:43[1] 授業単元:
[2] 問題文 (3_4) 学生 A, B, C, D さんの logi, math, ecom の成績はそれぞれ以下のようになっている.
A B C D
logi 90 70 90 80
math 80 85 70 90
ecom 90 85 80 70
math, logi, ecom というメンバを持つ構造体 grade_t を作成せよ. grade_t オブジェクト A, B, C, D を定義して, 成績をそれぞれの変数に格納し, 以下の機能を実装せよ;
それぞれの学生の成績の合計点を計算
各科目の平均点を計算せよ。
(3_5) (3_4) で grade_t に name というメンバを加えて構造体の配列を用い, (3_4) と同様の動作をするプログラムを作成せよ。
[3] 環境
[3.1] windows
[3.2] gcc
[3.3] C/C++
[4] 期限: 本日23:30
[5] その他の制限:なし
0158デフォルトの名無しさん
2009/04/24(金) 17:55:07おねがいします
0159デフォルトの名無しさん
2009/04/24(金) 18:40:11再帰の何が嫌がらせなのか分からん。
ループ処理はどこがおかしいのか分からん。
具体的に指摘してくれ。
0160デフォルトの名無しさん
2009/04/24(金) 18:56:280161デフォルトの名無しさん
2009/04/24(金) 19:01:03(3_4)
#include <stdio.h>
struct grade_t {int logi; int math;int ecom;};
struct grade_t A = {90, 80, 90};
struct grade_t B = {70, 85, 85};
struct grade_t C = {90, 70, 80};
struct grade_t D = {80, 80, 90};
int sum(struct grade_t *x)
{
return x->logi + x->math + x->ecom;
}
void ave(int num, struct grade_t *x[])
{
int i; double logi=0.0, math=0.0, ecom=0.0;
for (i = 0; i < num; i++) {
logi += x[i]->logi; math += x[i]->math; ecom += x[i]->ecom;
}
printf("average logi:%g, math:%g, ecom:%g\n",logi/num, math/num, ecom/num);
}
int main()
{
struct grade_t *p[4] = {&A, &B, &C, &D};
printf("%s sum:%d\n", "A", sum(&A));
printf("%s sum:%d\n", "B", sum(&B));
printf("%s sum:%d\n", "C", sum(&C));
printf("%s sum:%d\n", "D", sum(&D));
ave(4, p);
return 0;
}
0162デフォルトの名無しさん
2009/04/24(金) 19:03:44(3_5)
#include <stdio.h>
struct grade_t {char *name; int logi; int math; int ecom;};
struct grade_t array[4] = {
{"A", 90, 80, 90},{"B", 70, 85, 85},{"C", 90, 70, 80},{"D", 80, 80, 90}
};
int sum(struct grade_t *x)
{
return x->logi + x->math + x->ecom;
}
void ave(int num, struct grade_t x[])
{
int i; double logi=0.0, math=0.0, ecom=0.0;
for (i = 0; i < num; i++) {
logi += x[i].logi; math += x[i].math; ecom += x[i].ecom;
}
printf("average logi:%g, math:%g, ecom:%g\n",logi/num, math/num, ecom/num);
}
int main()
{
int i;
for (i = 0; i < 4; i++) {
printf("%s sum:%d\n", array[i].name, sum(&array[i]));
}
ave(4, array);
return 0;
}
0163デフォルトの名無しさん
2009/04/24(金) 19:13:180164デフォルトの名無しさん
2009/04/24(金) 19:23:49お陰で期限に楽勝で間に合いました! 本当にありがとうございます!
0165143
2009/04/24(金) 22:05:47>>156
やっていただいて、有難う御座います。GCC でエラーが出ましたが、後はこちらで調べてみます。
http://ml.tietew.jp/cppll/cppll/thread_articles/12484
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
D:\>g++ 156.cpp
156.cpp: In static member function `static std::string a_set::intersection(const std::vector<int, std::allocator<int> >&, const std::vector<int, std::allocator<int> >&)':
156.cpp:16: error: `ostream_iterator' is not a member of `std'
156.cpp:16: error: expected primary-expression before "int"
0166デフォルトの名無しさん
2009/04/24(金) 22:29:48安直にメモ化してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9078.c
0167デフォルトの名無しさん
2009/04/24(金) 23:09:17ostream_iterator を使うには
#include <iterator>
が必要。あと、copy も std::copy にしないと多分エラー。
0168デフォルトの名無しさん
2009/04/25(土) 00:39:05問題は、プログラムを書けといった問題や、プログラムを実行するとどのように表示されるかといった問題や、
プログラムの穴埋めなどの、プログラムに関する問題です。
内容は、具体的には、最初から、printf、scanf、if、for、while、do-while、
break、continue、switch-caseぐらいまでの内容です。
よろしくお願いします。
0169デフォルトの名無しさん
2009/04/25(土) 01:11:02本ならたくさんある
0170デフォルトの名無しさん
2009/04/25(土) 02:11:09[2] キーボードより整数型データを配列に入力し、大きさの順に並べ替えて結果を表示するプログラムを作成しなさい。
ただし、データの個数は15とし、下記に示すプログラムのポインタ変数poを利用し<プログラムの本体>を作成せよ:
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C
[4] 4/27
0171デフォルトの名無しさん
2009/04/25(土) 02:12:13int main()
{
int x[25],i,j,temp;
int *po;
<プログラムの本体>
return 0;
}
0172デフォルトの名無しさん
2009/04/25(土) 02:29:450173デフォルトの名無しさん
2009/04/25(土) 02:33:260174デフォルトの名無しさん
2009/04/25(土) 02:48:12[2] 問題文:下の実行例のように、一行で入力された加算減算の式を計算して、
その答えを求めるプログラムを作りなさい。
ただし、式で入力する値は正の整数とし、演算は+とーのみとする。
[実行例]
式:3+21-15+1
答え:10
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:4月中
よろしくお願いします。
0175デフォルトの名無しさん
2009/04/25(土) 02:58:08適当
#include<stdio.h>
#include<stdlib.h>
int main()
{
char s[80];
printf("式:");
fgets(s,sizeof s,stdin);
int v = 0;
char*p,*q=s;
do v += strtol(p=q,&q,10);while(p!=q);
printf("答え:%d\n",v);
}
0176デフォルトの名無しさん
2009/04/25(土) 02:59:09あと数分で1つ出てくる筈
その後5分程度でもう一本
さすがにその後は出来てても揚げないみたいだけど
0177デフォルトの名無しさん
2009/04/25(土) 03:00:43C語通訳クンの競争は激しいねw
プロトコル位作りゃいいのに
0178デフォルトの名無しさん
2009/04/25(土) 03:03:59最小公倍数=x×y÷(x,yの最大公約数)
0179174
2009/04/25(土) 03:38:06ありがとうございます。
0180174
2009/04/25(土) 03:44:130181デフォルトの名無しさん
2009/04/25(土) 04:12:510182デフォルトの名無しさん
2009/04/25(土) 09:45:55#include<stdio.h>
#define NUMBERS "0123456789" /* strspn(s, NUMBERS) 指定した文字群からなる部分文字列の長さを求めます。*/
int main()
{
char s[80];
int v, np, size;
printf("式:");
fgets(s, sizeof s, stdin);
if(s[0] == '-' || s[0] == '+') {
np = strspn(s+1, NUMBERS);
np++;
} else {
np = strspn(s, NUMBERS);
}
v = atol(s);
while(
size = strspn(s+np+1, NUMBERS) ) {
v += atol(s+np);
np += size+1;
} ;
printf("答え:%d\n", v);
}
0183デフォルトの名無しさん
2009/04/25(土) 10:27:26#include <stdio.h>
int main(void)
{
int ch, sum = 0, temp = 0, flag = 1;
while(1) {
ch = getchar();
if('0'<=ch && ch <= '9') temp = temp * 10 + ch - '0';
else {
sum += flag * temp;
temp = 0;
if(ch == '\n' || ch == EOF) break;
if(ch == '+') flag = 1;
else if(ch == '-') flag = -1;
else return 1;
}}
printf("%d", sum);
return 0;
}
0184デフォルトの名無しさん
2009/04/25(土) 14:27:59むしろしばらくたっても誰も答えないような難易度の高い問題をさくっと解くほうがかっこいいですねえ。
>>54 とか
0185デフォルトの名無しさん
2009/04/25(土) 16:10:02[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9079.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:g++
[3.3] 言語:C++
[4] 期限:4月27日午前中
(1)は出来たのですが(2)が意味不明です。よろしくお願いします。
0186185
2009/04/25(土) 16:13:44(1)は構造体の定義の後、メイン関数の前に
helloworld x;
と実際に使う必要がありました。
0187デフォルトの名無しさん
2009/04/25(土) 16:59:11[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org35358.zip.html
[3] 環境
[3.1] OS:リナックス
[3.2] コンパイラ名とバージョン:G++
[3.3] 言語:C++
[4] 期限:4月27日中
[5] よろしくおねがいします
0188デフォルトの名無しさん
2009/04/25(土) 17:23:53std::for_eachの第三引数は参照渡しではなく値渡しだから
ファンクタから戻るとファンクタが消滅する
正しい結果を得るには次のようにする
string::size_type maxlen2;
struct maxlenftn {
maxlenftn() : maxlen(0) {}
void operator()(string s) {
maxlen = maxlen2 = max(maxlen, s.size());
}
string::size_type maxlen;
};
int main() {
const char *na[] = {
"Orange", "Notebook", "XP", "UnitedKingdom"
};
vector<string> names(na, na + sizeof(na) / sizeof(const char *));
maxlenftn maxf;
for_each(names.begin(), names.end(), maxf);
cout << maxlen2 << endl;
}
0189デフォルトの名無しさん
2009/04/25(土) 18:04:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9081.txt
・・・遅かった^^;
0190デフォルトの名無しさん
2009/04/25(土) 18:35:40#include <iostream>
using namespace std;
class helloworld {
public:
helloworld(int val) : a(val++), b(val++) {
cout << "Test 2 "<<a<<b<<endl; }
helloworld(int vala, int valb) : a(vala), b(valb) {
cout << "Test 3 "<<a<<b<<endl; }
private:
const int a, b; // a=2, b=3
// const int b, a; // b=2, a=3
};
//helloworld x();
helloworld y(2);
helloworld z(2,3);
int main(){
return 0;
}
0192デフォルトの名無しさん
2009/04/25(土) 23:36:48[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9082.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Borland C++ 5.5
[3.3] 言語: C
[4] 期限: 一週間後
[5] なるべく簡単にお願いします。
0193デフォルトの名無しさん
2009/04/25(土) 23:53:53[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9084.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9085.txt
[3] 環境
[3.1] Windows vista
[3.2] VC 2008
[3.3] 言語: C
[4] 期限: 4/27 12:00
多少長いコードになってると思います。そして2つです。
リスト構造がまだ曖昧なため、参考にさせて頂くためにもよろしくお願いします。
0194デフォルトの名無しさん
2009/04/26(日) 00:09:33(a) i % 3 == 0 || 30 <= i && i <= 39 || (i % 10) == 3
(b) i % 5 == 0
0195デフォルトの名無しさん
2009/04/26(日) 00:25:22#include <stdlib.h>
int main()
{
int x[25], i, j, temp;
int *po;
const int NUM = 15;
/* 入力 */
for(i=0; i<NUM; i++) {
while(printf("%2d/%d:", i+1, NUM), scanf("%d", &x[i]) != 1)
scanf("%*s");
}
/* バブルソート */
for(i=0; i<NUM-1; i++) {
for(j=NUM-1; j>i; j--) {
po = &x[j-1];
if(po[0] > po[1]) { /* 降順は>、昇順は< */
temp = po[1], po[1] = po[0], po[0] = temp;
}
}
}
/* 出力 */
for(i=0; i<NUM; i++)
printf("%d ", x[i]);
return 0;
}
0196デフォルトの名無しさん
2009/04/26(日) 02:25:51http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9088.zip
・とりあえず動いてρ<1.0の時なら ̄Nが大体一致した。
・途中で飽きてコメントがいい加減になってる。
・シミュレータの正当性については理論値との誤差率を出すとかして自分で調べてくれ。
(理論値の公式はググってみてもよくわからなかった。)
0197デフォルトの名無しさん
2009/04/26(日) 09:10:18[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9089.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9090.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9091.txt
[3] 環境
[3.1] Windows xp
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 4/28 12:50
計3問です。いずれも長いソースコードとなっています。
どうかよろしくお願いいたします。
0198デフォルトの名無しさん
2009/04/26(日) 09:44:00これから3の倍数と3の付く番号にレスをした奴はアホっぽくレスをせずとも
アホ決定!
0199デフォルトの名無しさん
2009/04/26(日) 10:55:39ありがとうございます!
すいません、
サーバの平均の処理時間を1で正規化して、これを基準とした相対的な時間を用いる仕様にして欲しいのですが、無理でしょうか?
0200デフォルトの名無しさん
2009/04/26(日) 11:37:13おまんこおーぷん
もしヌルヌルなら
おちんちん
0201デフォルトの名無しさん
2009/04/26(日) 12:17:069084.txtだけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9092.txt
0203デフォルトの名無しさん
2009/04/26(日) 13:26:37よく言っている意味がわからないんだけど、
arrivalRate /= serviceRate;
serviceRate = 1.0;
じゃだめなの?
0204デフォルトの名無しさん
2009/04/26(日) 15:36:40シミュレーション時間の単位のことです。
実際の物理的な時間単位(sec等)でもよいが、>>199であるような仕様にしたほうがよいと書いてあるので・・
0205デフォルトの名無しさん
2009/04/26(日) 16:52:5030 <= i && i <= 39よりも、
( i / 10 ) == 3
がよさげ。
0206デフォルトの名無しさん
2009/04/26(日) 16:55:17[2] 問題文(含コード&リンク): h = 1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5
これを2重のfor文で解け。
[3] 環境
[3.1] OS: windows vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 5月15日まで
0207デフォルトの名無しさん
2009/04/26(日) 17:15:16/* h = 1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5 */
#include <stdio.h>
int main() {
int i, j, mul, sum = 0;
for(i=1;i<=5;i++) {
mul = 1;
for(j=1;j<=i;j++) {
mul *= j;
}
sum += mul;
}
printf("h = %d", sum);
}
0208デフォルトの名無しさん
2009/04/26(日) 17:29:13キチンと動きました。!!
本当にありがとうございます!!。
0209デフォルトの名無しさん
2009/04/26(日) 17:54:50[2] 2重のfor文で下記のように表示しろ。
98765
87654
76543
65432
54321
[3] 環境
[3.1] OS: windows vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: c
[4] 期限: 5月15日まで
0210デフォルトの名無しさん
2009/04/26(日) 17:58:44int main(void)
{
int i, j;
for(i=0; i<5; i++) {
for(j=0; j<5; j++) printf("%d", 9-i-j);
putchar('\n');
}
return 0;
}
0211デフォルトの名無しさん
2009/04/26(日) 18:00:59int main(){
const char s[]=
"98765\n"
"87654\n"
"76543\n"
"65432\n"
"54321\n";
int i,j;
for(i=0;i<1;++i)
for(j=0;s[j]!='\0';++j)
putchar(s[j]);
}
0212デフォルトの名無しさん
2009/04/26(日) 18:01:41#include <stdio.h>
int main()
{
int i, j;
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d", (9-i-j));
}
printf("\n");
}
return 0;
}
0213デフォルトの名無しさん
2009/04/26(日) 18:40:17どれもきちんと正常に動きました。
本当に皆さんありがとうございます。助かりました!!
0215デフォルトの名無しさん
2009/04/26(日) 20:09:19[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9089.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9090.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9091.txt
[3] 環境
[3.1] Windows xp
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 4/28 12:50
計3問です。いずれも長いソースコードとなっています。
どうかよろしくお願いいたします。
0217デフォルトの名無しさん
2009/04/26(日) 21:45:560218デフォルトの名無しさん
2009/04/26(日) 22:17:329085.txt
> append 関数を直接呼び出せば実装は容易である
ってあるけど、配列で実装して構わないんだよね?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9093.txt
0219デフォルトの名無しさん
2009/04/26(日) 22:22:251-1 throw
1-2 try
1-3 catch
1-4 range_error
2-5 MyData&
2-6 a.str
2-7 free(str)
2-8 *this
2-9 vector<MyData>::const_iterator
2-10 *(it++)
3-1 getIP(s)
3-2 atoi(s)
3-3 >>=
0222デフォルトの名無しさん
2009/04/27(月) 00:08:05リストによる実装
>>201氏のロジックを借用している
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9094.txt
0223デフォルトの名無しさん
2009/04/27(月) 00:21:15MAXENTは3として欲しい。わざわざ4にした理由がわからん
#define MAXENT 4 /* 最大3個の要素が入る待ち行列*/
/* テストのためわざと小さい大きさにしている */
int x[MAXENT-1]; /* 待ち行列用の配列の宣言 */
0224193
2009/04/27(月) 00:33:20申し訳ありません。
ただ自分が作った問題ではないのでなんとも言えないのですが。
>>201 >>218 >>222 >223
皆さん大変ありがとうございました。
これからは自分で作れるように努力したいと思います。
0225デフォルトの名無しさん
2009/04/27(月) 03:04:24[2] 問題文(含コード&リンク):
穴埋め問題2問です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9095.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9096.txt
[3] 環境
[3.1] OS:windows xp
[3.3] 言語:C++
[4] 期限: 2009年4月28日23:59まで
どうかよろしくお願いします
0226デフォルトの名無しさん
2009/04/27(月) 12:44:49[2] 問題文(含コード&リンク):
nCrを計算するプログラムを,(再帰的呼び出しを用いずに)作成せよ.但し,nは0以上5以下とする
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C
[4] 期限: 早ければ早いほどいいが、無期限
[5] その他の制限: 初心者
0227デフォルトの名無しさん
2009/04/27(月) 14:04:44joyful/img/9097.c
・・・ここまで書いて、条件を満たしてないことに気づいた。
ま、まぁ、参考までに。
0228デフォルトの名無しさん
2009/04/27(月) 14:07:43http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9098.c
0229デフォルトの名無しさん
2009/04/27(月) 14:33:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9097.c
0231デフォルトの名無しさん
2009/04/27(月) 15:13:29問1 1 :: 2 : 3 バッファオーバーラン 4 strncpy 5 strncpy(this->phone, phone, MAXNAME-1);
・・・「ぜいじゃくせい」じゃないのかなぁ?
2-1 β 2-2 bool 2-3 x 2-4 y 2-5 "四角形の内側です\n"
0232デフォルトの名無しさん
2009/04/27(月) 15:15:38[2]
実行例のように表示されるプログラムを作製せよ。
課題は2つあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9099.zip
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:5/1
[5] その他の制限:お手数かけますが宜しくお願いします。
0233デフォルトの名無しさん
2009/04/27(月) 15:29:29そのまま文字列表示しちゃってもいいのか?w
0234デフォルトの名無しさん
2009/04/27(月) 16:51:09#include <stdio.h>
int main()
{
char buf[32]; int a, b;
printf("A?"); fgets(buf, sizeof(buf), stdin); a = atoi(buf);
printf("B?"); fgets(buf, sizeof(buf), stdin); b = atoi(buf);
printf("\n");
printf("A+B = %d\n",(a+b)%10);
printf("A-B = %d\n",(a-b)%10);
printf("A*B = %d\n",(a*b)%10);
printf("A/B = %d\n",(a/b)%10);
printf("A%B = %d\n",(a%b)%10);
return 0;
}
0235デフォルトの名無しさん
2009/04/27(月) 16:52:33#include <stdio.h>
int main()
{
char buf[32]; int s;
printf("身長を入力してください?:"); fgets(buf, sizeof(buf), stdin);
s = atoi(buf);
printf("\n標準体重は %4.1fkg です.\n",((double)s - 100.0) * 0.9);
return 0;
}
0236デフォルトの名無しさん
2009/04/27(月) 17:23:27問2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9100.txt
0237デフォルトの名無しさん
2009/04/27(月) 17:31:27問1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9101.txt
0238デフォルトの名無しさん
2009/04/27(月) 18:07:39#include <stdio.h>
int main (){
int i;
double a;
a=0.0;
for(i=0;i<20;i++) {
a=a+0.1;
printf("a=%f\n",a);
if(a==1.0)
break;
}
printf(" a = %f \n", a );
return 0;
}
この答えが2になるのは何故でしょうか?
0239デフォルトの名無しさん
2009/04/27(月) 18:16:310240デフォルトの名無しさん
2009/04/27(月) 18:20:371.0にならずに0.9999999とかになるんじゃなかったっけ。
0241デフォルトの名無しさん
2009/04/27(月) 18:43:392にならない。
0242デフォルトの名無しさん
2009/04/27(月) 18:51:33とか1/2^nであらわせる数なら誤差は出ない
0243デフォルトの名無しさん
2009/04/27(月) 18:54:27にすれば1.0じゃないのがわかる
0244デフォルトの名無しさん
2009/04/27(月) 19:04:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9102.txt
0245デフォルトの名無しさん
2009/04/27(月) 19:14:290246デフォルトの名無しさん
2009/04/27(月) 19:19:23[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9086.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9087.txt
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Borland C++ 5.5
[3.3] 言語: C
[4] 期限: 一週間後
[5] 追加です。なるべく簡単にお願いします
2問目は全く解らないので特に簡単にわかりやすくして下さい。
0247デフォルトの名無しさん
2009/04/27(月) 19:34:47それは実装系依存(FLT_RADIX依存?)。
238は環境を提示していないので、239以上のことは言えんと思う。
0248デフォルトの名無しさん
2009/04/27(月) 19:45:28但し,nは0以上5以下とする
>>227 >>228 >>244
n にC言語側で制限つける必要ある?
0249デフォルトの名無しさん
2009/04/27(月) 21:25:359086.txt
#include <stdio.h>
int main()
{
int i = 1; double sum = 0.0;
while (1) {
sum += 1.0 / (i * (i + 2));
if (sum > 0.74)
break;
i++;
}
printf("%d %g\n", i,sum);
return 0;
}
9087.txt
(a) [now > 0]
(b) [max < prod]
(c) [max = prod]
(d) [prev = now]
(e) [scanf("%d", &now)]
0250デフォルトの名無しさん
2009/04/27(月) 21:58:23自分が言いたかったことを示したら?コードでおk。
0251デフォルトの名無しさん
2009/04/27(月) 22:01:11> C言語側で制限つける
ユーザが0から5の間で入力すれば良いと言いたいのか?
それならそれで良いんだが。ただ、入力できる数は何も0から5の間に
限ったことではないんでね。
0252デフォルトの名無しさん
2009/04/27(月) 22:13:030253デフォルトの名無しさん
2009/04/27(月) 22:15:370254デフォルトの名無しさん
2009/04/27(月) 22:24:100255デフォルトの名無しさん
2009/04/27(月) 22:26:53オレは248じゃねぇが、問題文の「nは0以上5以下とする」は
「入力値は0〜5とする。それ以外の値が入力されることについては考えなくて良い」とも解釈できんだろ。
その視野狭窄は治しとかんといらん恥かくぞ。
0256デフォルトの名無しさん
2009/04/27(月) 22:29:13>解釈できんだろ
どっちにでもとれる表現は勘弁してくれw
0257デフォルトの名無しさん
2009/04/27(月) 22:31:47226読み直したが、入力するとも書いてねぇな。
forでnとrを0〜5で回して一覧表示するってのでも、回答にはなりそうだべ。
0258デフォルトの名無しさん
2009/04/27(月) 22:39:59[2] 比の計算
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9103.txt
少し文章がおかしいところがありますが正しくは
a,b,c,dはscanfで読み込みますです。
[3] 環境
[3.1] MacOSX
[3.2] gcc
[3.3] C
[4] 期限: 明日2009/4/28の朝8:00頃まで
[5] その他の制限: 特にありませんができれば簡単な関数でお願いします
期限が短いのですがよろしくお願いします。
0259デフォルトの名無しさん
2009/04/27(月) 22:46:10printf("x=%d\n",&x);
↓
printf("x=%d\n",x);
0261デフォルトの名無しさん
2009/04/27(月) 23:50:02[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9104.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9105.txt
[3] 環境
[3.1] Windows xp
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 4/28 23;59
いずれも選択問題です。
どうかよろしくお願いいたします。
0262デフォルトの名無しさん
2009/04/28(火) 00:00:44すみません、そこはタイプミスでしたorz
直したのですがうまくいきません;
0263258
2009/04/28(火) 00:17:58プログラムを実行して出た結果は同じだったのですが
式b-x:a-x=d-x:c-xに代入して計算すると違う答えになってしまいますorz
0264デフォルトの名無しさん
2009/04/28(火) 00:26:15どうやって代入したのかkwsk
0265デフォルトの名無しさん
2009/04/28(火) 00:26:570266デフォルトの名無しさん
2009/04/28(火) 00:39:29#include <string.h>
char *strsearch(const char *s1,const char *s2)
{
char *result = NULL;
int dlen = strlen(s2);
while (*s1){
if(strncmp(s1, s2, dlen) == 0){
result = (char *)s1;
break;
}
s1++;
}
return result;
}
0268デフォルトの名無しさん
2009/04/28(火) 07:32:16例えばa=1800、b=22000,c=450,d=2000とすると
a*b=39600000、b*c=9900000、a-b-c+d=-18650
a*b-b*c=29700000
((a*b)-(b*c))/(a-b-c+d)=-1592
プログラムの結果も1592となったのですがb-x:a-x=d-x:c-xに代入してやると
(22000-x):(1800-x)=(2000-x):(450-x)で内側と外側をかけて
3600000-1800x-2000x+x^2=9900000-22000x-450x+x^2
3600000-3800x=9900000-22450x
18650x=6300000
x=338となり結果が違うのですが計算方法が間違っているかもしれません;
0269デフォルトの名無しさん
2009/04/28(火) 07:33:490270デフォルトの名無しさん
2009/04/28(火) 07:59:58>>258,259にそのパラメータ入れたら
x=337って出てくるけど。
0271デフォルトの名無しさん
2009/04/28(火) 08:27:59そうですか・・・処理系に依存するようなところはないと思うので誤字など
ないか確認してみます。
回答ありがとうございます<(_ _ )>
0272デフォルトの名無しさん
2009/04/28(火) 08:32:10x=(a*d-b*c)/(a-b-c+d)
で
x=337.80160857908847184986595174263
が正解じゃね?
>a*b=39600000
これがおかしい。a*dと間違えてる
0273デフォルトの名無しさん
2009/04/28(火) 09:31:55>[2] 実行例のように表示されるプログラムを作製せよ。
要求を満たしているので、これで良いのではないかな。
>もう少しシンプルになりませんでしょうか?
何を使えとか、何を使うなとか、要求を具体的に書いてみて。
0274デフォルトの名無しさん
2009/04/28(火) 09:52:41課題文をフルで書いてみます。
課題1
実行例のように、二つの整数を入力し、和・差・積・商・剰余の下一桁を表示するプログラムを作成しなさい。
ヒント:下一桁=10で割った余りです。
課題2
実行例のように、身長を整数値として入力し、標準体重を実数値で表示するプログラムを作成しなさい。標準体重は(身長-100)*0.9によって求め、その小数点以下は、一桁だけ表示すること。明示的な変換を使用すること。
恐らく1はprintf関数とscanf関数と剰余演算子です。
2はあまりよくわからないですが、変換指定に%fを使用するものだと思います。
0275デフォルトの名無しさん
2009/04/28(火) 11:03:52題意は満たしてるんだし。
0276デフォルトの名無しさん
2009/04/28(火) 11:20:29[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9106.txt
[3] 環境
[3.1] Linux
[3.2] emule
[3.3] C言語
[4] 4月29日の17:00まで
[5] ポインタの問題です。今回初めてポインタを習ったのでよくわかっていません
問題は原文そのままです
0277デフォルトの名無しさん
2009/04/28(火) 11:55:39#include <stdio.h>
int main()
{
int a, b;
printf("A?");
for(;;) {
if(scanf("%d", &a)) break;
scanf("%*s");
}
printf("B?");
for(;;) {
if(scanf("%d", &b)) {
if(!b) {
printf("0で割りました");
return 1;
}
break;
}
scanf("%*s");
}
printf("\n");
printf("A+B = %d\n",(a+b)%10);
printf("A-B = %d\n",(a-b)%10);
printf("A*B = %d\n",(a*b)%10);
printf("A/B = %d\n",(a/b)%10);
printf("A%B = %d\n",(a%b)%10);
return 0;
}
0278デフォルトの名無しさん
2009/04/28(火) 12:48:32#include <stdio.h>
#include <stdlib.h>
int Factorial(int k)
{
char ans=1,i,temp;
if(k == 0)
return 1;
for(i=k;i>0;i--) {
temp = ans;
ans *= i;
if(temp>ans) return 0;
}
return ans;
}
int comb(int n, int r)
{
int a1, a2, a3;
if(!(a1 = Factorial(n))) return 0;
if(!(a2 = Factorial(r))) return 0;
if(!(a3 = Factorial(n-r))) return 0;
return a1/a2/a3;
}
int main()
{
int j, ans;
for(j=0; ans=comb(j, j/2); j++)
printf("%dC%d=%d\n", j, j/2, ans);
}
0279デフォルトの名無しさん
2009/04/28(火) 15:01:33[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9108.txt
[3] 環境
[3.1] Mac OSX
[3.2] Eclipse C++
[3.3] C++言語
[4] 4月30日の17:00まで
[5] ハフマン符号化の問題です。なかなかうまくいきません。。。
宜しくお願いします。
0280デフォルトの名無しさん
2009/04/28(火) 15:10:11> (再帰的呼び出しを用いずに)
日本語が読めない人がいるようです
0281デフォルトの名無しさん
2009/04/28(火) 16:57:09(間接)再帰的呼び出し:関数がその関数を呼び出す関数を(場合によっては
間接的に)呼び出すこと
0282デフォルトの名無しさん
2009/04/28(火) 19:34:37解こうと思ったけど、リストが中途半端なのでやめた
0283デフォルトの名無しさん
2009/04/28(火) 19:55:040284261
2009/04/28(火) 21:22:03ありがとうがざいます。
どなたかこちらもお願いいたします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9105.txt
0285デフォルトの名無しさん
2009/04/28(火) 21:49:10int getUserIP(const char *s, char *user, char *ip)
{
int result = 0;//結果を格納する変数1なら正常終了、0なら異常終了
char *p;
if((p = strstr(s, "Accepted password for ")) != NULL){
p += 22;//22は"Accepted password for "の長さ これでpはユーザ名の先頭文字を指し示す
while (*p != '\0'){
if(/*1 カ*/isspace(*p)){//現在の文字(*p)がスペースならユーザ名の終了
*user = '\0';//ターミネータを書き込む
break;
}
/*2 オ*/*user++ = *p++;//*sから*userに文字をコピーする
}
if((p = strstr(s, "from ::ffff:")) != NULL){
p += 12;//12は"from ::ffff:"の長さ これでpはIPアドレスの先頭文字を指し示す
while(*s != '\0'){
if(/*1 カ*/isspace(*p)){//現在の文字列(*p)がスペースならIPアドレスの終了
*ip = '\0';//ターミネータを書き込む
/*3 ク*/result = 1;//正常終了
break;
}
/*4 イ*/*ip++ = *p++;//*sから*ipに文字をコピーする
}
}
}
return result;
}
0286279です
2009/04/28(火) 22:32:13符号の例を記号をすべてとアルファベット大文字小文字(先頭と後尾)を付け加えました。
宜しくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9109.txt
0287あんたがたハフマン
2009/04/28(火) 22:43:050288デフォルトの名無しさん
2009/04/28(火) 23:11:09世界に羽ばたく
Ruby on Railsオフショアアジャイル開発
http://www.tech-arts.co.jp/news-and-topics/press-releases/20090427.html
0289デフォルトの名無しさん
2009/04/28(火) 23:38:54template<class T>
class heap{
std::vector<T> data;
public:
int push(T x){
data.push_back(x);
for(int n=data.size();n>1 && data[n/2-1]<data[n-1];n/=2){
std::swap(data[n/2-1], data[n-1]);
}
return 1;
}
int pop(T& x){
if(!data.size()) return 0;
x=data[0];
std::swap(data[0], data[data.size()-1]);
data.pop_back();
for(int n=0;n<data.size()/2;){
int idx=n;
if(data[n]<data[n*2+1]) idx=n*2+1;
if((n*2+2)<data.size() && data[idx]<data[n*2+2]) idx=n*2+2;
if(idx==n) break;
std::swap(data[n], data[idx]), n=idx;
}
return 1;
}
};
0290デフォルトの名無しさん
2009/04/29(水) 00:11:45[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9111.txt
[3] 環境
[3.1] Windos VISTA
[3.2] bcc32
[3.3] C言語
[4] 5月12日
[5] 台形公式を使って、関数sin(x)を0から180までを数値積分する問題です。
どうしても、うまくコンパイルならないのでよろしくお願いします。
0291デフォルトの名無しさん
2009/04/29(水) 00:17:24[2] 問題文(含コード&リンク):
入力された数値の回数分だけ乱数を使ってコイン投げを行い,
表裏が出る枚数をカウントして表示させるプログラム を作りなさい。
[3] 環境
[3.1] OS: Windows
[3.2] VC 6.0
[3.3] 言語: C++
[4] 期限: 4月30日午後12時まで
お手上げ状態です。
よろしくお願いします・
0292デフォルトの名無しさん
2009/04/29(水) 00:37:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9112.cpp
0293デフォルトの名無しさん
2009/04/29(水) 00:37:31ちょっと変えすぎたかも試練が、答えは出る。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9113.txt
0294デフォルトの名無しさん
2009/04/29(水) 00:48:24どうも有難うございます。
0295デフォルトの名無しさん
2009/04/29(水) 00:52:45#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i, n, h = 0;
printf("n = "), scanf("%d", &n);
srand((unsigned)time(NULL));
for(i = 0; i < n; i++) h += rand() % 2;
printf("head: %d\ntail: %d\n", h, n - h);
return 0;
}
0296デフォルトの名無しさん
2009/04/29(水) 01:05:01すごいですね。
ありがとうございました。
もしよかったら下の部分を詳しく教えてください
h += rand() % 2;
0297デフォルトの名無しさん
2009/04/29(水) 01:07:45#include <iostream>
#include <cstdio>
#include <ctime>
int main()
{
using namespace std;
const double PH = 0.49;
const double PT = 0.49;
srand(static_cast<unsigned>(time(0)));
int n, h = 0, t = 0;
cin >> n;
for(int i = 0; i < n; ++i )
{
double p = static_cast<double>(rand())/(RAND_MAX);
if(p <= PH) ++h;
else if(p <= (PH+PT)) ++t;
}
cout << "Heads:" << h <<" Tailes:" <<t <<endl;
return 0;
}
0298デフォルトの名無しさん
2009/04/29(水) 01:33:09[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9114.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 5月15日
[5] その他の制限
実行結果は表示されるのですか、警告が出ます。
どうやっても警告が消えないので、よろしくお願いします。
0299デフォルトの名無しさん
2009/04/29(水) 02:13:40しかしそれ以前に a の確保のしかたが違う気がする
0300デフォルトの名無しさん
2009/04/29(水) 02:14:24変数aとbをNULLで初期化した後、それを参照すること無くmallocで得られた値を代入してるから意味ないじゃんっていう警告。
要するにコンパイラのお節介。
無視するか、この種類の警告を出さないオプション「-w-8004」を付けてコンパイルすれば良い。
0301デフォルトの名無しさん
2009/04/29(水) 02:21:10すみません;;
警告をコピーするの忘れてました。
警告 W8004 21-1.c 44: 'b' に代入した値は使われていない(関数 main )
警告 W8004 21-1.c 42: 'a' に代入した値は使われていない(関数 main )
です;;
0302デフォルトの名無しさん
2009/04/29(水) 02:24:530303デフォルトの名無しさん
2009/04/29(水) 02:27:34* sizeof(char)って、必要か?
sizeof(char)ってのは、1バイトを示すもんだろ?
0304デフォルトの名無しさん
2009/04/29(水) 02:29:12こちらへどうぞ
sizeof(char)が必ず1でも、省略すべきではない
http://pc12.2ch.net/test/read.cgi/tech/1187521586/
0305デフォルトの名無しさん
2009/04/29(水) 02:32:37警告 W8004 21-1.c 42: 'a' に代入した0は使われていない(関数 main )
0306デフォルトの名無しさん
2009/04/29(水) 02:34:14これはまずいんじゃ?
× a = malloc(STR_LENGTH * STR_NUMBER * sizeof(char));
○ a = malloc(STR_LENGTH * STR_NAME * sizeof(char));
0307デフォルトの名無しさん
2009/04/29(水) 02:39:46途中まで読んだ、ありがと。
うーん…議論するつもりはさらさら無いから、ノーコメントでいいわ。
>>301
俺の>>303は蒸しれ。
0308デフォルトの名無しさん
2009/04/29(水) 02:41:360309デフォルトの名無しさん
2009/04/29(水) 02:43:390310デフォルトの名無しさん
2009/04/29(水) 02:56:49error C2440: '=' : 'void *' から 'char (*)[6]' に変換できません。 46
error C2440: '=' : 'void *' から 'student *' に変換できません。 47
0311デフォルトの名無しさん
2009/04/29(水) 03:37:21CodeGuard掛けたらエラー出たぞ。下のはその一例な
Error 00001. 0x130410 (スレッド 0x0AD4):
アクセス オーバーラン: アドレス 0x00D74324 から 6
バイトを参照しました。 これは 4
バイトの長さしか確保されていない ヒープブロック
0x00D74324 に当たります。
intr_strcpy(0x004020DE ["AICHI"], 0x00D74324)
| dai1.c line 62:
| }
|
|> strcpy(a[0],"AICHI");
| strcpy(a[1],"GIFU");
|
呼び出し履歴:
0x00401230(=dai1.exe:0x01:000230) dai1.c#62
0x329C41EA(=CC3290MT.DLL:0x01:0C31EA)
メモリブロック(0x00D74324) [長さ: 4 バイト] は malloc
によって確保されました。
| dai1.c line 46:
| struct student *b = NULL;//確・ウれる記憶域・?アドレスを格納す・・?\造・?・定義する
|
|> a = malloc(STR_LENGTH * STR_NUMBER * sizeof(char));
| b = malloc(2 * sizeof(struct student));
|
呼び出し履歴:
0x004011E8(=dai1.exe:0x01:0001E8) dai1.c#46
0x329C41EA(=CC3290MT.DLL:0x01:0C31EA)
0312デフォルトの名無しさん
2009/04/29(水) 03:54:52それはVSでコンパイルしてるからじゃなくて、C++としてコンパイルしてるから出てるエラーだ。
0314デフォルトの名無しさん
2009/04/29(水) 06:59:22delete a,b;
delete[] c,d;
って間違いですか?
0316デフォルトの名無しさん
2009/04/29(水) 10:41:46今日が締め切りだけど、「英単語 カウント C」で検索すると沢山出る。
0317デフォルトの名無しさん
2009/04/29(水) 11:19:30>>282
難問ですね。それはともかく、私の環境ではブラウザでみると文字化けしてしまうのですが、ここにはなにがかいてあるのですか?
0318デフォルトの名無しさん
2009/04/29(水) 11:39:37落とし穴(ピリオドの後ろに必ずスペースが必要)があるが、
設問の課題データ例のパターンなら大丈夫と思う。
表示法例では0回の時どうするか分からないので全て表示にした。
(3)+(2)の(a)
#include <stdio.h>
#include <stdlib.h>
int count[16];
void wordcount(char word[16])
{
int i = 0;
for (i = 0; i < 16; i++) { if (word[i] == '.' || word[i] == 0) { break; } }
count[i]++;
}
int main()
{
char buf[16]; int i;
while (1) {
scanf("%15s%*c", buf);
if (buf[0]=='*' || buf[0] == 0) { break; }
wordcount(buf);
}
printf("文字数 出現回数\n");
for (i = 1; i < 16; i++) { printf(" %2d %3d\n", i, count[i]);}
return 0;
}
0319デフォルトの名無しさん
2009/04/29(水) 11:40:41#include <stdio.h>
#include <stdlib.h>
int count[16];
void wordcount(char *word)
{
int i = 0;
for (i = 0; i < 16; i++) { if (*(word+i) == '.' || *(word+i) == 0) {
break; } }
count[i]++;
}
int main()
{
char buf[16]; int i;
while (1) {
scanf("%15s%*c", buf);
if (buf[0]=='*' || buf[0] == 0) { break; }
wordcount(buf);
}
printf("文字数 出現回数\n");
for (i = 1; i < 16; i++) {
printf(" %2d %3d\n", i, count[i]);
}
return 0;
}
0320デフォルトの名無しさん
2009/04/29(水) 12:02:59文字コードがUTF-8みたい
0321316
2009/04/29(水) 13:16:00/* 処理中のサービスがなければ開始 */
// EventManager_addEvent(&mgr, EVENT_SERVICE_FINISH, e.time + (Time)(exp_random(serviceRate)*SECOND));
EventManager_addEvent(&mgr, EVENT_SERVICE_FINISH, e.time + (Time)( SECOND));
0322デフォルトの名無しさん
2009/04/29(水) 21:33:36聞いても良さそうなら質問テンプレ使ってもう一度書き込みます
一応向こうで書いた内容も貼っておきます。
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/26-
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/29-30
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/32
0324デフォルトの名無しさん
2009/04/29(水) 23:56:54場違いなら指摘して頂けると嬉しいです。
【質問テンプレ】
[1] 授業単元:コンパイラ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9116.txt
http://up2.viploader.net/upphp/src/vlphp248458.png
[3] 環境
[3.1] OS: Linux
[3.2] gcc? バージョンはよく分かりません。すみません
[3.3] 言語: C/lex/yacc
[4] 期限: 09/4/30
[5] その他の制限:特には無いと思います
0325324
2009/04/29(水) 23:59:05一度他スレに書き込んで誘導されて来ました。
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/26-
0326デフォルトの名無しさん
2009/04/30(木) 00:39:17http://pc12.2ch.net/test/read.cgi/unix/1031801314/1
0327デフォルトの名無しさん
2009/04/30(木) 01:15:15レスと誘導ありがとう
やっぱりそうですよね…どうしようかな…
0328デフォルトの名無しさん
2009/04/30(木) 07:16:51[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9117.txt
(1)上記の関数は抜ける前にcoutをフラッシュするつもりで書かれている。
このフラッシュは保証されているか?もし保証されていなければどのようにすれば修正出来るか。
※func2とfunc3の内容はわからないものとする。
(2)もし仮にstd::cout << func3()の箇所をstd::cout << func1();とした場合、
再帰的に自分自身を永遠に呼び出し続けるか、それとも関数呼び出しが終わる事が保証されているか。
理由も含めて答えよ。
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] G++
[3.3] 言語:C++
[4] 期限: 09/4/30中
[5] その他の制限:
特に無し
0329デフォルトの名無しさん
2009/04/30(木) 14:19:24グーグルを駆使しているのですが答えが見つかりません。どなたかわかった人は教えて下さい。よろしくおねがいします
0330デフォルトの名無しさん
2009/04/30(木) 14:32:28勝手に想像してみるテスト。そんなの、C++開発者の公式サイトを見た方が早い。
0331デフォルトの名無しさん
2009/04/30(木) 14:33:57ストロヴストルップはC with Classesの開発を1979年に開始した。
1983年にはC with ClassesからC++に名称を変更した。
0332デフォルトの名無しさん
2009/04/30(木) 15:07:38C++Primerという本の、回答編(?)という本に載ってたはず。
0333デフォルトの名無しさん
2009/04/30(木) 17:34:36var=1, ans=var++; // ans = 1, var = 2
++Cを評価すると、C の値に1増加と為り、
C++を評価すると、C の内容と同じ値に為るから。
つまり、[ ]
by 10点
0334デフォルトの名無しさん
2009/04/30(木) 20:01:430335デフォルトの名無しさん
2009/04/30(木) 20:52:49http://public.research.att.com/~bs/bs_faq.html#name
参考文献となっている [Orwell,1949]
http://www.ministryoflies.com/1984.pdf
残念ながらどこが面白いのか私には分からなかった。
0336329
2009/05/01(金) 00:49:46Orwell,1949には一切ネーミングについて++Cの話は出て来ませんでした。
>>333
の話がどこかに載っているといいのですがインターネット上にありますか?
0337328
2009/05/01(金) 00:57:270338デフォルトの名無しさん
2009/05/01(金) 04:45:23あってるか知らないけど。
1.保証されない。
try{
// 略
} catch (...) {
std::cout << std::flush;
}
2.保証されない
再帰呼び出しを行ってスタックオーバーフローをおこし、プログラムが終了する
0339328
2009/05/01(金) 05:10:39(1)すみません よくわからないのですが全文かいていただけないでしょうか
(2)std::cout << "aiueo";の後とfunc2()の後でflushを付け加えたのですがそれでもスタックオーバーフローになります
flushすればバッファがたまっていかないのでメモリがいっぱいになることもなく、したがって永遠にループするかと思ったのですが。なぜスタックオーバーフローになるのでしょうか?
0340286です。
2009/05/01(金) 06:23:11お礼が遅れて申し訳ありませんでした。
292の方からご提供いただいた、ソースの二分木がうまく動きません。
例えばbだとしたら1111111・・・の連続で正しいコードが出てきません。
多分全部木のノードが右に付いていっているんだと思います。
どなたか直せる方いたら宜しくお願いします。
これに悩んで二日寝てません・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9118.txt
0341デフォルトの名無しさん
2009/05/01(金) 06:47:34(1)保証される。よって修正したソースは不要。
(2)再帰から抜ける条件が無いため、無限に再帰動作する。
(3)永久ループと無限再帰はメモリの消費が異なるため。
0342デフォルトの名無しさん
2009/05/01(金) 13:35:07雪印の社長みたいだな
0343あ
2009/05/01(金) 13:57:16キーボードから 3整数を読みこみ、これを三辺の長さとする三角形が成立するかどうかがわかる
プログラムを論理演算子を用いて作りなさい
わかったらお願いします!
0344デフォルトの名無しさん
2009/05/01(金) 14:12:42top->left = new binary_tree();
top->right = new binary_tree();
top->ch = 0;
(top->left)->left = (top->left)->right = NULL;
(top->right)->left = (top->right)->right = NULL;
(top->left)->ch = pq.top().ch, pq.pop();
(top->right)->ch = pq.top().ch, pq.pop();
length = 2;
以上を↓こうしてみたら?
top->left = new binary_tree();
top->right = new binary_tree();
top->ch = pq.top().ch, pq.pop();
length = 1;
0345デフォルトの名無しさん
2009/05/01(金) 14:16:13#include <iostream>
using std::cin;
using std::cout;
int main(void) {
int a, b, c;
cout <<"Input a b c length:";
cin >> a >> b >> c;
if(a+b <= c || a+c <= b || b+c <= a)
cout << "三角形にはなりません\n";
else
cout << "三角形です\n";
}
0346デフォルトの名無しさん
2009/05/01(金) 15:31:55おやすみ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9120.txt
0347デフォルトの名無しさん
2009/05/01(金) 16:17:54[2]問題文:素因数分解です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9119.txt
[3]環境
[3.1]OS:Windoxs
[3.2]gccだと。バージョンは覚えてないです
[3.3]言語:C
[4]期限:5月4日
[5]その他の制限:基本的なことは習いましたが2年前なのであやふやで
すいません。
0348デフォルトの名無しさん
2009/05/01(金) 16:24:530349デフォルトの名無しさん
2009/05/01(金) 17:03:37#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX_VAL 100000
#define REPEAT_NUM 1000
int count_prime(int max_val) {
int *a = calloc(max_val, sizeof(int)), i, j, count = 0;
for (i = 2; i <= max_val; i ++) {
if (a[i-1] == 0) {
count ++;
for (j = i * 2; j <= max_val; j += i) a[j-1] = 1;
}
}
free(a);
return count;
}
int main() {
clock_t start_time, end_time;
int num, i;
start_time = clock();
for (i = 0; i < REPEAT_NUM; i ++) num = count_prime(MAX_VAL);
end_time = clock();
printf("Number of primes=%d\n", num);
printf("Elapsed time=%gsec\n", (end_time - start_time) / (double)CLOCKS_PER_SEC / REPEAT_NUM);
return 0;
}
0350デフォルトの名無しさん
2009/05/01(金) 17:10:580351デフォルトの名無しさん
2009/05/01(金) 17:20:50#include<stdio.h>
#include<stdlib.h>
#define MAX_VAL 100000
int *make_primes(int max_val, int *num) {
int *a = calloc(max_val, sizeof(int)), i, j, count = 0, *primes;
for (i = 2; i <= max_val; i ++)
if (a[i-1] == 0) { count ++; for (j = i * 2; j <= max_val; j += i) a[j-1] = 1; }
primes = malloc(count * sizeof(int));
for (i = 2, count = 0; i <= max_val; i ++) if (a[i-1] == 0) primes[count++] = i;
free(a); *num = count; return primes;
}
void factorize(int k, const int *primes, int prime_num) {
int i, r;
printf("入力整数=%dは", k);
for (i = 0; i < prime_num; i ++)
if (k % primes[i] == 0) {
for (r = 0; k % primes[i] == 0; r ++) k /= primes[i];
printf("\n %dの%d乗", primes[i], r);
}
printf("の積で表現される。\n");
}
int main() {
int prime_num, *primes = make_primes(MAX_VAL, &prime_num);
factorize(12345, primes, prime_num);
factorize(23456, primes, prime_num);
factorize(34567, primes, prime_num);
factorize(45678, primes, prime_num);
factorize(56789, primes, prime_num);
free(primes);
return 0;
}
0352デフォルトの名無しさん
2009/05/01(金) 18:00:300353デフォルトの名無しさん
2009/05/01(金) 21:00:210354340です。
2009/05/01(金) 23:21:05B&Rしてみましたが、残念ながらツリーがやはり正しくありません。
ご協力ありがとうございました!!もうちょい粘ってみます!!
2チャンネラーが神々しく見えてきた・・・
0355デフォルトの名無しさん
2009/05/02(土) 00:16:57j=i*i であるべきだけど max_val の値によってオーバーフローするから
プログラム的には i*2 が悪いわけではない
0356デフォルトの名無しさん
2009/05/02(土) 00:33:41if(a[i]==0) {
count++;
for(j=i*i; j<=max_val; j+=i) a[j] = 1;
}}
for(; i<=max_val; i++) if(a[i]) count++;
オーバーフロー気にするならわければいい。
0357デフォルトの名無しさん
2009/05/02(土) 02:25:15[2] 問題文:
問題1
(平年の)1年は何時間か
を計算して表示するプログラムを
作ってみましょう。
[3] 環境
[3.1] OS:Windows
[3.2] めじろ
[3.3] C言語?です
[4] 期限:明後日までです・・・・
よろしくおねがいします
0358デフォルトの名無しさん
2009/05/02(土) 02:29:20main(){printf("%d",365*24);}
0359デフォルトの名無しさん
2009/05/02(土) 02:31:39ありがとうございます。本当にありがとうございます。感謝です。
0360デフォルトの名無しさん
2009/05/02(土) 02:37:37[2] キーボードから整数を読み込んで
(計算せずにそのまま)表示する
プログラムを作っりなさい。
[3.1] OS:Windows
[3.2] めじろ
[3.3] C言語です
[4] 期限:明後日までです・・・・
まだまだあります・・・。
ある程度は参考書みて頑張ります・・・。少しだけ助けてください・・・。
みなさんすごすぎです・・・・
0361デフォルトの名無しさん
2009/05/02(土) 02:44:20int main(void)
{
int n;
scanf("%d", &n);
printf("%d", n);
return 0;
}
0362デフォルトの名無しさん
2009/05/02(土) 02:54:52本当にありがとございます。
心から感謝しています。
これは初心者レベルなのでしょうか?
初心者レベルでわからない私は一体・・・・。
0363デフォルトの名無しさん
2009/05/02(土) 02:59:54〔2〕
ツルの数とカメの数を読み込んで
足の数を計算するプログラムを作
ってみましょう
(平年の)1年は何週間と何日か
を計算して表示するプログラムを
作ってみましょう。
1億の1万倍がいくつになるかを
計算するプログラムを作り、実行
して、その結果を報告して下さい。
[3.1] OS:Windows
[3.2] めじろ
[3.3] C言語です
[4] 期限:明後日までです。これが最後です。お願いします。
0364デフォルトの名無しさん
2009/05/02(土) 03:09:03int main(void)
{
int c, t;
printf("鶴の数:");
scanf("%d", &c);
printf("亀の数:");
scanf("%d", &t);
printf("足の数:%d",c*2+t*4);
return 0;
}
0365デフォルトの名無しさん
2009/05/02(土) 03:36:32本当にありがとうございます。
感謝です。 すごいですね、本当に。 私にはただの記号にしかみえません
0366デフォルトの名無しさん
2009/05/02(土) 04:57:19int main(void)
{
int d, w;
for(d = 365,w = 0; d >= 7; d -= 7) w++;
printf("一年は%d週と%d日\n", w, d);
return 0;
}
0367デフォルトの名無しさん
2009/05/02(土) 05:30:46本当にありがとうございます。
少しづつですが、なんとなくどのようなものかわかってきました。
あたしの実力では一番最初のが限界ですがwww
本当にありがとうございます。
0368デフォルトの名無しさん
2009/05/02(土) 11:08:10[2] Windowsに付属しているカードゲーム「フリーセル」を自動的に解くプログラム。
[3.1] Windows
[3.2] gcc
[3.3] C言語
[4] 期限:5月10日
enum SUIT { SPADE, HEART, DIAMOND, CLUB };
typedef struct tagCARD { char suit, number; } CARD;
0369デフォルトの名無しさん
2009/05/02(土) 11:39:19int main(void)
{
int n;
n = 100000000;
n *= 10000;
printf("%d\n", n);
return 0;
}
0370デフォルトの名無しさん
2009/05/02(土) 11:41:180371デフォルトの名無しさん
2009/05/02(土) 12:42:39気合でなんとかしろ
0372デフォルトの名無しさん
2009/05/02(土) 13:03:37#include <stdio.h>
int main(){
int yukiti=10000;float yukiko=(float)yukiti; double choo;
choo=yukiko*yukiko*yukiko;
printf("%.0f.\n", choo);
choo/=10000.; /* 1万以下端数四捨五入 */
if((int)choo%10000 == 0) {
choo/=10000.;
if((int)choo%10000 == 0) {
printf("%.0f.兆\n", choo/10000.);
} else
printf("%.0f.億\n", choo);
} else
printf("%.0f.万\n", choo);
}
0373デフォルトの名無しさん
2009/05/02(土) 13:12:480374デフォルトの名無しさん
2009/05/02(土) 13:57:36#include <stdio.h>
int main() { printf("%.0f\n", 100000000*10000.); }
0375デフォルトの名無しさん
2009/05/02(土) 14:39:000376デフォルトの名無しさん
2009/05/02(土) 18:02:24TASでもやろうってのかい?
ttp://www.nicovideo.jp/watch/sm6240927
0377デフォルトの名無しさん
2009/05/02(土) 19:09:16for(i=2; i*i<=max_val; i++) {
if(a[i]==0) {
count++;
for(j=i*i; j<=max_val; j+=i) a[j] = 1;
}}
for(; i<=max_val; i++) if(a[i]==0) count++;
0378デフォルトの名無しさん
2009/05/03(日) 00:12:06その意味の「自動的に解く」ならあんなenumとか書かない気がする。
0379デフォルトの名無しさん
2009/05/03(日) 01:17:36enum って c++ からじゃないの?
画像認識とWinAPIでマウスを動かせば
できないことも無いと思うけど・・・
0380デフォルトの名無しさん
2009/05/03(日) 01:50:58アホだw
0381デフォルトの名無しさん
2009/05/03(日) 02:35:0410日期限だと画像認識は無理だろう。
知らなかったかもしれないが、
enumはCからあるよ。
0382デフォルトの名無しさん
2009/05/03(日) 08:44:55>>368
制限として明記されていないが、そのenumとstructは使えという指示?
それとも自分で定義したもので他の方法でできるなら使わなくて良い?
0383382
2009/05/03(日) 09:03:28右クリックで出るのに今気づいたorz
0384デフォルトの名無しさん
2009/05/03(日) 13:20:38使えということです。
0385デフォルトの名無しさん
2009/05/03(日) 15:59:26「整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し、少数ならば「整数を入力してください」と表示するプログラムを作れ」という課題が出ました
最初の「整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し」のところは自力でできたのですがそのあとの「少数ならば」のところができません。
しかも授業で習った範囲でしか使ってはいけないのでelseなどは使ってはいけないと言われています。どなたか教えていただけないでしょうか?
これが途中までのプログラムです。
#include<stdio.h>
int main()
{
double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
if(1<=x){
if(9>=x){
printf("桁数は1ケタです\n");
}
}
if(10<=x){
if(99>=x){
printf("桁数は2ケタです\n");
}
}
(これが9ケタになるまで続く(長くなるから省略)
return(0);
}
0386デフォルトの名無しさん
2009/05/03(日) 16:07:19ですがテンプレ忘れていました。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し、少数ならば「整数を入力してください」と表示するプログラムを作れ
[3] 環境
[3.1] Windows/vista
[3.2] わからないです
[3.3] C++
[4] 期限: ([2009年5月6日10:00まで]
[5] その他の制限:elseなどを使わない。(doubleやintなどを駆使してやるように言われました。
0387デフォルトの名無しさん
2009/05/03(日) 16:08:500388デフォルトの名無しさん
2009/05/03(日) 16:17:02int xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
0389デフォルトの名無しさん
2009/05/03(日) 16:24:19そのint xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
のプログラムは
intxx=x;をdouble x;の後ろに作り
if (x - xx > 0) {
printf("整数を入力してください\n");
return (0);
}
をif(100000000<=x){
if(999999999>=x){
printf("桁数は9ケタです\n");
}
}
の後ろに作るということでしょうか?
0390デフォルトの名無しさん
2009/05/03(日) 16:32:01scanfしている行の次に入れる。
0391デフォルトの名無しさん
2009/05/03(日) 16:39:21scanfしている行の次に入れる。ということは
#include<stdio.h>
int main()
{
double x;
int xx = x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%d",&x);
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
ということですか・・・?エラーが出てしまうのですが・・たびたび質問してすいません。
0392デフォルトの名無しさん
2009/05/03(日) 16:50:01xxへはscanfした結果を代入。
この後に、桁数表示する処理を入れる。
エラーになるときは、その表示内容も書いてくれ。
コンパイラ名も。
0393デフォルトの名無しさん
2009/05/03(日) 17:08:45#include<stdio.h>
int main()
{
double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
int xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
if(1<=x){
if(9>=x){
printf("桁数は1ケタです\n");
}
}
if(10<=x){
if(99>=x){
printf("桁数は2ケタです\n");
}
}
以下9桁まで省略
return(0)
} この状態でデバッグなしで開始すると このようなエラーが
「c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(6) : warning C4996: 'scanf': This function or variable may be unsafe.
Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(7) : error C2143: 構文エラー : ';' が '型' の前にありません。
c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(8) : error C2065: 'xx' : 定義されていない識別子です。
0394デフォルトの名無しさん
2009/05/03(日) 17:21:37double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
int xx = x;
この箇所を
double x;
int xx;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
xx = x;
にして
0395デフォルトの名無しさん
2009/05/03(日) 17:27:11できました!
こうやって作るんですね。。
本当にありがとうございました!
0396デフォルトの名無しさん
2009/05/03(日) 20:43:13[2] 問題文(含コード&リンク):
int型の数値を文字列に変換する関数を自作せよ。(itoa関数の自作)
[3] 環境
[3.1] OS: Win Xp
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
0397デフォルトの名無しさん
2009/05/03(日) 20:46:410398デフォルトの名無しさん
2009/05/03(日) 21:25:01char *myitoa(int n)
{
int i, m, flag = 0;
char *p;
if(n==0) {
p = calloc(2,1);
p[0] = '0';
return p;
}
if(n < 0) {
flag = 1;
n *= -1;
}
for(i=0,m=n; m; i++, m/=10);
i += flag;
p = calloc(i+1,1);
while(n) {
p[--i] = n % 10 + '0';
n /= 10;
}
if(flag) p[0] = '-';
return p;
}
0399デフォルトの名無しさん
2009/05/03(日) 23:35:02必死でおじゃるなw
0401デフォルトの名無しさん
2009/05/04(月) 00:17:260402デフォルトの名無しさん
2009/05/04(月) 00:32:260403デフォルトの名無しさん
2009/05/04(月) 00:38:020404デフォルトの名無しさん
2009/05/04(月) 00:45:32なぁ〜にぃ〜!やっちまったな!
0405A欄既卒 ◆iD93.8lby6
2009/05/04(月) 01:02:17while() の範囲が
実に見事である。
90点
0406デフォルトの名無しさん
2009/05/04(月) 01:20:28警察のコスチュームで警察を名乗っているのとなんら変わらないんだけど?w
手帳も偽造ですか?そういうのは国家が証明してくれるんで、お墨付きの
証明書を提示して名乗りなさい。もちろん、それが証明されているということは
実力もあるわけだから、こんな場所で油を売るなんて、普通はしませんよねぇ〜?w
0407A欄既卒 ◆iD93.8lby6
2009/05/04(月) 02:01:17おれにダメージを与えられない (´・ω・`)
0408デフォルトの名無しさん
2009/05/04(月) 02:05:010409デフォルトの名無しさん
2009/05/04(月) 02:05:26相変わらず引用元が理解できてないな
0410デフォルトの名無しさん
2009/05/04(月) 02:19:26#include <stdio.h>
char *myitoa(int n);
int main() {
puts(myitoa(0x80000000));
}
char *myitoa(int n)
{
int i, m, flag = 0;
char *p;
if(n==0) {
p = calloc(2,1);
p[0] = '0';
return p;
}
if(n < 0) flag = -1;
for(i=0,m=n; m; i++, m/=10);
i -= flag;
flag += flag + 1;
p = calloc(i+1,1);
while (n) {
p[--i] = flag*(n % 10) + '0';
n /= 10;
}
if(flag == -1) p[0] = '-';
return p;
}
0411デフォルトの名無しさん
2009/05/04(月) 02:45:030412デフォルトの名無しさん
2009/05/04(月) 05:25:43char *myatoi(int n)
{
char buf[20+1]="", *p=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1;
*--p='0'+abs(n%10);
if(n<0) sign=-1,n=-(n/10);
else n/=10;
for(;n!=0;n/=10)
{
*--p='0'+n%10;
}
if(sign==-1) *--p='-';
return strdup(p);
}
0413412
2009/05/04(月) 06:22:08負数に対する除算の丸め方向が違っても大丈夫なように変更
// (-1)/10 の結果は (0 余り -1) もしくは (-1 余り 9) のいずれか
char *myatoi(int n)
{
char buf[20+1]="", *p=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1, m;
if(n<0) sign=-1;
m=(10+sign*(n%10))%10;
*--p='0'+m;
for(n=sign*(n-sign*m)/10;n!=0;n/=10)
{
*--p='0'+n%10;
}
if(sign==-1) *--p='-';
return strdup(p);
}
0414デフォルトの名無しさん
2009/05/04(月) 10:18:58>>398みたいなバカが使うとメモリリークするぞ
0415デフォルトの名無しさん
2009/05/04(月) 10:58:45例えば:-13/10=-1 あまり -3
-9/10=0 あまり -9
0416デフォルトの名無しさん
2009/05/04(月) 11:48:05お前はせいぜい学ラン止まりだろw
0417デフォルトの名無しさん
2009/05/04(月) 16:12:450418デフォルトの名無しさん
2009/05/04(月) 16:23:25ほとんどのアーキテクチャでは
整数除算の商を 0 方向に丸めるっぽい
商を値の小さい方に丸めるアーキテクチャってのが
どういうところで使われているのか知りたいくらい
0419デフォルトの名無しさん
2009/05/04(月) 16:49:41[1] 授業単元:コンピュータ基礎とプログラミング
[2] 問題文(含コード&リンク):URLもありますが、課題は紙で渡されました。
http://ipl.sfc.keio.ac.jp/text/com-pro-2009-4/main_c3_s1.html#doc1_id900
[3] 環境
[3.1] OS: (Windows/Linux/等々) MAC
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Emacs
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C++
[4] 期限:2009/05/06まで
[5] その他の制限:#include <iostream> から始めないといけないそうです
2のURLは授業でやったことで、宿題はそれをさらに発展させた形で出ました。
その課題の問題文なんですが
「3の倍数と3を含む数」を入力すると「アホ」と出るようなプログラムを作れ というものです。
if文の中にi % 3 == 0 || i % 10 == 3は入れて、3の倍数と1の位が3の時はアホと出るようには既になっているのですが
333334や5300といった、「3の倍数ではないけれども3が含まれる数」全てでアホと出るようにしたいです。
よろしくお願いします。
0420デフォルトの名無しさん
2009/05/04(月) 16:56:26対称性から考えたら、被除数と除数の符号がどうであっても
その両者が正であるときの「商と余り」と絶対値が等しいように商と余りを定める方が直感的だが
余りは常に非負とする、という考えもありえなくは無いな
アーキテクチャというか実装レベルでどちらを採用しているかなんかは知らない
0421デフォルトの名無しさん
2009/05/04(月) 17:03:11前スレにある >>144
見れないかもしれないのでログ
http://www.23ch.info/test/read.cgi/tech/1235927586/
0422デフォルトの名無しさん
2009/05/04(月) 17:08:52char* itoa( int n, char* p, int d );
文字列として格納するchar型の配列が必要なようだが?
0423デフォルトの名無しさん
2009/05/04(月) 17:18:23char *myatoi(int n, char *p, int d)
{
static const char symbol[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buf[40+1]="", *q=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1, m;
if(d<2 || d>10+26 || p==NULL) return p;
if(n<0) sign=-1;
m=(d+sign*(n%d))%d;
*--q=symbol[m];
for(n=sign*(n-sign*m)/d;n!=0;n/=d)
{
*--q=symbol[n%d];
}
if(sign==-1) *--q='-';
return strcpy(p, q);
}
0424デフォルトの名無しさん
2009/05/04(月) 17:20:29if(d<2 || d>10+26 || p==NULL) return p;
↓
if(d<2 || d>10+26 || p==NULL) return NULL;
0425デフォルトの名無しさん
2009/05/04(月) 18:55:02有難う御座います。参考にしてなんとか頑張ってみます
0426デフォルトの名無しさん
2009/05/04(月) 20:46:12[2] 盤にあらかじめいくつかの数字が配置されている状態から
4*4の数独を解けるかどうかを判定する関数の作成。
解ける場合、いずれかの最終盤面を印字する。
コード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9122.c
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C++
[4] 5月8日
[5] main関数はこのまま使用しなければならない。
0427デフォルトの名無しさん
2009/05/04(月) 20:49:430428デフォルトの名無しさん
2009/05/04(月) 21:01:060429デフォルトの名無しさん
2009/05/04(月) 23:59:57>>422を見てそのコードに書き直したのなら
いっぺん死んだ方がいい
0430デフォルトの名無しさん
2009/05/05(火) 00:03:160431デフォルトの名無しさん
2009/05/05(火) 00:18:12人間として、人格形成に於いても。
0432デフォルトの名無しさん
2009/05/05(火) 00:19:030433デフォルトの名無しさん
2009/05/05(火) 01:14:43出来ない事、下手な事を指摘するだけで罵倒する様な人は
人格がおかしいんでしょうね。第三者から見ると気持ち悪い。
インターネットが普及して、直接対面せず、相手が直接自分を特定して
反撃してこないのを良いことに、やりたい放題やって来た奴は
最後は警察を挑発して、犯行予告あるいは紛らわしい言葉で
アウト、セーフなんて訳の分からない行動に出るが、そんなことを
している暇がある自分がこの世の中ではどういう存在か?
理解できなくなっているんでしょうね。
0434デフォルトの名無しさん
2009/05/05(火) 01:27:04どんな奴が指定しても駄目な物は駄目だろ
絶対比較って奴だ
なんで相対比較で手本見せない奴よりマシとか、訳分らない思考してんのw
0435デフォルトの名無しさん
2009/05/05(火) 01:47:13絶対比較って奴なら、ちゃんと駄目な点を指摘してやれよ。
根拠も書かずになじるのもゆとり思考だと思うが?
0436デフォルトの名無しさん
2009/05/05(火) 01:54:15初期状態入力時に0なら数字なし、1〜4ならそこに数値が配置されている。
結果出力がアレだけど、適当に加工して。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9124.txt
0437デフォルトの名無しさん
2009/05/05(火) 01:56:02だから、なに?その超絶ゆとり思考w
駄目な点を指摘してなくとも、駄目な物は駄目
これが絶対比較
駄目な点を指摘するのが絶対比較?
ゆとりをブッチ切って、自分に都合が良い変換じゃんww
0438デフォルトの名無しさん
2009/05/05(火) 02:22:46比較である以上、何かと比べたんだろ?
その比較対象との差異を示さない/示せないお前も絶対比較で駄目じゃん。
0439デフォルトの名無しさん
2009/05/05(火) 02:24:22おまえはだめな奴
だめな点を指摘しようがしまいがだめには変わらない
0440デフォルトの名無しさん
2009/05/05(火) 02:31:23教えてクレクレ君なゆとりは、人にソース見せる前に勉強と経験をつめw
0441デフォルトの名無しさん
2009/05/05(火) 02:37:51難しすぎて分からないものなんて作るんじゃねーよ
分からなさ過ぎてどこを指摘すればいいのか分からん
そういうことだからダメw
0442デフォルトの名無しさん
2009/05/05(火) 02:37:590443デフォルトの名無しさん
2009/05/05(火) 02:38:510444デフォルトの名無しさん
2009/05/05(火) 02:39:420445デフォルトの名無しさん
2009/05/05(火) 02:50:37黙ってればゆとり君がどんどんはまって、最後に恥辱のカタストロフィが訪れたのにw
0447デフォルトの名無しさん
2009/05/05(火) 02:57:114隅もそれぞれ1234は縛り(ルール)ですか?
0449デフォルトの名無しさん
2009/05/05(火) 03:06:420450447
2009/05/05(火) 03:08:490451デフォルトの名無しさん
2009/05/05(火) 03:11:44自分では難解な問題をソースに落せた、他人は難解で分らないだろう、と思い込んで散々偉そうにして、
実は小学生以下の文章読解能力やアルファベット名称の問題が間違ってる、とは思いもしてなかったとw
指摘したら一発だから指摘なんかするかってのw
散々吠えてクレクレして、”俺も含めて”だってwwww
0453デフォルトの名無しさん
2009/05/05(火) 03:23:01鬼の首を取ったかのように騒ぐあなたも同類です
0454デフォルトの名無しさん
2009/05/05(火) 03:26:12特に>>441は傑作すぐるwww
0455デフォルトの名無しさん
2009/05/05(火) 03:30:180456デフォルトの名無しさん
2009/05/05(火) 03:32:55羨ましいわ
0457デフォルトの名無しさん
2009/05/05(火) 03:36:01比較をよこせって書き込みまでは予測の範囲内だったが
自分のコードが難しくて読めてないんだろ的な書き込みがされた瞬間、ちょー噴いたw
0458デフォルトの名無しさん
2009/05/05(火) 10:13:38[2] 問題文(含コード&リンク):
2つの文字列を入力し、アナグラムかどうかを判定するプログラムを作れ
[3] 環境
[3.1] OS: Win Vista
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:木曜まで
[5] その他の制限:
決められた関数を必ず使用すること。
詳細は以下にあります。(英文で申し訳ない)
http://www.filebox100.net/src/fb1002975.pdf
0459デフォルトの名無しさん
2009/05/05(火) 10:24:41リンク先が 404 not found だって
int is_anagram(const unsigned char *a, const unsigned char *b)
{
int count_a[256]={0}, count_b[256]={0}, i;
for(i=0;a[i];i++) count_a[a[i]]++;
for(i=0;b[i];i++) count_b[b[i]]++;
for(i=0;i<256;i++) if(count_a[i]!=count_b[i]) return 0;
return 1;
}
0460458
2009/05/05(火) 10:32:37すいません。リンク先はこっちです。
0461デフォルトの名無しさん
2009/05/05(火) 11:46:34コメント以外はドキュメントに沿って作ったつもり
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9126.c
0462デフォルトの名無しさん
2009/05/05(火) 12:56:360463デフォルトの名無しさん
2009/05/05(火) 13:16:30bx = x | ~1; // bx = x / 2 * 2;
by = y | ~1; // by = y / 2 * 2;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9125.txt
0464デフォルトの名無しさん
2009/05/05(火) 13:49:370465デフォルトの名無しさん
2009/05/05(火) 17:34:34[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9127.zip
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 5月6日
期限が明日になりますが、よろしくお願いします。
0466デフォルトの名無しさん
2009/05/05(火) 18:20:21問3の最低限のところまで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9128.txt
0467デフォルトの名無しさん
2009/05/05(火) 19:11:46俺も作ってみた。っていうか作ってる途中で投稿があってやるせないから投稿する。。。
自己満足でごめん。あと、動作は保障しない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9129.txt
0468デフォルトの名無しさん
2009/05/05(火) 21:07:000469デフォルトの名無しさん
2009/05/05(火) 22:06:39.cだとエラーが出て焦ったのですが、cppだと問題ないんですね
説明不足かと思いましたがやっていただきありがとうございます
0470デフォルトの名無しさん
2009/05/05(火) 22:29:250471デフォルトの名無しさん
2009/05/05(火) 22:56:56どのように変更したいいのでしょうか?良かったら教えてもらえないでしょうか
0472デフォルトの名無しさん
2009/05/05(火) 23:08:25char buff[256];
を1行上に持っていくだけ。
0473デフォルトの名無しさん
2009/05/06(水) 00:15:24ありがとうございます
0474デフォルトの名無しさん
2009/05/06(水) 05:53:26自分がどうやって解いているのかすら分からないw
0475デフォルトの名無しさん
2009/05/06(水) 09:43:40なるべく先頭が低い数字になるようにシャッフル。で、列をランダムにカード配ってけばよさそう。
余裕があったらコンピュータに一回解かせるのもいい。
0476デフォルトの名無しさん
2009/05/06(水) 13:30:01盤面によってははまりパターンからなかなか抜け出せず時間がかかり過ぎる。
幅優先の方がいいかも知れん。
enumとstructの縛りも時間がかかる要員のひとつ。
>>475
初期配置の話? どんな配置でも(証明はされてないけど)解けるんじゃないの?
0477デフォルトの名無しさん
2009/05/06(水) 14:13:35ゲーム番号に -1 を入れると
解けない盤面になる
0478デフォルトの名無しさん
2009/05/06(水) 14:17:37昔アメリカの学生が研究して、解けない問題が4つ(だったかな?)あることを
示したよ。
0479デフォルトの名無しさん
2009/05/06(水) 14:20:09[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9132.zip
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] コンパイラ名とバージョン: ビジュアルC++
[3.3] 言語: C++
[4] 期限: 5月7日朝まで
よろしくおねがいします
0480479
2009/05/06(水) 14:23:00問題17個のうち、8個は自分でやってみました。
なので答えがあっているかみてほしいです。9番からは何が何だか意味不明なのでよろしくおねがいします
0481475
2009/05/06(水) 14:23:16そう。初期配置の話。
実は、フリーセルは数えるほどしかやったこと無いから詳しくないんだ。すまない。
あー、やっとわかった。元々からAI作ってるのか。余計なこと言っちゃったな。
0482デフォルトの名無しさん
2009/05/06(水) 14:25:12{
if(/* すでに解けていたら */) return 1;
/* 次に打てる手をリスト化する */
for(/* 全ての手に対して */){
/* その手を実行 */
if(solve()){
return 1;
}
/* この手では解けなかったので元に戻す */
}
/* 手詰まり */
return 0;
}
0483デフォルトの名無しさん
2009/05/06(水) 14:40:05フリーセルの盤面パターンは1000000通り。
ランダムに並べるともっと多いよね。
F3キーで番号指定できる。
この時、表示は1〜1000000になるんだが、
-1と-2を受け付ける。これは絶対に解けない。
番号と配置パターンが解析できるなら、一番良いんだがね。
0484デフォルトの名無しさん
2009/05/06(水) 14:44:58尤もな方法ではあるけど
一度現れた形を除外するようにしないと無限ループする
深さ優先探索で記憶領域的に全部保持できるかどうかは不明
今から力任せ探索でやってみて、ダメなら枝狩りを考えるとしよう
0485デフォルトの名無しさん
2009/05/06(水) 15:02:16コンパイル通しただけだから動作は保障しない。
コンパイラはVC9EE。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9133.txt
パズルみたいで面白かった。要領さえつかめば簡単。
0486デフォルトの名無しさん
2009/05/06(水) 16:30:190487デフォルトの名無しさん
2009/05/06(水) 17:03:56[1] 授業単元:プログラミング言語
[2] 問題文:http://h.pic.to/16ggp3
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C++)
[4] 期限: ([5月7日13:00まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
お願いします
0488デフォルトの名無しさん
2009/05/06(水) 17:11:13問題文になってないぞ。
画像はあくまで例なので、
・合計は表示する必要ない
・平均は表示する必要ない
・総合判定もいらない
・科目名も家庭科とかでも良い
ってこと?
キーボードから得点読み込んで表示すればなんでも良さそうだな
0490書き写したぞ
2009/05/06(水) 17:18:592.各科目は150満点
3.各科目について6割以上は合格
合格は1、不合格は2
4.総合判定は3科目以上が合格
5.どんな得点を入力しても桁がそろうようにする
9 5月8日(金)13:00までに
実行例
----------------------------------------------
"c:\Cf-r4\Document\2008年度\講義
----------------------------------------------
国語=150
算数=0
理科=124
社会=89
合計[363],平均[ 90.75]
国語[150],[100.000%],[1]
算数[ 0],[ 0.000%],[0]
理科[124],[ 82.667%],[1]
社会[ 89],[ 59.333%],[0]
総合判定[0]
Press any key to continue□
----------------------------------------------
※ Press any key to contine
0491デフォルトの名無しさん
2009/05/06(水) 17:20:59各科目の最後の1と0は何?
合否は1と2だよね?
0494書き写したぞ
2009/05/06(水) 18:44:50int sougou;
int koku, san, rika, sha;
} seito;
int s_hantei() {
if( seito.sougou >= 3 )
return 1;
return 0;
}
int hantei(int tokuten) {
if( tokuten/150.*100 > 75 ) {
seito.sougou++;
return 1;
}
return 0;
}
int main(void) {
seito.sougou = 0;
cout<<"国語="; cin>>seito.koku;
cout<<"算数="; cin>>seito.san;
cout<<"理科="; cin>>seito.rika;
cout<<"社会="; cin>>seito.sha;
int goukei = seito.koku + seito.san + seito.rika + seito.sha;
cout<<fixed<<setprecision(2)<<endl;
cout<<"合計["<<setw(3)<<goukei<<"],平均["<<setw(6)<<goukei/4.<<"]"<<endl;
cout<<fixed<<setprecision(3);
cout<<"国語["<<setw(3)<<seito.koku<<"],["<<setw(7)<<seito.koku/150.*100<<"%],["<<hantei(seito.koku)<<"]"<<endl;
cout<<"算数["<<setw(3)<<seito.san <<"],["<<setw(7)<<seito.san/150.*100 <<"%],["<<hantei(seito.san)<<"]"<<endl;
cout<<"理科["<<setw(3)<<seito.rika<<"],["<<setw(7)<<seito.rika/150.*100<<"%],["<<hantei(seito.rika)<<"]"<<endl;
cout<<"社会["<<setw(3)<<seito.sha <<"],["<<setw(7)<<seito.sha/150.*100 <<"%],["<<hantei(seito.sha)<<"]"<<endl;
cout<<"総合判定["<<s_hantei()<<"]"<<flush;
}
0495デフォルトの名無しさん
2009/05/06(水) 19:40:59[1] 授業単元:確率統計学
[2] 問題文:
確率変数X、Yに関する実行地データについて、それぞれの平均、分散および
標準偏差の推定値と相関係数の推定値を求めるプログラムを作成せよ。
X=2.049,Y=1.764
X=4.987,Y=8.424
X=5.963,Y=9.989
X=6.378,Y=13.393
X=11.430,Y=18.958
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月8日16:00まで
[5] その他の制限:
よろしくお願いします
0496デフォルトの名無しさん
2009/05/06(水) 21:30:02C++といえど>>494みたいな書き方よりはprintf使った方がいいんじゃないか
0497デフォルトの名無しさん
2009/05/06(水) 21:38:520498デフォルトの名無しさん
2009/05/06(水) 21:42:080499デフォルトの名無しさん
2009/05/06(水) 21:43:34if( tokuten/150.*100 > 75 ) {
なんだ?
0500書き写したぞ
2009/05/06(水) 22:03:05#include <iomanip>
using namespace std;
struct seiseki {
int koku, san, rika, sha, sougou;
} seito;
int s_hantei(int tanni) {
if( tanni >= 3 ) return 1;
return 0;
}
int hantei(int tokuten) {
if( tokuten/150.*100 >= 60 ) {
seito.sougou++;
return 1;
}
return 0;
}
int main(void) {
seito.sougou = 0;
cout<<"国語="; cin>>seito.koku;
cout<<"算数="; cin>>seito.san;
cout<<"理科="; cin>>seito.rika;
cout<<"社会="; cin>>seito.sha;
int goukei = seito.koku + seito.san + seito.rika + seito.sha;
cout<<fixed<<setprecision(2)<<endl;
cout<<"合計["<<setw(3)<<goukei<<"],平均["<<setw(6)<<goukei/4.<<"]"<<endl<<setprecision(3);
cout<<"国語["<<setw(3)<<seito.koku<<"],["<<setw(7)<<seito.koku/150.*100<<"%],["<<hantei(seito.koku)<<"]"<<endl;
cout<<"算数["<<setw(3)<<seito.san <<"],["<<setw(7)<<seito.san /150.*100<<"%],["<<hantei(seito.san )<<"]"<<endl;
cout<<"理科["<<setw(3)<<seito.rika<<"],["<<setw(7)<<seito.rika/150.*100<<"%],["<<hantei(seito.rika)<<"]"<<endl;
cout<<"社会["<<setw(3)<<seito.sha <<"],["<<setw(7)<<seito.sha /150.*100<<"%],["<<hantei(seito.sha )<<"]"<<endl;
cout<<"総合判定["<<s_hantei(seito.sougou)<<"]"<<endl;
}
0501デフォルトの名無しさん
2009/05/06(水) 22:34:39[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):トランプカードの操作
配られた1枚のカードを手札に加え、手札を更新する関数updateHand()を作成し、カードデッキを初期化してシャッフルし、5枚のカードを配り、その結果を出力する
プログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 5月7日
[5] その他の制限:
用法: Card *updateHand(Card *hand,int num,Card deal);
処理内容: ポインタhandが指す配列のnum個の要素とdealを格納する配列を新たに確保し、その配列の先頭アドレスを返す
実装方法:
1.handが指す配列(動的に確保される)の要素数numより1つ大きい要素数をもつCard型配列をcalloc()により確保
2.handが指す配列の内容とdealを新たに確保した配列にコピー
3.handが指す配列の領域をfree()により消去
4.新しい配列へのポインタを返す
0502デフォルトの名無しさん
2009/05/06(水) 22:41:160503デフォルトの名無しさん
2009/05/06(水) 22:53:470504デフォルトの名無しさん
2009/05/06(水) 23:37:36もういいから死んでくれ
0505デフォルトの名無しさん
2009/05/06(水) 23:38:39一枚配るごとにcallocとfreeって正気か?
0506デフォルトの名無しさん
2009/05/06(水) 23:52:270507デフォルトの名無しさん
2009/05/06(水) 23:55:53普通は手札の配列は最初に固定で確保だろ。
0508デフォルトの名無しさん
2009/05/07(木) 00:08:47例えばゲーム中にある条件がそろったらカードデッキを1セット新たに加えて手札にn毎ずつ配るとかさ。
0509デフォルトの名無しさん
2009/05/07(木) 00:13:05深さ優先と幅優先の2つで組んでみたが、実行すると帰ってこん(簡単に解ける盤面ではテスト済)。
ヒューリスティックな優先順位付けがないと厳しいっぽい。
しかしオレはフリーセルが解けない人なので、ヒューリスティックなぞむりでぷ。
0510GCCでreallocやってみた
2009/05/07(木) 00:16:26#include <malloc.h>
#include <memory.h>
struct Card {
int a, b;
};
struct Card *updateHand(struct Card *hand, int num, struct Card deal) {
struct Card *temp;
#if 1
temp = calloc(num + 1, sizeof(struct Card));
if(temp == NULL) return NULL;
memcpy(temp, hand, num * sizeof(struct Card));
memcpy(&temp[num], &deal, sizeof(struct Card));
free(hand);
return temp;
#else
temp = realloc(hand, (num + 1)*sizeof(struct Card));
if(temp == NULL) return NULL;
memcpy(&hand[num], &deal, sizeof(struct Card));
return hand;
#endif
}
int main() {
int i, size=5;
struct Card *in, *out;
struct Card n = {5,6};
in = calloc(size, sizeof(struct Card));
out = updateHand(in, size, n);
if(out) for(i=0; i<size+1; i++)
printf("%d,%d ", out[i].a, out[i].b);
puts("");
}
0511デフォルトの名無しさん
2009/05/07(木) 09:39:37同じマスを何度も調べてしまうことが原因で無限ループになるんだったら、同じマスを調べないようにすればいいんじゃね?
0512デフォルトの名無しさん
2009/05/07(木) 10:06:340513デフォルトの名無しさん
2009/05/07(木) 10:21:1615000 手以上のサンプル
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9136.lzh
ほとんどの場合計算時間が長すぎてストップさせてるから
最低でもこの10倍程度はいくと思う
---------------------------------------------------
none none none none // 一枚だけカードを置ける場所4ヶ所
H3 HJ S8 S4 CQ CA D3 // カードの並び 一番右のカードだけを動かせる x 8列
DJ HA D9 H7 S5 S0 H8
S9 SA S6 DK D8 H2 HK
H0 D0 S7 S2 H4 C5 D7
C3 C0 D5 C7 H9 SJ
SQ DQ C2 D6 H6 D4
C4 C6 C9 DA S3 D2
HQ H5 CJ SK CK C8
none none none none // 最終的にカードを積んでいく山 4ヶ所
0514デフォルトの名無しさん
2009/05/07(木) 10:28:27「フリーセルで遊んでいるときに勝手にカードが山に積まれる機能」
と同じ機能を実装すれば手数は大幅減になると思う
0515479
2009/05/07(木) 10:59:24有難うございます。回答見せて頂きました。ただ、12以降の答えについて疑問があります。
(12)は、クラスAのメンバ変数(int)を指すポインタであって関数ポインタではないような気がするのですが、如何でしょうか。
また、13以降が全てvoidを返り値とする関数ポインタとなっているようですが、13〜16は返り値をintとする関数ポインタだと思うのですが、如何でしょうか。
ttp://publib.boulder.ibm.com:80/infocenter/lnxpcomp/v7v91/index.jsp?topic=/com.ibm.vacpp7l.doc/language/ref/clrc13cplr034.htm
のサイトを元にして12〜15をもう一度自分でやってみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9137.zip
・僕の答えが正しいかみて頂けないでしょうか。今度は定義だけでなく適当なデータを入れて出力までしました。
・14,15のコメントのところでそれぞれ何を表しているか日本語で埋めてもらえますか?
・16,17は出来れば定義だけでなく何らかの値を入れて画面出力までしてもらえるとたすかります
よろしくおねがいします
0516485
2009/05/07(木) 12:14:42えーっと、すまんな。俺の12は間違ってる。
パズル的に解いてたからちょっと思い込みがあったかも知れん。
多分以下のようになる。
int A::*p1 = &A::Value;//ValueはAでパブリックに設定されてるint型
細かいことだが、関数ポインタ系は戻り値の設定が無いからvoidにした。
あと、俺は初心者なので、あんまり鵜呑みにはしないでくれ。
0517485
2009/05/07(木) 12:37:32一応見てみた。俺が言語仕様を全部把握してるわけではないが一応動いていた。
逆に何でクラスの関数ポインタ呼び出すに変数が必要なのか逆にわからなかった。
やくにたてなくてすまないな。
0518デフォルトの名無しさん
2009/05/07(木) 13:17:39[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9139.zip
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gプラスプラス
[3.3] 言語: (Cプラプラ)
[4] 期限: ([5月8日朝まで]
[5] その他の制限:
まるで問題の意味がわかっていないのですがもし問題として成立してなければすみません。
マルチスレッドでロックしないようにとか言ってました。よろしくおねがいします
0519デフォルトの名無しさん
2009/05/07(木) 13:36:40OSの機能を使わないとほとんどむりだろ。
これだけのソースではList作るよりもそのベース作るほうが大変じゃないか?
0520デフォルトの名無しさん
2009/05/07(木) 13:41:27不可分に行われることを仮定して問題を解けということかな。
問題の前提条件が講義中で説明されていたんじゃない? >>518
0521デフォルトの名無しさん
2009/05/07(木) 17:38:52[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9140.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC2005
[3.3] 言語:C++
[4] 期限:5/8 1:00まで
[5] その他の制限:特にありません
それではよろしくお願いします。
授業まったくついていけないようなら履修削除したほうがいいのかな・・・
0522デフォルトの名無しさん
2009/05/07(木) 18:18:53[2] 問題文(含コード&リンク):
架空のテストの点数をランダムに生成するプログラムを作成しなさい。
得点は0点〜100点とする。
生徒の数は手で入力orプログラム内で指定(100人程度)
出力した点数の平均点が、事前に指定したものとなるようにする。
例えば、生徒数3 平均点3点の場合
1 2 6
生徒数4 平均点50の場合
32 69 42 57 など
実行毎に毎回違う値を出力すること
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Borland C++ 5.5
[3.3] 言語: C
[4] 期限: できるだけ早めでお願いします
[5] その他の制限: 難しい方法を使わず、初歩的な方法でお願いします
0523デフォルトの名無しさん
2009/05/07(木) 20:59:56問1とやらはコーディング基準を教えてくれないと答えようがないぞ。
0524デフォルトの名無しさん
2009/05/07(木) 21:17:58#include <stdlib.h>
#include <time.h>
int main(void)
{
int n, ave, sum, score;
scanf("%d%d", &n, &ave);
srand(time(NULL));
sum = n * ave;
while(--n) {
if(sum < 100) score = rand() % (sum + 1);
else if(sum > n * 100) score = 100 - rand() % ((n+1) * 100 - sum);
else score = rand() % 101;
printf("%d ", score);
sum -= score;
}
printf("%d\n", sum);
return 0;
}
0525デフォルトの名無しさん
2009/05/07(木) 23:00:42ごめんなさい
問1のほうは普通に考えればできました・・・。
問2のほうお願いできますでしょうか?
0526デフォルトの名無しさん
2009/05/07(木) 23:19:13無限ループはしてない。(一番最初にはまってデバッグ済みw)
深さ優先の場合、候補手について親に遡って盤面の同一性を判定し、同一なら棄ててる。
前に調べた子と重なるのは、保持してないので看過。
このため手順が前後するだけの同じ盤面を何度も探索してるのが敗因。
0527デフォルトの名無しさん
2009/05/08(金) 01:25:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9142.c
0528デフォルトの名無しさん
2009/05/08(金) 01:51:38score = 100 - rand() % ((n+1) * 100 - sum);
じゃなくて
score = 100 - rand() % ((n+1) * 100 - sum + 1);
0529デフォルトの名無しさん
2009/05/08(金) 02:07:23思いつきですまんが、
「最終的にカードを積んでいく山(homecell)に積み上げる」を優先
「任意のhomecellへの積上げ完了」を1サイクルにする。
「積上げ」のための検索処理をバックトラックで実装する。
だとどうなるかな?
「積上げ」のための処理を、総当たりではない、効率的(高収益を得る方法?)
判定手順で検索するのは困難だろうかね。
>>526がどの様なロジックで考えているかよくわからないまま書いているから
突っ込みは勘弁w
0530518
2009/05/08(金) 02:11:22>>520
すみません。聞いたら「コンペア&エクスチェンジ関数はマシン語とか他のライブラリで実装されるだろうが
そこは想定で」というような感じのことを言っていたのですがそれだと意味通じますでしょうか?
全くわからないので。。よろしくおねがいします
0531デフォルトの名無しさん
2009/05/08(金) 02:25:28#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n=7, n2, ave=21, i, score, sum=0;
int *data;
printf("Enter number of students and average : ");
scanf("%d %d", &n, &ave);
// printf("%d %d\n", n, ave);
srand(time(NULL));
data = calloc(n, sizeof(int));
if(data==NULL) return 1;
for(i=0; i<n; i++) data[i] = ave;
n2 = n * 2 * 50; // 2の倍数回
for(i=0; i<n2; i++) {
score = (float)rand()/RAND_MAX * n;
if(i%2) {
if(data[score] == 100) i++;
else data[score]++;
} else {
if(data[score] == 0) i++;
else data[score]--;
}
}
for(i=0; i<n; i++) {
printf("%d ", data[i]);
sum += data[i]; // 検算用
}
printf("\ntotal=%d, ave=%.0f", sum, (float)sum/n);
free(data);
return 0; }
0532デフォルトの名無しさん
2009/05/08(金) 02:32:53score = (float)rand()/RAND_MAX * n;
じゃなくて
score = (float)rand()/(RAND_MAX+1) * n;
0533518
2009/05/08(金) 03:35:230534デフォルトの名無しさん
2009/05/08(金) 08:02:11343 名前: 名無しさん@九周年 Mail: sage 投稿日: 2009/05/08(金) 07:54:27 ID: RsghHNeu0
2chやmixiの「宿題教えて」スレッドに微妙に嘘を混ぜて遊ぶことがある
けど、結構気づかずにそのまま使ってるね。答を書いてしまえば誰もわざ
わざチェックしないみたいだし。
実は自分が大学で出した課題も教えてスレッドに出ていたので、嘘の答を
書いておいたところ、それをそのまま写してきた学生が数人いた。当然×
にしたけどさ。
0535デフォルトの名無しさん
2009/05/08(金) 08:59:12でもプログラムなら嘘書いたらわかるだろ?
0536デフォルトの名無しさん
2009/05/08(金) 09:11:21動作は保障しない。の一言をつけておくことが多い。
0537デフォルトの名無しさん
2009/05/08(金) 09:29:23[2] 問題文(含コード&リンク):ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/05/index.html
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: PM.15:30まで
[5] その他の制限: 特にありませんが、できれば簡単なプログラムでお願いします。
急で申し訳ないです・・・
0538デフォルトの名無しさん
2009/05/08(金) 09:43:20K山先生にメールしておきました。
0539デフォルトの名無しさん
2009/05/08(金) 09:47:300540デフォルトの名無しさん
2009/05/08(金) 10:03:16(1)1; (2)fib(n-1) + fib(n-2);
問2
(1)n1 = n2; (2)n2 = sum;
問3
(1)(rval >= 0) (2)rval; (3)rval = fib(n-1) + fib(n-2); (4)fib_ary[n] = rval;
問4
(1)list_tのサイズ (2)list_t (3)list_tへのポインタ
0541デフォルトの名無しさん
2009/05/08(金) 10:16:44ありがとうございます!!
助かります
0542デフォルトの名無しさん
2009/05/08(金) 10:23:16問題5
再帰,もしくはリストを使った,あなただけの独創的なC言語の問題を
作りなさい.また,その解答も作成しなさい.
解答
再帰,もしくはリストを使った,あなただけの独創的なC言語の問題を
作りなさい.また,その解答も作成しなさい.
0543デフォルトの名無しさん
2009/05/08(金) 10:39:16不覚にもちょっと感心した
0544デフォルトの名無しさん
2009/05/08(金) 10:41:420545デフォルトの名無しさん
2009/05/08(金) 11:11:26問題文と同じなので独創的ではありません。0点
0546デフォルトの名無しさん
2009/05/08(金) 11:14:18まあ、だから何だというわけではないけど。
0547デフォルトの名無しさん
2009/05/08(金) 11:15:32階乗じゃなくフィボナッチなのに!を使うって、死んだ方がいいんじゃね?
0548デフォルトの名無しさん
2009/05/08(金) 11:23:20大学のプログラミング演習の課題を添削するスレ
http://pc12.2ch.net/test/read.cgi/tech/1188501699/
と書いてから↑のスレをみたら同じ先生がネタになっていて吹いた。
0549デフォルトの名無しさん
2009/05/08(金) 12:03:23問題:http://pc12.2ch.net/test/read.cgi/tech/1240022781/739
n個の数を入力してその中でm番目に大きい数を表示するプログラム
を、CまたはC99言語で再帰またはリストを用いて作成せよ。
nとmは一番最初に入力する。(n<m))
m−1番目に大きい数との重複はしない。
答え:
問題を作って解答もって、ドラゴン桜で言ってた。教師に出す問題だよ、それ。
0550デフォルトの名無しさん
2009/05/08(金) 14:46:05意図的だと思うが、その出題のプログラムが間違ってるところないか??
4までのソースコード。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9143.zip
5を作ってたんだが、時間切れでタイムアップなのだよ。
迷路製作を再起で作ってたんだが、自分が罠にハマッタっていう。
昔はもっとサクッとできたんだが、間抜けすぎる。俺涙目。
あと、動作は保障しない。
0552デフォルトの名無しさん
2009/05/08(金) 15:00:07とりあえず問1だが、if(n == 0 || n == 1)って聞いてるのは、
if (n == 0) return 0;
if (n == 1) return 1;
こう書かずに return n しろっていいたいんだろ
0553デフォルトの名無しさん
2009/05/08(金) 15:28:33ソースコードありがとうございます!!
早速使わせていただきました
これで課題もなんとかなりそうです
ほんとありがとうございます!!
0554デフォルトの名無しさん
2009/05/08(金) 15:37:04537です
0555デフォルトの名無しさん
2009/05/08(金) 16:03:280556デフォルトの名無しさん
2009/05/08(金) 16:13:00ファイル検索など、リストの課題を出すでおじゃっ!>学校の講師、教授
0558デフォルトの名無しさん
2009/05/08(金) 16:16:150559デフォルトの名無しさん
2009/05/08(金) 17:13:22最悪か?むしろよく分ってる最高の教師だと思うが。
むしろ呼びつけて↓くらいは言ってもいい。
「これ、宿題片付けますスレのを丸写しにしたでしょ?あれ書いたの僕なんだけど。」
「講義でてればすぐわかる内容だし、ひたすら面倒くさいだけな意地悪な課題も出してないよ?」
「義務教育じゃないんだから、ついてこれなかったりやる気が無いんなら、いつでも大学辞めていいんだよ。」
0560デフォルトの名無しさん
2009/05/08(金) 17:30:340561デフォルトの名無しさん
2009/05/08(金) 22:38:21「義務教育」の意味を間違えていますねえ。
0562デフォルトの名無しさん
2009/05/08(金) 22:44:30うちの大学では何も言わずに、採点対象外になる。
0563デフォルトの名無しさん
2009/05/08(金) 23:29:470564デフォルトの名無しさん
2009/05/08(金) 23:33:300565デフォルトの名無しさん
2009/05/08(金) 23:37:14別に何も間違っちゃいないが?
0566デフォルトの名無しさん
2009/05/08(金) 23:40:180567デフォルトの名無しさん
2009/05/08(金) 23:55:120568デフォルトの名無しさん
2009/05/09(土) 00:27:42日本の義務教育はどこまで?まさかあんた、高校、大学も
義務だと思っていたゆとり?
0569デフォルトの名無しさん
2009/05/09(土) 00:34:34なぜプログラミングが出来ないぐらいで大学を辞めなければいけないのかと
十分パワハラだよ
0570デフォルトの名無しさん
2009/05/09(土) 00:35:580571デフォルトの名無しさん
2009/05/09(土) 00:38:01必修科目かどうかによる
必修科目ができない奴は卒業できてはいけない…はずだろ
0572デフォルトの名無しさん
2009/05/09(土) 00:38:41さすがにそれはないwww
実際、期末テストでカンニングしたって、そのセメの
単位全部落とされるだけで退学にはならんしな。
0573デフォルトの名無しさん
2009/05/09(土) 01:30:39二変数の相関係数を求めるんじゃなくて
X, Y は確率変数なのか?
確率が1を超えるとか訳分からんし
確率というなら分布も与えられてしかるべき
講義の内容聞いてないので判断のしようがない
と書いたところで期限切れなことに気がついた
0574デフォルトの名無しさん
2009/05/09(土) 01:30:57大学に来て勉強しない奴はいらないって言ってるだけだろ。
会社に来て働かない奴はいらないのと同じ。
0575デフォルトの名無しさん
2009/05/09(土) 01:50:54大学教授になるようなやつは大半が偏ってるんだろうけどさ。
0576デフォルトの名無しさん
2009/05/09(土) 01:51:47違うぞ。金もらってないし、払ってるし。
0577デフォルトの名無しさん
2009/05/09(土) 01:55:22ゲーム番号毎に対応したのを出したいのですがさっぱり分かりません
0578デフォルトの名無しさん
2009/05/09(土) 02:20:07関係ないけど、#11982は解答不能なんだそうだ。
他にもいくつかあるそうだ。
0579デフォルトの名無しさん
2009/05/09(土) 02:20:10その狭義の勉強するために大学に行っているんだよな?
それを除いた広義の勉強は大学じゃないとできないってことはないだろ。
>>576
いい歳して自分で選択した立場でやるべきことが分ってないって点に関して
同じだろ。
0580デフォルトの名無しさん
2009/05/09(土) 02:42:41その金は単位に対してではなく講義に対して払ってるんだろ。
その講義を聞いてないで単位を落とすのは自己責任。
逆に言えば、金をもらっている以上、教授はちゃんとやってる学生を区別して評価する義務もあるはず。
0581デフォルトの名無しさん
2009/05/09(土) 02:47:46ちゃんとやってる学生は、教官にとっては実にありがたい存在かも。
0582デフォルトの名無しさん
2009/05/09(土) 02:50:528年で除籍になる部分だけがいけないということだね!
0583デフォルトの名無しさん
2009/05/09(土) 03:04:32経営者にとってはビジネスかもしれんが、
教授にとっては雑務で、自分たちの研究が本分だよ。
0584デフォルトの名無しさん
2009/05/09(土) 06:05:58書いてある数字が計算対象なら、X(x)のxが書いてないのに
期待値の計算はありえない。実効値の書き間違いは、まあいいとして。
「確立変数X、Y」とか「推定値」とか書かなきゃ簡単な問題なのに。
0585デフォルトの名無しさん
2009/05/09(土) 08:52:14自分の講義の単位を認めないのは教官の自由だけど、「大学辞めたら?」ってのは必然性がないよね
鼬害だからもうやめておく
0586デフォルトの名無しさん
2009/05/09(土) 14:08:15身につかない講義に金を払うより、大学やめてリアル土方でもしてた方が経済的にも有意義だろって事だろw
大学としては留年して金落としてって貰えるのが一番得なんだから、むしろ親切だろw
0587デフォルトの名無しさん
2009/05/09(土) 14:50:22費やせる時間が社会人とでは全然違うし、こもりニートにはない社会生活もある(重要)。
単位やるorやらないは講座主の恣意なんで勝手。しかし「大学辞めりん」は学生の人生に干渉し過ぎ。
指導教官でもそんなこせーへんし(←「指導教官」ってw、出身大学ばれるし)
0588デフォルトの名無しさん
2009/05/09(土) 15:10:340589デフォルトの名無しさん
2009/05/09(土) 15:18:09ん?
つまり費やせる時間が違うだけで同じことができるんだろ?
一体何ができないんだよ?
0590デフォルトの名無しさん
2009/05/09(土) 15:38:18#include <math.h>
int main(void) {
int i, n;
float (*data)[2], goukei, sa, kyoubunsan;
float heikin_x, heikin_y, hensa_x, hensa_y;
printf("相関係数を計算します。\n集団の個数nを入力して下さい:");
fscanf(stdin,"%d", &n);
data = calloc(n*2, sizeof(float));
if(data == NULL) return 1;
else puts("メモリー確保に成功しました");
for(i=0; i<n; i++) { printf("xの%d番目のデータを入力して下さい:", i+1); fscanf(stdin,"%f%*c", &data[i][0]); }
for(i=0; i<n; i++) { printf("yの%d番目のデータを入力して下さい:", i+1); fscanf(stdin,"%f%*c", &data[i][1]); }
puts("データの入力が終了しました。");
for(i=0, goukei=0; i<n; i++) goukei += data[i][0];
heikin_x = goukei/n;
for(i=0, goukei=0; i<n; i++) goukei += data[i][1];
heikin_y = goukei/n;
printf("xの平均は %f yの平均は %f\n", heikin_x, heikin_y);
for(i=0, goukei=0; i<n; i++) { sa = data[i][0] - heikin_x; goukei += sa * sa; }
hensa_x = sqrt(goukei/n);
for(i=0, goukei=0; i<n; i++) { sa = data[i][1] - heikin_y; goukei += sa * sa; }
hensa_y = sqrt(goukei/n);
printf("xの分散は %f yの分散は %f\n", hensa_x*hensa_x, hensa_y*hensa_y);
printf("xの標準偏差は %f yの標準偏差は %f\n", hensa_x, hensa_y);
for(i=0, goukei=0; i<n; i++) goukei += (data[i][0] - heikin_x) * (data[i][1] - heikin_y);
kyoubunsan = goukei/n;
printf("xとyの共分散は %f\n", kyoubunsan);
printf("xとyの相関係数は %f\n", kyoubunsan/hensa_x/hensa_y);
free(data);
}
0591デフォルトの名無しさん
2009/05/09(土) 15:53:41アウトオブレンジしてないか?気のせいかな。
0592デフォルトの名無しさん
2009/05/09(土) 16:32:08換言すると、どんだけ時間使っても結果は同じと。
ま、そんなヤツには関係なか。
0593デフォルトの名無しさん
2009/05/09(土) 16:33:310594デフォルトの名無しさん
2009/05/09(土) 16:37:45セキュリティてきに不味すぎる。
0595デフォルトの名無しさん
2009/05/09(土) 16:38:360596デフォルトの名無しさん
2009/05/09(土) 17:23:19大学生以上に自由時間を持つ立場にだってなれるだろうが。
だから何ができないかはっきりさせろよ。
定職持った社会人でも、フリーターでも家事手伝いでもなく、
大学生でしかできない広義の勉強って何だよ。
0597デフォルトの名無しさん
2009/05/09(土) 18:08:24なんとか6065,6778,16576を解けるくらいにはなったんでアップ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9144.txt
深さ優先。n手先の盤面の評価値で次手の優先順位付け。評価値の足切りあり。
足切りがあるので解けるものも解けない可能性があるが、足切りないと1分とか2分じゃ帰ってこないので一緒。
ソース中のFREE制限とは、フリーセルに動かしたあとは、その山がからまない山間移動を禁止。
HOME制限とは、ホームに動かしたあとはその山かホームがからまない移動は禁止。
HOME制限は手数が増えるのでアップしたソースではコメントアウトしてる。
細部調整は自分でよろ。評価関数(evaluate)は調整の余地多分にあり。
質問は今日中に(明日は見ない可能性あり)。
ポインタは使っちゃダメとか、callocはNGとかは勘弁な。
しかし世の中には10秒以内でとくやつもあるんだな。DLしたけど動かなかったんで試してはいないが。
そんな人から見たらオレのアルゴリズムなんて稚拙なんだろうなぁ。
0598597
2009/05/09(土) 18:37:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9145.txt
0599デフォルトの名無しさん
2009/05/09(土) 23:08:10解けるか解けないかを自動検出する(つまり途中のブランチのどれをとって
もいずれはループするか手詰まりになる)ことのほうが価格が高い。
解ける場合は解放は一通りじゃないだろうから。(暇婆の生き甲斐を
奪う嫌われるタイプ)
0600デフォルトの名無しさん
2009/05/09(土) 23:39:00なに言っちゃってんの?w
0601597
2009/05/09(土) 23:48:54解けない盤面になったのを実際に試すより少ないインストラクションで検知できるんなら、刈り込みにも便利だろうし。
ただ368の〆切が明日なんで、オレができるのはここまで。
評価関数をいくつか用意して、stackCountが10000くらいになったらあきらめて次ので掘っていくようにすると、結構早いかも。
1手先で10000くらいなら1〜数秒で到達するだろうし。
0602デフォルトの名無しさん
2009/05/10(日) 00:13:06最後までできません。
「生年月日を入力し、干支と星座が出るようにプログラムしろ」
という課題です。
途中までの課題がこれです
#include<stdio.h>
int main()
{
int x,y,z;
printf("生まれた年を入力してください:\n");scanf("%d",&x);
printf("生まれた月を入力してください:\n");scanf("%d",&y);
printf("生まれた日を入力してください:\n");scanf("%d",&z);
switch(x%12){
case 0: puts("あなたは申年です\n"); break;
case 1: puts("あなたは酉年です\n"); break;
case 2: puts("あなたは戌年です\n"); break;
case 3: puts("あなたは亥年です\n"); break;
case 4: puts("あなたは子年です\n"); break;
case 5: puts("あなたは丑年です\n"); break;
case 6: puts("あなたは寅年です\n"); break;
case 7: puts("あなたは卯年です\n"); break;
case 8: puts("あなたは辰年です\n");break;
case 9: puts("あなたは巳年です\n");break;
case 10: puts("あなたは午年です\n");break;
case 11: puts("あなたは未年です\n");break;
}
return(0);
}
で干支までは出るようにしました。星座を出すにはどうやってプログラムすればいいのでしょうか?
一応プログラムにはif文とswitch文を使うように言われました。
0603デフォルトの名無しさん
2009/05/10(日) 00:13:56最後までできません。
「生年月日を入力し、干支と星座が出るようにプログラムしろ」
という課題です。
途中までの課題がこれです
#include<stdio.h>
int main()
{
int x,y,z;
printf("生まれた年を入力してください:\n");scanf("%d",&x);
printf("生まれた月を入力してください:\n");scanf("%d",&y);
printf("生まれた日を入力してください:\n");scanf("%d",&z);
switch(x%12){
case 0: puts("あなたは申年です\n"); break;
case 1: puts("あなたは酉年です\n"); break;
case 2: puts("あなたは戌年です\n"); break;
case 3: puts("あなたは亥年です\n"); break;
case 4: puts("あなたは子年です\n"); break;
case 5: puts("あなたは丑年です\n"); break;
case 6: puts("あなたは寅年です\n"); break;
case 7: puts("あなたは卯年です\n"); break;
case 8: puts("あなたは辰年です\n");break;
case 9: puts("あなたは巳年です\n");break;
case 10: puts("あなたは午年です\n");break;
case 11: puts("あなたは未年です\n");break;
}
return(0);
}
で干支までは出るようにしました。星座を出すにはどうやってプログラムすればいいのでしょうか?
一応プログラムにはif文とswitch文を使うように言われました。
0604デフォルトの名無しさん
2009/05/10(日) 00:15:00間違えて2回入力されてしまいました
0605デフォルトの名無しさん
2009/05/10(日) 00:21:07星座は
switch(y){
case 1:
if(z < (調べて)) printf("○○座);
else printf("△△座");
ってな感じでとりあえず出ると思う。
具体的な数字は自分で調べてくれ。
0606デフォルトの名無しさん
2009/05/10(日) 00:21:14[2] 問題文(含コード&リンク): 生年月日を入力し、干支と星座が出るようにプログラムしろ」
[3] 環境
[3.1] OS: (Windows/vista)
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語:C++
[4] 期限: ([2009年5月15日10:00まで]
[5] その他の制限: 今回でswitch文とif文を習いました。
すいません。テンプレを忘れていました;;
0607デフォルトの名無しさん
2009/05/10(日) 00:35:37if(y*100+z< 121)puts("山羊座")
else if(y*100+z< 220)puts("水瓶座")
else if(y*100+z< 321)puts("魚座")
else if(y*100+z< 421)puts("牡羊座")
else if(y*100+z< 522)puts("牡牛座")
else if(y*100+z< 622)puts("双子座")
else if(y*100+z< 723)puts("蟹座")
else if(y*100+z< 823)puts("獅子座")
else if(y*100+z< 923)puts("乙女座")
else if(y*100+z<1024)puts("天秤座")
else if(y*100+z<1123)puts("蠍座")
else if(y*100+z<1223)puts("射手座")
else puts("山羊座");
0608デフォルトの名無しさん
2009/05/10(日) 00:41:430609デフォルトの名無しさん
2009/05/10(日) 00:48:09y*100+zの値を変数に保持した方がら良くね?
0610デフォルトの名無しさん
2009/05/10(日) 00:54:45と書いてある以上わざとじゃ…?
0611デフォルトの名無しさん
2009/05/10(日) 00:57:43>>607
両方ともやってみます。
深夜なのに答えてくれてありがとうございました!
0612デフォルトの名無しさん
2009/05/10(日) 01:34:27参考URL:http://www.stack.nl/~dimitri/doxygen/index.html
GNU Generalライセンス下にあるようだ。
ちなみにFreecell, generateでぐぐったら出た。英語でもぐぐる癖をつけとくと良い。
#include <stdlib.h>
#include <stdio.h>
int MicrosoftRandom(long* Seed){
*Seed = ((*Seed) * 214013 + 2531011);
return ((*Seed) >> 16) & 0x7fff;
}
void shuffle(char *deck, int seed){
int i, j, pos = 0, temp[52], left = 52;
for(i=0;i<13;i++) for(j=0;j<4;j++) temp[pos++] = i+j*13;
for (i = 0; i < 52; i++){
j = MicrosoftRandom((long*)&seed) % left;
deck[i] = temp[j];
temp[j] = temp[--left];
}
}
main(int argc, char *argv[]){
char deck[52], SUIT_LETTER[] = { 'C', 'D', 'H', 'S' };
int i, seed;
if(argc == 2) seed = atoi(argv[1]);
if(seed == 0) return -1;
shuffle(deck, seed);
for(i = 0; i < 52; ++i) printf("%c%02d%c", SUIT_LETTER[deck[i]/13], deck[i]%13+1, i%8==7 ? '\n' : ' ');
}
0613デフォルトの名無しさん
2009/05/10(日) 04:15:08さすがにあんたの感覚を疑うわ。言っていることが支離滅裂。
目的が何なのか、だろ?学校に来て勉強しないって、学ぶ意志があるの?w
会社に来て働かないのは、金を払って社員にしてもらっているわけでもなく、
当然会社側は正当な理由で解雇できるがな。
0614デフォルトの名無しさん
2009/05/10(日) 04:43:350615デフォルトの名無しさん
2009/05/10(日) 06:29:28[2] 問題文(含コード&リンク):
ポテンシャルU(x)
U(x)=((50-x(dt))*(50-x(dt))*(50+x(dt))*(50+x(dt))/250000
中の質点の動きを調べよ。
ただし、初期位置はx=50とし、所速度はv=-5に変化させてみよう。
問:時間に対して、位置と速度を作図してみよう。
初期値 u(50)=0 v(0)=-5 x(0)=50
v(dt+1)=-(dt/dx)*( u(x(dt) + dx) - u(x(dt))) + v(dt)
x(dt+1)=v(dt) * dt + x(dt)
補足:
ポテンシャル中の質点のdt(正確には�凾狽ナすが・・・)を1秒刻みで変移させたときの位置と速度を求めるプログラムです。
速度と位置の式はそれぞれ運動方程式のポテンシャル微分の式を差分化したもので、与えられているものです。
作図云々の前にまずプログラムが複雑で、自分の能力ではまったく手に負えませんでした。説明足りてるか微妙ですがお願いします。
[3] 環境
[3.1] OS: (Windows/vista)
[3.2] コンパイラ名とバージョン: Borland C++ Compiler
[3.3] 言語:C
[4] 期限: ([2009年5月11日12:00まで]
[5] その他の制限:ポインタはよくわからないから、使わないで頂けるとありがたいです。。。
0618デフォルトの名無しさん
2009/05/10(日) 09:39:440619デフォルトの名無しさん
2009/05/10(日) 09:40:390620デフォルトの名無しさん
2009/05/10(日) 09:50:32[2] 問題文ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9146.txt
[3] 環境
[3.1] OS: Windows
[3.2] visual studio 2005
[3.3] 言語: C言語
[4] 期限: 2009年5月21日
[5] その他の制限: 特にないです。
助けてくださいorz
0621デフォルトの名無しさん
2009/05/10(日) 10:03:51問題文中の図ってなに?
0622デフォルトの名無しさん
2009/05/10(日) 10:20:08おおthx
宿題としては期限切れだけどやってみる
0623620
2009/05/10(日) 10:20:24時間かかるけど手書きでうpしたほうがいいかのかな・・・?
0624デフォルトの名無しさん
2009/05/10(日) 10:39:590625620
2009/05/10(日) 11:17:26遅くなりました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9147.zip
0626デフォルトの名無しさん
2009/05/10(日) 12:11:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9148.c
工夫すれば、Uの計算回数は減らせる。
差分方程式は、x += vΔt, v += 〜 をひたすら繰り返すだけ。
それがわからんと意味不明だけど。
0627デフォルトの名無しさん
2009/05/10(日) 12:23:25後出しで悪いけど、これ問題文は?
0628620
2009/05/10(日) 12:58:07ttp://www.geocities.jp/babuuu321/main.html
うpロダにあげようと思ったのですが制限があったので早急にこちら作りました。
非常に見ずらいかと思うので右クリックで画像を保存してから見てもらえたら助かります
助けてもらう立場でありながら無駄な画像を保存してほしいとか頼みごとしてしまってすいませんorz
0629デフォルトの名無しさん
2009/05/10(日) 14:15:09N口先生にこのスレのリンクをメールしておきました。
0630デフォルトの名無しさん
2009/05/10(日) 14:42:48教えてください
[1] 授業単元:
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9149.txt
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] C
0631デフォルトの名無しさん
2009/05/10(日) 15:06:56d:\my documents\cplus\part125_630\9149.c(26) : warning C4700: 値が割り当てられていないローカルな変数 'ii' に対して参照が行われました。
0632デフォルトの名無しさん
2009/05/10(日) 15:41:190633デフォルトの名無しさん
2009/05/10(日) 16:41:02[2] 問題文(含コード&リンク):
次のf (x) = 0 f ( x ) = x^3 - x - 6 の実根をニュートン・ラフソン法で求めるC言語プログラムを作成せよ。
なお,初期値や収束判定に必要な定数等は #define を使ってプログラム中で設定する。したがって,プログラム中
に入力用関数 scanf 等を含めないこと。
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 5月12日
[5] その他の制限:
よろしくお願いします
0634デフォルトの名無しさん
2009/05/10(日) 16:59:10HOME PAGE 消えてたよ、画像も保存してるけど、こっちでいいでしょ。
http://www.nsl.ics.ritsumei.ac.jp/lecture/pdf/ComEx3.pdf
0635デフォルトの名無しさん
2009/05/10(日) 17:13:09#include<stdio.h>
#include<math.h>
#define F(x) ((x)*(x)*(x) - (x) - 6) // f(x)=x^3-x-6
#define F_(x) (3*(x)*(x) - 1) // f'(x)=3x^2-1
#define X0 0
#define EPS (1e-8)
int main() {
double x = X0, dx;
while (1) {
printf("%g\n", x);
dx = F(x) / F_(x);
if (fabs(dx) < EPS)
break;
x -= dx;
}
return 0;
}
0636デフォルトの名無しさん
2009/05/10(日) 20:23:52[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9151.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9152.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9153.txt
[3] 環境
[3.1] vista
[3.2] VC 2008
[3.3] 言語: C
[4] 期限: 5/11 13:00
分かる方いらしたらよろしくお願いします
0637デフォルトの名無しさん
2009/05/10(日) 20:48:06台形の面積を求めるプログラム
キーボードより上底a下底b高さhの値を入力して台形の面積を計算するプログラムを作成せよ。
0638デフォルトの名無しさん
2009/05/10(日) 21:06:36[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9154.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: C++
[4] 期限: 5月12日14:00
分かるかた、是非よろしくお願いします。
0639デフォルトの名無しさん
2009/05/10(日) 21:24:21int main(void)
{
int johen, kahen, takasa;
printf("上辺 下辺 高さを入力してください\n")
scanf("%d %d %d", &johen, &kahen, &takasa);
printf("面積は %lf\n", (johen + kahen) * takasa / 2.0);
return 0;
}
0640デフォルトの名無しさん
2009/05/10(日) 21:56:520641デフォルトの名無しさん
2009/05/10(日) 22:27:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9155.cpp
0642デフォルトの名無しさん
2009/05/10(日) 22:37:47ありがとうございました。とても助かりました。
こちらも教えていただけないでしょうか。mainの中身を少しいじったものがこちらです。
int main(int argc, char** argv)
{
FILE *fout;
double x, v, dx;
int t = 0;
(中略)
}
fout =fopen("diskfile", "w");
fprintf(stderr,"end %s.\n", "diskfile");
fprintf(fout, "t\tv\tx\n");
fprintf(fout, "%d\t%g\t%g\n", t, v, x);
for (; t < LOOP; ++t) {
scanf("%lf %lf %lf",&t ,&v ,&x);
fprintf(fout, "%d\t%g\t%g\n", t+1, v, x);
}
fclose(fout);
exit (0);
return 0;
}
0644デフォルトの名無しさん
2009/05/11(月) 00:04:43>>626さんではないけど、
forのブロックの中にscanfがあるけど
要らないように思う。
9148.cがしているように、
dxとvとxの計算を消さないで
そのまま行えば良いんじゃないの?
0645デフォルトの名無しさん
2009/05/11(月) 01:09:54int main()
{
FILE *fout;
double x, v, dx;
int t = 0;
x = 50;
v = -5;
fout = fopen("diskfile.txt", "w");
if(fout == NULL) {
fprintf(stderr, "end %s.\n", "diskfile.txt");
return 1;
}
printf(" t v x\n");
fprintf(fout, " t v x\n");
printf("%3d %9.4f %9.4f\n", t, v, x);
fprintf(fout, "%3d %9.4f %9.4f\n", t, v, x);
for (; t < LOOP; ++t) {
dx = dX(v);
v += dV(x, dx);
x += dx;
printf("%3d %9.4f %9.4f\n", t+1, v, x);
fprintf(fout, "%3d %9.4f %9.4f\n", t+1, v, x);
}
fclose(fout);
return 0;
}
0647デフォルトの名無しさん
2009/05/11(月) 01:51:11一つだけだが、9151.txtをやったよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9159.txt
単純照合の関数を呼び出す. 照合に成功した場合はposは正の数であり,失敗した場合は0
と書いてあるけど、実際に使用しているところでは
110 if (pos >= 0)
111 printf("Found at %d\n", pos);
112 else
113 printf("Not found\n");
だったので、一致を見つけた先頭位置と解釈した。
「KMP法のプログラムとかBM法のプログラムを作成せよ」だと、
あまりにも漠然としていて、何を作ればいいのかわからない。
0648デフォルトの名無しさん
2009/05/11(月) 01:52:02[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9158.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5/13 12時 お願いします。
0649デフォルトの名無しさん
2009/05/11(月) 02:25:52#include <stdio.h>
#include <limits.h>
int main()
{
int a;
int max = 0;
int min = INT_MAX;
int count = 0;
int sum = 0;
while(1) {
if (scanf("%d",&a)==0){
printf("不正な文字\n");
return 0;
}
if (a < 0) break;
sum += a;
count++;
if (max < a) max = a;
if (min > a) min = a;
}
printf("最大値:%d\n", max);
printf("最小値:%d\n", min);
printf("入力個数:%d\n", count);
printf("平均値:%d\n", sum/count);
return 0;
}
0650デフォルトの名無しさん
2009/05/11(月) 02:54:03[2] 問題文
車の走行距離〔Km〕とガソリンの消費量〔l〕をキーボードから入力して燃費を計算するプログラムを作成せよ。
[3.3] 言語: C++
[4] 期限: 5月11日 三限
初心者すぎてわかりません、分かる人いたらお願いします
ヒントが出てたんですが
・まずCinで走行距離をキーボードから読み取る
・次にCinでガソリンの消費量をキーボードから読み取る
・その二つのデータから燃費を計算する
・最後に走行距離、ガソリンの消費量、燃費を表示する。表示は次のように工夫されたい
・何Km走り方ましたか?
・ガソリンは何l使いましたか?
・この車の燃費はKm/lです。
という感じです
0651デフォルトの名無しさん
2009/05/11(月) 03:02:28#include <iostream>
using namespace std;
int main()
{
double dist, gas, expens;
cout << "車の走行距離[km]を入力して下さい: ";
cin >> dist;
cout << "ガソリンの消費量[l]を入力して下さい: ";
cin >> gas;
expens = dist / gas;
cout << "車は " << dist << "[km]走りました。" << endl;
cout << "ガソリンは " << gas << "[l]使いました。" << endl;
cout << "この車の燃費は " << expens << "[km/l]です。" << endl;
}
0652デフォルトの名無しさん
2009/05/11(月) 03:27:16できればGMTでたのむ。
0653デフォルトの名無しさん
2009/05/11(月) 03:31:06>>651は>>650の回答例です
>>658は間違いです
0654デフォルトの名無しさん
2009/05/11(月) 04:43:50[2] 問題文:テキストファイルで10行以上のアルファベットの英文を作り
そのテキストファイルに含まれている文字の数をカウントせよ。
ただし、小文字大文字の区別はつけなくてよい。
[3] 環境
[3.1] OS:win
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ ver.3.6(で合ってるんですかね
[3.3] 言語: C
[4] 期限: 5/11 12:00
[5] その他の制限: 1)テキストの読み込みはプログラムないでは行わなず、コマンドプロンプト内で行うこと。
2)文は1行ごとに読み込みその後1文字ずつ処理してください。
0655デフォルトの名無しさん
2009/05/11(月) 05:02:50「10行以上のアルファベットの英文」の意味が不明。
意味がある英文なのか、出鱈目なアルファベットの羅列でもいいのか。どっち?
行は単に改行すればいいの?
VCのバージョンは、思い切り違うと思うが、汎用的な解答はあるかも
0656デフォルトの名無しさん
2009/05/11(月) 05:10:46作成したいプログラムはその処理だけすれば良いのかな?
0657デフォルトの名無しさん
2009/05/11(月) 05:20:060658デフォルトの名無しさん
2009/05/11(月) 05:34:35printf("平均値:%d\n", sum/count);
すまん、これは変だな。
printf("平均値:%g\n", (double)sum/count);
こうしてくれ。
0659デフォルトの名無しさん
2009/05/11(月) 05:48:11得に指定がなかったためでたらめで大丈夫だと思います。
0660>>654
2009/05/11(月) 05:50:43自分に当ててくれたものだったらそういうことになります。
0661デフォルトの名無しさん
2009/05/11(月) 06:39:58[2] 問題文(含コード&リンク):
1 + 1/2 + 1/3 + ... + 1/1000の計算をするプログラム
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月11日
なるべく簡単でお願いします
0662デフォルトの名無しさん
2009/05/11(月) 07:25:18int main(void)
{
int i;
double sum = 0.0;
for(i=1; i<=1000; i++) sum += 1.0 / i;
printf("%f", sum);
return 0;
}
0663デフォルトの名無しさん
2009/05/11(月) 07:33:060664デフォルトの名無しさん
2009/05/11(月) 07:38:00ファイルは適当に作ってリダイレクトしてくれ
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int i, cnt[26] = {0};
char buff[256];
while(fgets(buff, 256, stdin)) {
for(i=0; buff[i]; i++) if(isalpha(buff[i])) cnt[tolower(buff[i])-'a']++;
}
for(i=0; i<26; i++) printf("%c:%d\n", 'a'+i, cnt[i]);
return 0;
}
0665デフォルトの名無しさん
2009/05/11(月) 08:00:50浮動小数点には「積み残し」という特有な現象があるから
小さい方から順に足していった方が誤差が少ないよ
まあ今回そこまで考慮する必要があるのかどうかわからんけど
0666デフォルトの名無しさん
2009/05/11(月) 11:17:08遅くなりました
ありがとうございます
0667デフォルトの名無しさん
2009/05/11(月) 12:36:36遅れましたが無事提出できました。
ありがとうございます。
0669デフォルトの名無しさん
2009/05/11(月) 17:24:33本当にありがとうございます
助かりました
0670デフォルトの名無しさん
2009/05/11(月) 18:52:20[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9160.zip
[3]
[3.1]Windows XP pro
[3.2]Visual studio 2005
[3.3]C
[4]5/14 〜18:59
0671670
2009/05/11(月) 18:55:50[5]その他
ここまで自力でやりましたが、どこで誤ってるのか解らないので修正お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9161.txt
0672デフォルトの名無しさん
2009/05/11(月) 18:56:06[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク): ガウスの消去法で入力された3元連立方程式を解くプログラムを作成せよ。また、掛け算と割り算の回数も
表示すること。さらに途中の行列の式も逐一表示すること。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限: 5月13日
よろしくおねがいします。どうやらdoubleの配列、for文を繰り返して作る感じです。
0673デフォルトの名無しさん
2009/05/11(月) 19:11:34自分の体重を入力すると月での実効体重を
計算し、表示するプログラムを作成してくだ
さい。
これ誰か組んでください↑
勉強してもまったく分りません
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク): 月面の重力は地球の約17%です。
自分の体重を入力すると月での実効体重を
計算し、表示するプログラムを作成してくだ
さい。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: ボーランド
[4] 期限: 5月12日
[
0674デフォルトの名無しさん
2009/05/11(月) 19:17:47http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9162.txt
なるべく元の形を保つように修正した。
0675デフォルトの名無しさん
2009/05/11(月) 19:17:56#include <stdio.h>
int main()
{
int w;
printf("Earth: ");
scanf("%d", &w);
printf("Moon: %d\n", w * 17 / 100);
return 0;
}
0676デフォルトの名無しさん
2009/05/11(月) 19:25:18[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9163.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名: bcc32
[3.3] 言語: C
[4] 期限: 5/12 23:59まで
どうかよろしくお願いします
0677デフォルトの名無しさん
2009/05/11(月) 19:25:47>勉強してもまったく分りません
いさぎよく単位落としたら?
0678デフォルトの名無しさん
2009/05/11(月) 19:52:56[2] 問題文(含コード&リンク): 四角形の面積を計算するプログラムを書い
て下さい。この時、辺の値はユーザーに入力して
もらうものとします。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C言語
[4] 期限: 今日迄
0679デフォルトの名無しさん
2009/05/11(月) 20:03:43#include <stdio.h>
int main(void) {
int x, y;
printf("辺の縦の長さ: ");
scanf("%d", &x);
printf("辺の横の長さ: ");
scanf("%d", &y);
printf("四角形の面積:%d\n", x*y);
return(0);
}
こんなんでいい?
0680デフォルトの名無しさん
2009/05/11(月) 20:19:03まだやったばかりでcoutとか文字の出力法くらいしかやってないですが…
名前とか個人情報とかそういうのは全部てきとうで記号とかでいいです
0681デフォルトの名無しさん
2009/05/11(月) 20:38:24[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9164.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: C++
[4] 期限: 5月13日18:00
ぜひ、よろしくお願いします。
0682デフォルトの名無しさん
2009/05/11(月) 20:42:29[1] 授業単元: 実習
[2] 問題文(含コード&リンク):自分の名前、生年月日、年齢、住所を画面に表示するプログラムを作り、それぞれの行にコメントを入れよ
まだやったばかりでcoutとか文字の出力法くらいしかやってないですが…
名前とか個人情報とかそういうのは全部てきとうで記号とかでいいです
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限: 今日
0683デフォルトの名無しさん
2009/05/11(月) 20:58:54coutができるなら答えることは何もないと思うが?
0684デフォルトの名無しさん
2009/05/11(月) 21:13:23#define N 5 /* 駅の数 */
int main(void)
{
COSTUNIT cost_list[] = { /* 上限距離と距離単位の金額 */
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N]={0,10,30,50,100}; /*各駅間の距離 */
int fare_table[N][N]; /* 運賃表 */
make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */
表示するならfor文2つ使って適当に
return 0;
}
ざっと見たので間違ってるかも
0685デフォルトの名無しさん
2009/05/11(月) 21:17:40>>683
coutってどこでどう使えばいいんですか?
0686デフォルトの名無しさん
2009/05/11(月) 21:23:52{
// 名前を出力する
cout << "私の名前は○○○○です" <<endl;
// 生年月日を出力する
cout << "生年月日は19xx年yy月zz日です" <<endl;
(以下略)
あとは同様。
0687デフォルトの名無しさん
2009/05/11(月) 21:44:07#include<iostream>//iostreamを#include
int main(){std::cout<<"俺の名前,2009年5月11日生まれ,0歳,〒000-0000"<<std::endl;}//自分の名前、生年月日、年齢、住所を画面に表示するプログラム
>>685
下らんことをここで訊くな。別のスレへ行け。
0688デフォルトの名無しさん
2009/05/11(月) 21:45:15コンパイルしたときに
make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */ の部分に
「問題のあるポインタの変換」って警告が出て、エラーで止まりました
0689デフォルトの名無しさん
2009/05/11(月) 21:56:23あぁ、なるほど!
論理演算子を用いるのですね。
勉強になりました!有難うございますm(_ _)m
0690デフォルトの名無しさん
2009/05/11(月) 22:00:36すみませんまだいますでしょうか
#include<iostream>
using namespace std;
int main(){
return 0;
}
は鉄板らしいんですよね。
肝心な中身はその書いてくれたのをこれに入れて通りますかね?
0691デフォルトの名無しさん
2009/05/11(月) 22:08:31#include<iostream>//iostreamを#include
using namespace std;//std省略
int main(){//main関数の定義
std::cout<<"俺の名前,2009年5月11日生まれ,0歳,〒000-0000"<<std::endl;//自分の名前、生年月日、年齢、住所を画面に表示
return 0;//0を返す
}//main関数の終わり
0692デフォルトの名無しさん
2009/05/11(月) 22:14:39あ、すみません。
ありがとうございます。でも、コメントの部分iostreamを#include
そうしたなら、#include<include>になっちゃいませんか?もしかしてそのコメントは()内はiostreamとする
っていうのが言いたいんですか?
あと、std省略と書いてあるんですが、stdって文章に残ってますよね
0693デフォルトの名無しさん
2009/05/11(月) 22:15:49#include <stdio.h>
#define swap(a,b) tmp=a, a=b, b=tmp
int main()
{
float n1, n2, n3, tmp;
printf("実数Aを入力:"); scanf("%f", &n1);
printf("実数Bを入力:"); scanf("%f", &n2);
printf("実数Cを入力:"); scanf("%f", &n3);
if(n1 < n2) swap(n1, n2);
if(n2 < n3) swap(n2, n3);
if(n1 < n2) swap(n1, n2);
if(n1==n2) {
if(n2==n3)
printf("\n%.1f\n", n3);
else
printf("\n%.1f>%.1f\n", n2, n3);
} else if(n2==n3)
printf("\n%.1f>%.1f\n", n1, n2);
else
printf("\n%.1f>%.1f>%.1f\n", n1, n2, n3);
}
0694デフォルトの名無しさん
2009/05/11(月) 22:27:05失礼こんな感じでどうかな
#define N 5 /* 駅の数 */
int main(void)
{
COSTUNIT cost_list[] = { /* 上限距離と距離単位の金額 */
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N]={0,10,30,50,100}; /*各駅間の距離 */
int i;
int* fare_table[N]; /* 運賃表 */
for(i=0;i<N;i++)
fare_table[i] = (int*)malloc(sizeof(int)*N);
make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */
表示するならfor文2つ使って適当に
for(i=0;i<N;i++)
free(fare_table[i]);
return 0;
}
0695デフォルトの名無しさん
2009/05/11(月) 22:28:47#define N 5
int main(void){
COSTUNIT cost_list[] = {
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N - 1] =
{10.1, 21.1, 32.1, 43.1};
int x, y;
int **p = (int **)malloc(N * sizeof(int *));
for (x = 0; x < 11; x++)
*(p + x) = (int*)malloc(N * sizeof(int));
make_fare_table(N,dist_list, cost_list, p);
for (x=0; x<N;x++) {
for (y=0; y<N;y++) {
printf("%4d ", *(*(p+y) +x));
}
printf("\n");
}
return 0;
}
0696686
2009/05/11(月) 22:33:170697デフォルトの名無しさん
2009/05/11(月) 22:36:57えどういうことですか
0698695
2009/05/11(月) 22:38:580699691
2009/05/11(月) 22:45:32>でも、コメントの部分iostreamを#include
>そうしたなら、#include<include>になっちゃいませんか?もしかしてそのコメントは()内はiostreamとする
>っていうのが言いたいんですか?
すまんが,何を言っているのか分からん。
#include<iostream> は iostreamを#includeしている。いいだろ?
おまいの理解がおかしくないか?
>あと、std省略と書いてあるんですが、stdって文章に残ってますよね
揚げ足取り乙。
そう思うならstd::を消して提出しろよ。
俺のコードはコンパイル通るし正しいコードだ。
お前の美学にかなうことが宿題ならやるが。
丸投げスレでぐだぐだ言うんじゃねぇよw
だからつりって言われるんだろうに。
0700デフォルトの名無しさん
2009/05/11(月) 22:50:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9165.txt
行列の表示は適当だと思う感じに作ったので
気になったら修正しといて下さい
0701デフォルトの名無しさん
2009/05/11(月) 22:52:01揚げ足取りなんかじゃないです。ただstd省略ってどこが省略されてるのかなと思いました
0702デフォルトの名無しさん
2009/05/11(月) 22:59:37malloc使えばよかったんですね
どうもありがとうございました。本当に助かりました。
0703デフォルトの名無しさん
2009/05/11(月) 23:07:37何とかわかりました
ありがとうございます
0704デフォルトの名無しさん
2009/05/11(月) 23:12:571.
Point::Point(string pname, double px, double py){
name = pname; x = px; y = py;
}
double Point::distance(){
return sqrt(pow(x,2)+pow(y,2));
}
double Point::distance(const Point& p){
return sqrt(pow(p.x-x,2)+pow(p.y-y,2));
}
void Point::print(){
cout << "name=" << name << " x=" << x << " y=" << y << endl;
}
0705デフォルトの名無しさん
2009/05/11(月) 23:14:342.
int main(){
Point* p[10];
int i;
double x,y;
double a = 0;
for (i=0;i<10;i++){
cout << "x y?";
cin >> x >> y;
p[i] = new Point("noname", x, y);
a += p[i]->distance();
}
a /= 10.0;
cout << "原点からの距離平均=" << a << endl;
cout << "平均以上の距離の点" << endl;
for (i=0;i<10;i++)
if ( p[i]->distance() >= a )
p[i]->print();
for(i=0;i<10;i++)
delete p[i];
}
きっと何か見落としてると思うが
math.hインクルードしないとだめかも
それがNGなら二乗のとこはpow使わないでかけ算して
0706デフォルトの名無しさん
2009/05/12(火) 00:15:11なにも指定されてないのでpowは使って大丈夫だと思います。mathインクルードしてうまく動きました。
ちなみに2番の問題 >>705 のプログラムで
必ず10個のデータ入力ではなくて、最大10個のデータ入力(データ入力が5個だったり7個だったりもする)
という形にするにはどうすればよいのでしょうか?
自分でやってみたんですが実行するとセグメントエラーになってしまって・・・
0707デフォルトの名無しさん
2009/05/12(火) 00:27:08こんな感じでxに-1とか入れればokかな…
int main(){
Point* p[10];
int i,count;
double x,y;
double a = 0;
for (i=0;i<10;i++){
cout << "x y?";
cin >> x >> y;
if(x < 0)
break;
p[i] = new Point("noname", x, y);
a += p[i]->distance();
}
count=i;
if(count >= 1){
a /= count;
cout << "原点からの距離平均=" << a << endl;
cout << "平均以上の距離の点" << endl;
for (i=0;i<count;i++)
if ( p[i]->distance() >= a )
p[i]->print();
for(i=0;i<count;i++)
delete p[i];
}else
cout << "データがありません" << endl;
}
0708自分の名前()
2009/05/12(火) 06:57:32//出た!コメント埋め問題
//もしかして、鉄板はテンプレートかフライパンの聞き間違いか?
#include <iostream> // #includeの後は1個空白
using namespace std; // 以下はstd::を省略する
int main() { // ()内は(void)でもよい
string name, birthday, age, address; // 各変数の宣言
// 変数は使う直前に宣言しても良い string name など
name = "○□△"; // 名前を設定
birthday = "2002-01-30"; // 誕生日を設定
age = "9"; // 年齢を設定(年齢なので数値でも可能)
address = "Losangels USA, ZIP 1234"; // 住所を設定
// 設定した名前、誕生日、年齢、住所をここから表示
cout << "名前:" << name << endl // 名前の表示
<< "誕生日:" << birthday << endl // 誕生日の表示
<< "年齢:" << age << endl // 年齢の表示
<< "住所:" << address << endl; // 住所の表示
return 0;
}
0709デフォルトの名無しさん
2009/05/12(火) 11:27:43遅くなりましたが、うまく動きました。
とても助かりました。ありがとうございました。
0710デフォルトの名無しさん
2009/05/12(火) 11:45:36[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9166.txt
[3] 環境
[3.1] OS:Windows
[3.2] Visual Studio2005
[3.3] C++
[4] 期限:今日の17:30までに
急ですいませんが、よろしくお願いします。
0711デフォルトの名無しさん
2009/05/12(火) 13:29:08あんまり凝ったデバッグしてないから動作の保障はしない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9167.zip
あと、俺は趣味グラマだから、あんまりオブジェクト指向はできない。仕様通りかもわからん。
さらにこのままだと怒られることうけあいなので、自分で整形してくれ。
0712デフォルトの名無しさん
2009/05/12(火) 15:05:311000>u>1,1000>n>=3 x>0,y>0,z>0 d>=0 の条件下で
d=u^n-max{x^n+y^n+z^n}
このときdが最小となる(x,y,z)の組を求めよ
↓サンプルデータです
u n d x y z
2 3 5 1 1 1
6 3 0 3 4 5
7 4 224 4 5 6
98 3 8 2 48 94
76 4 733 17 47 73
54 5 103717 13 47 47
123 3 0 6 51 120
456 3 0 6 51 120
最低このくらいのu,nでのx,y,zの組合せは欲しいのです。
0713712
2009/05/12(火) 15:10:51[2] 問題文
[3] 環境
[3.1] linux? (どこまで習
[3.2] なんかGNOMEってやつ
[3.3] 言語:c
[4] 期限:来週の月曜日
[5] その他の制限:得ニナ氏
0714デフォルトの名無しさん
2009/05/12(火) 15:39:050715712
2009/05/12(火) 15:56:40いちおう作ったけど、一桁の小さい値ですらもできないので・・・。
うちの学科は情報と電気系なんだけど、情報系にいくきはまったくないんだよね・・。
さっさと単位とっちまいたいのさ。お願いします
0716デフォルトの名無しさん
2009/05/12(火) 15:57:15ことで釣りだと判断できない>>714のアフォさときたら...
0717デフォルトの名無しさん
2009/05/12(火) 15:59:350718712
2009/05/12(火) 16:00:582chのやつらやっぱ冷たいな。自力でがんばるさ。
0719デフォルトの名無しさん
2009/05/12(火) 16:01:42#include <stdio.h>
#include <math.h>
int main(void)
{
int u, n, d, x, y, z, i, j, k, temp, un;
printf("u:");
scanf("%d", &u);
printf("n:");
scanf("%d", &n);
d = un = pow(u, n);
for(i=1; i<u; i++) {
for(j=i; j<u; j++) {
for(k=j; k<u; k++) {
temp = un - (pow(i,n)+pow(j,n)+pow(k,n));
if(temp < 0) break;
if(temp < d) x = i, y = j, z = k, d = temp;
}}}
printf("u:%d n:%d d:%d x:%d y:%d z:%d\n", u, n, d, x, y, z);
return 0;
}
数が大きいとエラーになるけど、例程度ならこんなんで十分
0720デフォルトの名無しさん
2009/05/12(火) 16:30:44で初期に与えられるのはuとnだと
そう書いてくれないとエスパー以外わかりません…
0721デフォルトの名無しさん
2009/05/12(火) 16:34:090722デフォルトの名無しさん
2009/05/12(火) 16:36:080723デフォルトの名無しさん
2009/05/12(火) 16:52:57がきちんと読めて、サンプルデータを少し計算して見ればエスパー能力なんて必要ない。
相手の書き方を非難する前に、自分の読解力のなさをなんとかすべき。
0724デフォルトの名無しさん
2009/05/12(火) 16:55:50もてないだろw
0725デフォルトの名無しさん
2009/05/12(火) 17:16:080726デフォルトの名無しさん
2009/05/12(火) 18:00:54私もやってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9168.txt
0727デフォルトの名無しさん
2009/05/12(火) 20:26:490728デフォルトの名無しさん
2009/05/12(火) 20:31:44672です。どうもありがとうございました。
0729デフォルトの名無しさん
2009/05/12(火) 21:00:29多倍長演算ライブラリを使ったほうがいい
#include<stdio.h>
#include<math.h>
int main(void){
int u, n, x, y, z, min_x, min_y, min_z, i;
double table[1000], d, min_d;
while(scanf("%d%d", &u, &n)==2){
if(u<=1 || 1000<=u) break;
if(n<3 || 1000<=n) break;
for(i=1;i<=u;i++) table[i]=pow(i, n);
min_d=table[u]-3;
min_x=min_y=min_z=1;
for(z=u-1;z>0;z--){
d=table[u]-table[z];
for(y=z;y>0 && table[y]>d;y--);
for(;y>0;y--){
d=table[u]-table[z]-table[y];
if(d>table[y+1]) break;
for(x=y;x>0 && table[x]>d;x--);
d-=table[x];
if(x>0 && d<min_d) min_d=d,min_x=x,min_y=y,min_z=z;
}
}
printf("%d %d %.0f %d %d %d\n", u, n, min_d, min_x, min_y, min_z);
}
return 0;
}
0730デフォルトの名無しさん
2009/05/12(火) 23:45:47[2] 問題文(含コード&リンク):F0=0、F1=1、F=Fn-1+Fn-2(n>=2)で定義される数列Fnを求めるプログラムを作成せよ
[3] 環境 [3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2009年5月13日7:00まで
[5] その他の制限:再帰的なもの、非再帰的なものの二種類作らないといけないらしいです。
どなたかCに詳しい方お願いしますm(__;)m
0731デフォルトの名無しさん
2009/05/12(火) 23:47:360732デフォルトの名無しさん
2009/05/12(火) 23:57:58int fibi (int n, int a, int b) {
if (n == 0)
return a;
else
return fibi(n - 1, b, a + b);
}
int fib (int n) {
return fibi(n, 0, 1);
}
非再帰的な方法
int fib (int n) {
int a = 0, b = 1;
for (int i = 0; i < n; i++) {
int t = a;
a = b;
b = t + b;
}
return a;
}
0733デフォルトの名無しさん
2009/05/13(水) 00:02:10[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9169.txt
[3] 環境
[3.1] OS: (Windows/vista)
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語:C
[4] 期限: [2009年5月12日0まで]
[5] その他の制限:
よろしくお願いします
0734デフォルトの名無しさん
2009/05/13(水) 00:02:410735デフォルトの名無しさん
2009/05/13(水) 00:03:52あーよく考えたらb[]を0.0で初期化するのを忘れてたわ
修正しといて
昨晩疲れた頭で考えたのでやっぱりバグ残ってるなあ
0736デフォルトの名無しさん
2009/05/13(水) 00:04:53はやいぃ―!!!
明日早めに家出ないといけなかったんで助かります。
いまからコンパイルしてみます!
ありがとうございました(._.)
フィボナッチ多いらしいのに...ありがとうございますm(__)m
0737デフォルトの名無しさん
2009/05/13(水) 00:51:06その再帰の発想はなかったw
0738デフォルトの名無しさん
2009/05/13(水) 01:03:30ベタに書いてみたけどどうじゃろ
int main(void)
{
double a[N][N+1];
int i, j, k;
double t,pv;
if(matrix_in(a) != 0){
printf("Error in matrix_in().\n");
return 1;
}
for(i=0;i<N;i++){
pv=a[i][i];
for(j=0;j<N+1;j++)
a[i][j] /= pv;
for(j=0;j<N;j++){
if(j==i) continue;
t=a[j][i];
for(k=0;k<N+1;k++)
a[j][k] -= t*a[i][k];
}
}
printf("X=%lf Y=%lf Z=%lf", a[0][N], a[1][N], a[2][N]);
return 0;
}
0739デフォルトの名無しさん
2009/05/13(水) 01:22:260740デフォルトの名無しさん
2009/05/13(水) 01:23:11[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):F0=0、F1=1、F=Fn-1+Fn-2(n>=2)で定義される数列Fnを求めるプログラム
加算演算'+'の回数をTnとおく。T(0)=T(1)=0、Tn=n−1
加算演算の回数がTnであるような再帰的なプログラムを作成せよ。
[3] 環境 [3.1] OS: Linux[3.2] コンパイラ名とバージョン:gcc 3.4[3.3] 言語:C
[4] 期限:2009年5月13日7:00まで
なんか加算演算の条件つきらしい問題です...
お手数ですがお願いしますm(__;)m
0741デフォルトの名無しさん
2009/05/13(水) 01:39:38過去に求めた計算結果を配列にストアして
二度目以降はそちらを使うようにすればうまくいくな
0742デフォルトの名無しさん
2009/05/13(水) 02:02:54こんな感じで >>732 で書いた関数にちょっと足せばできあがり。
nが0,1のときの加算回数は0、2以上の場合はn-1になっているはず。
int fibi (int n, int a, int b) {
if (n == 0)
return a;
else if (n == 1)
return b;
else
return fibi(n - 1, b, a + b);
}
int fib (int n) {
return fibi(n, 0, 1);
}
わかってると思うけど、これはFnを計算する関数だけだから、
適当にmain関数を作っておかないと実行できないからね。
0743デフォルトの名無しさん
2009/05/13(水) 02:22:430744デフォルトの名無しさん
2009/05/13(水) 02:27:54ん− main関数がうまくできません(__;)
0745デフォルトの名無しさん
2009/05/13(水) 02:34:50連続ですいません
mainいじったら上手くいきました!!
ホント夜遅くまで付き合ってくださってありがとうございます(__)
次からは自分でも出来るよう頑張ります。ありがとうございました!
0746デフォルトの名無しさん
2009/05/13(水) 02:37:55これは思いつかなかったわw やべっ、なんかわくわくしてきたぞw
0747デフォルトの名無しさん
2009/05/13(水) 02:42:120748デフォルトの名無しさん
2009/05/13(水) 08:46:140749デフォルトの名無しさん
2009/05/13(水) 08:54:12SICPとか読んだらすぐ頭のほうに出てくるはずだが。
0750732
2009/05/13(水) 09:05:390751デフォルトの名無しさん
2009/05/13(水) 09:23:27typedef struct { int a, b; } intx2;
intx2 fib2(int n) {
if (n == 0) {
return (intx2){ 0, 1 };
} else {
intx2 s = fib2(n - 1);
return (intx2){ s.b, s.a + s.b };
}
}
int fib(int n) {
return fib2(n).a;
}
0752デフォルトの名無しさん
2009/05/13(水) 09:30:22しかも構造体をそのまま返値にするとはふとどきな。
0753デフォルトの名無しさん
2009/05/13(水) 09:55:40[2] 問題文(含コード&リンク):
生徒の情報が入っているデータファイル(Students.dat)を読み込み、
指定された7つの作業を実行するプログラムを作れ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9170.zip
[3] 環境
[3.1] OS: Win Vista
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限:5/15まで
[5] その他の制限:
0754デフォルトの名無しさん
2009/05/13(水) 10:17:390755デフォルトの名無しさん
2009/05/13(水) 10:49:35添付のデータファイルの形式が間違ってない?
4,5列目が何を示しているのか明記されていない気がする。
0756デフォルトの名無しさん
2009/05/13(水) 11:12:13固定長なんではないか?
7 1 9 16 11 2 5
ageとgpaは 2 4
0757デフォルトの名無しさん
2009/05/13(水) 13:20:22[2] 問題文(含コード&リンク):
次のような数列を計算するプログラム(関数を使うこと)
Fn+2 = Fn + Fn+1
ただし,F0 = 0, F1 = 1 とする.入力されたn(n > 0)に対し,F0 からFn まで表示させること
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
[4] 期限: 5月15日まで
よろしくお願いします。
0758デフォルトの名無しさん
2009/05/13(水) 13:42:570759デフォルトの名無しさん
2009/05/13(水) 13:47:270760デフォルトの名無しさん
2009/05/13(水) 14:17:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9171.txt
0762デフォルトの名無しさん
2009/05/13(水) 15:23:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9172.txt
0763デフォルトの名無しさん
2009/05/13(水) 17:03:59面白いというわけではなく、今まで再帰と言えば
return f(n) + f(n-1); といった形式だったもんで
あぁなるほどと思ったわけでw
0764デフォルトの名無しさん
2009/05/13(水) 17:42:59[2] 問題文(含コード&リンク):
入力された値(int 型)が正の整数ならば1 を,負の整数ならば−1 を,0 ならば0 を表
示するプログラム。ただし関数を使うこと
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC2005
[3.3] 言語: C++
[4] 期限: 今日中
どうかよろしくお願いします。
0765デフォルトの名無しさん
2009/05/13(水) 17:43:32[2] 問題文(含コード&リンク):
Javaで作られたプログラムをC言語に記述しなおすプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Cygwin
[3.3] 言語: C
[4] 期限:5月14日
[5] その他の制限:基本的なことは履修しました
0766デフォルトの名無しさん
2009/05/13(水) 17:51:53#include <stdio.h>
int F(int N){
if(N>0) return 1;
if(N<0) return -1;
return 0;
}
int main(){
int i;
puts("Input Number");
scanf("%d",&i);
printf("result %d -> [%d]\n",i,F(i));
return 0;
0767デフォルトの名無しさん
2009/05/13(水) 17:54:29トランスコーダは宿題の範疇ではないと思うんだが、どうだろう。
っていうか、どこの宿題だ?
0768デフォルトの名無しさん
2009/05/13(水) 17:57:291日でそれ作れって言うのか?
Googleのトップでも無理だと思う
0769デフォルトの名無しさん
2009/05/13(水) 20:58:34[2] 問題文: 10個の任意の数字を入力し、最大値、最小値を絶対値で求めるプログラムを作成せよ、また求めた値を標準化せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Cygwin
[3.3] 言語: C
[4] 期限:5月14日
[5] その他の制限:最大値と最小値を絶対値で求める事はできました。以下のプログラムを改変してください。
0770デフォルトの名無しさん
2009/05/13(水) 21:00:06#include <stdio.h>
#include <math.h>
#define N 100
main()
{
int i,n;
float min,max;
float a[N+1];
printf("n=");
scanf("%d",&n);
if (n>N) exit(1);
for (i=1; i<=n; i=i+1)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
max=fabs(a[1]);
min=fabs(a[1]);
for (i=2; i<=n; i=i+1)
{
if(min>a[i]) min=fabs(a[i]);
else if(max<a[i]) max=fabs(a[i]);
}
printf("max %f \n",max);
printf("min %f \n",min);
}
0771デフォルトの名無しさん
2009/05/13(水) 21:04:31標準化基準は最大値?平均値?標準偏差?
0772デフォルトの名無しさん
2009/05/13(水) 21:12:07標準化基準は最大値だと思います。
例えば以下の出力結果だったら、maxとminを最大値で割ってやればいいと思います。
宜しくお願いします。
/*
n=10
a[1]=-90
a[2]=50
a[3]=-30
a[4]=35
a[5]=78
a[6]=0
a[7]=-27
a[8]=41
a[9]=3
a[10]=12
max 90.000000
min 3.000000
*/
0773デフォルトの名無しさん
2009/05/13(水) 21:23:51#include <stdio.h>
#include <math.h>
#define N 100
#define EPS (1e-10)
int main()
{
int i,n;
float min,max;
float a[N+1];
printf("n=");
scanf("%d",&n);
if (n>N) return 1;
for (i=1; i<=n; i=i+1)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
max=min=fabs(a[1]);
for (i=2; i<=n; i=i+1)
{
float t=fabs(a[i]);
if(min>t) min=t;
else if(max<t) max=t;
}
printf("max %f \n",max);
printf("min %f \n",min);
if(max>EPS){
for(i=1;i<=n;i++) printf("a[%d]=%f %.2f \n", i, a[i], a[i]/max);
}
return 0;
}
0774デフォルトの名無しさん
2009/05/13(水) 23:43:44[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9173.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限:2009年5月15日17:00まで
[5] その他の制限
実行したところエラーは出なかったのですが動作が停止してしまいました。
よろしくおねがいします
0775デフォルトの名無しさん
2009/05/13(水) 23:55:15(char)h を %s で参照してるのがおかしい
%s を %c にすればおk
0776デフォルトの名無しさん
2009/05/13(水) 23:58:48char hの表示は、
%s ではなく %c に
0777776
2009/05/14(木) 00:15:500778712
2009/05/14(木) 00:34:23多分>>729のやつつかったら俺じゃないやつが作ったみたいなことになりそうだから
>>719を参考にしてもうちょいだけ高度化?したやつを作ってためそうかとおもうわ!
ifの中に||とかつけるのみたことないし。多分習ってないわ。 調べたらすぐわかったけど
0779デフォルトの名無しさん
2009/05/14(木) 03:47:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9174.txt
0780デフォルトの名無しさん
2009/05/14(木) 07:47:33[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9177.txt
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] コンパイラ名とバージョン:VisualStudio2008
[3.3] 言語:C++
[4] 期限:2009年5月15日朝8時00まで
[5] その他の制限
アニマルゲームのソース自体はぐぐれば出てきました。(↓下のサイトのguessanimal.cpp)
ttp://www.math.uaa.alaska.edu/~afkjm/cs331/c++samples/
しかし本件ではデザインパターンのステートとやらを使わなければならないので上記は×
よろしくおねがいします
0781デフォルトの名無しさん
2009/05/14(木) 12:58:500782780
2009/05/14(木) 13:09:35パターンを認識させるって?
ステートパターンをどう適用すればよいのかわからないのですが、
(1)状態を示す抽象的なステートクラス
(2)ステートクラスを継承するコンクリートクラス→これは回答ノードと質問ノードで使用させるメソッドを定義?
(3)ステートクラスをメンバ変数に持つコンテキストクラス
をどうにかして定義して使用すればよいものかと。
0783デフォルトの名無しさん
2009/05/14(木) 16:28:36ごめんね、C++やったことないんだ。
で、学校で習ったことあるなーっていうアルゴリズムっだったから、
聞いてみただけ。
0784デフォルトの名無しさん
2009/05/14(木) 18:16:04多分そういうことだろうけどこれをステートパターンにする意味がわからないね
アニマルゲームと言うのの仕様もよくわからん
最後に「それはブタですか?」にNoと答えたら次の質問ノードはその「ブタですか?」のNoにリンクされるの?
0785780
2009/05/14(木) 18:42:05確かに僕もステートパターンの意義は低いように思いました。
ただオブジェクト指向の勉強をしたところなので単にポリモーフィズムを理解させるために出題したものかと思われます。
最後に「豚ですか」にNoと答えるとNoにリンクされます。アニマルゲームの仕様は上記リンクの通りですが
実行するとわかります。曖昧なところは特にないと思ってます
0786デフォルトの名無しさん
2009/05/14(木) 19:05:06始め「その動物はブタですか?」の質問にNoと答えると、答えに黒ブタが登録されて。
次からNoと答えると「その動物は黒ブタですか?」が出てくるんだ。
それでその質問にNoと答えると、答えに茶ブタが登録されて。
次からNoと答えると「その動物は茶ブタですか?」が出てくるんだ。
0787デフォルトの名無しさん
2009/05/14(木) 19:21:17違うと思うぞ
> 縞模様がありますか?
Y
> その動物はシマウマですか?
N
> 正しい答えを教えてください。
トラ
> その動物を特定する質問を入力してください。
白黒の縞模様ですか?
> 質問への答えを入力してください。
N
とすると、「縞模様がありますか?」のYesリンクに新しい「白黒の縞模様ですか?」ノードがリンクされ
そのNoリンクに新しい「その動物はトラですか?」ノードが、Yesリンクに既存の「その動物はシマウマですか?」ノードがリンクされる。
0788787
2009/05/14(木) 19:36:56んでStateパターンにするってことは
> 「縞模様がありますか?」のYesリンクに新しい「白黒の縞模様ですか?」ノードがリンクされ
> そのNoリンクに新しい「その動物はトラですか?」ノードが、Yesリンクに既存の「その動物はシマウマですか?」ノードがリンクされる。
が
既存の「その動物はシマウマですか?」ノード(回答)が「白黒の縞模様ですか?」ノード(質問)に状態遷移、
「その動物はシマウマですか?」ノード(回答)と「その動物はトラですか?」ノード(回答)を新しく作成し、
上の遷移したノードのYesリンクとNoリンクにそれぞれ紐付ける
となるんだと思う。コードは今から書きま。
0789787
2009/05/14(木) 20:59:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9178.txt
VC6なんで、細部は適当に直して。
0790780
2009/05/14(木) 21:16:13はや。。もう二日かけてるのですが。。(汗)
有難うございます。こちらも並行して必死でやってるのですがまだまだ動かない上に
もらったコードに比べるとめちゃソース量多くて複雑。。なんでこうなるんだろう。
これから中身解読します 有難うございました
0791787
2009/05/14(木) 21:18:26> string input;
はゴミです。削除してくらはい。
0792780
2009/05/14(木) 21:23:390793デフォルトの名無しさん
2009/05/14(木) 21:35:02おかげで課題を提出することができました。
今度は提出したプログラムで以下の出力結果をmaxは、そのままでminを-50と出力するようなプログラムを、どなたか作ってくれませんか?
プログラムは、>>773を改変してください。
n=10
a[1]=1
a[2]=2
a[3]=10
a[4]=50
a[5]=-50
a[6]=-100
a[7]=-25
a[8]=-10
a[9]=0
a[10]=40
max 100
min 0
0794デフォルトの名無しさん
2009/05/14(木) 21:43:260795デフォルトの名無しさん
2009/05/14(木) 21:46:53教官が言うにはそうみたいです。
標準化は>>773でOKでした。
0796デフォルトの名無しさん
2009/05/14(木) 21:55:06max=min=fabs(a[1]);
↓
max=min=-a[1];
float t=fabs(a[i]);
↓
float t=-a[i];
0797デフォルトの名無しさん
2009/05/14(木) 22:10:572.該当関数を使った下記の出力結果を提出しなさい。
int main(void) {
int i,x,y;
int Count[5][5];
memset(Count,0,sizeof(int)*5*5);
for (i=0;i<100000;i++) {
Count[MRand()][MRand()]++;
}
for (y=0;y<5;y++) {
for (x=0;x<5;x++) {
printf("%6d",Count[y][x]);
} printf("\n");
return 0;
}
3.なぜそのような表示結果となったのか考察しなさい。
0798デフォルトの名無しさん
2009/05/14(木) 22:15:50今家に環境がないので、明日学校で試してみようと思います。
明日教官にもう少し詳しく聞いてみます。
わざわざ、すいません。
0799797
2009/05/14(木) 22:20:03正しくは Count[MRand()%5][MRand()%5]++; です。
0800デフォルトの名無しさん
2009/05/14(木) 22:23:50写し間違えはそれだけ?
}が1個足りないようにも見えるけど。
0802デフォルトの名無しさん
2009/05/15(金) 13:47:18[2] 問題文:次のガウスの消去法プログラムにピボット交換のプログラムを書き込め。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:cc
[3.3] 言語:C
[4] 期限: 本日17:30まで
[5] その他の制限: math.hは使える。以下がガウス消去法プログラム
#include<stdio.h>
main()
{
double a[3][4];
double r;
int n,i,j,m;
n=3;
for(i=0;i<n;++i) /*係数の読み込み*/
for(j=0;j<n+1;++j)
scanf("%lf",&a[i][j]);
showmtx(a,n);
/*下三角を0にする*/
for(m=0;m<=n-2;++m)
{
for(i=m+1;i<=n-1;++i)
{
r=a[i][m]/a[m][m];
for(j=m;j<=n;++j) a[i][j]-=r*a[m][j];
}
}
0803デフォルトの名無しさん
2009/05/15(金) 13:50:18for(j=n-1;j>=0;--j) {
a[j][n]/=a[j][j]; a[j][j]=1;
for(i=0;i<j;++i) {
a[i][n]-=a[i][j]*a[j][n]; a[i][j]=0;
} }
showmtx(a,n); }
showmtx(a,n)
double a[3][4];
int n;
{ int i,j;
for(i=0;i<n;++i) {
for(j=0;j<=n;++j)
printf("%6.3f",a[i][j]);
printf("\n"); }
printf("\n"); }
0804デフォルトの名無しさん
2009/05/15(金) 14:16:12showmtx(a,n);って何?
情報を小出しにするな
0805デフォルトの名無しさん
2009/05/15(金) 14:25:14[2] 問題文(含コード&リンク):ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/06/index.html
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: PM.15:30まで
[5] その他の制限: いま授業で考えています。まったく歯が立たないorz
後1時間しかない;;
0806デフォルトの名無しさん
2009/05/15(金) 14:29:20>>803の真ん中辺りから下
古い書き方だな
0807デフォルトの名無しさん
2009/05/15(金) 14:30:400808デフォルトの名無しさん
2009/05/15(金) 14:38:51ありがと
勝手に書き換えさせてもらうわ
0809デフォルトの名無しさん
2009/05/15(金) 14:44:350810デフォルトの名無しさん
2009/05/15(金) 15:02:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9179.txt
ソースが読みにくいので勝手にC89規格に合致するよう書き換えさせてもらっている
これが問題となるようなら元に戻しといてくれ
0811デフォルトの名無しさん
2009/05/15(金) 15:33:54802です。書き換えありがとうございました。
なんとかなりそうです。
0812デフォルトの名無しさん
2009/05/15(金) 15:39:47時間過ぎたかな
問題1
(1) element->next = sp;
(2) sp = element;
問題2
(1) tmp = sp;
(2) sp = tmp->next;
問題3
(2) (double)(t->a.x + t->b.x + t->c.x)/3.0;
(3) (double)(t->a.y + t->b.y + t->c.y)/3.0;
問題4
(1) return 1;
(2) return (fact(cdr(head)) * car(head));
5は勘弁
0813812
2009/05/15(金) 15:44:10(1)はprint_g(&t);
0814デフォルトの名無しさん
2009/05/15(金) 15:46:100815デフォルトの名無しさん
2009/05/15(金) 17:58:32>>812
問題5
再帰とは、私が
検索エンジンを使って調べ、そのまま他人の文をコピペして作成しようとした文章の中に
意味の分からない単語が存在したとき、その単語の意味を検索エンジンを使って調べ、
そのまま他人の文をコピペすることを、意味の分からない単語が無くなるまで繰り返し、
文章を作成することです。
0816デフォルトの名無しさん
2009/05/15(金) 18:22:16同じようなことを繰り返しているようだが、螺旋階段を歩くことで高低差を踏破するという仕事を完遂できるのである。
とか、今ひねり出した。
0817デフォルトの名無しさん
2009/05/15(金) 18:31:050818デフォルトの名無しさん
2009/05/15(金) 18:54:51一歩ずつしっかり歩けば
きっと目的地に辿り着く
大喜利やってんじゃねぇぞw
0819デフォルトの名無しさん
2009/05/15(金) 19:18:48再帰とは
「さ」いきは
「い」○○○
「き」○○○
の略である。
とかで良いんじゃね
0820デフォルトの名無しさん
2009/05/15(金) 19:28:14[2] 問題文(含コード&リンク): はじめに人数を入力させる。次に人数分、交通費を入力、すると交通費を分配するためにはお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、五円、一円)に何枚用意する必要があるか、表示してくれるプログラムを作成せよ
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語C++
[4] 期限: ([2009年5月21日15:00まで]
[5] その他の制限: 今日の授業でdo-while文 while文 for文を習いました
こんな感じなのかな・・と思ってやってみたのですが・・
#include<stdio.h>
int main(){
int x,y,z,kosu,i;
printf("人数を入力してください\n");
scanf("%d",&kosu);
i=1;
while(i<=kosu){
printf("1人目の交通費は\n");scanf("%d",&x);
i=i+1;
}
printf("10000円 %d\n",x/10000);
printf("5000円 %d\n",(x%10000)/5000);
printf("1000円 %d\n",(x%5000)/1000);
printf("500円 %d\n",(x%1000)/500);
printf("100円 %d\n",(x%500)/100);
printf("50円 %d\n",(x%100)/50);
printf("10円 %d\n",(x%50)/10);
printf("5円 %d\n",(x%10)/5);
printf("1円 %d\n",(x%5)/1);
return(0);
}
0821デフォルトの名無しさん
2009/05/15(金) 19:31:38vistaです
0822デフォルトの名無しさん
2009/05/15(金) 19:40:39・人数として負の数を入力された場合は「正しい人数を入力してください」と表示し
終了する
・枚数が0枚のときは硬貨の種類は表示されない
0823デフォルトの名無しさん
2009/05/15(金) 19:43:42配列は使ってもいいの?
0824デフォルトの名無しさん
2009/05/15(金) 19:45:14すいません。配列はまだ習っていません;;
0825デフォルトの名無しさん
2009/05/15(金) 19:53:38#include<stdio.h>
int main(void){
int x,kosu=-1,i;
int num10000=0,num5000=0,num1000=0,num500=0,num100=0,num50=0,num10=0,num5=0,num1=0;
printf("人数を入力してください\n");scanf("%d",&kosu);
if(kosu<0){ printf("正しい人数を入力してください\n");return 1; }
for(i=0;i<kosu;i++){
x=-1; printf("%d人目の交通費は\n",i+1);scanf("%d",&x);
if(x<0){ printf("正しい金額を入力してください\n");return 1; }
num10000+=x/10000;x%=10000;
num5000+=x/5000;x%=5000;
num1000+=x/1000;x%=1000;
num500+=x/500;x%=500;
num100+=x/100;x%=100;
num50+=x/50;x%=50;
num10+=x/10;x%=10;
num5+=x/5;x%=5;
num1+=x;
}
if(num10000) printf("10000円 %d\n",num10000);
if(num5000) printf("5000円 %d\n",num5000);
if(num1000) printf("1000円 %d\n",num1000);
if(num500) printf("500円 %d\n",num500);
if(num100) printf("100円 %d\n",num100);
if(num50) printf("50円 %d\n",num50);
if(num10) printf("10円 %d\n",num10);
if(num5) printf("5円 %d\n",num5);
if(num1) printf("1円 %d\n",num1);
return 0;
}
0826デフォルトの名無しさん
2009/05/15(金) 19:54:370827デフォルトの名無しさん
2009/05/15(金) 19:56:23すいません。。配列習ってました。
配列を使ってもいいそうです。。
0828デフォルトの名無しさん
2009/05/15(金) 20:02:56#include <stdio.h>
int main()
{
int i, x, y, kosu;
printf("人数を入力してください\n");
scanf("%d",&kosu);
if (kosu < 0) {
printf("正しい人数を入力してください\n");
return 0;
}
i=1;
while(i<=kosu){
printf("1人目の交通費は\n");scanf("%d",&x);
y = x / 10000; x -= y * 10000; if (y > 0) printf("10000円%d\n",y);
y = x / 5000; x -= y * 5000; if (y > 0) printf("5000円 %d\n", y);
y = x / 1000; x -= y * 1000; if (y > 0) printf("1000円 %d\n",y);
y = x / 500; x -= y * 500; if (y > 0) printf("500円 %d\n",y);
y = x / 100; x -= y * 100; if (y > 0) printf("100円 %d\n",y);
y = x / 50; x -= y * 50; if (y > 0) printf("50円 %d\n",y);
y = x / 10; x -= y * 10; if (y > 0) printf("10円 %d\n", y);
y = x / 5; x -= y * 5; if (y > 0) printf("5円 %d\n",y);
if (x > 0) printf("1円 %d\n",x);
i=i+1;
}
return 0;
}
0829デフォルトの名無しさん
2009/05/15(金) 20:03:28#include<stdio.h>
int main(void){
int x,kosu=-1,i, j;
int face_values[]={10000,5000,1000,500,100,50,10,5,1,0};
int amount[sizeof(face_values)/sizeof(face_values[0])]={0};
printf("人数を入力してください\n");
scanf("%d",&kosu);
if(kosu<0){
printf("正しい人数を入力してください\n");
return 1;
}
for(i=0;i<kosu;i++){
x=-1;
printf("%d人目の交通費は\n",i+1);
scanf("%d",&x);
if(x<0){
printf("正しい金額を入力してください\n");
return 1;
}
for(j=0;face_values[j]>0;j++){
amount[j]+=x/face_values[j];
x%=face_values[j];
}
}
for(j=0;face_values[j]>0;j++){
if(amount[j]) printf("%d円 %d\n", face_values[j], amount[j]);
}
return 0;
}
0830828
2009/05/15(金) 20:12:44○ printf("%d人目の交通費は\n",i); scanf("%d",&x);
間違えてる
0831デフォルトの名無しさん
2009/05/15(金) 20:14:15numが習っていないので・・・でも作っていただきありがとうございます。
>>828
デバッグなしでしたらエラーしてしまいました。。
>>829
face valuesとかいう単語をまだ授業中で使っていないので・・・
作っていただきありがとうございます。
0832デフォルトの名無しさん
2009/05/15(金) 20:18:35[2] 問題文(含コード&リンク): 血液型を聞いて、出力するプログラム
[3] 環境 ボーランド コンパイラ 5.5
[3.1] OS: (Windows/Linux/等々) XP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語:C
[4] 期限: 明後日
0834デフォルトの名無しさん
2009/05/15(金) 20:23:01#include<stdio.h>
int main(void)
{
char buf[100+1]="unknown";
printf("血液型を入力してください\n");
scanf("%100s", buf);
printf("\n血液型は %s です\n", buf);
return 0;
}
0835デフォルトの名無しさん
2009/05/15(金) 20:30:58できたのですが
これを金額を一人一人別々に表示するのではなくまとめて表示できるようにするには
どうしたらよいのでしょうか?
0836デフォルトの名無しさん
2009/05/15(金) 20:35:37そうするには10000万円の枚数、5000円の枚数、...を
それぞれ別の変数に覚えておかなければならない。
だから>>825
0837デフォルトの名無しさん
2009/05/15(金) 20:44:21今日の授業で↓をうまく組み合わせればできると言われたので・・
int c;
printf("10000円 %d\n",x/10000);
printf("5000円 %d\n",(x%10000)/5000);
printf("1000円 %d\n",(x%5000)/1000);
printf("500円 %d\n",(x%1000)/500);
printf("100円 %d\n",(x%500)/100);
printf("50円 %d\n",(x%100)/50);
printf("10円 %d\n",(x%50)/10);
printf("5円 %d\n",(x%10)/5);
printf("1円 %d\n",(x%5)/1);
と
int sum=0,x,i,kosu;
scanf(%d,&kosu);
i=1
while(i<=kosu){
scanf("%d",&x);
sum=sum+x;
i=i+1
}
0838デフォルトの名無しさん
2009/05/15(金) 20:47:07#include <stdlib.h>
int main()
{
printf("血液型なに?\n");
srand(getchar());
printf("そうなんや。ちなみに俺は%s型。", &"A\0\0B\0\0O\0\0AB\0"[rand()%4*3]);
return 0;
}
聞いて、出力。あほですんません。
0839デフォルトの名無しさん
2009/05/15(金) 20:49:52scanf("%d",&c)
printf("10000円 %d\n",c/10000);
printf("5000円 %d\n",(c%10000)/5000);
printf("1000円 %d\n",(c%5000)/1000);
printf("500円 %d\n",(c%1000)/500);
printf("100円 %d\n",(c%500)/100);
printf("50円 %d\n",(c%100)/50);
printf("10円 %d\n",(c%50)/10);
printf("5円 %d\n",(c%10)/5);
printf("1円 %d\n",cx%5)/1);
x→c
scanf入れ忘れ
0840デフォルトの名無しさん
2009/05/15(金) 20:56:58これに数日掛けられる課題ってどこ行けば受けられるんだよ…
0841デフォルトの名無しさん
2009/05/15(金) 21:22:04#include <stdio.h>
void print(int y[9])
{
if (y[0] > 0) printf("10000円 %d\n", y[0]); if (y[1] > 0) printf("5000円 %d\n", y[1]);
if (y[2] > 0) printf("1000円 %d\n", y[2]); if (y[3] > 0) printf("500円 %d\n", y[3]);
if (y[4] > 0) printf("100円 %d\n", y[4]); if (y[5] > 0) printf("50円 %d\n", y[5]);
if (y[6] > 0) printf("10円 %d\n", y[6]); if (y[7] > 0) printf("5円 %d\n", y[7]); if (y[8] > 0) printf("1円 %d\n", y[8]);
}
int main()
{
int i, j, x, kosu, y[9], kouka[9]; // 紙幣硬貨毎の枚数・累計枚数
for (j = 0; j < 9; j++) kouka[j] = 0;
printf("人数を入力してください\n"); scanf("%d",&kosu);
if (kosu < 0) {printf("正しい人数を入力してください\n"); return 0;}
i=1;
while(i<=kosu){
printf("%d人目の交通費は\n", i); scanf("%d",&x);
y[0] = x / 10000; x -= y[0] * 10000; y[1] = x / 5000; x -= y[1] * 5000;
y[2] = x / 1000; x -= y[2] * 1000; y[3] = x / 500; x -= y[3] * 500;
y[4] = x / 100; x -= y[4] * 100; y[5] = x / 50; x -= y[5] * 50;
y[6] = x / 10; x -= y[6] * 10; y[7] = x / 5; x -= y[7] * 5; y[8] = x;
print(y); // 個別を表示(これは必要無かったのか?)
for (j = 0; j < 9; j++) kouka[j] += y[j];// 紙幣硬貨ごとの枚数を集計
i++;
}
printf("累計\n"); print(kouka); //紙幣硬貨ごとの集計結果を表示
return 0;
}
0842デフォルトの名無しさん
2009/05/15(金) 21:31:51#include <stdio.h>
#include <string.h> /* for Borland */
int main() {
char buf[10];
while(1) {
printf("あなたの血液型を A/B/O/AB で入力して下さい:");
if(fgets(buf, 10, stdin) == 0) break; /* at Ctrl/D */
buf[strlen(buf)-1] = '\0';
if( strcmp(buf, "A") == 0 || strcmp(buf, "B") == 0 ||
strcmp(buf, "O") == 0 || strcmp(buf, "AB") == 0 ) {
printf("あなたの血液型は %s ですね?\n", buf);
}
}
return 0; /* for Borland */
}
0843デフォルトの名無しさん
2009/05/15(金) 21:32:090844デフォルトの名無しさん
2009/05/15(金) 21:58:54今やっとわかりました!ありがとうございました。
0845デフォルトの名無しさん
2009/05/15(金) 22:46:19作ってみた
#define MRAND_BITS 7
#define MRAND_BITS_Q (MRAND_BITS-3)
unsigned long MRand(void){
static char bits[MRAND_BITS];
static int is_first=1, index;
unsigned long ret=0;
int i;
if(is_first){
for(i=0;i<MRAND_BITS;i++) bits[i]=(rand()>>8)&1;
is_first=0;
}
for(i=0;i<31;i++){
ret=(ret<<1)|(bits[(index+i)%MRAND_BITS]^=bits[(index+i+MRAND_BITS_Q)%MRAND_BITS]);
}
index=(index+31)%MRAND_BITS;
return ret;
}
0846デフォルトの名無しさん
2009/05/16(土) 10:04:07#include <float.h>
void main() {
double e1, e2; //εを代入する変数
//e1は一つ前, e2は計算用の現在のε
unsigned int n;//forのカウント用
e1 = DBL_MIN; //εの初期値の代入
for(n=1; n<4294967295; n++) {
/*ここにe2(現在のε)の更新処理を入れる*/
//ε=DBL_MIN * 10n乗
if(1.0 != (1.0+e2)){
/*ここにεとnの出力処理を代入*/
}
/*ここにe1(一つ前のε)の更新処理を入れる*/
}
プログラミング言語の授業で初めての演習なんですが全く分からないのでお願いします
コメントに沿ってプログラムを作るらしいのですが手も足もでなくて…
結果がでた理由も添えてもらえると有り難いです
0847デフォルトの名無しさん
2009/05/16(土) 11:31:07責めてコンパイラの種類だけでも。
それが不明ならコンパイルした後のエラーメッセージを。
締め切りも、書いてあると有り難い。
0848デフォルトの名無しさん
2009/05/16(土) 11:45:10締め切りは来週の木曜日までですができるだけ速い方が有り難いです
0849デフォルトの名無しさん
2009/05/16(土) 11:59:42#include <float.h>
void main() {
double e1, e2;
unsigned int n;
e1 = DBL_MIN;
for(n=1; n<4294967295; n++) {
e2 = e1 * 10;
if(1.0 != (1.0+e2)) {
printf("%.20f %d\n", e2, n);
break;
}
e1 = e2;
}
}
0850デフォルトの名無しさん
2009/05/16(土) 12:46:42入門書なり入門サイトなりを最初の数ページ読めば分かることなのに、何故それをしないの?
0851デフォルトの名無しさん
2009/05/16(土) 12:53:09処理可能な最小数をさらに小さくする計算にどんな意味があるんだ?
演習の意図がよく分からんな。
0852デフォルトの名無しさん
2009/05/16(土) 13:00:34>>1にある質問テンプレを使って依頼を書き直して。
課題内容もそのまま書いてみれ。
0853デフォルトの名無しさん
2009/05/16(土) 13:12:14有限精度の数値計算では1+εが1に等しいような正のεが存在する.そのようなεの中で最大のものを見いだせ
ただし ε=DBL_MIN*10n乗とする
DBL_MINはヘッダファイル<float.h>で定義されている
しようする変数の型はdoubleとし、printfの出力の書式は%eとする
条件を満たす時のnも出力する
て問題です
OSは vista
コンパイラはビジュアルスタジオ2008
言語C++
0854デフォルトの名無しさん
2009/05/16(土) 13:15:39課題の意図がやっと解ったよ。
0855ぽるむ
2009/05/16(土) 13:50:21[2] 在庫管理システムを作れ
条件:�@商品がいくつあるかを[商品名と個数をメーカーごと]にエクセルに保存できる
�A日別・月別の在庫一覧を見れる
�B入庫・出庫は商品一覧から選択し処理をする
�Cコンパイラ等の使用したソフトを記載すること
�Dexeファイルで提出すること
[3] 環境
[3.1] OS:WinXP SP3
[3.2] コンパイラは自由
[3.3] C
[4] 期限:無期限
[5] 制限なし
よろしくお願いします!
0856デフォルトの名無しさん
2009/05/16(土) 14:10:44[2]生徒ID(8桁整数),国語得点(4桁整数)、
数学得点(4桁整数)、理科得点(4桁整数)、社会得点(4桁整数)、英語得点(4桁整数)
が書かれたタブ区切りファイルを標準入力から読み込み、次の32個の
タブ区切りファイル(yyyymmddhhmmss.xxx.txt)を作るプログラム
x=0の場合、入力行を生徒ID昇順にそのまま出力する
それ以外の場合x=y(0)+y(1)2+y(2)2^2+y(3)2^3+y(4)2^4 (y(0),y(1),y(2),y(3),y(4)は0か1)
とすると 量z=国語得点y(0)+数学得点y(1)+理科得点y(2)+社会得点y(3)+英語得点y(4)が定まる。
生徒ID z zに関する降順順位(同一順位繰り下げ方式)
を各行とするタブ区切りファイルとすること。
(同一順位繰り下げ方式:1位が3名居る場合はすべて3位)
yyyymmddhhmmssは処理開始をした時刻とする。(共通)
[3] linux/gcc
制限:入力タブ区切りファイルの行数サイズは無制限とするので、メモリに展開して記憶しては
ならない。無効行(すべての項目が揃っていないetcなどフォーマットエラーチェック)チェックは
今回は省略して良いが入れる余地を残すようにコーディングすること。
同じ生徒IDの行があった場合は異常終了すること(同時に作成したすべてのファイルを削除)
処理速度は問わない。処理中同時に開けるファイル数は5個以下とする。
プログラムコード上限500行以内(コメント含む)
[4]月曜日まで
0857デフォルトの名無しさん
2009/05/16(土) 14:25:12#include <stdio.h>
#include <float.h>
int main()
{
double e1 = DBL_MIN, e2;
int n = 0;
while (1) {
printf("%3d:%.15e\n", n, e1);
if (1.0 < 1.0 + e1)
break;
e2 = e1; e1 *= 10; n++;
}
printf("DBL_MIN=%.15e\n", DBL_MIN);
printf("n=%d\n", n);
printf("%.15e %s\n", e2, ((1.0 < 1.0 + e2)? "not same": "same"));
printf("%.15e %s\n", e1, ((1.0 < 1.0 + e1)? "not same": "same"));
return 0;
}
0858デフォルトの名無しさん
2009/05/16(土) 15:00:15/*ここにεとnの出力処理を代入*/
printf("%.20f %d\n", e2, n);
0859デフォルトの名無しさん
2009/05/16(土) 15:46:29[2] 問題文(含コード&リンク):
長さ32の0と1の列を入力して、このビット列の表わす実数値を出力するプログラムを作成せよ。
実数表現の仕方はIEEE規格754に従うものとする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:明日
[5] その他の制限: 特にない
0860デフォルトの名無しさん
2009/05/16(土) 16:02:29[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
1) フィボナッチ数列 X(n) = X(n-1) + X(n-2), X(1) = X(2) =1 の n = 1 から 100までの値を
一覧表にせよ.
(2) 次の (a), (b) いずれかの極限値を求めよ.
(a) 1 + 1/1! + 1/2! + 1/3! + ...... + 1/n! + .....
(b) sin(x)/x (x → 0)
[3] 環境
[3.1] OS:Linux
[3.2]gcc 恐らく最新
[3.3] 言語: C
[4] 期限:月曜日の夕方五時まで
[5] その他の制限: ループのところのレポートなのでなんらかの形でループを使うのだと思います。
配列は使わないとありがたいです。条件分岐は習ってます
(2)はどちらでも構わないです、(1)だけとかでも十分ありがたいです
よろしくお願いします
0861デフォルトの名無しさん
2009/05/16(土) 16:03:01>>846の段階じゃその条件はわかるわけねーだろw
0862858
2009/05/16(土) 16:09:400863デフォルトの名無しさん
2009/05/16(土) 16:19:19#include <stdio.h>
main(){
int i, n = 0;
char c;
for(i = 0; i < 32; ++i){
scanf("%c", &c);
(n <<= 1) |= c == '1' ? 1 : 0;
}
printf("%g", *(float*)&n);
}
intとfloatが32bitで、gccのfloatがIEEE754準拠の前提。違ったらメンゴ。
0864デフォルトの名無しさん
2009/05/16(土) 16:40:230865デフォルトの名無しさん
2009/05/16(土) 16:46:240866デフォルトの名無しさん
2009/05/16(土) 16:58:33言ってる意味がよくわからんが863ならテスト済みだぞ?
0867デフォルトの名無しさん
2009/05/16(土) 17:06:170868デフォルトの名無しさん
2009/05/16(土) 17:06:410869デフォルトの名無しさん
2009/05/16(土) 17:07:28gccは独自拡張で可能なだけ。-std=c89や他のC89処理系だとエラーになる。
0870デフォルトの名無しさん
2009/05/16(土) 17:13:450871デフォルトの名無しさん
2009/05/16(土) 17:16:500872デフォルトの名無しさん
2009/05/16(土) 17:23:50そうだったのか。知らんかった。
0873797
2009/05/16(土) 17:27:53-- 797の補足です --
[1] 授業単元: C言語応用
[2] 問題文(含コード&リンク): >>797 参照
[3] 環境
[3.1] OS: Windows XP
[3.2] gcc 3.4.5
[3.3] 言語:C
[4] 期限 5/22(金)
>>845
ありがとうございます。
>>797の2のメイン関数につけて実行したところ下記になりました。
3937 2362 2361 4724 4724
0 4726 4723 3151 5512
6297 788 2363 1576 2363
2363 3937 2363 8660 6298
5514 6298 1575 5511 7874
Count[y=1][x=0]のところの値が0になっています。
おそらくこれの考察が >>797の3 の意味だと思います。
猿でも分かる解説、もしくはリンク等どなたかご教授願いませんか?
0874デフォルトの名無しさん
2009/05/16(土) 17:53:46#include <stdio.h>
#include <memory.h>
main(){
int i, n = 0;
char c;
float a = 2.5;
memcpy((void*)&n, (void*)&a, 4);
for(i = 0; i < 32; ++i){
printf("%d", (n>>(31-i)) & 1);
}
puts("");
n = 0;
for(i = 0; i < 32; ++i){
scanf("%c", &c);
n |= (c == '1' ? 1 : 0) << (31-i);
// (n <<= 1) |= c == '1' ? 1 : 0;
/* n <<= 1,
* n |= (c == '1') ? 1 : 0;
*/ }
printf("%g", *(float*)&n);
puts("");
for(i = 0; i < 32; ++i){
printf("%d", (n>>(31-i)) & 1);
}
}
0875デフォルトの名無しさん
2009/05/16(土) 17:59:26ビルドでエラーがでてしまう…
0876デフォルトの名無しさん
2009/05/16(土) 18:04:150877デフォルトの名無しさん
2009/05/16(土) 18:04:17このくらいに変更してみて
#define MRAND_BITS 79
#define MRAND_BITS_Q (MRAND_BITS-31)
0878デフォルトの名無しさん
2009/05/16(土) 18:10:31どの辺でエラー?
一応vc2005とgccで確認したが。
0879デフォルトの名無しさん
2009/05/16(土) 18:14:09[2] 問題文(含コード&リンク):
2つあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9182.zip
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2009/5/21
[5] その他の制限:
課題01は途中までやりました。
これに手を加えてできるのなら、これを修正していただきたいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9183.txt
お手数おかけしますが、宜しくお願いします。
0880デフォルトの名無しさん
2009/05/16(土) 18:19:13申し訳ない、作り直したらできました、ありがとうございます
0881デフォルトの名無しさん
2009/05/16(土) 18:46:221.
#include <stdio.h>
int main(void)
{
int i, num, n;
printf("1桁の整数を入力:");
scanf("%d", &num);
for (i = 1; i <= 99; i++)
if(i%num==0||i/10==num||i%10==num)
printf(" %d", i);
return (0);
}
0882デフォルトの名無しさん
2009/05/16(土) 18:47:082.
#include <stdio.h>
int mypow(int a, int b)
{
int i,r;
for(i=1,r=a;i<b;i++)
r *= a;
return r;
}
int main(void)
{
int i,j,a,b;
printf("a?");
scanf("%d", &a);
printf("b?");
scanf("%d", &b);
for (i = 1; i <= b; i++){
for(j=1;j<=a;j++)
printf(" %d",mypow(j,i));
printf("\n");
}
return (0);
}
0883デフォルトの名無しさん
2009/05/16(土) 19:36:44IEEE754を自力で解きほぐさなくて?
0884797
2009/05/16(土) 19:56:46返答ありがとうございます。
やってみたところ下記になりました。正しい乱数が発生されているようです。
4034 4021 3930 4059 4090
4029 3952 4051 3953 4057
3948 4047 4016 3952 4037
3988 3968 3870 3998 4044
4030 3951 4036 3964 3975
考察としては、
目的に応じた正しい"タップ?"を選ばないと意図した結果とならない。
ということでしょうか。
実は、797の質問の後返答を待つ間自分なりに作ってみてました。
下記の100番。 "9184.lzh 借ります。"です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=9048
作るに際して http://210.155.219.234/M-Seq.htm を参考にしました。
MRand1でM系列乱数として正しい関数だと確認したつもりです。
ところがMRand2で課題のmainで動作させたところ、私も0のCountが出ました。
タップを色々変えて試しましたが、状況は変わりませんでした。
自分の作ったMRand()は間違っているのでしょうか?
0885879
2009/05/16(土) 23:04:47回答有難うございます。
>>881は問題ないのですが、>>882は習っていないものがあるのでもう少し簡単に出来ませんでしょうか?
基本的にint main(void)は#includeの下に来ますし、2行目のint(int a, int b)という方法も習っていないので。
0886デフォルトの名無しさん
2009/05/16(土) 23:14:02#include <stdio.h>
int main(void)
{
int i, j, k, a, b;
printf("a?"); scanf("%d", &a);
printf("b?"); scanf("%d", &b);
for (i = 1; i <= b; i++) {
for (j = 1; j <= a; j++) {
int w = j; for (k = 1; k < i; k++) w *= j; printf("%d ", w);
}
printf("\n");
}
return 0;
}
0887デフォルトの名無しさん
2009/05/16(土) 23:34:49有難うございます。
これなら問題なさそうです!
助かりました。
0888デフォルトの名無しさん
2009/05/17(日) 00:15:24にのっている課題4、5よろしくお願いします。
言語:c言語
os:xp
gcc
0889デフォルトの名無しさん
2009/05/17(日) 00:23:11「問題が発生しました」
見れない。
0890デフォルトの名無しさん
2009/05/17(日) 00:27:23見れる場所にあげるか問題を転記しれ。
0891デフォルトの名無しさん
2009/05/17(日) 02:27:23#include <stdio.h>
int main() {
double i1, i2, i3;
int j;
i1 = 1.;
i2 = 1.;
printf(" 1:%21.0lf\n 2:%21.0lf\n", i1, i2);
for(j=2; j<100; j++) {
i3 = i1 + i2;
printf("%3d:%21.0lf\n", j+1, i3);
i1 = i2;
i2 = i3;
}
}
0892デフォルトの名無しさん
2009/05/17(日) 03:08:22[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9187.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: C++
[4] 期限: 来週の月曜まで
[5] その他の制限:
プログラムの授業ではありません、SA(焼きなまし)法という手法を習った授業のレポートです
プログラムは制限等は無いと思います(問題文に沿っていれば)
授業も良く分らなかったのに、レポートがプログラムで凄く困ってます
よろしくお願いします
0893デフォルトの名無しさん
2009/05/17(日) 10:23:06#include <stdio.h>
double factorial(int i) {
if(i == 1) return 1.0;
return i * factorial(i-1);
}
int main() {
double a=1.0, a1, fa;
int i=1;
do {
fa = factorial(i);
a += 1/fa;
printf("%.20f %.0f\n", a, fa);
if(a == a1) break;
a1 = a;
} while(i++);
}
0894デフォルトの名無しさん
2009/05/17(日) 10:37:05#include <stdio.h>
#include <math.h>
int main() {
int i=1;
double x = 3.14, a=0.0, a1=0.0;
do {
a = sin(x)/x;
printf("%.20f %.20f\n", a, x);
if(a1 == a) break;
a1 = a;
x /= 2.0;
} while (i++);
}
0895デフォルトの名無しさん
2009/05/17(日) 11:04:27長方形の縦横の向きは固定?可変?
0896デフォルトの名無しさん
2009/05/17(日) 13:05:07factorial()が無駄すぎるw
0897デフォルトの名無しさん
2009/05/17(日) 13:56:13>>860 (2) (a) 極限値 =e
#include <stdio.h>
int main() {
int i=1;
double a=1.0, a1, fa=1.0;
do {
fa *= i;
a += 1/fa;
printf("%.20f %.0f\n", a, fa);
if(a == a1) break;
a1 = a;
} while(i++);
}
0898デフォルトの名無しさん
2009/05/17(日) 14:02:41入力ファイル (','はタブを表す)
11111111,2222,3333,4444,5555,6666
1:生徒ID
2:国語点数
3:数学点数
4:理科点数
5:社会点数
6:英語点数
出力ファイル (','はタブを表す)(99999は合計点数)(8888は降順順位 10-9-9-7-6-6-4)
yyyymmddhhmmss.000.txt
11111111,2222,3333,4444,5555,6666 (生徒IDでソート)
yyyymmddhhmmss.001.txt 国語だけの点数
11111111,2222,8888 (国語点数でソート)
yyyymmddhhmmss.002.txt 数学だけの点数
11111111,3333,8888 (数学点数でソート)
yyyymmddhhmmss.003.txt 国語+数学の点数
11111111,99999,8888 (国語+数学点数でソート)
yyyymmddhhmmss.004.txt 理科だけの点数
11111111,4444,8888 (理科点数でソート)
省略
yyyymmddhhmmss.031.txt 国語+数学+理科+社会+英語の点数
11111111,99999,8888 (国語+数学+理科+社会+英語点数でソート)
0899デフォルトの名無しさん
2009/05/17(日) 14:36:22[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9189.txt
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C
[4] 期限:2009/5/17
[5] その他の制限:
0901デフォルトの名無しさん
2009/05/17(日) 15:07:33void twos_complement(int *a, int *b)
{
int i;
for(i=7; i>=0; i--) if(b[i]=a[i]) break;
while(i--) b[i] = 1 ^ a[i];
}
void print_bin(char *s, int *p)
{
int i;
printf("%s", s);
for(i=0; i<8; i++) printf("%d", p[i]);
printf("%\n");
}
0902デフォルトの名無しさん
2009/05/17(日) 16:03:28#define N 8
void twos_complement(int *a, int *b) {
int i;
for(i=0; i<N; i++)
b[i] = !a[i];
for(i=N-1; i>=0; i--) {
if(b[i] == 0) {
b[i] = 1;
break;
}
b[i] = 0;
}
}
void print_bin(char *s, int *a) {
int i;
printf("%s", s);
for(i=0; i<N; i++)
printf("%d", a[i]);
puts("");
}
0903デフォルトの名無しさん
2009/05/17(日) 17:17:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9190.txt
0904デフォルトの名無しさん
2009/05/17(日) 17:27:070905デフォルトの名無しさん
2009/05/17(日) 17:43:59[2]問題:アルファベット、数字、空白からなる文字列を渡したとき、小文字を大文字にする関数 void to_upper(char s[]); を作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 9日火曜日、午後1時
[5] その他の制限:
さっぱりわかりません。どなたかよろしくお願いします。
0906デフォルトの名無しさん
2009/05/17(日) 18:02:58#include <ctype.h>
void to_upper(char s[])
{
char *p = s;
do{
if(islower(*p)) *p = toupper(*p);
} while(*p++ != '\0');
return;
}
int main()
{
char s[256];
scanf("%s", s);
to_upper(s);
puts(s);
return 0;
}
0907903
2009/05/17(日) 18:45:01宿題なので、要求仕様はライブラリー関数で処理可能と考えた。
仮に1000万人以上のレコード処理を要求する宿題なら、
それなりの設問をするのでは?
0908デフォルトの名無しさん
2009/05/17(日) 19:18:24同意
データを標準入力から受け取り、メモリ上に展開してはならない以上
一時ファイルを作成しない限り解けない問題だと思う
ついでに整数8桁のIDに対して処理可能ということは
2GB/100M=20B
一時ファイル内の一つのレコードの大きさを 20Byte 以下に納めないと
fseek やらファイルシステムやらの制約を受け始めるという厄介な問題
0909デフォルトの名無しさん
2009/05/17(日) 19:20:22オマエのような鬼畜を探していた
0910デフォルトの名無しさん
2009/05/17(日) 20:30:03ファイルに対するランダムアクセスは不可能という前提でやれということ?
みたいだな。そう読める?どんなへんてこな仕様なんだw
0911デフォルトの名無しさん
2009/05/17(日) 21:41:41[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9192.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 5月19日まで
[5] その他の制限: とくになし
よろしくお願いします。
0912デフォルトの名無しさん
2009/05/17(日) 21:52:32dir指定を許す?
複数ファイル指定もあり?
0913デフォルトの名無しさん
2009/05/17(日) 22:13:44ただ単に1:1でコピーするだけのmycp.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9193.c
0914デフォルトの名無しさん
2009/05/17(日) 22:14:20言語:c++
gcc
os:xp
0915デフォルトの名無しさん
2009/05/17(日) 23:11:27[2] 問題文(含コード&リンク):
長さが32の0と1の列、
s e7 e6 … e1 e0 d1 d2 … d23
を入力して、このビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)
---------------------------------------------
(-1)^s * (1+M) * 2^E if -127 < E < 128
(-1)^s * M * 2^(E + 1) if E = -127
Inf(無限大) if E = 128, M = 0
NaN(非数) if E = 128, M ≠ 0
ここで、M = Σ(i = 1→23)di * 2^(-i),
E = Σ(i = 0→7) ei * 2^i - 127
---------------------------------------------
を出力するCプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日;;
[5] その他の制限:
2^E = 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)
= ((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2
となることは与えられているのですが、for文を使ってこの式をどう表すのかわかりません…。
お願いします。
0916デフォルトの名無しさん
2009/05/17(日) 23:16:330917デフォルトの名無しさん
2009/05/17(日) 23:27:33それを実行形式にできますか?
わしは素人じゃけん。
0918デフォルトの名無しさん
2009/05/17(日) 23:34:47>>916がいうとおり、同じ依頼がある。
>>874を見て
0919デフォルトの名無しさん
2009/05/17(日) 23:51:37[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし
0920>>915
2009/05/17(日) 23:57:12本当にプログラミングが苦手で…;
0921>>915
2009/05/18(月) 00:16:3501000000001000000000000000000000
と表示されるのですが、これは何ですか・・?
0923デフォルトの名無しさん
2009/05/18(月) 00:48:342^E = 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)
= ((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2
0924デフォルトの名無しさん
2009/05/18(月) 00:52:19SA(焼きなまし)法というのを色々調べてみました。
シミュレーションを行い、最適解を求める手法のようですが、
この問題文からはそのイメージが湧いてきません。
(辺の長さから正方形を敷き詰めるような組み合わせ問題なら
想定はできます)。
提示されていない何らかの制約事項、初期条件や評価関数が
あるのではないですか?
勘違いしているかも知れません。その時はご容赦
0925892
2009/05/18(月) 01:05:09任意の矩形が、任意の数だけ与えられた時に、その矩形を正方形に敷き詰めるようにして
且つ、その正方形は小さければ小さいほど良いという、組み合わせ最適化の問題です。
関数は自身が用意した矩形サンプルで作るのですが、評価は教授が容易した矩形サンプルが使われます。
よって特定の矩形群だけに効くアルゴリズムではなく汎用的なもが求められます。
これ以外に知りたい事がありますでしょうか?
0926デフォルトの名無しさん
2009/05/18(月) 01:06:38[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし
0927892
2009/05/18(月) 01:13:04正方形の形にピッタリと敷き詰めると言う意味ではなく
敷き詰めた全矩形を内包する形が正方形で、更に小さければ小さい程良いと言う事です。
0928デフォルトの名無しさん
2009/05/18(月) 01:14:47矩形の縦横の寸法と個数が予め与えられる問題だと、
わざわざシミュレーションするまでもなく解が求まりませんか?
何か勘違いしてるかな?
0929デフォルトの名無しさん
2009/05/18(月) 01:17:34いい加減な方法でよければ
1.最初に矩形を横一列に並べる
2.1.の長辺を一辺とする正方形を用意する
3.正方形の外周の右端または下端に接する矩形を正方形内の任意の位置(右端、下端を除く)に移動させてみる
4.正方形を小さくできるなら小さくする
5.3〜4繰り返し
移動に乱数を使うとか、できる限り左上に置くとか方法はありそうです
直感的にこの方法だと中身がスカスカになりますが、題意は満たします
0930856
2009/05/18(月) 01:19:41実はサンプルデータのほうが用意されておりそれと比較しましたが、若干動作が違ったようです。
yyyymmddhhmmss.xxx.txt (xxx!=0)の場合、生徒IDの行順序は変えてはいけないみたいです。
生徒ID 得点の和 順位
33243 3435 19
34359 4298 12
34385 1957 39
12689 3848 14
.....
こんな感じで出なければいけなかったようでした。
あと、C言語演習という講座名でしたがC++と余り区別しない講座らしく、
C++で書いたほうが良かったみたいです。
今日中に頂いたコードを修正して何とかしてみます。ありがとうございました。
>>904
>>908-910
バイナリファイルを使っちゃいけないとは問題文に書いていないので多分大丈夫だと
思ってますが、もしダメというのであれば今回はあきらめます。
0931デフォルトの名無しさん
2009/05/18(月) 01:20:22出来るかは知らんが、教授の意図としては焼きなまし法を使うことに意味があるのでは。
プログラムの講義ではないみたいだし。
いきなり複雑なものをやらすのは厳しいだろうし、単純でもよく例に挙げられるのでは
それをコピーされてしまう。
0932デフォルトの名無しさん
2009/05/18(月) 01:20:55[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし
どうかよろしくお願いいたします。
0933デフォルトの名無しさん
2009/05/18(月) 01:23:19[2] 問題文(含コード&リンク): (終了済)問3http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9194.txt
(お願いしたい方)問4http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9195.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: Emule
[3.3] 言語:C
[4] 期限: 今週水曜17:00まで
[5] その他の制限: 2問繋がってて、前問で出力されたファイルがないとできない問題です。問3で作ったプログラムを元に問4のプログラムを
書いたんですが、最高点/最低点/学生番号の出力の仕方がよくわからなくて・・・仕上げ的な感じでお願いします。
0934デフォルトの名無しさん
2009/05/18(月) 01:29:18それなら問題が簡単になる
バイナリファイルに保存しながらバケットソートをする
バケットソートの結果を見ながらバイナリファイルを読み出し順位を決定
バケットソートに必要な領域は
long backet[32][50000] ≒ 6.4MB
でも xxx==0 があるから、結局は面倒な方法を取らないといけないのか
0935892
2009/05/18(月) 01:33:58レポートがプログラムになったのは、人間が考えるのでは無く
SA法によってアルゴリズムで解く為です。
矩形の形と個数が分ると、プログラムだとSA法などを使わなくとも、最適配置が解けるのでしょうか?
>>929
それだとSA法ではなく、総当り法と同じ様なアルゴリズムです。
しかも局所解に陥りやすく、多分再提出になると思います…
>>931
人間の頭で考えて良いなら、SA法の勉強にならないとの事です。
プログラム等のアルゴリズムで、オートで解くのが主眼だそうです。
授業もろくに理解してなく提示出来る手助けが少なくて申し訳無いのですが、宜しくお願いします。
0936デフォルトの名無しさん
2009/05/18(月) 01:36:55そりゃ最適解は一意に求まるが、最適性の判定はNP困難。
だからSA法のような近似アルゴリズムを用いる。
0937デフォルトの名無しさん
2009/05/18(月) 01:41:590938928
2009/05/18(月) 01:46:37すまない。
0939デフォルトの名無しさん
2009/05/18(月) 01:46:39http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9196.c
0940892
2009/05/18(月) 01:48:16今回のSA法の授業は、プログラムの難しい授業と同じ感じでチンプンカンプンでして…
確かにC++のレポートですが、
内容がプログラム言語仕様を使うレベル以上だと欲張りなお願いなんでしょうか?
…困ってます…
0941デフォルトの名無しさん
2009/05/18(月) 01:51:21さすがにお早い。ありがとうございます!
0942デフォルトの名無しさん
2009/05/18(月) 01:52:04書いてはみるが、正直めんどい
なんで前日まで放置してたんだよ…
0943デフォルトの名無しさん
2009/05/18(月) 01:58:40更に言えば離散最適化問題とかは数学を相当学んで自在に使える水準の人でなきゃ無理。
要するに完全に学部学生向けじゃない講義だということ。
0944デフォルトの名無しさん
2009/05/18(月) 01:59:530945892
2009/05/18(月) 02:00:02マジですか?是非、よろしくお願いします。
他のレポートや用事と重なって、今超しんどくて藁にもすがる思いでココを頼りました。
2ちゃんって使わないのですが…良い方が居て感動してます。
月曜の日付の間に提出フォルダに入れれば良いので、
恐らく夜中の24時でも平気かな、と思っています。
0946デフォルトの名無しさん
2009/05/18(月) 02:02:43住む星を間違えたようだなw
M87星雲にでも池
ここは地球だ
0947デフォルトの名無しさん
2009/05/18(月) 02:07:51このスレにとっては難しすぎじゃないのかw
0948デフォルトの名無しさん
2009/05/18(月) 02:12:34お手上げですわ
>>929 の手順ならできるけど局所探索になるんだよね
全体最適化ってどうするんだ?
0949デフォルトの名無しさん
2009/05/18(月) 03:48:45ぽいプログラムでいいなら、
1.ランダムで1個の矩形を配置。
2.ランダムで1つの矩形を選択して、その矩形に接するように配置
3.以下、できあがった多角形に対して常にどこかに接するように配置
4.全て配置した後全体の正方形の1辺の長さを測定して、現在のものよりも小さければ
現在のものを捨てて新しい配置を採用。
5.以下何度も時間が許す限り繰り返す。
かな?
充分大きな正方形内に、ランダムに配置するとよりそれっぽいけど、
最初からランダム配置の範囲が決まってると正方形が縮まないし。
0950デフォルトの名無しさん
2009/05/18(月) 03:55:13なお、あらかじめ与えられた矩形がソートできるならもっと精度が上がる。
2の配置で接する位置をランダムに決めるとき、その時点でもっとも矩形が
小さくなる位置を探すのがSAっぽくていいんじゃないかな。
0951デフォルトの名無しさん
2009/05/18(月) 04:18:31更新したやつを9197,txtに置いておいた。
0952デフォルトの名無しさん
2009/05/18(月) 08:43:03ランダム配置→微動(適当回数)→最小正方形保存
ランダム配置→微動(適当回数)→最小正方形比較
:
:
を適当回数
って事じゃないのかな?
0953デフォルトの名無しさん
2009/05/18(月) 09:13:46SAの枠組みはその通りだけど、その「微動」の部分をどうするかが
性能に直結するよね。949は、ある矩形を、すでにおかれているものに
接する位置に配置するというルールを設けた上で、その位置をランダムに
選択することで、所定時間内に最も小さくなった正方形を選択するように
なってる。もっといいヒューリスティックはもちろんあるだろうけれど、
どんなものを想定しているのか是非聞いてみたい。
0955デフォルトの名無しさん
2009/05/18(月) 10:20:11952じゃないけどSequence pairとか.
矩形の配置を,矩形のIDの列と対応づけられるから微動はうまく表現できる.
0956デフォルトの名無しさん
2009/05/18(月) 14:15:04[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし
0957デフォルトの名無しさん
2009/05/18(月) 14:23:20PDFは今やめとけ
GENOウィルスの亜種が増殖中だから皆警戒してるぞ
0958デフォルトの名無しさん
2009/05/18(月) 16:24:54pdfを形式変えてアップするにはどういった手段をとればいいですか?
0959デフォルトの名無しさん
2009/05/18(月) 16:46:51追記ですが、自分がアップしたpdfファイルは大学の掲示板から落としたものなので大丈夫だと思います。
pdfファイルをword文書やメモ帳に貼り付けてみたりいろいろ試行錯誤してみたのですがうまくいきませんでした。
期限が迫っているので信用して課題を見ていただけると嬉しく思います。
0960デフォルトの名無しさん
2009/05/18(月) 18:03:38教授名や大学名(調べればすぐ判る)を曝しているんだけども。
大学の掲示板とは言っても部外からは見えないんだろ?
公開するのに承認とかは要らないのか?
0961デフォルトの名無しさん
2009/05/18(月) 18:25:490962デフォルトの名無しさん
2009/05/18(月) 18:28:450963デフォルトの名無しさん
2009/05/18(月) 19:00:18ちゃんとアップデートしとけば被害でないぞ。
お前PDFを駆逐したいM$の手先かなんかか?
0964デフォルトの名無しさん
2009/05/18(月) 19:28:15[2] 問題文(含コード&リンク): int型の配列に値を読み込み、読み込んだ順番と逆順に出力するプログラムを作りなさい。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual C++ 2008
[3.3] 言語:C
[4] 期限: 今週火曜18:00まで
[5] その他の制限:配列の大きさは5でおねがいします。
0965デフォルトの名無しさん
2009/05/18(月) 19:40:560966デフォルトの名無しさん
2009/05/18(月) 19:49:59はい、作ってもかまわないです。
0967デフォルトの名無しさん
2009/05/18(月) 20:54:25#include<stdio.h>
int main()
{
int i, a[5];
for(i=0;i<5;i++) scanf("%d", a+i);
for(i=4;i>=0;i--) printf("%d\n", a[i]);
}
0968デフォルトの名無しさん
2009/05/18(月) 21:04:12その1行分でSA法としては充分じゃない?
0969デフォルトの名無しさん
2009/05/18(月) 21:47:18ありがとうございます。
0970デフォルトの名無しさん
2009/05/18(月) 22:37:42PDFがどうとかよりも、ボタンでダウンロードってのが躊躇するなぁ。
0971デフォルトの名無しさん
2009/05/18(月) 23:07:15C/C++の宿題片付けます 126代目
http://pc12.2ch.net/test/read.cgi/tech/1242655611/
0972デフォルトの名無しさん
2009/05/18(月) 23:16:490973デフォルトの名無しさん
2009/05/18(月) 23:25:13[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9198.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C/C++
[4] 期限:明日5月19日 23:30
[5] その他の制限:特に無いです。
問題が多いですがどうかよろしくお願いいたします。
0974デフォルトの名無しさん
2009/05/19(火) 00:08:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9199.c
一度も実行してないからミスあるかも
0975デフォルトの名無しさん
2009/05/19(火) 00:51:52知恵袋の使い方と合致していないとは思いますが、どうかご協力お願いします。
Q、C言語を使用したH8マイコンのLED制御に関する。
(1)SOSのモースル信号を発しなさい。
(2)加速を含めたイルミネーションを発しなさい。
例
♯include<3048.h>
main()
{
p1.ddr=0xff;
p1.dr.byte=0xff
}
お恥ずかしい質問ですが、よろしくお願いします。
補足
ffを2進数に11111111、でLED全8個がひかります。
longなどをつかってお願いします。
(1)高額基礎実験 (3)WIN (4)あと四時間
0976デフォルトの名無しさん
2009/05/19(火) 01:37:08osソラリス
コンパイラ gcc
台形の面積を求めるプログラム
キーボードより上底a下底b高さhの値を入力して台形の面積を計算するプログラムを作成せよ。
表示形式
上底a=6
下底b=15
高さh=3
面積=31.5
小数点以下一桁まで
よろしくお願いします。
0977デフォルトの名無しさん
2009/05/19(火) 03:01:18[2] 問題文(含コード&リンク):
正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示す
ると共に、それらnの倍数の和を表示するプログラムを作成せよ。
例えば25を入力したら,その倍数である25, 50, 75, 100とそれらの和で
ある250が表示されることになる。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2009年5月22日0:00まで
[5] その他の制限: ほぼ完全な素人です。do/whileの中に何を打てばいいかわかりません、よろしくお願いします。
0978デフォルトの名無しさん
2009/05/19(火) 03:24:04#include <stdio.h>
int main(void)
{
double a, b, h;
printf("上底a=");
scanf("%lf", &a);
printf("下底b=");
scanf("%lf", &b);
printf("高さh=");
scanf("%lf", &h);
printf("面積=%.1f", (a+b)*h/2);
return 0;
}
0979デフォルトの名無しさん
2009/05/19(火) 03:37:14#include <iostream>
int main()
{
int n, sum = 0;
std::cin >> n;
for(int i = n; i<=100; i+=n) std::cout << i << ' ', sum += i;
std::cout << std::endl << sum;
}
0980デフォルトの名無しさん
2009/05/19(火) 06:29:360981973
2009/05/19(火) 07:37:05最後の問題の後半部がkeyの宣言がなされていなかったため
少しエラーが出ましたが、その他は問題無かったです。
本当にありがとうございました!
0982ぽるむ
2009/05/19(火) 10:33:550983デフォルトの名無しさん
2009/05/19(火) 10:58:58excelを操作するのか?
0984デフォルトの名無しさん
2009/05/19(火) 11:37:420985デフォルトの名無しさん
2009/05/19(火) 12:04:23�@はcsv出力とかでいいのか?
�A〜�Bはプログラム自身で行う?
�D? ソースが要らないのか。
0986デフォルトの名無しさん
2009/05/19(火) 15:13:382^E =
2^((Σ(i = 0→7)ei * 2^i) - 127) =
2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1) =
((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2
解答
2^E =
2^(e7*2^7 + e6*2^6 + e5*2^5 + e4*2^4 + e3*2^3 + e2*2^2 + e1*2^1 + e0*2^0 - 127) =
2^((e7-1)*128 + e6*64 + e5*32 + e4*16 + e3*8 + e2*4 + e1*2 + e0 + 1) =
2^((((((((e7-1)*2 + e6)*2 + e5)*2 + e4)*2 + e3)*2 + e2)*2 + e1)*2 + e0 + 1) =
(((((((2^(e7-1))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
(((((((2^(e7 + (-1)))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
(((((((2^e7 * 2^(-1))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
(((((((2^e7 * 1/2)^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
0987デフォルトの名無しさん
2009/05/19(火) 17:10:212^E
= 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)
#include <stdio.h>
#include <math.h>
int main() {
int e[][8] = {
0, 0, 0, 0, 0, 0, 0, 0, /* 2^-127 */
0, 0, 0, 0, 0, 0, 0, 1, /* 2^-126 */
0, 0, 0, 0, 0, 0, 1, 0, /* 2^-125 */
0, 1, 1, 1, 1, 1, 1, 0, /* 2^-2 */
0, 1, 1, 1, 1, 1, 1, 1, /* 2^-1 */
1, 0, 0, 0, 0, 0, 0, 0, /* 2^0 */
1, 0, 0, 0, 0, 0, 0, 1, /* 2^1 */
1, 1, 1, 1, 1, 1, 0, 1, /* 2^126 */
1, 1, 1, 1, 1, 1, 1, 0, /* 2^127 */
}, i;
for(i=0;i<sizeof(e)/sizeof(e[0]); i++)
printf("%.9g\n", pow(2.,((e[i][7-7]-1)*128 + e[i][7-6]*64 + e[i][7-5]*32 +
e[i][7-4]*16 + e[i][7-3]*8 + e[i][7-2]*4 + e[i][7-1]*2 + e[i][7-0] + 1)));
}
0988デフォルトの名無しさん
2009/05/19(火) 18:41:21期限過ぎてコメントも無し
>>934 のアルゴリズム使用
使用するヒープ領域はデータ数に関わらず 20MB 程度
10万件のデータで処理時間 10秒弱 (PenM1.7GHz機にて)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9202.c
0989デフォルトの名無しさん
2009/05/19(火) 18:59:58バケットソートなので処理時間 O(n) オーダ
でも、20MB あれば 125万件までメモリに乗せられるwww
0990デフォルトの名無しさん
2009/05/19(火) 22:34:49これで良いか自信はない。誰も回答してないようなので、使えるかどうかは判断してくれ。
問題からこういうファイルを作り、標準出力で入力してくれ。
4.0 2.0 6.0 3200.0
4.0 4.0 4.0 3600.0
6.0 4.0 8.0 5000.0
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9204.txt
0991デフォルトの名無しさん
2009/05/19(火) 23:00:37劣化版じゃないのを作れってのは無理ww
0992デフォルトの名無しさん
2009/05/19(火) 23:05:310993デフォルトの名無しさん
2009/05/20(水) 00:36:084
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9206.txt
0994デフォルトの名無しさん
2009/05/20(水) 01:04:17[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9207.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:5月22日まで
[5] その他の制限: とくになし
ところどころ間違っていたらすいません。よろしくお願いします。
0995デフォルトの名無しさん
2009/05/20(水) 02:47:09exeファイルでいいんだから、Vectorあたりから適当な在庫管理ソフトをダウンロードしちゃえばいいんじゃね?w
0996デフォルトの名無しさん
2009/05/20(水) 06:00:07低コストで見つけるにはどうすればいいですか?
人間だとすぐにわかるのですが。
0997デフォルトの名無しさん
2009/05/20(水) 07:03:23C/C++の宿題片付けます 126代目
http://pc12.2ch.net/test/read.cgi/tech/1242655611/
0998デフォルトの名無しさん
2009/05/20(水) 14:40:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9210.txt
課題2 だけ、lslike.c を手直しして作った。
要求は一通り満たしていると思う(複数ファイル指定も可)。
>どちらの課題も必ずプログラムの説明を書いてください。
これは書いていないのでよろしく。
0999994
2009/05/20(水) 14:55:44なんで書かないんだカス
1000デフォルトの名無しさん
2009/05/20(水) 14:57:0510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。