- 1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ]
- あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 103代目 pc11.2ch.net/test/read.cgi/tech/1200318925/
- 560 名前:555 mailto:sage [2008/03/07(金) 01:07:34 ]
- 条件の後出しですんません、船の運転手は 1 人です。
よくある問題設定なので書かなくても察してくれると思ってた・・・。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:09:32 ]
- 甘いな、そんな素直に解釈するような連中だと思うのか?w
- 562 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:16 ]
- 2艘を繋いだり外したりする時間は考慮しなくていいのか?
- 563 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:46 ]
- 「二艘繋いで動かすこともできる。』と、いうのは、1+2=3という、意味ですか、それとも、1+1=2と、いう意味ですか?
- 564 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:22:15 ]
- 一番早い船に乗って、往復して一艘ずつ曳航すればいいのかな。
int required_time(int* t, int n) { if(n<=0) return 0; else if(n==1) return *t; else return std::accumulate(t, t+n, 0) + *min_element(t, t+n) * (n-1); }
- 565 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:27:01 ]
- 最後のところ訂正
else return std::accumulate(t, t+n, 0) + *std::min_element(t, t+n) * (n-2);
- 566 名前:555 mailto:sage [2008/03/07(金) 01:28:44 ]
- >>565
船の速さが 1 2 5 10 のとき、その解法だと 19 になりますが 最適解は 17 です({1,2}, {1}, {5,10}, {2}, {1,2})
- 567 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:35:27 ]
- それ以前に19になるか?
- 568 名前:555 mailto:sage [2008/03/07(金) 01:44:05 ]
- 実行して気づきました。問題文が不十分だったんですね。
> 遅い船の時間だけかかってしまう。 は、遅い船のスピードに支配される、という意味で使っていました。 ああ、もうぼろぼろ・・・
- 569 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:37:08 ]
- キニスルナ(・∀・)
春休み中はスレも停滞するし、暇つぶしの問題は歓迎だろ。 ただ、2つの場所を種々の条件で移動する問題はなぞなぞの要素が強いと思われ。
- 570 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:54:01 ]
- 作業系の問題よりは暇つぶしにはいいんじゃねーの?
まあ俺はわからんけど
- 571 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:10:30 ]
- 個別の数値が決まってる奴はこの手のなぞなぞの定番だけど、一般化は考えたことなかったな。
少し考えてみようか。 解けない気がするけどw
- 572 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:47:35 ]
- 若干強引だけどこれでいけるか?
int required_time(int* t, int n) { int t_temp; switch(n){ case 1: return t[0]; case 2: return t[1]; case 3: return t[0] + t[1] + t[2]; case 4: return t[0] + 3 * t[1] + t[3]; default: t_temp = 2 * t[0] + 3 * t[1] + t[n-1]; t[1] = t[0]; return temp_t + required_time(t + 1, n - 3); } }
- 573 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:59:42 ]
- >>572
なんかちがわね? t[] = {1,3,4,4} のとき そのプログラムだと 1 + 3*3 + 4 = 14 だけど (1,3)->, <-(1), (1,4)->, <-(1), (1,4)-> で13 になるよ
- 574 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:43:47 ]
- >>555
また、お前か
- 575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:34:16 ]
- >>555
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6128.txt 総当りでやってみた。100万艘とかは無理w でもいろいろやってみると、以下が鉄則のようにみえる。 一、速い二艘を往復に使うべし 一、遅い方の船から二艘ずつを組にして渡るべし
- 576 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:08:31 ]
- [1] 授業単元:プログラミング演習
[2] 問題文:データ構造スタックを用いた逆ポーランド電卓の作成 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc32 [3.3] 言語: C [4] 期限: 3月中 初心者です 四則演算が行える電卓を作りたいのですが、よろしくお願いします。
- 577 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 11:12:29 ]
- 宿題ではないのですが
[1] 授業単元:n/a [2] 問題文(含コード&リンク):n/a [3] 環境 [3.1] OS: (WindowsXPproSP2) [3.2] コンパイラ名とバージョン: (bccフリー版最新) [3.3] 言語: (どちらでも可) [4] 期限: (無期限) [5] その他の制限: () 基本的なノリは成分分析やバーコードバトラーです。 ・任意の文字列(桁数固定表記の数値がメイン)を任意のリスト(*)に基づいて一字ごとに点数化し、その和を返すプログラム。 ・a.txtファイル内に一行毎に一個の文字列を記録した文字列を、上記で丸ごと処理しc.txtファイル(**)として返すプログラム。 リスト自体は別個に独立したb.txtファイルで。 * リストの書式は丸投げですが、二軸マトリックス(x軸…対象文字列内の位置、y軸…対象となる文字の内容)でお願いします。 ** 点数が一行に一個ずつ並んでるだけです。 cd実行後のコマンドは"enscore a.txt b.txt c.txt"みたいな感じで。 例:"14159265358979323846"を点数化したい場合 x(左からA〜T),y(上から0〜10)。尚、y=10は数字以外の場合に適用されます、だから大小区別の英数字ならy=0〜62になります。 以下、該当部分が()で括られています。 {y=0|8,56,88,114,100,88,67,10,12,116,107,18,126,60,92,42,44,3,41,73} {y=1|(124),56,(46),41,81,15,126,95,86,17,105,80,126,71,35,5,107,109,118,15} {y=2|122,61,19,107,96,(50),128,96,64,46,6,18,73,69,44,(69),33,83,8,27} {y=3|84,57,100,128,38,88,86,52,(110),7,42,43,23,101,(47),45,(1),81,6,99} {y=4|3,(116),77,62,88,45,32,1,17,101,59,20,27,26,69,18,41,81,(24),107} {y=5|25,17,13,(2),108,120,7,(98),123,(65),121,122,116,91,40,109,70,13,73,23} {y=6|2,19,7,44,91,121,(88),10,58,98,123,109,119,93,88,40,88,99,112,(33)} {y=7|72,83,32,66,88,86,63,104,27,2,106,84,(7),9,73,18,0,64,6,118} {y=8|51,75,79,16,102,98,78,51,48,31,(118),36,110,47,12,68,98,(17),106,80} {y=9|68,109,114,49,(53),70,84,9,62,67,1,(44),80,(117),0,79,16,84,66,56} {y=10|60,34,105,58,73,99,110,127,9,61,115,23,45,60,39,80,36,3,14,101} 124+116+46+2+53+50+88+98+110+65+118+44+7+117+47+69+1+17+24+33} =1229
- 578 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 15:58:16 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 0001.jpg 0002.jpg 0003.jpg ....というファイルを順に読み込み、 動画として表示するアプリケーションを作成せよ。 問題文全文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6131.txt [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C++ [4] 期限:[2008年3月15日まで] [5] その他の制限: FLTKを使用する。 映像を直接扱うクラスやライブラリは使わない。(e.g., mpegs) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6132.txt 上は、自分でやったとこまでです。初心者なので訳が分からなくなってます。 あと、問題文が英語で本当にすみません。
- 579 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 16:55:37 ]
- >>577
Cで作ってみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6133.txt
- 580 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:11:36 ]
- >>579
ありがとう、夜勤から帰ったらためしてみる。まずは取り急ぎ
- 581 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:57:24 ]
- >>576
当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6134.txt K&R2 4.3 よりも無駄に長く汚くなってしまいました。とりあえず、そっちを読んでください。
- 582 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:55:05 ]
- >>581
バグがありました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6135.txt
- 583 名前:577 mailto:sage [2008/03/11(火) 11:25:18 ]
- >>579
折角作って頂いたのに本当に申し訳ないんだが、enscoreコマンド実行時にリストの中身と計算過程の表示を省くには何処を削ればいいんでしょう? 処理個数が多くなりそうなので…。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:40:59 ]
- >>583
あれ?リストの中身表示、計算過程って表示されちゃってる? #define DEBUG ってなってなければ、表示されない(プログラムの実行コードに含まれない)はずなんだけど・・・ コンパイラによってデフォルトで DEBUG ついちゃうのかな? まぁ、#ifdef DEBUG 〜 #endif の間を削除しちゃえばいいさぁ〜
- 585 名前:デフォルトの名無しさん [2008/03/12(水) 11:51:16 ]
- 宿題じゃないいんですけれども
[1] 授業単元:独学 [2] 問題文(含コード&リンク):stl [3] 環境 [3.1] OS: ubuntu [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: c++ [4] 期限: (無期限) [5] その他の制限: stlの使い方について質問です。今リストの中に1,2,4,8,16,32,64 と入っているんですが、"erase" を使って5番目の数字を削除して中身を表示し、 その後に3番目の数字を削除して表示。 そして、"insert"を使って3番目と4番目の 数字の間に7を入れて表示という感じにするにはどうしたらいいんですか? #include <iostream> #include <iterator> #include <list> using namespace std; int main(){ list<int> mylist; for(int i=1; i<=64; i *= 2) mylist.push_back(i); cout<<endl; list<int>::const_iterator itr1; for(itr1 = mylist.begin(); itr1 != mylist.end(); itr1++) cout<< *(itr1)<<" "; return 0; }
- 586 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 13:18:17 ]
- >>585
スレ違い。 初心者歓迎スレでもSTLスレでもお好きな方ヘどうぞ。
- 587 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:15:41 ]
- あー・・・春だなぁ。5〜6月までは、あんまりネタがないのかなぁ。
- 588 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:20:40 ]
- 今のうちに、C/C++とかアルゴリズムを勉強しておくといいんじゃね。
Structure and Interpretation of Computer Programs (SICP)辺りを読むのも良いかもな
- 589 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:58:40 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):約分を行う関数を作成せよ。 ただし、分子と分母をメンバとする構造体を用いて、分数を表す。 構造体タグには、typedefによってBUNSUという名前をつけて使用する。 [3] 環境 [3.1] OS:WindowsXP SP2 [3.2] コンパイラ名とバージョン:Developer studio [3.3] 言語:C++ [4] 期限:無制限 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6136.txt *1〜2の、約分処理と関数の呼び出し方がわかりません。 もしよければお願いします。
- 590 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 17:07:56 ]
- >構造体タグには、typedefによってBUNSUという名前をつけて使用する。
は? C++に構造体タグなんてありませんが。構造体名自体が型として使えるので、typedefする必要もありませんが。
- 591 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 18:21:48 ]
- どっちかといえば期限無制限に突っ込むべきだろ
- 592 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:20:13 ]
- 俺の半分は優しさで出来ています
#include<stdio.h> typedef struct bunsu{ int bunshi; int bunbo; } BUNSU; int getgcd(int m, int n){ while(m*n){ if(m>n) m%=n; else n%=m; } return m+n; } void yakubun_p(BUNSU *x){ int gcd; gcd = getgcd(x->bunshi, x->bunbo); x->bunshi /= gcd; x->bunbo /= gcd; } int main(void){ BUNSU a; printf("分子?"); scanf("%d", &a.bunshi); printf("分母?"); scanf("%d", &a.bunbo); printf("%d / %d = ", a.bunshi, a.bunbo); yakubun_p(&a); printf("%d / %d\n", a.bunshi, a.bunbo); return 0; }
- 593 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:31:46 ]
- >>592
ありがとうございました。 C言語をはじめたばかりですが、がんばっていこうと思います!
- 594 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:54:42 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): VisualC++を使用して「はさみ将棋」を作成せよ。 テクスト、授業で配布したプリントのほかにも、自分で参考となる資料を集めて利用しても構わない。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C++ [4] 期限: 2008年3月28日まで [5] その他の制限:特になし。ただ、出来るだけ平易な文で作っていただけると助かります。
- 595 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:15:00 ]
- てst
- 596 名前:541 mailto:sage [2008/03/14(金) 01:59:06 ]
- [1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):ls -lの加え-a、-w、-F結果が表示出来るようにしなさい [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語: C [4] 期限:2008年3月17日まで kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6140.c 前回は助けて頂きありがとうございました。 ↑自力でここまで作ってみたのですが、-a、-wなどの部分を作成がまったく見当がつきません。 助けて頂けるとありがたいです、よろしくお願いします。
- 597 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:50:33 ]
- >>593
ちょっと待て。 > [3.3] 言語:C++ >C言語をはじめたばかりですが、がんばっていこうと思います! おまいさんは、何語を習っているのかさえ判っていなかったのか?
- 598 名前: ◆nUWYoBn0RQ [2008/03/14(金) 16:48:25 ]
- 助けてください。
課題で c言語の文字列ソートで char * month[]={"january" ,"february", "march","april","may","june","july"} をアルファベット順にソートかつ大文字に変えて表示するやり方 がわかりません。 教えてください。今日までなので時間がありません。 お願いします
- 599 名前:サッカー [2008/03/14(金) 17:09:48 ]
- 1] 授業単元:プログラミング
[2] 問題文 :c言語の文字列ソートで char * month[]={"january" ,"february", "march","april","may","june","july"} をアルファベット順にソートかつ大文字に変えて表示しろ。 [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: 2008年3月15日まで 助けてください。 やり方が全くわかりません。 教えてください。 お願いします
- 600 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:43:58 ]
- >>599
ほいよ #include<stdio.h> #include<stdlib.h> #include<string.h> int cmp(const void*a,const void*b){return strcmp(a,b);} int main(void){ char * month[]={"january" ,"february", "march","april","may","june","july"}; const int N = sizeof month / sizeof * month; int i; qsort(month , N , sizeof * month , cmp); for(i=0;i<N;++i){ const char*it; for(it=month[i];*it;++it)putchar(toupper(*it)); puts(""); } return 0; }
- 601 名前:600 mailto:sage [2008/03/14(金) 17:46:38 ]
- わりい一行バグってた。cmpを置き換えてくれ
int cmp(const void*a,const void*b){return strcmp(*(char**)a,*(char**)b);}
- 602 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:50:09 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 1、,学籍番号と名前と年齢からなる構造体「学生」を定義して、以下の二人の「学生」を 作りなさい。 ・学籍番号1番、「青木三郎」20歳 ・学籍番号2番、「加藤武雄」21歳 2,「学生」の学籍番号、名前、年齢を設定する関数を作り、1の問題を行いなさい。 [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++ [3.3] 言語: (C/C++/どちらでも可 のいずれか) C++ [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) できるだけ早く [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) クラスの作り方がよくわかりません。 よろしくお願いします。
- 603 名前:サッカー [2008/03/14(金) 17:53:30 ]
- マジ天才です。
助かりました。 ありがとうございます。
- 604 名前: ◆zCS1o.kilU [2008/03/14(金) 18:17:37 ]
- 1] 授業単元:プログラミング
[2] 問題文 :mystrlen関数作成せよ。プロトタイプはint mystrlen (char*); またmain関数からmystrlen関数を呼び出し自分の名前の長さを求め なさい。 実行例「 ”山田太郎”は0008バイトです 」 [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] strlen関数使用禁止 お願いします。
- 605 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:16 ]
- >>604
好きなんどーぞ int mystrlen(char*p){ return strcspn(p,""); } int mystrlen(char*p){ return (char*)memchr(p,0,-1) - p; } int mystrlen(char*p){ return strchr(p,0) - p; }
- 606 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:23 ]
- >>602
struct Gakusei { int num; char* name; int age; void set(int _num, char* _name, int _age) { num = _num; name = _name; age = _age; } }; int main() { // 1 Gakusei g1 = {1, "青山三郎", 20}; Gakusei g2 = {2, "加藤武雄", 21}; // 2 g1.set(1, "青山三郎", 20); g2.set(2, "加藤武雄", 21); }
- 607 名前: ◆zCS1o.kilU [2008/03/14(金) 18:40:28 ]
- ありがとうございます。
もうひとつだけお願いがあります。1] 授業単元:プログラミング [2] 問題文 :キーボードから西暦と月を入力するとカレンダーを 表示するプログラムを作成せよ [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] scanf使用不可. fgetsでお願いします。 お願いします
- 608 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:44:19 ]
- >>604
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4 です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6142.txt
- 609 名前: ◆zCS1o.kilU [2008/03/14(金) 19:03:27 ]
- そうなんですか。
ありがとうございます。
- 610 名前: ◆TJ9qoWuqvA [2008/03/14(金) 19:55:04 ]
- 教えてください。
わからないよ〜。 最後にこれができないと 単位がもらえないよ。
- 611 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:06:27 ]
- >>610
お前が誰だかわからないよ
- 612 名前:607 [2008/03/14(金) 20:21:56 ]
- 607
です。ありがとうございます。 もうひとつだけお願いがあります。1] 授業単元:プログラミング [2] 問題文 :キーボードから西暦と月を入力するとカレンダーを 表示するプログラムを作成せよ [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: できるだけ早くお願いします。 [5] scanf使用不可. fgetsでお願いします。 お願いします
- 613 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:20:32 ]
- >>607
>>612 当方で確認した環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6143.txt
- 614 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:21:48 ]
- [1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):データ構造・スタックの作成 [3] 環境 [3.1] OS: windows vista [3.2] コンパイラ名とバージョン: bcc32 [3.3] 言語: C [4] 期限: できるだけ早く www2.uploda.org/uporg1305086.txt ↑スタックとして、これを使用したいと思います。 しかし、整数しか扱えず、浮動小数点数のプッシュが行えません。 関数の返却値をdouble型に変更してみたり、確保する型の変更など 試してみましたが、うまくいきませんでした。 浮動小数点数を扱える様に変更をよろしくおねがいします。
- 615 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:25:22 ]
- ksk
- 616 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:39:38 ]
- >>614
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6144.txt
- 617 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:47:22 ]
- >>616
614です。 ありがとうございます。 実行してみたところ、一か所エラーがでてしまいました。13行目ですが、 エラー E2034 13: 'void *' 型は 'double *' 型に変換できない(関数 StackAlloc(Stack *,int) ) 処理系の違いによるものでしょうか。 何か対策がありましたら教えて頂けると助かります。
- 618 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:49:54 ]
- >>617
元のファイルもコンパイルできなかったのかな?
- 619 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:50:46 ]
- >>617
if ((s->stk = (double *)calloc(max, sizeof(double))) == NULL) { でどうでしょうか?
- 620 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:59:48 ]
- 614です。
>>618 614のファイルでは、整数のみ扱える状態でコンパイル、実行が行えました。 >>619 実行できました。ありがとうございます。 本当に助かりました。 このスタックを用いてプログラムの作成を行うのですが、 また解らないことがありましたら、質問させていただけたらと思いますので その際はよろしくお願いいたします。
- 621 名前:デフォルトの名無しさん [2008/03/14(金) 23:08:12 ]
- >>617
C++としてコンパイルしているだろ?
- 622 名前:607 [2008/03/14(金) 23:21:48 ]
- 613さんありがとうございます。たすかりました。
- 623 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:33:12 ]
- 614です。
>>617 拡張子を.cpp としてコンパイルしていました。 Cでコンパイルしたところ動きました。 ご指摘ありがとうございます。今後気を付けます。 >>619 訂正していただいたのにすみませんでした。 言語をCとせずにコンパイルしていたのが原因でした。 616が動作することも確認できました。 ありがとうございました。
- 624 名前:616 mailto:sage [2008/03/15(土) 05:59:16 ]
- >>620
該当行は double のときは、calloc() -> malloc() に訂正しておいてください。
- 625 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 07:40:55 ]
- >>596
後半だれてたから、読みづらいソースになってるかもしんないけど、 一応できたからうp。参考程度にどうぞ (間違ってたらごめんね) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6145.txt
- 626 名前:デフォルトの名無しさん [2008/03/15(土) 09:00:05 ]
- 英文字A-Zに対して、異なる二つの文字ごとに得点が与えられているとします
最も得点が高くなる文字列を求めたい 例えば3文字で次のように得点が与えられていれば AB 1 AC 5 BA 2 BC 3 CA 10 CB 1 BCA の得点13が最高得点
- 627 名前:デフォルトの名無しさん [2008/03/15(土) 09:02:50 ]
- 英字(26文字)を、1-1000までの数字に置き換えても求められるプログラムがよいです
計算量が増えますから、総当たりが難しいです
- 628 名前:626 [2008/03/15(土) 09:17:13 ]
- 巡回セールスマンで最短を最長に変えたものと同じですね
距離をマイナス倍すれば(例えば10から引く)巡回セールスマンと一致しますね
- 629 名前:デフォルトの名無しさん [2008/03/15(土) 09:29:21 ]
- でももとの位置へ戻ってこなくて良いところが違いますが・・・
レンタカーやタクシーで巡回するようなものです
- 630 名前:541 mailto:sage [2008/03/15(土) 10:48:04 ]
- >>625
ありがとうございます。 参考にさせて頂きます。
- 631 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:06:09 ]
- >>626
同じ点(文字)を二度以上通ってもいいですか? もし、いいなら単純な動的計画法が適用できる気が。
- 632 名前:デフォルトの名無しさん [2008/03/15(土) 11:13:59 ]
- >>631
おなじ文字を何度も使ったら値は無限に増えます ACACACACA・・・・とか 一度だけの並べ替えにしてください
- 633 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:17:26 ]
- >>632
ACA で終わりじゃないの?
- 634 名前:デフォルトの名無しさん [2008/03/15(土) 11:21:06 ]
- 一度だけの使用で、最も高得点になるものを求めたいです
文字は全て使わなくても良いですが、全部使った方が高得点になります
- 635 名前:626 [2008/03/15(土) 11:35:08 ]
- すみません 設定を間違えました 出直してきます
- 636 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:01:14 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):英和辞書を作成せよ。 辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。 以下これをリストという。 次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく) (1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。 (2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。 (3)修正:リストのデータを修正する。 (4)削除:リストより任意の単語を削除する。 (5)保存:リストをファイルに保存する。 (6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、 保存せず終了して良いか確認する処理を行う。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:3月中 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6146.txt お願いします。
- 637 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:01:11 ]
- >>634
>文字は全て使わなくても良いですが、全部使った方が高得点になります それは得点配分しだいじゃないか?
- 638 名前:デフォルトの名無しさん [2008/03/15(土) 20:00:13 ]
- >>636
STLのmapをCに移植すればいいんじゃね?
- 639 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:03:22 ]
- リスト構造で実現しろって言ってるのに。
- 640 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:08:23 ]
- >>639は出世しないタイプ
- 641 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:29:04 ]
- >>638
これがマリー・アントワネットの力か……
- 642 名前:デフォルトの名無しさん [2008/03/15(土) 21:14:11 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 標準入力からファイル名を受け取り、ファイル内容を以下のように要素毎に整列し出力せよ 入力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6147.txt 出力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6148.txt [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc3.4 [3.3] 言語:C [4] 期限:3月20日 [5] その他の制限: 入力するファイルの行数は1000行以内とする 「Perlの方が楽かもねぇ」と言われてもどっちもわからず・・・
- 643 名前:デフォルトの名無しさん [2008/03/16(日) 05:45:48 ]
- >>642
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6149.c
- 644 名前:642 mailto:sage [2008/03/16(日) 06:50:08 ]
- >>643
6日かけてもロクにできなかったのに・・・ありがとうございます ソース内容理解して説明できるよう頑張ります
- 645 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:29:30 ]
- >>594
取り合えず動く程度の簡易なもの(非VC++)。 ルールはググって上2つぐらいをざっと見ただけなんでもしかしたら間違ってるかも。 役に立つか分かりませんが参考程度にどうぞ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6150.txt
- 646 名前:594 mailto:sage [2008/03/16(日) 15:41:04 ]
- >>645
本当にありがとうございます、助かりました。 参考にさせていただきます。
- 647 名前:sage [2008/03/16(日) 18:04:32 ]
- [1] 授業単元:プログラミング
[2] 問題文 :入力した西暦が閏年かどうか出力せよ 閏年:4年に一度であり、100年に一度ではなく、400年に一度である [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: なるべく早く よろしくお願いします
- 648 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:23:04 ]
- >>647
#include <stdio.h> int is_leap_year(int year) { return (year%400==0) || ((year%100!=0)&&(year%4==0)); } int main() { int year; printf("西暦:"); scanf("%d", &year); printf("%d年は%sです。\n", year, is_leap_year(year) ? "閏年" : "平年"); return 0; }
- 649 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:27:02 ]
- >>647
>[4] 期限: なるべく早く Cより先に、この変な言葉を直すよう日本語を学べ。 #include <stdio.h> int main(void) { int d; char* toshi[] = {"平", "閏"}; scanf("%d", &d); printf("%s年\n",toshi[!(d&3)-!(d%100)+!(d%400)]); return 0; }
- 650 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 18:28:39 ]
- ×char* toshi[]
○static const char * const toshi[]
- 651 名前:636 mailto:sage [2008/03/16(日) 18:57:42 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):英和辞書を作成せよ。 辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。 以下これをリストという。 次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく) (1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。 (2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。 (3)修正:リストのデータを修正する。 (4)削除:リストより任意の単語を削除する。 (5)保存:リストをファイルに保存する。 (6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、 保存せず終了して良いか確認する処理を行う。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:3月中 [5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6151.txt 1〜6の「」のに入っている処理の仕方がわかりません。 お願いします!
- 652 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:55:52 ]
- >>636
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6153.txt 651より以前から作ったので適当に変えた箇所がある。
- 653 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 00:54:00 ]
- >>650
>>649のままで良いんじゃね?こんな所で質問するような奴が staticだconstを使ったら変に思われちまう。
- 654 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 06:18:05 ]
- というか、そろそろうるう年の条件式を、効率の良いものにしない?
最初に y%4 == 0 で条件に合わないものはそれ以降は比較しないと。 それが通ったら y%100 != 0 || y%400 == 0 にすると。
- 655 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 08:53:34 ]
- >>654
A || B はAが真ならBは評価されない。 A && B はAが偽ならBは評価されない。 Bの位置に関数呼び出しを入れたりするとA次第で実行されない、というのはよくバグの原因になる。
- 656 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 08:53:55 ]
- [1] 授業単元:プログラミング
[2] 問題文 :英小文字をgetsで標準入力より配列テーブルへ入力する 入力されたデータの個数と共に配列の先頭アドレスを関数 英大文字変換に渡す 英大文字に変換されたデータをprintfで標準出力に出力する ただし、入力するデータの個数は最大10個までとする 入力のときの表示は「str=」、出力のときの表示は「STR=XXX....X」とする [3] 環境 [3.1] OS: windowsxp [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C言語 [4] 期限: 今日のお昼頃 よろしくお願い致します
- 657 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:14:10 ]
- >>656
#include <stdio.h> void capital_letter(char *str, int num); int main(void) { char str[10]; printf("str="); gets(str); // fgets(str, sizeof(str), stdin); にしたいところ capital_letter(str, sizeof(str)); printf("STR=%s",str); return 0; } void capital_letter(char *str, int num) { int i; for(i = 0; i < num; i++) { if('a' <= str[i] && 'z' >= str[i]) { str[i] += 'A' - 'a'; } } }
- 658 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:15:36 ]
- >>655
だから何?閏年の条件式になんでそんな無意味な突込みを??? Bの位置に関数呼び出しをするような条件式じゃないからw
- 659 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:20:20 ]
- >>658
>>654が言うような最適化はすでにされてるって意味なんだが。
- 660 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 09:21:57 ]
- >>659
はぁ?ちゃんと読め。それから、数多く繰り返し実行をしてみろ。 明らかに4の倍数以外を400で割り切れるかまで条件判定しなくても済むから 処理時間に差が出ているんだが?
|

|