- 1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ]
- あなたが解けない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++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1193150915/
- 404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:36:44 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): ライブラリ関数atofと同じ動作を行う関数 double strtof(const char *nptr) {/*・・・*/} を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] gcc3.4 [3.3] C言語 [4] 11/15まで お願いします
- 405 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:43:07 ]
- #include<stdio.h>
#include<stdlib.h> double strtof_ (const char *nptr) { return strtod_ (nptr, (char **) NULL); }
- 406 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:44:11 ]
- 間違えた。
ていうか衝突するからstrtofって名前使わないほうがいいと思う。 #include<stdio.h> #include<stdlib.h> double strtof_ (const char *nptr) { return strtod (nptr, (char **) NULL); }
- 407 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:52:40 ]
- >>406
すいません、条件を書き忘れました 申し訳ありません 標準ライブラリ関数を使わないでお願いします
- 408 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:52:52 ]
- >>404
double strtof(const char *nptr) { double ret = 0, div = 10, f = 1; if(*nptr=='-') { f = -1; nptr++; } else if(*nptr=='+') nptr++; while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0'; if(*nptr++!='.') return f * ret; while('0' <= *nptr && *nptr <= '9') { ret += (*nptr++ - '0') / div; div *= 10; } return ret * f; }
- 409 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:35:54 ]
- double strtof(const char *nptr)
{ const char *p; int s, n, d; s = 1; n = 0; d = 0; for (p = nptr; *p != '\0'; p++) if (*p == '+' || *p == '-') { if (p != nptr) break; if (*p == '-') s = -1; } else if (*p == '.') d = 1; else if (*p >= '0' && *p <= '9') { n = n * 10 + *p - '0'; d = d * 10; } else break; if (d == 0) d = 1; return (double)s * (double)n / (double)d; }
- 410 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:44:32 ]
- >>408>>409
つ[EBCDIC]
- 411 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 03:48:22 ]
- EBCDICは0〜9の並びについては保証されてるよ
アルファベットがいけない
- 412 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:06:07 ]
- >>397
これ厳密解じゃないよ しかもnodeを30とかにすると解くのに時間かかりすぎ やり直してきたほうがいいのでは?
- 413 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 07:54:05 ]
- 再帰じゃそんなもんざます
- 414 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 08:19:37 ]
- >>409
いろいろとひどいな
- 415 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:14:07 ]
- [1] 授業単元: プログラム演習
[2] 問題文: ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] 言語: C [4] 期限: 11月13日24時まで [5] その他の制限: 特にありません お願いします。
- 416 名前:デフォルトの名無しさん [2007/11/13(火) 16:25:41 ]
- 学校からのカキコミです。
わからないので教えてください。 課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい >kadai25 いくつまで合計しますか> 10 /*10と入力 合計は55 ↑こうしたいのですが、よろしくお願いします。 ちなみにscanfとforを使うみたいです
- 417 名前:デフォルトの名無しさん [2007/11/13(火) 16:29:14 ]
- 351さん、そうです。 そのやり方がよくわからないのです。
- 418 名前:デフォルトの名無しさん [2007/11/13(火) 16:44:09 ]
- [1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞 は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新 聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C/C++ [4] 期限: 11月18日 [5] その他の制限:なし よろしくお願いします。
- 419 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:44:33 ]
- >>415
勝手にテンプレ省略すんなハゲ
- 420 名前:こまった [2007/11/13(火) 17:08:34 ]
- 初歩の初歩の質問で本当にごめんなさい。
まったくわからなくって本当にこまってます。 問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。 例:%a.out 5+8 5+8=13 式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。 すみません。
- 421 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:13:54 ]
- お前の質問も全くわからん
- 422 名前:こまった [2007/11/13(火) 17:22:26 ]
- 式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング
なんですけど(;△;) どうしたらよいのでしょう。
- 423 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:56:16 ]
- >>422
とりあえずがんばってみたら? だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ
- 424 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:02:44 ]
- mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか
わかりません・・・
- 425 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:05:28 ]
- >>424
普通の型と同じでおk
- 426 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:09:39 ]
- >>425
例えばDATAっていうクラスがあったとしたら map<key,DATA>でいいってことですか?
- 427 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:40:02 ]
- [1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]できれば今日中 [5] 配列
- 428 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:45:57 ]
- 【質問テンプレ】
[1] 授業単元:プログラミング演習1 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5256.txt [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月20日 [5] その他の制限:if文、if-else文、switch文まで習いました
- 429 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:00:14 ]
- >>426
その通り ついでにスレ違い
- 430 名前:デフォルトの名無しさん [2007/11/13(火) 21:33:40 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、 直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。 この数列のi番目の項を計算する関数は、 以下のように再帰的に記述することができる。 f(i) = f(i-1) + f(i-2) (i > 1のとき) f(i) = 1 (i = 1のとき) f(i) = 0 (i = 0のとき) キーボードから数字を入力して変数aに格納し、 フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。 項の計算は上の定義を使い、 再帰的な呼び出しを実行する関数 int F(int n) を作成して呼び出すこと。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
- 431 名前:デフォルトの名無しさん [2007/11/13(火) 21:35:17 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を 2進数に変換して画面に出力するコードを作成しなさい。 また,キーボードから入力した2進数の数値を 10進数に変換して画面に出力するコードを作成しなさい。 また、必要に応じて再帰を使っても使わなくてもよい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
- 432 名前:380 mailto:sage [2007/11/13(火) 21:35:40 ]
- >>380です。単位かかってるレポなんでどなたかお願いします。
- 433 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:35:40 ]
- >>428
if(a==0) { if(b==0) { if(c==0) printf("It is trivial!\n"); else printf("Boo-boo!\n"); } else { x1 = -c / b; printf("x=%.2f\n", x1); } } else { D = b * b - 4 * a * c; if(D >0) { x1 = (-b+sqrt(D)) / (2 * a); x2 = (-b-sqrt(D)) / (2 * a); printf("x=%.2f,%.2f\n", x1, x2); } else if(D==0) { x1 = -b / (2 * a); printf("x=%.2f\n", x1); } else printf("There exist no real-valued solutions.\n"); } return 0; }
- 434 名前:デフォルトの名無しさん [2007/11/13(火) 21:36:01 ]
- [1] 授業単元: C言語
[2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。 キーボードから円盤の枚数を入力し、 円盤を移動する手順を画面に表示すること。 ・円盤は小さい物から順に1から番号で示す ・柱はL・C・Rで示し、円盤全体をLからRへ移すとする ・可能ならば手順の回数も表示すること 【実行結果(枚数を3と入力した場合)】 円盤枚数を入力 3 円盤1をL→Rへ移す 円盤2をL→Cへ移す 円盤1をR→Cへ移す 円盤3をL→Rへ移す 円盤1をC→Lへ移す 円盤2をC→Rへ移す 円盤1をL→Rへ移す (終了) [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/15まで [5] その他の制限: #defineはなしで
- 435 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:42:19 ]
- >>433
ありがとうございました。
- 436 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:49:56 ]
- >>434
Hanoiだし再帰使っていいよね? #include<stdio.h> void hanoi(int L,int C,int R,int n){ if(n==0)return; hanoi(L,R,C,n-1); printf("円盤%dを%c→%cへ移す\n",n,L,R); hanoi(C,L,R,n-1); } main(){ int n; printf("円盤枚数を入力"); scanf("%d",&n); hanoi('L','C','R',n); printf("手順の回数 %d\n",~(~0<<n)); }
- 437 名前:shin [2007/11/13(火) 21:54:59 ]
- [1]授業単元: 関数入門
[2]問題文: 100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。 5段階評価は、100〜90までは5、89〜80は4、79〜70は3、69〜60は2、60未満は1とする。 この関数を利用して、学生10人の試験の点数を入力して、 それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。 [3]環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4]期限: 2007年11月14日 17:00 まで [5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;) よろしくおねがいします!
- 438 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:46 ]
- ウィルスつくってください
anonm4@yahoo.co.jp
- 439 名前:デフォルトの名無しさん [2007/11/13(火) 22:18:09 ]
- [1] 授業単元:プログラミング、関数基礎
[2] 問題文(含コード&リンク): メイン関数において、2つの放物線 y=ax2+bx+c y=px2+qx+r の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。 関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場 合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が 有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数 から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個 存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限: 2007年11月19日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) C言語の基礎しか習っていません。 どなたかよろしくお願いします。
- 440 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:23:38 ]
- >>430
#include <stdio.h> int F(int n) { if(n==0) return 0; else if(n==1) return 1; else return F(n-1) + F(n-2); } main() { int a,x; printf("数字を入力:"); scanf("%d",&a); x = F(a); printf("フィボナッチ数列第%d項 = %d\n",a,x); return; }
- 441 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:35:55 ]
- >>440
それだと末尾最適化されないはず こっちで #include<stdio.h> #include<stdlib.h> typedef unsigned int uint; uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); } uint fibonacci(uint n) { return iter(1,1,n); } int main(void) { size_t idx = 0; for( ; idx != 10; ++idx) printf("%d: %d\n",idx,fibonacci(idx)); return EXIT_SUCCESS; }
- 442 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:37:18 ]
- すまん。大元の問題読んでなかった。
>>440でいいね。
- 443 名前:46 mailto:sage [2007/11/13(火) 22:46:48 ]
- どなたか>>46をお願いします
- 444 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:53:23 ]
- >>443
使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。 で、もしできたら答える。
- 445 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:59:41 ]
- >>444
意味わからん。
- 446 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:10:15 ]
- >>444
とりあえずforkをぐぐるところから始めるといいと思うよ
- 447 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:16:14 ]
- >>443, >>444
そんなおまいらに、 ttp://www.ipa.go.jp/security/awareness/vendor/programming/b07_04_main.html
- 448 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:28:57 ]
- 当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。
プログラムを起動すると、名前と点数を聞いてきます。 10人分入力すると、名前と評価(level)を表示します。 入力した名前が 1024 文字以上だと、バグります。ごめんなさい。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5257.txt
- 449 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:30:46 ]
- >>448 → >>437
- 450 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:18 ]
- >>448
何も考えずに string を勧める
- 451 名前:shin [2007/11/13(火) 23:47:58 ]
- >>448
ありがとうございます!!!
- 452 名前:shin [2007/11/13(火) 23:54:22 ]
- >>437です
自力でやったのですが、 エラーを消すためにいろいろとしていたらよくわからなくなりました.. 誰かなおしてください… お願いします!
- 453 名前:shin [2007/11/13(火) 23:59:48 ]
- #include <iostream.h>
#include <iomanip.h> int hyouka( int ) ; // 5段階評価する関数 main() { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i, result ; for( i=0 ; i<x ; i++){ cout << i+1 << "人目の成績 >>> " ; cin >> a[i] ; result = hyouka( a[x] ) ; } return 0 ; }
- 454 名前:shin [2007/11/14(水) 00:00:28 ]
- // 関数hyouka
int x ; int hyouka(int a[x]) { int x ; int b[x] ; //1〜5の成績 if(90<=a[i]){ b = 5 ; }else if (80<=a[i]){ b = 4 ; }else if (70<=a[i]){ b = 3 ; }else if (60<=a[i]){ b = 2 ; }else{ b = 1 ; } }
- 455 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:12 ]
- 面白い
- 456 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:42 ]
- エラー直して欲しいだけならエラーメッセージ見たら大体分かるだろ。
- 457 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:30:00 ]
- >>437 (>>452)
#include <iostream> #include <iomanip> int hyouka( int ) ; // 5段階評価する関数 int main(void) { const int x = 10 ; // 入力できる人数 int a[x] ; // テストの点数 int b[x] ; // 1〜5の成績 int i ; for( i=0 ; i<x ; i++){ std::cout << i+1 << "人目の成績 >>> " ; std::cin >> a[i] ; b[i] = hyouka( a[i] ) ; } std::cout << "番号:点数:評価" << std::endl; for( i=0 ; i<x ; i++) std::cout << std::setw(4) << i + 1 << ':' << std::setw(4) << a[i] << ':' << std::setw(4) << b[i] << std::endl; return 0 ; }
- 458 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:31:25 ]
- 承前
int hyouka(int a) { if(90<=a){ return 5 ; }else if (80<=a){ return 4 ; }else if (70<=a){ return 3 ; }else if (60<=a){ return 2 ; } return 1 ; }
- 459 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:42:21 ]
- >>458
横からスマンがこういうほうが個人的に好き int hyouka(int a) { return 90 <= a ? 5 : 80 <= a ? 4 : 70 <= a ? 3 : 60 <= a ? 2 : 1; }
- 460 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:56:02 ]
- >>439
当方の環境は、WindowsXP / 処理系は cygwin(gcc 3.4.4) です。 表示は小数点3桁まで、重根の判定は幾分甘くしています。 係数が整数ならば、問題ないと思います。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5258.txt
- 461 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:59:46 ]
-
【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): ここに書きました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5255.txt [3] 環境 [3.1] OS: LINUX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C言語 [4] 期限: ([2007年11月14日24:00まで) [5] その他の制限: 書き直しました
- 462 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:05:27 ]
- >>461
自分のレス流れたから書いてるだけじゃねーかタコが 書き直すんならもっと早くやっとけよ低脳
- 463 名前:aho mailto:sage [2007/11/14(水) 01:06:43 ]
- >>461
作るの面倒だから、アルゴリズムを・・・ "s"が並ぶことはないから単純に"b"かどうかを判定すればよい。 従って、 for(省略) if(!strcmp(sdata[i].word[j], "b")) sdata[i].num++; end of for これじゃあかんのかな?
- 464 名前:458 mailto:sage [2007/11/14(水) 01:18:30 ]
- >>459
458 のは、ちょっとずぼら過ぎたね int hyouka(int a) { if (90<=a) return 5 ; if (80<=a) return 4 ; if (70<=a) return 3 ; if (60<=a) return 2 ; return 1 ; } に訂正
- 465 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:27:22 ]
- >>461
#include<stdio.h> struct tfield{ char word[5]; int num; }; int width_get(int value){ char tmp[16]; return sprintf(tmp, "%d", value); } int main(void){ struct tfield sdata[20]; const char *initial_data="bsbsbbsbsbsbsbbsbbsb"; int i, prev='b', count; for(i=0,count=0;i<20;i++){ if(prev=='b') count++; sprintf(sdata[i].word, "%*c", width_get(count), initial_data[i]); sdata[i].num=count; prev=initial_data[i]; } for(i=0;i<20;i++) printf("%s", sdata[i].word); printf("\n"); for(i=0;i<20;i++) printf("%d", sdata[i].num); printf("\n"); return 0; }
- 466 名前:461 mailto:sage [2007/11/14(水) 01:47:05 ]
- >>463
>>465 ありがとうございました。
- 467 名前:デフォルトの名無しさん [2007/11/14(水) 02:09:09 ]
- 【質問テンプレ】
[1] 授業単元: [2] 数独を解くプログラムを作れ(なるべく詳しく説明もいれて) [3] 環境 [3.1] 特に指定なし [3.2] 特に指定なし [3.3] 言語:C [4] 期限: 11月17日 [5] 特に制限はなく 単にCを使って数独をとくプログラムをかけばよいらしいのですが 難易度があがってもなるべく解けるように・・・といわれました。 どうしてもうまくいきません。 よろしくお願いします
- 468 名前:デフォルトの名無しさん [2007/11/14(水) 02:48:15 ]
- 各ブロックに、ある数字が入る可能性が1マスしかない場合
各ブロックに、ある2個の数字が入る可能性が2マスしかない場合 →それらのマスには他の数字は入らない、他のマスにはその数字は入らない 各行ごとに、ある数字が入る可能性が1つのブロックにしか残っていない場合 →そのブロックの他の行にはその数字は入らない
- 469 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 03:45:09 ]
- 数独程度だと、なまじアルゴリズムを凝るよりも安直に作った方がいい。
何故ならば、どんなに安直に作っても1秒と掛からずに解けてしまうから。 つまり、凝ったアルゴリズムを考える手間やデバッグの暇に何千問も処理できるってこった。
- 470 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 05:51:45 ]
- [1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を 求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか ったときは「なし」と印字せよ。 なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、 奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。 [3.1]Linux [3.3]C言語 [4]11月14日朝10時 [5] 配列 おねがいします
- 471 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:12:34 ]
- >>467
数独のソースはネットで探せば確実にあります まずは探しましょう
- 472 名前:cvop [2007/11/14(水) 07:41:40 ]
- プログラミング初心者ですが、
画像処理のプログラミングで、PGM画像中にある、 それぞれのオプティカルフローの角度[度]と大きさ[pixel]の 頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を 検出し、グラフにしたい(ヒストグラムみたいに)のですが、 どのようなプログラムを作れば良いのでしょうか? 分かる方がいらっしゃれば教えて頂けないでしょうか。 言語はC言語です。
- 473 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 07:58:56 ]
- スレ違い
- 474 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 09:16:19 ]
- [1] 授業単元:データ構造
[2] 問題文(含コード&リンク):edu.net.c.dendai.ac.jp/ad/1/2007/kadai.html [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:mingw-jp.bat [3.3] 言語:C++ [4] 期限:2007年12月5日20:00まで [5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等) 丸投げですがよろしくお願いします。
- 475 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:06:42 ]
- >>474
「なお、写したと思われるほど酷似したレポートが複数提出された場合、 原著がどれかの調査を行わず、抽選で一通のレポートのみを評価の対象とし」 こ れ は お も し ろ い
- 476 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:28:45 ]
- >>474
レポートも書けってこと?Wordでいいのか?
- 477 名前:デフォルトの名無しさん [2007/11/14(水) 10:46:21 ]
- [1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞 は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新 聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。 [3] 環境 [3.1] OS: Windows [3.3] 言語: C/C++ [4] 期限: 11月18日 [5] その他の制限:なし よろしくお願いします。
- 478 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 11:52:10 ]
- >>429
ありがとうございました スレ違いすみませんでした・・・
- 479 名前:デフォルトの名無しさん [2007/11/14(水) 13:10:41 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n nの平方根、およびnの立方根を求めて、以下のような数表を作成する プログラムを完成せよ。 n n*n 1/n sqrt(n) n∧(3/1) 1 1 1.00000 1.00000 1.00000 2 2 0.50000 1.41421 1.25992 == == ======= ======= ======= 25 625 0.04000 5.00000 2.92402 (課題分では===のところはくっついていて、 2乗、1/nなどのところはくっついてしまっていますが それぞれ離れています。やりかたがわかりませんでした。 大変見にくくてすみません) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限: 2007年11月14日(15日提出) [5] その他の制限: 習い始めたばかりなのでよくわかりませんが ないと思います。 宜しくお願いします。
- 480 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:10:48 ]
- >>475
ひねくれた教授なのでw >>476 プログラムだけで大丈夫です。 なるべく初歩的な文法でお願いしたいのですが…
- 481 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:06:17 ]
- >>480
教授にメールしとくわ
- 482 名前:デフォルトの名無しさん [2007/11/14(水) 14:31:30 ]
- >>467 数独はアルゴリズムは簡単で良いけど、ハッシュ表は導入した方が良いよ ちょっとやってみた
#include <iostream> using namespace std; main(){ int z,w,l=0,n,i,j,bf[8][81]; int tmp[4][3]={0,1,9, 0,9,1, 8,-1,9, 8,9,-1}; for(n=0;n<4;n++){ for(i=0;i<9;i++)for(j=0;j<9;j++){ z=tmp[n][0]+tmp[n][1]*i+tmp[n][2]*j; bf[l][z]=bf[l+1][80-z]=i+9*j;}l+=2;} int x[81],p[81],q[81];for(z=0;z<81;z++)x[z]=rand()%10; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<x[z]<<" ";} cout<<endl<<"のハッシュ値を求める。"<<endl; int num[10]; for(i=0;i<81;i++)p[i]=9; for(l=0;l<8;l++){ for(i=0;i<10;i++)num[i]=0;i=1; for(z=0;z<81;z++){ n=x[ bf[l][z] ]; if(n>0)if(num[n]==0){num[n]=i;i++;} q[z]=num[n];} for(i=0;i<81;i++)if(p[i]<q[i])goto end; else if(p[i]>q[i])break; if(i<81)for(i=0;i<81;i++)p[i]=q[i];end:} unsigned int rh[81][9],hash=0; for(z=0;z<81;z++)for(i=0;i<9;i++)rh[z][i]=(rand()<<16)+rand(); for(z=0;z<81;z++)hash^=rh[z][p[z]]; for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<p[z]<<" ";} cout<<"\nと変形され\nハッシュ値は"<<hash<<endl;}
- 483 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:35:23 ]
- www10.atwiki.jp/prospi3/pages/1.html
www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www.nurs.or.jp/~ukkari/pro-spi/index.php?%A5%BB%A1%A6%A5%EA%A1%BC%A5%B0#content_1_15 www29.atwiki.jp/purosupi4/ www.geocities.jp/agepan1230/
- 484 名前:デフォルトの名無しさん [2007/11/14(水) 14:37:14 ]
- ハッシュ表があれば調べる局面が、1/8以下に出来るよ
すぐ解答が出る場面では逆に鈍くなると思うけど、0.5秒以上かかるならハッシュ表使ったら速いと思うよ
- 485 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:52:57 ]
- >>481
教授公認だから問題無しw
- 486 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:58:32 ]
- >>485
「ひねくれた教授」が公認なの?
- 487 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:09:02 ]
- 474「宿題を2chに丸投げしておk?」
教授「おk。公認するよん」 こんな感じか
- 488 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:11:47 ]
- 底辺大学の教授ってそんなもんなのか
- 489 名前:デフォルトの名無しさん [2007/11/14(水) 15:24:06 ]
- [1] 授業単元:情報技術
[2] 問題文: 「キーボードから以下の整数値を入力し,最大値を表示するプログラムを作成せよ キーボードから入力する値 25 , 6 , 45, 18 , 57, 5 ヒント for文を用いてキーボードから数値を読み込みながら, if文を使って読み込んだ数値がそれまでに読み込んだ 数値の最大値maxよりも大きければその値を更新する ・・・・・・ for(i=?;i<=?;??){ scanf(?????); if( ? > max) ???????; } printf(?????); ・・・・・・」 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:すみません、よく分かりません [3.3] 言語:C [4] 期限:2007年11月16日12:00 [5] その他の制限:if文、for文あたりの簡単なレベルでお願いします 大学の授業の課題です。 低レベルかもしれませんが、さっぱり分からないので、よろしくお願いします。
- 490 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:46:17 ]
- >>489
これが大学の授業か……
- 491 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:49:14 ]
- >>486
>>487 いや、教授自身が2ちゃんねらーw だからここに問題が漏れてる事も知ってる。というより本人が自分で回答とかしてるしw
- 492 名前: ◆30lFlSJfAI [2007/11/14(水) 15:54:27 ]
- [1] 授業単元: 情報基礎
[2] 問題文:下記の問題のプログラミングを作成してください。 関数y=1/xをシンプソン法により、区間[1,2] で積分せよ。 このとき、区切りの数を変えることによって精度が変化することを確認せよ。 ただし、解析的な解はloge2=0.69314718である [3] 環境 OS: Windows 言語: C言語のみ [4] 期限: ([2007年11月21日まで] [5] 制限は特にありません。 プログラミング初心者にもかかわらず大学でこのような課題を出されました。 来週までで申し訳ないのですが、よろしくお願いします。
- 493 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 15:54:42 ]
- _,,..r'''""~~`''ー-.、
,,.r,:-‐'''"""~~`ヽ、:;:;:\ r"r ゝ、:;:ヽ r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ :i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^! ! i!. | ;| l| ''"~~ 、 i' | i! ヽ | | | ,.:'" 、ヽ、 !,ノ ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::| r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ、坂本直志君見てるー? ,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/ !、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'" | \ i:" ) | ~`'''ー---―''"~ ヽ `'" ノ
- 494 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:01:02 ]
- >>491
学籍番号は何番?
- 495 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:09:34 ]
- 教授職って何気に終身雇用なんだよね
同じ空気吸ってても一山いくらで売られていく子羊たちとの間には明らかな次元断層がある
- 496 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:12:35 ]
- 日本語でおk
- 497 名前:shin [2007/11/14(水) 16:15:56 ]
- >>457 >>458 >>459
ありがとうございました!!!
- 498 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:18:09 ]
- >>474 課題1-1
#include <stdio.h> #include <stdlib.h> #include <time.h> #define STUDENT_NUM_MAX 99999 int get_rand_score(void){ int i, score=0; for(i=0;i<20;i++) score+=rand()%6; return score; } int main(int argc, char *argv[]){ int i, index, student_num; if(argc!=2){ fprintf(stderr, "\nUsage : %s <number>\n", argv[0]); fprintf(stderr, "%5s : number (1-%d)\n", "", STUDENT_NUM_MAX); return 1; } if(sscanf(argv[1], "%d%n", &student_num, &index)<1 || argv[1][index]!='\0'){ fprintf(stderr, "\nERROR : Invalid parameter. %s\n", argv[1]); return 2; } if(student_num<1 || student_num>STUDENT_NUM_MAX){ fprintf(stderr, "\nERROR : Out of range (1-%d). %d\n", STUDENT_NUM_MAX, student_num); return 3; } srand(time(NULL)); for(i=1;i<=student_num;i++) printf("C%05d %d\n", i, get_rand_score()); return 0; }
- 499 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:49:44 ]
- >>492
シンプソン公式がわかってれば単純なforループの問題でしかないから。
- 500 名前:デフォルトの名無し [2007/11/14(水) 17:13:23 ]
- [1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク): アスキーコードの値を対応する文字を組み合わせた 一覧表を出力するプログラムを作成せよ。 アスキーコードの範囲は「32」〜「126」、スペースには△を出力。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 今週中にお願いします。 [5] その他の制限: なし
- 501 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:24:27 ]
- #include<stdio.h>
int main(void){ int i; printf(" 32 △\n"); for(i=33;i<127;i++) printf("%3d %c\n",i,i); return 0; }
- 502 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 17:30:15 ]
- >>474
課題 1-3 1-4 1-5 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5259.c
- 503 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:03:55 ]
- [1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stackプログラムを配列ではなく、連結リストを用いて、作成せよ。 配列で実現する時に比べて、その利点及び欠点をのべよ。 stackプログラム:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5260.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2005 [3.3] 言語:c++ [4] 期限:2007年11月16日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで よろしくおねがいします。
- 504 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:14:44 ]
- >>492
#include <stdio.h> #include <math.h> double func1(double x) { return 1.0/x; } double simpson(double a, double b, int n, double (*func)(double)) { double odd = 0, even = 0, h = (b - a)/n; int i; for(i = 1; i < n; i += 2) odd += func(a + i*h); for(i = 2; i < n; i += 2) even += func(a + i*h); return h/3.0*(func(a) + func(b) + 4*odd + 2*even); } int main(void) { int n; for(n = 2; n <= 1024; n *= 2) printf("%4d : %.8f\n", n, simpson(1.0, 2.0, n, (double (*)(double))func1)); return 0; }
|

|