1 名前:デフォルトの名無しさん [2007/10/23(火) 23:48:35 ] あなたが解けない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/1191937213/
2 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:51:30 ] 2
3 名前:1 mailto:sage [2007/10/23(火) 23:59:54 ] スレタイ間違えました…このスレッドは削除依頼出します
4 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:00:09 ] 次99って覚えとけば問題ない スレ立てた人は特に覚えておいて、 次スレの時期になったら次は99であると声高に叫ぶんだ
5 名前:1 [2007/10/24(水) 00:05:06 ] >>4 分りました。
6 名前:1=3 [2007/10/24(水) 00:23:03 ] 皆様、削除依頼は出しませんので、お使いください >>3 の書き込みは馬鹿の戯言と思い無視してください スレタイに関しては生暖かくわらってくださいませ m(_ _)m
7 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:35:18 ] [1] 授業単元:プログラミング実験 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5129.txt [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月24日22:00まで [5] その他の制限: なし よろしくお願いします。
8 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 00:59:40 ] 前スレ>>980 エクセルとかワードで書いてzipでうpればよかったんじゃないか?
9 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:02:24 ] >>8 それをC/C++の宿題と呼んでいいのか
10 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:04:49 ] 前スレ>>976 に言えよwww
11 名前:前スレの907 [2007/10/24(水) 01:09:04 ] >>前スレの919さん プログラムありがとうございました。 ですが実行してみたところ以下のようなエラーがでてしまいました。 1>Source1.obj : error LNK2019: 未解決の外部シンボル _dx が関数 _main で参照されました。 1>C:\Users\UCHIDA\Documents\Visual Studio 2005\Projects\a34\Debug\a34.exe : fatal error LNK1120: 外部参照 1 が未解決です 問題文は「オイラー法を用い、dy/dx=(3x-5y-4)/5 の常微分方程式を 解きなさい。また、その結果をExcelファイルに出力して グラフを作りなさい。諸条件は以下のようにする。 初期値 (x,y)=(0,0) 刻み幅 Δh=0.3 積分区間 [a,b]=[0,3] 」で #include<stdio.h> long double df(long double x,long double y) { return (3*x-5*y-4)/5; } int main(void) { long double x,y,delta; FILE *outfile; x = y = 0.0; delta = 0.3; outfile = fopen("data.csv","w"); fprintf(outfile,"%Lf,%Lf\n",x,y); do{ y += dx(x,y)*delta; x += delta; fprintf(outfile,"%Lf,%Lf\n",x,y); }while(x<1.0); fclose(outfile); return 0; } です。どなたかエラー解決お願いします。
12 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:23:51 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク): HTTPリクエストを受け付けると、URLに記載された名前のHTMLファイルをブラウザに返す 簡単なWebブラウザをC言語を用いて作成せよ。 このWebサーバはHTTPリクエストを受け付ける毎にforkシステムコールにより新しいプロセスを生成し、 そのプロセスがURLに指定されたHTMLファイルをファイルシステムから取り出して、ブラウザに返す。 基本的には、リクエストを送りリプライを返すことができればいい。 また、結果をブラウザで表示できる程度の実装で構わない。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: gcc 3.4.4 [3.3] 言語: C言語 [4] 期限: 2007年11月15日 [5] なし 最低限の実装でいいのでよろしくお願いします。
13 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 01:25:57 ] >>11 ×y += dx(x,y)*delta; ○y += df(x,y)*delta; つかエラーメッセージ吐いてるんだからこのぐらい自分で気づこうよ。 >未解決の外部シンボル _dx が関数 _main で参照されました。
14 名前:デフォルトの名無しさん [2007/10/24(水) 01:31:13 ] [1] 授業単元: プログラミング技術W [2] 問題文(含コード&リンク): こんばんわ、夜も更けてしまいましたがよろしくお願いします。 文字列str1からstr2と一致する文字列を削除し、結果を表示するプログラムを作成せよ。 ・文字列 st の pos 番目から始めて、len の長さの文字列を削除する 関数:void d _word(char st[], int pos. int len)を作成する。 ・pos の場所と削除語の長さを d_wordに渡し、文字列削除を実行する 関数:void search_del(char str1[], char str2[])を作成する。 ・main 関数で文字列1つと削除する文字列1つを入力させ、関数search_del を用いて文字列から削除語を削除したものを出力する。 (メインのプログラムはヒントで出題されたのですが、うまく出来ませんでした。) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5132.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限: 25日(木) [5] その他の制限:
15 名前:デフォルトの名無しさん [2007/10/24(水) 01:47:59 ] >>14 すいません、リンク先にあるプログラムコードの下から2行目の ss} のssはゴミです。
16 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 02:08:32 ] >>14 その二つの関数があるなら、できてるも同然な気がするが… int main() { char str1[256], str2[256]; printf("string? : "); gets(str1); printf("deleted word? : "); gets(str2); serach_del(str1, str2); puts(str1); return 0; }
17 名前:デフォルトの名無しさん [2007/10/24(水) 02:16:11 ] 頭は#include <stdio.h>のみで大丈夫でしょうか?
18 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 02:33:13 ] どのソースに対していってんだ?
19 名前:デフォルトの名無しさん [2007/10/24(水) 02:40:08 ] >>16 いくつか修正して組み込んでみたけど、d _wordへ削除語の長さを渡すのがうまく行ってないのかエラーが出てうまくいかないです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5133.txt
20 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 04:24:56 ] >>19 > if(j=m2) == > printf("%d\n", st1); %s これで動くかはわからんが。
21 名前:11 [2007/10/24(水) 05:16:42 ] >>13 さん すいません。ありがとうございました。
22 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 10:38:52 ] [1] 授業単元:専門演習 [2] 問題文(含コード&リンク): 1、数を入力し、その数が奇数か、偶数かを判定しなさい。 (ただし、数字以外を入力した際には「数字を入力してください」とメッセージボックスをでるように。 2、ビデオテープ一個の単価は150円である、しかし、購入個数が100個を超えると、ビデオテープの単価は2割引になる。 購入個数を入力して支払い金額を計算し、表示するプログラムを作りなさい。 3、三角形の三編の長さa,b,cを入力して、正三角形、二等辺三角形、直角三角形、直角二等辺三角形、単なる三角形を調べるプログラムを作りなさい。 [3] 環境 [3.1] OS: windows XP [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 不明 [3.3] 言語: (C/C++/どちらでも可 のいずれか) 一応C#なんですが・・・大丈夫ですかね?? [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 今週中。 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 基礎レベル・・・。 どうかお願いいたします。
23 名前:デフォルトの名無しさん [2007/10/24(水) 10:58:59 ] >>22 1番はこんな感じになります #include<stdio.h> int main(void) { int n; printf("数を入力してください>"); while(scanf("%d",&n)>0) printf("入力がおかしいです。もう一度入力してください。>"); printf("%sです。\n",(n&1)?"奇数":"偶数"); return 0; }
24 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:04:09 ] >>23 とりあえず次の入力を試しました 5 abon 何かがおかしいです。もう一度投稿して下さい。>
25 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:14:23 ] >>24 scanfの戻り値のチェック間違えてた… 始めに「失敗した」書式のとこ返すんだった…。 #include<stdio.h> int main(void) { int n; printf("数を入力してください>"); while(scanf("%d",&n)>1) printf("入力がおかしいです。もう一度入力してください。>"); printf("%sです。\n",(n&1)?"奇数":"偶数"); return 0; }
26 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:17:55 ] >>25 テストしてから書き込むことを勧める
27 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:23:43 ] 次は無限ループを作る予感
28 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:27:48 ] scanfの挙動はよう分からんからなあ…… とりあえず、while(scanf("%d",&x))...みたいな書き方だと条件満たさないと思うよ %dは数字以外の文字をひたすら無視するから というかC#知らないけど、 scanfとかでいいのか?
29 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:34:02 ] >>22 の問題文によると「メッセージボックス」を出すらしい
30 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:45:04 ] >>22 ,29 …メッセージボックスですか見落としてた…Win32APIですね… そしたら全然ダメだわ >>26 24 はDOSアプリとしてなら確認しました もしかして他の二つもWinアプリとして作らないといけないのかでしょうか? 基礎レベルでWin32APIは使わないと思うのだが…
31 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:46:38 ] >>30 だからC#なんだってば。 つーか、>25もおかしいぞ。
32 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:48:36 ] メッセージボックス以前の問題だろ
33 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 11:49:20 ] >>28 scanfの戻り値 代入された項目数を返す とある 新ANSI C言語辞典(ISBN4-7741-0432-9)より この本一部妖しいが…多次元配列あたりの説明が…
34 名前:25=30 mailto:sage [2007/10/24(水) 11:52:53 ] >>22 ,31 …あーー!。Cとして書いてしまった… 書き方違うや…全然…ごめん… 33、この発言取り消しで…
35 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:00:11 ] >>34 いや、それはいいから>25が拙いってことは理解しておいた方がいいよ。 二重の罠に填まっているから。
36 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:00:15 ] >[3.3] 言語: (C/C++/どちらでも可 のいずれか) 一応C#なんですが・・・大丈夫ですかね?? これおかしいだろ
37 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:02:25 ] >>25 日曜あたりからこのスレに書き始めた人っぽいけど、まだ他人の宿題に答えるレベルじゃないんじゃない?
38 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:02:51 ] うん、だから>22は無視して>23以降を構って遊んでる。
39 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:04:44 ] >>22 3.をあくまでCで #include <stdio.h> int main(void) { double a, b, c, max, mid, min; scanf("%lf%lf%lf", &a, &b, &c); max = a > b ? c > a ? c : a : b > c ? b : c; min = a < b ? c < a ? c : a : b < c ? b : c; mid = a + b + c - max - min; if(max>=min + mid) printf("三角形じゃない\n"); else if(max == min) printf("正三角形\n"); else if(max * max == min * min + mid * mid) { if(min==mid) printf("直角二等辺三角形\n"); else printf("直角三角形\n"); } else if(max==mid||mid==min) printf("二等辺三角形\n"); else printf("ただの三角形\n"); return 0; }
40 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:09:13 ] >>37 分りました…これ以降自粛します…。 >>22 もう書いてしまったので参考にしてください。 2.をCで書くと #include<stdio.h> int main(void) { long x; printf("何本購入しますか?>"); while(scanf("%ld",&x)>1) printf("入力がおかしいです。もう一度入力してください。>"); x *=150; if(x >= (150*100) ){ x = x * 8 / 10; } printf("%d円になります。\n",x); return 0; }
41 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:13:53 ] >>40 テストしてから書き込むことを勧める 例えば入力に次のものを入れてみる abon 100 #あと負数をどうするとか
42 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:29:01 ] とりあえず、scanfの戻り値は使わない方がいい というかscanfを使わない方がいい
43 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:30:42 ] C#って、VBみたいに簡単にMessageBox出せたりするの?
44 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:33:49 ] >>43 C# メッセージボックス でググったらすぐに出る
45 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:34:41 ] 出せる
46 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:38:22 ] へえ、つまらん言語だな
47 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:40:53 ] >>42 scanfが不評な理由が身に染みました…。 かといってgetsもバッファオーバーランの危険がありますが… stdinからfgstsしてから変換が安全でしょうか?
48 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:46:53 ] うざいよ ここはお前の質問スレじゃないから、とっとと失せろ
49 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:49:27 ] >>47 >35を無視するから…… 初心者スレ辺りに移動するなら付き合うけど、また無視するならしらね。
50 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:55:45 ] fgetsが定石なんだろうが、 俺はgetcharをこよなく愛してる
51 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:01:48 ] オレは scanf Loveだぜ #include<windows.h> #include<stdio.h> int main(void){ int n; printf("数を入力してください>"); while(scanf("%d",&n)<1){ scanf("%*s"); MessageBox(NULL, "数字を入力して下さい", "Error", MB_OK | MB_ICONERROR); printf("\n入力がおかしいです。もう一度入力してください。>"); } printf("\n%sです。\n",(n&1)?"奇数":"偶数"); return 0; }
52 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:27:02 ] >>22 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5134.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5135.txt ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5136.txt Microsoft(R) Visual C# .NET Compiler version 7.10.6001.4 for Microsoft(R) .NET Framework version 1.1.4322 で作動を確認(ロダの関係で拡張子を変更)
53 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:44:13 ] [1] 授業単元:プログラミング2 [2] 問題文(含コード&リンク): (1)モンテカルロ法を用いて、y=x^2,y=0,x=1で囲まれる領域の面積を求めよ。 (2)モンテカルロ法を用いて、半径1の球の体積を求めよ。 [3] 環境 [3.1] OS Windows XP [3.2] コンパイラ名とバージョン: Visual Studio.NET2003 [3.3] 言語: C [4] 期限:10/25の12時 [5] その他の制限:(1)(2)において発生させる乱数の数を10,100,1000…1000000 と増やし、それぞれの場合における結果を画面に表示させること。 どうかよろしくお願いします。
54 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 14:01:25 ] >>53 前スレのとは別の人? (1) #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, j, cnt; double x, y; srand(time(NULL)); for(i=10; i<=1000000; i*=10) { for(j=0, cnt=0; j<i; j++) { x = (double)rand() / RAND_MAX; y = (double)rand() / RAND_MAX; if(x*x >= y) cnt++; } printf("試行回数:%7d 面積:%f\n", i, (double)cnt / i); } return 0; }
55 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 14:02:05 ] (2) #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, j, cnt; double x, y, z; srand(time(NULL)); for(i=10; i<=1000000; i*=10) { for(j=0, cnt=0; j<i; j++) { x = (double)rand() / RAND_MAX; y = (double)rand() / RAND_MAX; z = (double)rand() / RAND_MAX; if(x*x + y*y + z*z <=1) cnt++; } printf("試行回数:%-7d 球の体積:%f\n", i, cnt * 8.0 / i); } return 0; }
56 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 14:10:30 ] scanfもちゃんと使えば、大分有用なんだけどね
57 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 14:12:52 ] 【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): リストへのポインタを引数としてとり、その内容を逆順に並べ替えたリストへの ポインタを返す関数struct c *re(struct c *l)を再帰を用いて作成せよ。 並べ替え後に元のリストが破壊されていても構わない。 リストは連結リストで、その構造体は、 struct c{ int a; struct c *n; }; とする。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 木曜日の15時までです。 [5] その他の制限: 必ず再帰を使うこと。
58 名前:デフォルトの名無しさん [2007/10/24(水) 15:22:13 ] >>14 です。 アドバイスを頂き>>16 と>>20 を組み込みましたが、コンパイルが通りません。 エラーメッセージは関数:void d _wordに受け渡しがうまく行ってない趣旨のものがでました。 出来る方、問題回答お願いします。 それと昨晩、途中まで付き合ってくれた方ありがとうございます。
59 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:54:52 ] >>58 typo だと思われる 自分で探せるよね
60 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:23:41 ] >>57 struct c *re(struct c *l) { struct c *p; if(l->n==NULL) return l; p = re(l->n); l->n->n = l; l->n = NULL; return p; }
61 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 17:23:27 ] >>12 JAIST?
62 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 18:00:19 ] >>12 ( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5137.txt めんどくさいので、cat を fork&exec してやったw jaist ではないのかな? たしか某S先生の授業でそんな課題があったような・・・
63 名前:デフォルトの名無しさん [2007/10/24(水) 18:17:29 ] [1] 授業単元: アルゴリズム C言語応用U [2] 問題文(含コード&リンク): 英文を入力すると、単語に分割して出力するプログラムを書く。 ただし、ピリオドとカンマは出力しないようにすること。 (実行例) 英文を入力してください: There is , a textbook. --- There is s textbook --- 今回はプログラム作成にあたり、用意されているテンプレートにプログラムを付け加えプログラムを完成させよ。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5138.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: CYGWIN gccバージョン不明) [3.3] 言語: C言語 [4] 期限: 無理を承知で明日の午前中までにお願いします。 [5] その他の制限: テンプレートに従ってプログラムを付け加えて完成させてください。
64 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 18:50:28 ] 前スレで質問したものです ただ単に不等号と&&→||のミスでした お騒がせして申し訳ありません
65 名前:デフォルトの名無しさん [2007/10/24(水) 18:56:01 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク):ファイルのリンク: spot.pcc.edu/~cdjones/CS161/Assignments/gasprices.txt リンクに含まれるようなファイルを読み取って、金額(ファイルの一番右の項目)を州(ファイルの真ん中の項目)別に集計し、 アルファベット順にそれぞれの州の平均額を表示する。その後、全ての州の合計金額の平均を表示する。 最後に、最も平均金額の高かった州と、最も平均金額の低かった州を表示する。 注意: 町の名前(ファイルの一番左の項目)は、“Grants Pass” や “Klamath Falls”のように、空白で区切られているものが入ることもある。 [3] 環境 ? [3.1] OS: Windows [3.2] Dev C++ 4 [3.3] 言語: C++ [4] 期限: 2007年10月27日深夜まで [5] その他の制限: 標準ライブラリのみ使用可能。Getlineを使わず、Cinのみで作る方がよりよい。また、ファンクションは使用不可。 よろしくお願いします(_ _)
66 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:32:06 ] [1] 授業単元:線形台数 [2] 問題文(含コード&リンク): 対角行列の固有値を求めよ。 10次元の。 対角成分は3.4 2.3 5.1 8.2 2.21 -4.21 23.2 9.3 -21.2 0.2 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月25日 [5] その他の制限: なし
67 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:46:35 ] >>65 >[5] その他の制限: 標準ライブラリのみ使用可能。Getlineを使わず、Cinのみで作る方がよりよい。また、ファンクションは使用不可。 ファンクション使用不可ってのを詳しく
68 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:58:41 ] >>66 対角行列の固有値は自明。 対角行列の固有値は対角成分そのもの。 つまり、 3.4 2.3 5.1 8.2 2.21 -4.21 23.2 9.3 -21.2 0.2 となる。
69 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:07:57 ] scanfは失敗したの残すし、改行残すから鬱陶しくて仕方ない。 ってことで、fgets使うとか、 戻り値を変数に格納した後、残った文字を全部食ってから次の処理とかでいいんじゃね?
70 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:11:41 ] >>65 アメリカの州の略号は ttp://www.urban.ne.jp/home/ho5135/states.html でいいの?
71 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:29:00 ] >>68 だよね。 case.f7.ems.okayama-u.ac.jp/statedu/lispstat-book/node85.html のページの式の中の|Σ|っていうのは対角成分をかけたものってことでいいのかな? ある問題で正規分布を使っていて、|Σ|を対角行列の対角成分をすべてかけたものを 固有値として計算すると間違った答えになるんです。 だけど。|Σ|に(対角成分の1つだけ)を代入して計算すると正解になるんです。
72 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:30:37 ] ベクトルを作って、ベクトルを初期化して $ gcc -lm a.c # ./a.out すると 0.000000 0.000000 2.080315 というよく分からないベクトルが作られます。 init_vectorにバグがあるのでしょうか?そうは見えないのですが・・・ 他にプログラムの宿題があるのですが、ここらへんがとりあえずバグってるので 問題を簡単化して質問します。 ttp://www.uploda.org/uporg1080506.c.html コンパイラは gcc3.3.6です。緊急の宿題です
73 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:33:35 ] [1] 授業単元:C/C++宿題スレ [2] 問題文(含コード&リンク): 書式付標準出力関数printfと同様の動作を示すprint関数を作りなさい。標準出力関数等を用いてよいが、printf関数は使用してはならない。 なお、終わった者はscanfと同様の動作を示すscan関数を作ってもよい。 [3] 環境 [3.1] OS: 任意 [3.2] コンパイラ名とバージョン: 任意 [3.3] 言語: C言語 [4] 期限: 無期限 [5] その他の制限: これよりも、他の宿題を優先すること
74 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:33:46 ] >>72 8行目を見なおしてみては?
75 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:36:09 ] >>74 ありがとうございます。逆ですね。 いつもRuby使ってて、授業でC使う事になったこういうミスが・・・涙 だったらコンパイル通さないでくれよ・・・
76 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:40:51 ] >>73 これわひどいw
77 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:47:01 ] そういえば、可変引数を使う宿題てあまり見ないな
78 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:52:50 ] [1] 授業単元:文字列操作プログラム [2] 問題文(含コード&リンク): 配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。 @独自のstrlen関数mystrlen関数を自作する。 文字列のポインタを受け取り、文字列の長さを返す関数を作成する。 A独自のstrcpy関数mystrcpy関数を自作する。 文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。 B独自のatoi関数myitoa関数を自作する。 数値を受け取り、指定された基数で文字列変換を行う関数を作成する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C言語 [4] 期限:2007年10月26日朝5:00まで [5] その他の制限:問題が初級編ということで、出来るだけ難しくならないよう お願いします。
79 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:19:35 ] [1] 授業単元: [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5139.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 10月26日10:00まで [5] その他の制限: 特にありません。 どうぞよろしくお願いします。
80 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:22:08 ] すみませんがよろしくお願いします。 さっぱりわかりません・・ [1] 授業単元:C++ [2] 問題文(含コード&リンク): 次のソースコードを参照して、DateTimeClass の代入演算子を定義してください。 ただし、定義はクラスの外で行うものとします。 class DateClass { int year, month, day; }; class TimeClass { int hour, min; }; class DateTimeClass : public DateClass, public TimeClass { char* strDate; char* strTime; }; [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 10/26いっぱい [5] その他の制限:なし
81 名前:前スレ972 mailto:sage [2007/10/24(水) 22:27:39 ] 問題の題名は「オペレータ オーバーロードを使ったプログラム作成」でした。 なのでオペレータオーバロードを使わなければいけないっぽい。。
82 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:31:25 ] >>78 >B独自のatoi関数myitoa関数を自作する。 myatoi関数?それともmyitoa関数?
83 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:34:31 ] >>78 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5140.txt
84 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:34:48 ] >>82 >数値を受け取り、指定された基数で文字列変換を行う関数を作成する。 itoaだな もしくはltostrとでもいうか
85 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:40:42 ] >>71 >|Σ|っていうのは対角成分をかけたものってことでいいのかな? 対角行列においてはその通り。 φA(λ) = |λI - A|= 0 を満たす値λがベクトルAの固有値。固有値は行列ではなく数値。 Iは対角単位行列。 Aがn×nの正方行列なら、重解を含めて、λはn個存在する。 個別のλのことを「固有値」と呼ぶ。 だから、 >ある問題で正規分布を使っていて、|Σ|を対角行列の対角成分をすべてかけたものを >固有値として計算する という部分がおかしい。 これ以上は数学板で聞いたほうがいいかも。
86 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:41:22 ] [1] 授業単元:Fizz Buzz問題 [2] 問題文(含コード&リンク): 1から100までの数字を順に表示しなさい ただし3で割り切れる数の場合は数字の代わりにFizz、 5で割り切れる場合はBuzz、 3と5の両方で割り切れる場合はFizz Buzzと表示しなさい。 剰余演算を使うバージョンと、使わないバージョンを作ること。 ただし、あらかじめ該当数字を配列等に格納しておいてのチェックは無しとする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C [4] 期限: 10月25日PM1時 [5] その他の制限: よろしくお願いします
87 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:45:51 ] 就職試験対策キターーーー
88 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:48:37 ] >>79 void quicksort(int a[], int l, int r){ int comp(const void*a, const void*b){ if(*(int*)a < *(int*)b) return -1; else if(*(int*)a > *(int*)b) return 1; else return 0; } qsort(a, r-l+1, sizeof(int), comp); }
89 名前:デフォルトの名無しさん [2007/10/24(水) 22:49:56 ] 剰余を使わずに、もっとも短いコードをつくる 出力は次のようにする 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz Buzz, 31, 32, Fizz, 34,
90 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:50:37 ] 関数内関数なんて使うなって一瞬言おうとしたけど、 そうゆうことなら許すw
91 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:52:40 ] >>86 「Fizz Buzz問題」 ネーミングがイカしてるな #include <iostream.h> int main (void) { int i; for (i=1; i<=100; i++){ if (i%3==0 && i%5==0) cout << "Fizz Buzz" << endl; else if (i%3==0) cout << "Fizz" << endl; else if (i%5==0) cout << "Buzz" << endl; else cout << i << endl; } }
92 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:52:48 ] >>73 #include <stdarg.h> int print(const char*f, ...){ va_list a; va_start(a, f); vprintf(f,a); va_end(a); }
93 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:01:02 ] >>85 固有値ではないってことだね。 |Σ|は行列の値ってことか。 ってことは間違っている原因は|Σ|じゃないってことか。
94 名前:73 mailto:sage [2007/10/24(水) 23:01:09 ] >>92 すみません、後出しで悪いですが、 printfと同様の書式付き関数は使用しないで作ってください。 とにかく考えてくださりありがとうございます。
95 名前:12 mailto:sage [2007/10/24(水) 23:03:56 ] >>62 迅速な対応ありがとうございます。 参考にさせて頂きます。
96 名前:デフォルトの名無しさん [2007/10/24(水) 23:04:06 ] #include<stdio.h> main(){ int a=3,b=5,n; for(n=1;n<101;n++){ if(n!=a && n!=b)printf(" %d,",n); else {if(n==a){a+=3;printf(" Fizz");} if(n==b){b+=5;printf(" Buzz");} if(n<100)printf(","); }}}
97 名前:デフォルトの名無しさん [2007/10/24(水) 23:08:51 ] [1] 授業単元:コンピューターグラフィックス [2] 問題文CGを作れ(自由課題) ただし以下の評価項目に関して採点を行うのでこれを満たすようなCGを作成すること 1.CGアニメーションになっていること 2.マウスによってなんらかの操作ができる 3.ホップアップメニューが使用できること 4.シェーディングが適切に行われていること 5.テクスチャマッピングが使用されていること [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:11月6日 [5] その他の制限:あまりにも難しすぎる表現はNG いきなり自由課題しろとか言われても俺にはイミフ 誰か助けてクレヨン
98 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:11:59 ] ナンセンス? #include<stdio.h> char * fizzBuzz( int n ) { static char buffer[BUFSIZ]; return n % 15 == 0 ? "FizzBuzz" : n % 5 == 0 ? "Fizz" : n % 3 == 0 ? "Buzz" : (sprintf( buffer, "%d", n ), buffer); } int main() { int m = 0; while( m != 100 ) { ++m; printf("%s\n", fizzBuzz( m ) ); } return 0; }
99 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:12:31 ] >>97 それほんとにいきなり出されたのか?w
100 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:15:18 ] printf同様って・・・ 300行くらいいるんじゃね?
101 名前:デフォルトの名無しさん [2007/10/24(水) 23:15:38 ] 剰余を使わず文字数が少なくてこう出力して 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, 17, Fizz, 19, 最後は , をつけないプログラム
102 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:16:19 ] >>80 strDate, strTimeをどう扱うかによって回答が変わるけど、 こんなのを期待されてそう。 DateTimeClass &operator = (DateTimeClass &a, const DateTimeClass &b) { (DateClass &)a = (const DateClass &)b; (TimeClass &)a = (const TimeClass &)b; strcpy(a.strDate, b.strDate); strcpy(a.strTime, b.strTime); return a; }
103 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:16:43 ] >>97 どう考えてもOpenGLとかDirectXとかが必要になりそう気がする…… どう考えてもcだけじゃコンピュータグラフィックは作れなさそうな気がする……
104 名前:デフォルトの名無しさん [2007/10/24(水) 23:18:49 ] >>99 今まではただ惑星とかロボット作ってそれをキーボード入力で動かしてたしてただけだった だけど授業でシェーディングとかの話し始めて出た課題がこれ 参考にできるサイトなどなんでもいいので参考になるものを教えてください
105 名前:デフォルトの名無しさん [2007/10/24(水) 23:20:32 ] >>97 OpenGLいるな。。。じゃあここはスレ違いか 失礼しました
106 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:20:48 ] >>104 wisdomsoft OpenGLでググれ もしくは単位をあきらめる
107 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:22:14 ] >>100 7行スレで7行printfがあったとか何とかって言ってた。
108 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:22:26 ] >>104 てっきりプログラミングの授業の第一回目とかで出されたのかと思った>いきなり
109 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:23:04 ] >>102 ありがとうございます。 そのように解答します。
110 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:23:25 ] >>104 少なくともCでCGできる時点でこのスレの住人の3分の2くらいよりレベル上だろうな
111 名前:デフォルトの名無しさん [2007/10/24(水) 23:23:32 ] [1] 授業単元:Fizz Buzz問題 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5141.txt 上記のプログラムは、1製品にのみ対応したものであるが、複数製品に対応したものに 書き換えなさい。また製品数の目安は100製品程度とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C++ [4] 期限: 10月25日18時 [5] その他の制限: よろしくお願いします
112 名前:デフォルトの名無しさん [2007/10/24(水) 23:26:27 ] >>63 だれか、お願いします。 現在作成中でしたら、おとなしく待ってます。
113 名前:デフォルトの名無しさん [2007/10/24(水) 23:28:43 ] >>106 ググって来るわ OpenGLの課題片付けてくれるスレってある?
114 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:29:11 ] [1] 授業単元:C++ [2] 問題文(含コード&リンク): class BaseClass { char* name; public: BaseClass(const char* p) {name = strdup(p);} ~BaseClass() {free(name);} }; class MyClass : public BaseClass { int count; public: MyClass(const char* p, int n = 0) : BaseClass(p), count(n) { // ... } }; ソースコードを参考にして派生クラスでの生成と消滅の順序を画面に 表示するプログラムを作成してください。 プログラムを実行し、派生クラスと基本クラスのコンストラクタ、 デストラクタが呼ばれる順序を確認してください。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 10/26まで [5] その他の制限:なし お願いします。
115 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:44:55 ] >>101 とりあえず剰余有版はこれでOK? 剰余無し版はfizzBuzz関数の実装を変更すればいいし。 就職活動がんばってな #include<stdio.h> char * fizzBuzz( int n ) { static char buffer[BUFSIZ]; return n % 15 == 0 ? "FizzBuzz" : n % 5 == 0 ? "Fizz" : n % 3 == 0 ? "Buzz" : (sprintf( buffer, "%d", n ), buffer); } int main() { int m; for( m = 1; m <= 100; ++m ) { printf( (m == 100 ? "%s\n" : "%s,"), fizzBuzz(m)); } return 0; }
116 名前:デフォルトの名無しさん [2007/10/24(水) 23:50:14 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5141.txt 上記のプログラムは、1製品にのみ対応したものであるが、複数製品に対応したものに 書き換えなさい。また製品数の目安は100製品程度とする。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: bcc [3.3] 言語: C++ [4] 期限: 10月25日18時 [5] その他の制限: よろしくお願いします
117 名前:デフォルトの名無しさん [2007/10/24(水) 23:50:19 ] >>111 >>86 と同じ人?Fizz Buzz問題でも今回は内容Fizz Buzzじゃないんだ。 >>86 はもういいの? とりあえず1問答えてるし、先客が終わるまで待てて。
118 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:50:55 ] >>110 CGがなんぼのもんじゃい!
119 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:51:16 ] >>112 一応作ったけどそのテンプレおかしい気がする。 入力文字列の最後に空白付けないと止まらないかも。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5142.txt
120 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:53:36 ] >>84 HP-UXかHI-UXな人だな?
121 名前:111 [2007/10/24(水) 23:54:12 ] >>117 すいません。同一人物じゃないです。 >>86 の人のテンプレコピペしたんで授業単元変えるの忘れました
122 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:55:50 ] >>101 はもういないのか? 剰余無し版 #include<stdio.h> #include<stdbool.h> bool isMultipleOf( int n, int m ) { int idx; for( idx = 1; idx != 100; ++idx ) { if( m == idx * n ) return true; } return false; } char * ff( int n ) { static char buffer[BUFSIZ]; return isMultipleOf( 15, n) ? "FizzBuzz": isMultipleOf( 5, n) ? "Fizz": isMultipleOf( 3, n) ? "Buzz": (sprintf(buffer,"%d", n ), buffer); }
123 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:58:53 ] >>114 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5143.txt
124 名前:デフォルトの名無しさん [2007/10/24(水) 23:58:56 ] >>119 テンプレの /* コンマかピリオドならstr2の位置を1つ左 */ } } /* str2(単語)に終端文字を追加 */ ------------------------------------------------------- 上記の部分が /* コンマかピリオドならstr2の位置を1つ左へ */ } /* str1を1文字右に移動 */ } /* str2(単語)に終端文字を追加 */ でした。 真ん中の/* str1を1文字右に移動 */を追加お願いします。
125 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:59:42 ] >>111 の if(num<=300+0*10 && day>=inc_day) の部分がヘン というかこのプログラム、何をするプログラムなのかが一見してわからない
126 名前:デフォルトの名無しさん [2007/10/25(木) 00:02:22 ] >>121 そなの?変なこと言ってすまん。 いまチャレンジしてるから、ちっと待って。
127 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:04:37 ] >>124 i++; を追加してくれ。忘れてた。 まあ、それでも入力の最後に空白付けないといけないのは 変わらない気がするんだが。テンプレがそれならいいのかな。
128 名前:デフォルトの名無しさん [2007/10/25(木) 00:05:46 ] >>125 日にちと商品の在庫不足数を数字のみで表示してるんじゃない? 商品のほうはランダムで数字作成してるみたいだし。 〜日 在庫不足〜個みたいな。でも、 >>複数製品に対応したものに ってのがわからない。
129 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:08:09 ] >>128 >>111 の if(num<=300+0*10 && day>=inc_day) inc_day=day+3; で、あきらかに 0*10 という意味不明な演算をしている件について
130 名前:93 mailto:sage [2007/10/25(木) 00:08:40 ] >>85 正規分布を使いアルゴリズムに通して正解率を出すプログラムなんだけど |Σ|を行列の値(対角成分の積)として計算すると全然正解率がでない。 どこがおかしいのかを見るために 試しに|Σ|に対角成分の和をいれてみて計算すると正解率98%だった。 ただ計算方法が違うのであっているかわからない。 正規分布について調べると|Σ|はΣの固有値とあるんです。 どうなんでしょうかね。
131 名前:111 [2007/10/25(木) 00:09:32 ] >>125 簡単に書くと、はじめ300個あった物が毎日80〜120ずつ減っていき、 在庫が300+0*10以下になったら、その3日後に、350個プラスされるって感じです。 ちなみに、300+0*10の0の部分は1でも2でもなんでもよいです
132 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:15:22 ] >>125 別に変じゃなくないか? numが一定値以下で、かつ現在発注中(到着待ち)じゃなけりゃ発注すんだろ? inc_dayには発注日+3が入っているから、到着待ち中はday<inc_dayになる
133 名前:デフォルトの名無しさん [2007/10/25(木) 00:16:59 ] >>127 「i++;」を付ける位置は以下で良いですか? 付けてみたのですが分割後に出力される最後の単語が文字化けしてしまいます。 後、テンプレ見直してみましたが、タイプミスや書き残しはもうないので仕様はこれでいいと思います。 /* コンマかピリオドならstr2の位置を1つ左へ */ } /* str1を1文字右に移動 */ i++; } /* str2(単語)に終端文字を追加 */
134 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:17:32 ] プログラマは数学が苦手なんです。 プログラマはコーヒーとタバコが好きなんです。
135 名前:デフォルトの名無しさん [2007/10/25(木) 00:18:36 ] >>131 納得したその計算してたのね。
136 名前:86 mailto:sage [2007/10/25(木) 00:19:18 ] >>86 >>89 >>91 >>96 >>98 >>101 >>>>115 >>122 本当にありがとうございます 大変助かりげぶき か
137 名前:デフォルトの名無しさん [2007/10/25(木) 00:20:34 ] >>134 英語も苦手だよ。後、眠気覚まし+暇つぶしにガムもスキだよ。
138 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:30:39 ] >>133 i++はそこでいいよ。 テンプレどおりにやると入力の最後に空白入れないとバグる。 str1[i] != ' ' のとこを str1[i] != ' ' && str1[i] != '\0' にすればたぶんOK.
139 名前:86 mailto:sage [2007/10/25(木) 00:30:55 ] ミス…… 本当に助かりました ありがとうございます
140 名前:22 mailto:sage [2007/10/25(木) 00:34:15 ] 自分の問題に対してレスしてくれたり、といてくれた人達、 本当にありがとう!! 助かりました!!!!
141 名前:デフォルトの名無しさん [2007/10/25(木) 00:37:59 ] >>138 提出の際に聞いてみます。 期限ぎりぎりで半ば諦めていたので、本当に感謝ありがとうです。 手直しも直ぐにやっていただき助かりました。
142 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:51:09 ] [1] 授業単元: C言語演習 [2] 問題文(含コード&リンク): 1:y=sin(x) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。 2:y=sin(x-π/2) x=0から4πまで、512分割して、yの値を求め、ファイルに書き込む。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: bcc [3.3] 言語:C [4] 期限:なるべく早めに [5] その他の制限: 特にないです。 よろしくお願いします。
143 名前:デフォルトの名無しさん [2007/10/25(木) 01:00:46 ] #include<stdio.h> #include<math.h> main(){ int n; FILE *fp=fopen("sin.txt", "w"); for(n=0;n<=512;n++)fprintf(fp,"sin(π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512)); }
144 名前:デフォルトの名無しさん [2007/10/25(木) 01:07:18 ] こっち訂正汁 for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512) = %f\n",n,sin(4*M_PI*(n+0.0)/512)); for(n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2));
145 名前:デフォルトの名無しさん [2007/10/25(木) 01:13:41 ] #include<stdio.h> #include<math.h> main(){ FILE *fp=fopen("sin.txt", "w"); for(int n=0;n<=512;n++)fprintf(fp,"sin(4π×%d/512 - π/2) = %f\n",n,sin(4*M_PI*(n+0.0)/512-M_PI/2)); fclose(fp); }
146 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:15:03 ] >>63 テンプレがおかしい。指示通りにやるとセグメントエラーを起こす。
147 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:17:10 ] >>111 まずはこんなので ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5145.txt
148 名前:デフォルトの名無しさん [2007/10/25(木) 01:32:23 ] >>147 ありがとうございます。 残念ながら、今はプログラミングができる環境じゃないので、明日試して見ます。
149 名前:142 mailto:sage [2007/10/25(木) 01:32:29 ] >>143 >>144 >>145 早速答えていただき、本当にありがとうございます! 助かりました!
150 名前:デフォルトの名無しさん [2007/10/25(木) 01:47:38 ] >>146 一応、>>127 のi++;の付け加えでちゃんと動いてくれるので、OKです。 コンパイル通って、動作も「,.」削除+空白削除+分割表示できてるので。
151 名前:デフォルトの名無しさん [2007/10/25(木) 01:48:52 ] i++;じゃなくてstr1[i] != ' ' && str1[i] != '\0'の変更ですね。
152 名前:147 mailto:sage [2007/10/25(木) 02:07:00 ] >>111 念のため、 #define DAYS 10 // 販売期間 #define ITEMS 10 // 製品の種類数 の部分を #define DAYS 1000 // 販売期間 #define ITEMS 100 // 製品の種類数 と書き換えると題意に沿った回答になる。 ただし、このとき、出力が最悪200000行になるので注意。
153 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 06:10:11 ] >>82 課題にはそのとおり書いてあったんですが・・。 自分には問題の@〜Bの意味がさっぱりで・・・。 >>83 それが答えってことになるのですか?
154 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 06:30:23 ] こたえだね。
155 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 07:17:13 ] 答えかどうかもわからないって…
156 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:26:14 ] [1] 授業単元:情報システム基礎 [2] 問題文(含コード&リンク):このC言語で作られたプログラムをC++に変えて下さい kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5146.txt [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: すいません、よくわかりません。 講義では「Microsoft Visual Studio .NET 2003」を使用しています [3.3] 言語: CからC++へ [4] 期限: 明日が終わるまで [5] その他の制限: 特になし 明日までと急なことで申し訳ありませんがお願いします。
157 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:59:01 ] >>156 本当にそんな問題が……?
158 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:04:20 ] >>156 すでにC++ですっていって提出しちゃえば? 問題が曖昧すぎ
159 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:18:09 ] プログラムは配布されたプリントから打ち込みましたが、 問題文は文章でなく口頭で出題されました。全くこの通りです。 すでにC++になっているんでしょうか?
160 名前:156 ◆B5khfT.h4o mailto:sage [2007/10/25(木) 10:19:39 ] すいません、今更ですがトリップをつけるのを忘れていました
161 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 10:56:23 ] >>159 拡張子cppでコンパイルしてみな
162 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 11:03:08 ] class Helonを作ってコンストラクタで三辺の長さで初期化して get()で返すとか、そういう風にすればどう? あとprintfをcoutに無理矢理直すとそれらしく見える。別にprintfでも C++の範囲内なのだが。
163 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 11:31:04 ] >>156 無理矢理C++にしてみた。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5147.txt
164 名前:デフォルトの名無しさん [2007/10/25(木) 13:40:38 ] >>147 一つ目の製品はちゃんと発注するんですけど、二つ目以降は発注が行われないんですけど どうすればいいんですか?
165 名前:147 mailto:sage [2007/10/25(木) 14:00:28 ] >>111 >>164 // 製品情報初期化 int ADD_NUM = (rand()%81)+FIRST_NUM; int ADD_NUM_LOWER = (rand()%31)+50; int ADD_DAYS = (rand()%5)+1; の部分に // 製品情報初期化 int ADD_NUM = (rand()%81)+FIRST_NUM; int ADD_NUM_LOWER = (rand()%31)+50; int ADD_DAYS = (rand()%5)+1; inc_day = 0; を書き足せばよかったみたい。 ということでソースは下記に。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5148.txt >>152 も参考に。
166 名前:デフォルトの名無しさん [2007/10/25(木) 14:06:31 ] >>165 できました。本当にありがとうございました。
167 名前:65です [2007/10/25(木) 14:48:32 ] 遅くなりました。すいません。 変数を州ごとに集計して平均を出す部分がよくわかりません。 >67 ファンクションについてはまだ授業で習っていないので、先生に避けたほうがいいと言われました。 でも、Voidとか変数のReferenceとか基本的なことは本で読んだので、使ってくださってもけっこうです。 提出するコードは、ファンクションを使わないように書き換えます。 >70 はい。州の略はその通りで大丈夫です。
168 名前:デフォルトの名無しさん [2007/10/25(木) 15:30:40 ] >>147 さん ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt っていう課題が新たに出されたので、やっていただけませんか? 以前のプログラムがとても見やすかったので、よろしくお願いします。
169 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 16:52:28 ] >>65 >>167 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5150.txt ・しっかりとgetlineを使っている。 ・line.substr(13, 2)とline.substr(23, 4)を使って読み込んでいるので、gasprices.txtの配置がずれたら限りなくアウト。
170 名前:デフォルトの名無しさん [2007/10/25(木) 16:54:31 ] >>14 まだ、待っています。出来る方お願いします。 アドバイスはいくつか貰ったのですが、関数から関数への受け渡しがうまく行きません。
171 名前:169 mailto:sage [2007/10/25(木) 17:00:34 ] >>65 >>167 続き ・1行目にある #include <algorithm> は削除。 ・出力は一応CSV のはず。 ・アメリカの略号に誤入力があるかもしれない。 ・アメリカの州って50だったっけ?
172 名前:コンパイルは出来たがあってないぞ [2007/10/25(木) 17:06:21 ] #include<stdio.h> #include<string.h> void d_word(char st[], int pos, int len){ int l=strlen(st); int i; for(i=pos; i<=l-len; i++) { st[i] = st[i+len]; }} void search_del(char st1[], char st2[]){ int i, j; int m1=strlen(st1); int m2=strlen(st2); for(i=0; i<=m1-m2; i++) { for(j=0; j<m2; j++) { if(st1[i+j] != st2[j]) break; } if(j=m2) { d_word(st1, i, m2); m1 -= m2; }}} int main(){ char str1[256], str2[256]; printf("string? : "); gets(str1); printf("deleted word? : "); gets(str2); search_del(str1, str2); puts(str1); return 0;}
173 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:22:18 ] お願いします 問題【0からa-1までの整数の乱数をn個発生させ、発生した整数のヒストグラムを表示しなさい。 ただし。a<21とし、aとnはキーボードから入力する】 ______________________________________________とりあえずいままで作成したコードです__________________________________ #include <stdio.h> #include <math.h> #include <stdlib.h> main(void) { int n,a,b,i,val; int c[21]; printf("0からa-1までの整数の乱数をn個発生させ、\n"); printf("発生した整数のヒストグラムを表示させます\n"); printf("1から21までの任意の整数aを入力してください。\n"); scanf("%d",&a); printf("任意の正の整数nを入力してください。\n"); scanf("%d",&n); if(a<=0||a>=22) {printf("aの値を入力しなおしてください。\n");} else{ val=(double)rand()/(RAND_MAX+1)*a; if(n<=0) {printf("nの値を入力しなおしてください。\n");} else { for (i=0; i<=(a-1); i++) {printf("aが%dのとき、%d回\n",i,c[val]); c[val]=c[val]+1;} } } }___________________________________________________________________________________________________________________________
174 名前:173 mailto:sage [2007/10/25(木) 17:24:12 ] 結果表示はヒストグラムというか 〜は〜回という形式にします volとかそのへんの扱いかたがよく分からずに参っております よろしくお願いいたします。
175 名前:156 ◆B5khfT.h4o mailto:sage [2007/10/25(木) 17:26:49 ] レスしてくれた方やプログラムを作ってくれた>>163 さん、ありがとうございました。 とりあえず課題を出したうえで、C++にするのはどういうことか詳しく聞いてみます。
176 名前:65です [2007/10/25(木) 17:31:19 ] >169さん 丁寧にありがとうございます。 はい、アメリカの州は50です。 ところで、私は途中まで以下のようにコードを組み立てたのですが、以下のようなやり方でも、プログラムを完成させることはできますか? #include <iostream> #include <string> #include <fstream> using namespace std; int main (int argc, char **argv) { char peek; ifstream myFile; string cityName, stateName; float gasPrice; myFile.open("gasprice_file.txt"); while((peek = myFile.peek () ) ! = EOF) { myFile >> cityName; myFile >> stateName; myFile >> gasPrice; If(! myFile) { myFile.clear(); cityName = cityName + " " + stateName; myFile >> sateName; myFile >> gasPrice; { myFile.close(); return 0; }
177 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:53:30 ] >>173 #include <stdio.h> #include <stdlib.h> #include <time.h> main(void) { int n=-1,a=0,b,i,val,c[21]; for(i=0;i<21;i++) c[i]=0; srand((unsigned int)time(NULL));// 乱数の初期化 printf("0からa-1までの整数の乱数をn個発生させ\n"); printf("発生した整数のヒストグラムを表示します。\n"); printf("1から21までの任意の整数aを入力してください。\n"); while(!(a>0&&a<22)){ scanf("%d",&a); if(a<1||a>21) printf("aの値を入力しなおしてください。\n"); } printf("任意の正の整数nを入力してください。\n"); while(n<0){ scanf("%d",&n); if(n<0) printf("nの値を入力しなおしてください。\n"); } for(i=0;i<n;i++){ val=(double)rand()/(RAND_MAX+1)*a; c[val]++; } for (i=0; i<=(a-1); i++) printf("%d = %d回\n",i,c[i]); } 表示はヒストグラムでなくてもいいのかな。
178 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:58:47 ] >>170 アドバイスって言うか>>20 で回答もらってるじゃない。 ・if(j=m2)をif(j==m2) ・printf("%d\n", st1);をprintf("%s\n", st1); この2点の変更だけで動くはず。変更の仕方が間違ってるんだと思う。
179 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:06:46 ] >>177 whileの条件とループの中のifで2回判定するのはムダ
180 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:22:58 ] >>177 の訂正。入力部分。 while(scanf("%d",&a),!(a>0&&a<22)) printf("aの値を入力しなおしてください。\n"); printf("任意の正の整数nを入力してください。\n"); while(scanf("%d",&n),n<0) printf("nの値を入力しなおしてください。\n"); >>179 の指摘したムダを省くと多分こうなると思います。
181 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:26:06 ] ってやっちまった。>>180 だと文字入力したら無限ループしてしまう。 while(scanf("%d",&a),!(a>0&&a<22)){ printf("aの値を入力しなおしてください。\n"); fflush(stdin); } printf("任意の正の整数nを入力してください。\n"); while(scanf("%d",&n),n<0){ printf("nの値を入力しなおしてください。\n"); fflush(stdin); } こうでした。
182 名前:デフォルトの名無しさん [2007/10/25(木) 18:34:53 ] >>178 この様にコード書いたけどコンパイラが通らないです。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5151.txt
183 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:38:11 ] >>182 見ずにコメント。1.改行コード 2.全角スペース そろそろコンパイラが吐いたエラー貼ったらどうだ?
184 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:42:43 ] >>182 #include<string.h>を追加。もしかしてstr〜の関数習ってない?
185 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:45:55 ] >>177 ありがとうございます 実行してみたところ、 0以外の数字が何度やっても0回になってしまいますが これはどうすればよろしいのでしょうか?
186 名前:デフォルトの名無しさん [2007/10/25(木) 18:50:01 ] >>183 エラーが無いので下に張りました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5152.txt >>184 追加しても効果なかったです。関数str〜習ってます。
187 名前:デフォルトの名無しさん [2007/10/25(木) 18:52:46 ] >>186 「エラーが無いので」× 「エラーが長いので」○
188 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:54:50 ] 1] 授業単元:C言語 [2] 問題文:ファイルの内容を読み込んで、下記の例のように読み込んだ内容を ディスプレイに表示させよ。 ファイルの内容 誕生年:2000 誕生月:1 誕生日:2 身長:120.0 体重:21.0 名字:Kouno 名前:Hiro 実行例 氏名 Kouno Hiroです。 生年月日は2000年1月2日です 身長120,0cm 体重21,0kgです [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月26日 [5] その他の制限: ライブラリ関数は使っても大丈夫です。 読み込むことはできたのですが、fgetsを使うと「誕生年:2000」と読み込んで しまって2000だけ表示させることができません。 よろしくお願いします。
189 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:57:41 ] >>185 valにちゃんと値が入ってないのかな。 val=(double)rand()/(RAND_MAX+1)*a; を val=rand()%a; に変えてみてください。 >>186 インデントを全角スペースでやってない?
190 名前:デフォルトの名無しさん [2007/10/25(木) 19:04:06 ] >>189 盲点、スペースを全角でやっていました。 スペースを全て消したらコンパイルが通って、ちょんと動きました。 全角スペースでエラー返されるんですね、勉強になりました。 次からはスペースの全角/半角に気をつけます。
191 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 19:09:39 ] >>189 ありがとうございます!ちゃんとできました 助かりました
192 名前:デフォルトの名無しさん [2007/10/25(木) 19:57:16 ] >>188 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5153.txt
193 名前:169 mailto:sage [2007/10/25(木) 20:16:30 ] >>176 できます。あなたらならできます。
194 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 20:39:32 ] [1] 授業単元:プログラミング実験 [2] 問題文(含コード&リンク): case.f7.ems.okayama-u.ac.jp/statedu/lispstat-book/node85.html にならって以下のデータ平均分散を用いて確率を出せ。10次元です。 データ -18.858 1.046 -1.616 4.023 1.857 4.207 6.451 0.989 -3.807 0.744 平均 -6.388222e+00 -1.383500e+01 -1.249702e+01 -3.617623e+00 2.185494e-01 3.840833e+00 6.477101e+00 -1.552781e+01 4.537848e+00 -2.995257e+00 分散 1.504899e+01 2.376009e+01 2.176429e+01 2.650845e+01 2.850247e+01 5.442906e+01 3.594814e+01 7.991224e+01 2.946554e+01 3.397208e+01 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月26日まで [5] その他の制限: なし
195 名前:78&153 mailto:sage [2007/10/25(木) 20:56:27 ] すいません、問題Bに間違い&追加がありました。 実装仕様もあって、書いてたことが違ってました。 以下が訂正問題です。 [1] 授業単元:文字列操作プログラム [2] 問題文(含コード&リンク): 配列とポインタを使用し、文字列操作を行うプログラムを作成せよ。 @独自のstrlen関数mystrlen関数を自作する。 文字列のポインタを受け取り、文字列の長さを返す関数を作成する。 A独自のstrcpy関数mystrcpy関数を自作する。 文字列のポインタ2つを受け取り、文字列のコピーを行う関数を作成する。 B独自のatoi関数myatoi関数を自作する。 数値文字列のポインタを受け取り、数値を返す関数を作成する。 C独自のitoa関数myitoa関数を自作する。 数値を受け取り、指定された基数で文字列変換を行う関数を作成する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C言語 [4] 期限:2007年10月26日朝5:00まで >>196 に続く
196 名前:78&153 mailto:sage [2007/10/25(木) 20:56:58 ] >>195 の続き [5] その他の制限:実装仕様として、 @int mystrlen(const char*s) 第一引数:文字列のポインタ 戻り値:文字列の長さを返す Achar*mystrcpy(char*s1,const char*s2); 第一引数:コピー先バッファのポインタ 第二引数:コピー元文字列のポインタ 戻り値:第一引数の文字列へのポインタを返す Bint myatoi(const char*nptr); 第一引数:変換元の数値文字列 戻り値:変換された値を返す Cchar*myioa(int value,char*buff,int radix); 第一引数:変換元の整数 第二引数:変換後の数値文字列を格納するバッファのアドレス 第三引数:基数(何進数で変換するか。2〜36の範囲内で指定可能) 戻り値:第二引数の文字列へのポインタを返す と、なっております。 すいませんが回答の方をよろしくお願いします
197 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:03:26 ] >>66 = >>71 = >>93 = >>130 = >>194
198 名前:デフォルトの名無しさん [2007/10/25(木) 21:28:40 ] >>195 >>196 いまさら?これから変更するの面倒だし 期限:2007年10月26日朝5:00 ってことは残り7時間、無理。 がんばれノシ
199 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:31:16 ] 標準ライブラリ使っちゃダメって書いてないんだからそのまま引数渡せばいいだろ。
200 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:31:22 ] >>123 ありがとうございます! 感謝します!
201 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:36:03 ] よろしくお願いします。 [1] 授業単元:C++プログラミング [2] 問題文(含コード&リンク): 次のクラス定義を参照して、関数 func 内の処理を記述してください。 関数 func 内では p が派生クラス MagazineMotorcycle のインスタンスを指すかどうかを調べて、 もしそうならメンバー関数 Reserve を呼び出してください。そうでなければ false を返してください。 class Magazine { public: virtual bool Order(int amount = 1) = 0; }; class MagazineMotorcycle : public Magazine { public: bool Order(int amount = 1) {} bool Reserve() {} }; bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 } [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C++ [4] 期限: 10/26 12:00 [5] その他の制限:なし
202 名前:78&153 mailto:sage [2007/10/25(木) 21:45:03 ] >>198 昨日書き込んで、今日間違い気づいたんですよorz できればお願いします。自分にとっては、これってホントに初級編!?って いうぐらい難しい
203 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 21:46:42 ] >>201 bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p)) mm->Reserve(); return false; } これでおk?
204 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:03:47 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):stack.cpp 中のpushとpop関数を完成せよ。 stack.cpp:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5154.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2003 [3.3] 言語:c++ [4] 期限:2007年10月26日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理まで どうかよろしくお願いします。
205 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:10:08 ] >>203 ありがとうございます。 こちらを提出してみます。
206 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:12:28 ] >>201 bool func(Magazine* p) { // 可能ならば MagazineMotorcycle::Reserve() を呼び出す処理 if (MagazineMotorcycle* mm = dynamic_cast<MagazineMotorcycle*>(p)) return mm->Reserve(); return false; } こんどこそおk?
207 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:26:15 ] >>204 // データvalをスタック x に積む void push(int *x,int val) { // (1) スタックがオーバフローかどうかをチェック if (stack_pointer < stack_size) { // (2) オーバフローでなければデータ val をスタック x につむ x[stack_pointer++] = val; } } // データをスタック x からおろす void pop(int *x) { // (1) スタックがアンダーフローかどうかをチェック if (stack_pointer > 0) { // (2) アンダーフローでなければスタックxからデータをおろして、 // スタックポインターを調整 stack_pointer--; } } これでおk?
208 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:41:25 ] >>207 おkです。感謝です。 本当にありがとうございます。 助かりました。
209 名前:57 mailto:sage [2007/10/25(木) 22:54:44 ] >>60 レスありがとうございます。 今日の朝、main関数を作って動かしてみたのですが、 おかしいです。 例えば、連結リストのaの値を10、11、12とすると、 11、10、56787 と、一番最後が変な数値になってしまいます。 並び替える前に表示すると、10、11、12となってちゃんと動作するので、 表示する関数は間違ってないと思います。 一応補足として、自分が扱っている連結リストは一番最初に、aに値が 含まれていない要素があり、その後からaに値が含まれる要素が並びます。
210 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:10:52 ] >>202 #include<stdio.h> int mystrlen(const char *s) { int len=0; while(*s++!='\0') len++; return len; } int myatoi(const char *nptr) { int i,n=0,sign=0,len=0; const char *s=nptr; while(*s++!='\0') len++; if(*nptr=='-'){ sign++; len--; *nptr++; } for(i=0;i<len;i++) n=10*n+*nptr++-'0'; return sign ? -n : n; } mystrcpy,myitoaは>>83 のままで仕様満たしてるのでそれ以外を。
211 名前:デフォルトの名無しさん [2007/10/25(木) 23:11:09 ] >>147 さん ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5149.txt っていう課題が新たに出されたので、やっていただけませんか? 以前のプログラムがとても見やすかったので、よろしくお願いします。
212 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:19:38 ] >>168 さん、この生産管理プログラムの期限はいつまででしょうか。
213 名前:78&153 mailto:sage [2007/10/25(木) 23:21:11 ] >>83 >>210 遅い時間に本当にありがとうございます。 お手数おかけ致しました。(TT)
214 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:21:23 ] >>209 糞リストの仕様を書かなかったほうが悪い。
215 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:22:42 ] お願いします!! [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 1:int型整数をchar型配列の文字列に変換するitoa関数を作れ 2:long型整数をchar型配列の文字列に変換するltoa関数を作れ 3:float型小数をchar型配列の文字列に変換するftoa関数を作れ [3] 環境 [3.1] OS: XP sp2 [3.2] コンパイラ名とバージョン:VC 6.0 [3.3] 言語: C [4] 期限: 明日26日(金)の16時まで
216 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:33:35 ] >>215 1. char* itoa(int n){static char c[16];sprintf(c,"%d",n);return c;} 2. char* ltoa(long n){static char c[16];sprintf(c,"%ld",n);return c;} 3. char* ftoa(float n){static char c[16];sprintf(c,"%f",n);return c;}
217 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:34:03 ] >>215 itoaは >>83 にあるよ。ltoaはitoaとほとんど変わらん。 ftoaも小数点以下あるだけであんま変わらないな。
218 名前:57 mailto:sage [2007/10/25(木) 23:37:20 ] >>214 申し訳ないです。 リストの仕様は以下の様になります。 ・リストは連結リストで片方向リストです。 ・次の要素がない場合(リストの一番最後)は、次の要素へのポインタをNULLとします。 ・リストの一番最初には、aに値が含まれていない要素があります。 よろしくお願いします。
219 名前:デフォルトの名無しさん [2007/10/25(木) 23:42:13 ] 木曜日の15時までです。
220 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 23:45:52 ] >>218 static struct c *re_internal(struct c *l) { struct c *p; if(l->n==NULL) return l; p = re(l->n); l->n->n = l; l->n = NULL; return p; } struct c *re(struct c *l) { if(l->n) l->n = re_internal(l->n); return l; }
221 名前:デフォルトの名無しさん [2007/10/25(木) 23:49:08 ] 再帰は?
222 名前:215 mailto:sage [2007/10/26(金) 00:03:01 ] >>216 さすがにsprintfは使うわけにはいかないかと・・・w >>217 ありがとうございます。 >>83 を参考にしてやってみようと思います。
223 名前:57 mailto:sage [2007/10/26(金) 00:03:47 ] >>219 減点はするけど、出さないよりは、ましだから今週の課題と一緒に来週に 出しなさいと言われました。 >>220 ありがとうございます。 リストの仕様は>>218 に書いた通りですが、 問題自体は>>57 に書いた通り、再帰を使わないと…
224 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:08:57 ] >>220 re_internalの中でre呼び出してる
225 名前:57 mailto:sage [2007/10/26(金) 00:23:54 ] >>224 再帰って自分自身の関数を呼び出すんじゃないですっけ? これだと、他の関数を呼び出してるだけな気がするのですが… 一つの関数で作ることって出来ないのですかね?
226 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:24:24 ] >>218 直した static struct c *re_internal(struct c *l) { struct c *p; if(l->n==NULL) return l; p = re_internal(l->n); // <- この行 l->n->n = l; l->n = NULL; return p; } struct c *re(struct c *l) { if(l->n) l->n = re_internal(l->n); return l; } >>224 thx
227 名前:57 mailto:sage [2007/10/26(金) 00:50:35 ] >>226 ありがとうございます。
228 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:58:09 ] リストの先頭にデータを入れないことによってどんな利点があるの?
229 名前:168 [2007/10/26(金) 00:58:45 ] >>147 ・212 28日までにお願いしたいんですけど・・・ よろしくお願いします。
230 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 07:29:15 ] 1] 授業単元: C言語 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5156.txt [3] 環境 [3.1] OS:UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C言語 [4] 期限: 2007年10月26日 [5] その他の制限: ライブラリ関数は使ってもおkです 徹夜で考えたんですが分からなかったのでお願いします kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5155.txt のよに書いたのですが セグメントエラーが出てしまいます。 ダメなところとかがあったら直して教えてください。
231 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 07:51:19 ] >>230 比較用演算子 == を使うこと. if(fop=NULL) if(fout=NULL) あと、終盤で下記不要 > heikin=goukei/NUM; > fprintf(fout,"番号\t平均点との差\n"); > for(i=0;i<NUM;i++) > { > fscanf(fop,"%d%d",&gakusei[i].bangou,&gakusei[i].seiseki); > goukei=+gakusei[i].seiseki; > } 最後は goukeiもNUMも整数なのでgoukei/NUMは整数となるのを防ぐ heikin=(double)goukei/NUM;
232 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:09:19 ] >>230 14〜21行目: 使わない変数 (fairu, cp, sirusi1, sirusi2) の宣言は外しましょう 21行目: heikin は int 型でいいんじゃない? double 型で行きたい場合、int型変数 (seiseki, goukei等) との計算をするときにキャストとか考えた方が良い 24,26行目: scanf("%s", &open); → scanf("%s", open); ポインタを習っているかは知りませんが、配列名は単独で使用するとポインタ型になります 30,42行目: if (fop=NULL) → if (fop == NULL) C言語での比較演算子は == です 56行目: goukei=+gakusei[i].seiseki; → goukei += gakusei[i].seiseki; 演算子を見直しましょう 63〜70行目: 平均2回計算してるから消そう 74行目: "%d\t%dn" → "%d\t%d\n" 改行文字は "\n" で表します
233 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:16:51 ] >>231 さん >>231 さん 朝早くだったのにレスありがとうございます。 おかげ様でセグメントエラーも出ないで実行できました 来週中間試験があるので もっと勉強しなきゃいけないなと思いました。 ホントにお世話様でした
234 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:46:17 ] 中間試験って紙にコード書くの?
235 名前:課題お願いします [2007/10/26(金) 09:05:21 ] [1] 授業単元:プログラミング演習 [2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCrをもおめるプログラムを作成せよ。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン:Visual C++ [3.3] 言語: C [4] 期限: 今日の昼までに。 [5] その他の制限: 授業で配列とポインタは習いました。この問題は「関数」というセクションの問題です。大学の授業なのであまり難しくなり過ぎないようにお願いします。
236 名前:235 mailto:sage [2007/10/26(金) 09:07:30 ] 書き間違いorz [2] 問題文:n個からr個を選ぶ組み合わせは、nCr = n!/r!(n-r)! ただし、n! = 1*2*3*…*(n-1)*nで求められる。そこで、n!を求める関数functorial(n)を定義し、それを3度呼び出す形で、組み合わせnCr を求めるプログラムを作成せよ。
237 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:09:55 ] int function(int n) { return n<2 ? 1 : n * function(n-1); } int nCr(int n, int r) { return function(n) / function(r) / function(n-r); }
238 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:11:28 ] 一瞬で片付くというのもある意味爽快だ
239 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:20:03 ] >>234 中間試験は筆記と実技があって 実技は端末からサーバーにアクセスして書きます。 実技は今のままじゃ、受かる気がしません… ファイル処理、ポインタがかなりヤバイです
240 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 09:23:34 ] 関数名functorialだw 階乗ならfactorialだし、関数ならfunctionだからfuncだけみて間違っちまった。
241 名前:デフォルトの名無しさん [2007/10/26(金) 10:59:15 ] 1] 授業単元: プログラミング [2] 問題文:3人の昼食代を入力し、その平均を関数aveにて計算し、 「割り勘で△円」と表示するプログラム (定義例:double ave(double c1,double c2,double c3)) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月26日まで] できれば早いほうがうれしいです。 [5] その他の制限:定義例を使ってください if,while,switch,forは習いました お願いします
242 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:01:22 ] なんで金額がdoubleなんだよ・・・
243 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:05:00 ] >>234 別人だけど、フロッピーでソース提出とか、メールで添付とかもあるけど、一番多いのは紙。 正直、このご時勢で紙でやるのは馬鹿だと思う。
244 名前:デフォルトの名無しさん [2007/10/26(金) 11:14:18 ] >>242 小数点出てもいいらしいです。要はaveを使って計算したいのだと思います。
245 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:18:40 ] 俺の高校は紙にVBA書かされたぜ
246 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:19:06 ] >>243 国がやってる情報処理系の資格試験は、全部紙だぞ?
247 名前:デフォルトの名無しさん [2007/10/26(金) 11:24:49 ] 先日はありがとうござました。 [1] 授業単元: C言語演習U [2] 問題文(含コード&リンク): 前回の授業で"姓/名"という形式の文字列を入力すると、これを姓と名を表す2つの文字列に分割するプログラムを作成した。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5158.txt このプログラムを関数を用いた形に書き換えようと思い、次のプログラムを作成した。 このプログラムを実行すると、おかしな出力になってしまった。 問題1:このプログラムのどこが間違っているのか、その理由を答えよ。 (ヒント:pt_s,pt_mはローカル変数) 問題2:プログラムを書き直せ。 (配列を渡す方法、ポインタのアドレスを渡す方法などある) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限:29日(月)
248 名前:デフォルトの名無しさん [2007/10/26(金) 11:34:38 ] >>239 うちも紙〜 さすがにプログラムを卓上で作りコード全部書けは無いけど、 5〜6行くらいの穴埋めでプログラムを完成させよとか。
249 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 11:59:09 ] 流石に資格試験でソース全部書けは無いだろ。 あったら死ねるけどw 普段書かない記号とか書かなきゃならんし、 インデント一つ追加しようと思ったらその間書き直しだし、 書いてる事がタイプ以上に考えてる事に追いつかないし、 変数名チェックも全部自分でしなけりゃならんから面倒だし。
250 名前:デフォルトの名無しさん [2007/10/26(金) 12:01:52 ] >>239 うちは進んでるよ。 テストプログラムを当日教室で下してきて実行すると、P検みたいなプログラムが走って画面左半分が問題書いてあって、右半分の上がコマンドプロンプト?で下がテキストパッドになってる。 問題にある仕様のプログラムをテキストパッドで作って、「実行」ボタンがその下にあるから押すとコマンドプロンプトで自動的にコンパイル+実行してくれる。 作ってる途中のものを試しでコンパイルする度、実行はうざかった。 問題全部作ったら問題1番最後の回答終了を押すと自動で結果をサーバーに送信して、プログラム終了。 ファイヤーウォールに引っ掛かって提出できないとか、提出時に回線が込んでて提出できないとかで、良悪あるけどね。
251 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:04:09 ] >>250 なんだかすごい環境だな。
252 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:09:33 ] >>239 高専電気科の情報の授業では ごく普通にPCでやってるぞ しかも、授業で書いたコードを参照してもいいというオマケ付きで。 授業理解度を確かめるのならこういう方式でもよさげな気がする。
253 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:12:10 ] >>241 これは……一見するととても簡単そうなプログラムに見える…… そう見えるのはオレだけか……?
254 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 14:03:27 ] strcpyの使い方で質問があるんですが、 strcpy(a+(変数),b+(変数)); これはどういう意味でしょうか?+が特に分からないんですが… a、bは配列です
255 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 14:06:41 ] >>250 せっかくプログラミングやってんだから、 講師の側でもそんな感じでテスト用プログラム作って欲しいもんだな >>252 そういう方式もいいよなあ 実際のプログラミングだとソース参照し放題、ネットで調べ放題なわけで それでもできない人がいるんだから、十分実力測れるだろう プログラミングは暗記じゃない
256 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 14:38:19 ] >>254 その配列a, bの +変数分以降のみの文字列をコピーするという意味。 変数が 2 だったらaの先頭 2 文字は変化しない。
257 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 15:04:04 ] >>256 分かり易い解説ありがとうございました
258 名前:235 mailto:sage [2007/10/26(金) 15:23:52 ] >>237 ありがとうございました!!
259 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 16:17:50 ] >>247 元のプログラムではポインタ変数は仮引数なので呼び出し元に結果が反映されない #include <stdio.h> void namesplit(char [], char **, char **); int main(void){ char full[200]; char *pt_sei, *pt_mei; printf ("姓/名で入力せよ:"); scanf("%s", full); namesplit(full, &pt_sei, &pt_mei); printf("姓:%s\n 名:%s\n", pt_sei, pt_mei); return 0; } void namesplit(char f[], char **pt_s, char **pt_m) { /*pt_sとpt_mをfの先頭アドレスにセット*/ *pt_s = f; *pt_m = f; /*スラッシュまでpt_mを移動*/ while (**pt_m != '/') (*pt_m)++; **pt_m = '\0'; (*pt_m)++; /*これで、pt_seiとpt_meiはそれぞれ姓と名を指す場所に移動した?*/ }
260 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 17:08:00 ] >>253 わかる人は簡単だよ でも、習ったばっかりなんだろ 最初はみんなわからないもんだよ
261 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 17:32:12 ] 一分で書けるけど書かない
262 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 18:04:04 ] なぜ書かない?
263 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 18:17:14 ] 単純に3つの引数とって平均を求める関数て言えばいいのに、なんで割り勘とか余計な設定つけてんだよ。 一人一人の代金がわかってるなら、割り勘になんてしないだろ。
264 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 18:43:15 ] >>263 「相乗平均じゃなくて相加平均だよ^^ お前ら間違えんなよ^^」て言いたかったんだよ 気の回る良い先生じゃないか
265 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 19:40:50 ] 宿題マダァ?(・∀・ )っ/凵⌒☆チンチン
266 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:09:36 ] ひつまぶしキボンヌ
267 名前:デフォルトの名無しさん [2007/10/26(金) 22:12:45 ] 質問テンプレ】 [1] プログラミング [2] 自然対数の底eを求めるプログラムをSRT除算を用いて求めよ。 exp(x)=Σ(n=0,∞){1/n!}=1/0!+1/2!+1/3!+…+1/n! =1+(1+1/2(1+1/3(1+…+1/n))) 固定小数点で、整数部を16ビット、小数部を48ビットとする(n≧17) [3] 環境 [3.1] Vine Linux [3.2] gcc [3.3] C言語 [4] 2007年10月29日8:40まで でも早い方がいいです。 [5] ループを使用してお願いします。
268 名前:デフォルトの名無しさん [2007/10/26(金) 22:12:55 ] 全ディレクトリのファイルを調べてサイズが一致するファイルをプルパスで出力せよ
269 名前:デフォルトの名無しさん [2007/10/26(金) 22:19:18 ] journal.mycom.co.jp/column/architecture/087/index.html
270 名前:デフォルトの名無しさん [2007/10/26(金) 22:22:06 ] >>265 自分で要求するほど、宿題を回答してやりたいのか。 この掲示板の鏡だな、解けない問題は無いってか?
271 名前:デフォルトの名無しさん [2007/10/26(金) 22:25:20 ] SRT除算は簡単ではないな
272 名前:デフォルトの名無しさん [2007/10/26(金) 22:43:03 ] [1] プログラミング [2] doiob.net/doiob/uploader/src/up11903.jpg シンプソンの公式を用いて定積分を求めるプログラムを作成し、 以下2つの定積分を計算せよ。ただし刻み幅 h=0.1 とする。 [3] 環境 [3.1] Linux [3.2] gcc [3.3] C言語 [4] 2007年10月29日 お願いします
273 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:46:03 ] >>269 これはむずい もう少し前のページから見ないと単語がわからなすぎる
274 名前:デフォルトの名無しさん [2007/10/26(金) 22:54:36 ] シンプソンは簡単 関数をf(x)とし、 区間(a,b)を一分割で積分するとする m=(a+b)/2 、d=(b-a)とするとき積分値は d/6 * (f(a)+f(b)+4f(m))だ N分割のときはこの値を使えばいい
275 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 22:57:47 ] >>274 なぜコードで示さないんだ
276 名前:デフォルトの名無しさん [2007/10/26(金) 22:59:44 ] 具体的には、区間(a,b)をN分割するならば、 F(s,t)= (t-s)/6 * (f(s)+f(t)+4f(s+t /2)) 、 d = (b-a)/Nとおくとき n=0,・・・,N-1に対しF(a+nd, a+(n+1)d)の和を計算すればよい
277 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:02:42 ] >>276 擬似コードだけなら単位はやれないな
278 名前:デフォルトの名無しさん [2007/10/26(金) 23:03:56 ] >>275 プログラム自体は計算と結果の出力だけの簡単なものだからチャレンジしてみなってことじゃない? 計算内容自体は>>274 が解説してくれてるし。 もしくは作成中か。
279 名前:デフォルトの名無しさん [2007/10/26(金) 23:08:01 ] >>259 ありがとうございます。ポインタ変数が問題だったんですね。 仮引数だったのをポインタのポインタで呼び出しが出来るようにしたと。 なるほど納得しました。
280 名前:デフォルトの名無しさん [2007/10/26(金) 23:09:01 ] #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return exp(1/sqrt(1+x*x*x*x));} #define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6 #define G(a,b) (g(a)+g(b)+4*g((a+b)/2))*(b-a)/6 int main(){ double x,d=0.1,sum; sum=0; for(x=0;x<1;x+=d)sum+=F(x,x+d); printf("%f\n",sum); sum=0; for(x=0;x<1;x+=d)sum+=G(x,x+d); printf("%f\n",sum); }
281 名前:デフォルトの名無しさん [2007/10/26(金) 23:10:31 ] 訂正 double g(double x){return 1/sqrt(1+x*x*x*x);}
282 名前:デフォルトの名無しさん [2007/10/26(金) 23:12:03 ] 値があっているか確認したいが数値計算ソフトだれか持っている?
283 名前:デフォルトの名無しさん [2007/10/26(金) 23:12:09 ] 何にせよ動作するリストを出すのがこのスレってもん
284 名前:デフォルトの名無しさん [2007/10/26(金) 23:12:15 ] >>274 >>276 で組み込む計算式作ってくれてるから、もう課題出来てるも同然な気がする。 だって、その式を表示するだけで完成でしょ。
285 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:17:30 ] >>272 カウンタは整数のが良いと思うので便乗 #include <stdio.h> #include <math.h> double func1(double x) { return sqrt(pow(x, 4) + 1); } double func2(double x) { return exp(-pow(x, 2)); } int main(void) { double l = 0.0, r = 1.0, h = 0.1, s = 0; int i; for(i = 0; i < (r - l)/h; i += 2) s += h/3*(func1(l + i*h) + 4*func1(l + (i + 1)*h) + func1(l + (i + 2)*h)); printf("%g\n", s); for(i = 0; i < (r - l)/h; i += 2) s += h/3*(func2(l + i*h) + 4*func2(l + (i + 1)*h) + func2(l + (i + 2)*h)); printf("%g\n", s); return 0; }
286 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:03:16 ] [1] 授業単元: コンピューター [2] 問題文(含コード&リンク):整数演算と浮動小数点演算で自分のプロセッサのスピードをテストするプログラムと結果を示しなさい。 テストするのは整数、浮動小数点ともに、加減乗除の4つづ、計8つです。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: [5] その他の制限: 結果はcygwinのtimeを使えってばっちゃが言ってました。 お願いします。
287 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:07:31 ] ふざけてんの
288 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:13:39 ] >>280 副作用乙
289 名前:デフォルトの名無しさん [2007/10/27(土) 00:18:05 ] なんで6で割っているんだぜ?
290 名前:デフォルトの名無しさん [2007/10/27(土) 00:34:16 ] >>289 #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return exp(1/sqrt(1+x*x*x*x));} #define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6 #define G(a,b) (g(a)+g(b)+4*g((a+b)/2))*(b-a)/6 int main(){ double x,d=0.001,sum; sum=0;for(x=0;x<1;x+=d)sum+=F(x,x+d); printf("%f\n",sum); sum=0;for(x=0;x<1;x+=d)sum+=G(x,x+d); printf("%f\n\n",sum); //単純な定積分 int n,N=1/d; sum=0;for(n=0;n<N;n++)sum+=d*g(n*d); printf("%f\n",sum);}
291 名前:デフォルトの名無しさん [2007/10/27(土) 00:47:03 ] Integral(f,a,b,d)って出来るの? 関数わたし
292 名前:デフォルトの名無しさん [2007/10/27(土) 00:55:29 ] スマソ全然見てなかったわ
293 名前:272 [2007/10/27(土) 01:03:57 ] ありがとうございました 解説で分かってきたので色々と試してみます
294 名前:291 [2007/10/27(土) 01:09:38 ] できた #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return 1/sqrt(1+x*x*x*x);} #define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6 typedef double (*func)(double); double Integral(func f,int a,int b, double d){ int n,N=(int)1/d;double s=0; for(n=0;n<N;n++)s+=F(n*d,n*d+d); return s;} int main(){ double d=0.001; printf("%f\n",Integral(f,0,1,d)); printf("%f\n",Integral(g,0,1,d));}
295 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:19:55 ] 先こされた。 #include<stdio.h> #include<math.h> double quadInterpol( double (*fun)( double ), double begin, double end ) { return ((*fun)(begin) + 4*(*fun)( (begin+end)/2 ) + (*fun)(end)) * (end-begin)/3; } double integral( double (*fun)( double ), double begin, double end, double h ) { double result = 0.0; double pos = begin; while( pos <= end ) { result += quadInterpol( (*fun), pos, pos+h ); pos += h; } return result; } double f(double x) { return exp(-x*x); } int main(void) { const double diff = 0.1; printf("result=%f\n",integral(f,0.0,1.0,diff)); return 0; }
296 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:26:36 ] >>294 出題者じゃないんだが。 typedef double (*func)(double); これってなにやってるの?
297 名前:57 mailto:sage [2007/10/27(土) 01:29:04 ] >>228 自分も詳しい理由は分かりませんが、この再帰の問題以前にも、リストで 色々な動作をする関数を作ったので、その関数を作る時、関数に引数を 渡したりするのに、リストの先頭にデータを入れない方が都合が 良いんじゃないですかね? リストは先頭にデータを入れないとばかり思ってたので、よく分かりませんが。
298 名前:291 [2007/10/27(土) 01:30:26 ] >>296 たとえばDLLを使うとき次のように書く 型の定義 typedef int (__stdcall *FNC)(const HWND , LPCSTR , LPSTR , const DWORD); main(){ HINSTANCE hd = LoadLibrary("UNZIP32.DLL"); FNC p = (FNC)GetProcAddress(hd,"UnZip"); }
299 名前:デフォルトの名無しさん [2007/10/27(土) 01:30:41 ] >>290 すいませんd=0.001となってるのが良く分からないんですが
300 名前:291 [2007/10/27(土) 01:31:39 ] >>299 細かくした方が値が正確になるって事だけだ d=0.1でいい
301 名前:コッチェビン [2007/10/27(土) 01:32:28 ] なんかすごいシコシコしたい・・・
302 名前:デフォルトの名無しさん [2007/10/27(土) 01:33:37 ] >>300 どうもです
303 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:34:19 ] >>298 つまりfuncという関数型ができたということ? そうしたらIntegral(func funcName,...) とすべきでは? それと #define F(a,b) (f(a)+f(b)+4*f((a+b)/2))*(b-a)/6 ここでfつかっちゃったらマクロFでは常に関数fが呼び出されることにならない?
304 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:35:47 ] ちなみに追い詰めてるわけじゃないです。数値あわせがしたいだけです。 計算結果に自信がないので。
305 名前:291 [2007/10/27(土) 01:36:19 ] >>303 呼び出すのはfでいいんだよ 引数でfとかgを指定するから
306 名前:291 [2007/10/27(土) 01:37:56 ] >>304 単純な定積分の値と比較したから正解だろう >>290 で求めている あと>>290 はgが間違えていて 正しくは double g(double x){return 1/sqrt(1+x*x*x*x);}
307 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:38:07 ] >そうしたらIntegral(func funcName,...) スマソ。そうなってた。
308 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:40:16 ] >>305 double Integral(func f,int a,int b, double d){ int n,N=(int)1/d;double s=0; for(n=0;n<N;n++)s+=F(n*d,n*d+d); return s;} 引数でfという関数を取っているのは確かなんだけど 関数内で一回も使ってない。
309 名前:291 [2007/10/27(土) 01:41:38 ] >>308 Fがマクロだから使っている あと使っていないのはaとbだ 勝手に(0,1)だとおもって書いてしまった
310 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:41:57 ] >>308 マクロ展開してみればいい でも名前が被っているのは気持ち悪いな #include<stdio.h> void a(void){printf("func a\n");} void b(void){printf("func b\n");} void c(void (*a)(void)){a();} int main(void){ c(a); c(b); return 0; }
311 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:43:31 ] >>309 なるほどね。理解できました。 exp(-x*x)の関数名をfにしないでくれたらよかった。
312 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 01:53:03 ] >>294 粘着すまん。 6じゃなくて3で割らないといけなくないか? h=0.1で指定されているし。
313 名前:修正版 [2007/10/27(土) 02:00:49 ] #include <stdio.h> #include <math.h> double exp_x2(double x){return exp(-x*x);} double ichiwaru_root_1tasu_x4(double x){return 1/sqrt(1+x*x*x*x);} #define F(a,b) (f((a))+f((b))+4*f(((a)+(b))/2))*((b)-(a))/6 typedef double (*func)(double); double Integral(func f,double a,double b, double d){ int n,N;double s=0; N=(int)(b-a)/d; for(n=0;n<N;n++) s+=F(a+n*d,a+(n+1)*d); s+=F(N*d,b);return s;} int main(){ double d=0.1; printf("%f\n",Integral(exp_x2,0,1,d)); printf("%f\n",Integral(ichiwaru_root_1tasu_x4,0,1,d));}
314 名前:修正版 [2007/10/27(土) 02:03:09 ] >>312 そもそも2hの幅で積分しろってことか それならそうだな
315 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:04:51 ] うがあぁ数値が合わない。 何が違うんだ。。。。。
316 名前:修正版 [2007/10/27(土) 02:07:29 ] >>312 でも最小の区間を与えた方が標準的だと思う Integral(f, 0, 1, 0.2))と呼び出せば正解と一致する値が出るはずだ
317 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:11:03 ] >>316 考えてみる。 正解はちなみにいくつなんだ 俺は result=1.560123 result=1.988458 そっちは 1.493648 1.854075 他の検証方法ってある?Excelあたりでできるもんかね?
318 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:12:30 ] あ。6->3にした値ね。
319 名前:修正版 [2007/10/27(土) 02:17:43 ] 正解は0.746825と0.927040じゃないか 単純な積分値とほぼ一致する #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return 1/sqrt(1+x*x*x*x);} int main(){ double x,s,d=0.001; s=0;for(x=0;x<1;x+=d)s+=d*f(x); printf("%f\n",s); s=0;for(x=0;x<1;x+=d)s+=d*g(x); printf("%f\n",s); }
320 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:25:04 ] Excelで確認したところ俺もexp(-x*x)の単純な積分の値は 0.747508011 ぐらいになった。 では6で割るべきなのか。
321 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:28:04 ] 6->3にした結果 俺 result=0.780061 result=0.994229 そちら 0.746825 0.927040 そっちの勝ちだ.orz ノシ
322 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:28:58 ] 間違えた 3->6
323 名前:修正版 [2007/10/27(土) 02:31:52 ] doiob.net/doiob/uploader/src/up11903.jpg この式よく見てみろ hを算出するときに既に2で割っている 分割数nに対して2nで割っているからややこしいだけ
324 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 02:34:34 ] そういうことか・・・ややこしい。
325 名前:デフォルトの名無しさん [2007/10/27(土) 02:40:23 ] 便乗質問なんだけど h=0.1で与えられてるから式の通りに3で割るんじゃないの? の辺りがイマイチ理解できんので教えてくれ…
326 名前:修正版 [2007/10/27(土) 02:46:21 ] >>325 問題どおりにやるとひとつひとつの積分区間は2hなので 6で割る部分と打ち消しあって3になる 幅hの積分を求めるのではなく x とx+hとx+2hの三点を2次関数で近似したいと言うことなんだろう だから2h幅になっている
327 名前:修正版 [2007/10/27(土) 02:48:01 ] >>325 原理、近似の方法はここに書いてある ja.wikipedia.org/wiki/%E3%82%B7%E3%83%B3%E3%83%97%E3%82%BD%E3%83%B3%E3%81%AE%E5%85%AC%E5%BC%8F
328 名前:デフォルトの名無しさん [2007/10/27(土) 02:54:49 ] ありがとうございます
329 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 03:05:21 ] >>287 ふざけてないです。 おおマジです。
330 名前:デフォルトの名無しさん [2007/10/27(土) 03:57:35 ] 引用しますが、計算式を #define F(a,b,h) (f(a)+f(b)+4*f((a+b)/2))*h/3 #define G(a,b,h) (g(a)+g(b)+4*g((a+b)/2))*h/3 というようにhを用いた式で表すなら 図のように d=0.1 for(x=0;x<1;x+=d*2) とすればいいのか
331 名前:修正版 [2007/10/27(土) 04:06:02 ] >>330 #include <stdio.h> #include <math.h> double f(double x){return exp(-x*x);} double g(double x){return 1/sqrt(1+x*x*x*x);} #define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3 #define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3 int main(){ double x,sum,h=0.1; sum=0; for(x=0;x<1;x+=2*h)sum+=F(x,h); printf("%f\n",sum); sum=0; for(x=0;x<1;x+=2*h)sum+=G(x,h); printf("%f\n",sum);}
332 名前:デフォルトの名無しさん [2007/10/27(土) 04:12:10 ] 何か邪魔臭くなっていましたね さんくすこ
333 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:27:42 ] まだやってたのか。俺は寝てしまって今起きた #define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3 #define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3 じゃなくて #define F(x,h) (f(x) + 4*f(x+h/2) + f(x+h)) * h/6 #define G(x,h) (g(x) + 4*g(x+h/2) + g(x+h)) * h/6 にするかもしくはh=0.05にしないといけない。
334 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:35:59 ] すまん。寝ぼけて間違えた。 >>331 でOK。
335 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:37:39 ] やっと数値のずれが直ったので貼る #include<stdio.h> #include<math.h> double quadInterpol( double (*fun)( double ), double begin, double h ) { return ((*fun)( begin ) + 4.0*(*fun)( begin + h ) + (*fun)( begin + 2.0*h )) * h/3.0; } double integral( double (*fun)( double ), double begin, double end, double h ) { double result = 0.0; double pos = begin; do { result += quadInterpol( (*fun), pos, h ); pos += 2.0*h; } while( pos < end ); return result; } double f(double x) { return exp(-x*x); } double g(double x) { return 1.0/sqrt(1 + x*x*x*x); } int main(void) { const double diff = 0.1; printf("result=%f\n",integral(f,0.0,1.0,diff)); printf("result=%f\n",integral(g,0.0,1.0,diff)); return 0; }
336 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 08:55:22 ] ひゃっほう。
337 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 10:08:16 ] なんでシンプソン公式だけでこんなにスレ進むんだよw
338 名前:デフォルトの名無しさん [2007/10/27(土) 10:59:46 ] [1] 授業単元: プログラミング [2] 問題文:整数nをscanfで入力後"factorial"という関数を呼び出して、n!を 求めるプログラム(結果はmainにて表示) (定義例:int factorial(int num)) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:定義例を使ってください if,while,switch,forは習いました お願いします
339 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:06:51 ] #include <stdio.h> int factorial(int num) { int i, ret = 1; for(i=2; i<=num; i++) ret *= i; return ret; } int main(void) { int n; printf("nを入力:"); scanf("%d", &n); printf("%dの階乗は%d\n", n, factorial(n)); return 0; }
340 名前:デフォルトの名無しさん [2007/10/27(土) 11:17:19 ] >>339 全くわかんなかったのに数分で解いてるよ(>_<) ありがとうございました。
341 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:27:20 ] て言うか既出ネタだろ >>235-237 で
342 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:29:23 ] 階乗は頻出の基本問題だし、このスレで答えてる人なら数分とかじゃなくて、問題見た瞬間に即答だろ。
343 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 11:49:08 ] テンプレレベルだよな・・・と思ったらwikiにも書いてないな 今から編集してくる
344 名前:デフォルトの名無しさん [2007/10/27(土) 11:51:23 ] >>342 さすがですね 勉強不足ですいません
345 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:09:39 ] ×勉強不足 ○勉強する気がない
346 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:13:00 ] LU分解とか死ねwwwwww 京大電電でつけど、プログラムの課題がイミフwwwwwwww
347 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 12:15:15 ] それ、プログラム以前の問題だろ Fランの大学ですらやる基本的な問題だし
348 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:38:28 ] 【質問テンプレ】 [1] 授業単元: 画像工学 [2] 問題文(含コード&リンク):ある特定の画像を自動的に判別する フォルダ内の画像を自動的に判別し,緑の画像があればhighlightのフォルダに なければotherのフォルダに分別する [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) よくわかりません [3.3] 言語: (C/C++/どちらでも可 のいずれか) Visual C++ 2005 [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週水曜日まで [5] その他の制限: 特にありません kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5159.zip
349 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 13:47:53 ] >>347 池沼でサーセンwwwww
350 名前:デフォルトの名無しさん [2007/10/27(土) 14:08:07 ] 348 こんなの面倒 授業でていたやつのほうが関数にくわしいだろ
351 名前:デフォルトの名無しさん [2007/10/27(土) 15:52:58 ] [1] 授業単元: C言語 [2] 問題文:2×2の行列A,Bの積(cのij成分=Σaのij成分bのij成分)を表示する a[i][j]=[0 4] b[i][j]=[5 0] [-5 -1] [0 -5] [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:for文を用いてください
352 名前:デフォルトの名無しさん [2007/10/27(土) 16:02:13 ] #include <stdio.h> main(){ int i,j,x=0,a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5}; for(i=0;i<2;i++)for(j=0;j<2;j++)x+=a[i][j]*b[j][i]; printf("%d\n",x); }
353 名前:デフォルトの名無しさん [2007/10/27(土) 16:12:53 ] 2次元配列のサイズを調べる方法ありますか?
354 名前:デフォルトの名無しさん [2007/10/27(土) 16:16:09 ] #include <stdio.h> main(){ int x[70][6],m,n; m=sizeof(x)/sizeof(x[0]); n=sizeof(x[0])/sizeof(x[0][0]); printf("%d %d",m,n); }
355 名前:デフォルトの名無しさん [2007/10/27(土) 16:27:45 ] #include <stdio.h> main(){ int i,j,k; int a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5},c[2][2]; for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) c[i][j]=a[i][k]*b[k][j]; for(i=0;i<2;i++){ for(j=0;j<2;j++)printf("%d ",c[i][j]); printf("\n");} }
356 名前:デフォルトの名無しさん [2007/10/27(土) 16:34:11 ] [1] 授業単元: C言語 [2] 問題文:キーボードから5点の座標を二次元配列に入力し、 原点から最も離れた点の座標を出力するプログラムを作成せよ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:多次元配列まで習ってます
357 名前:147 mailto:sage [2007/10/27(土) 16:35:47 ] 機械に仕事を割り当てるところまでやった すなわち、問題文の >5種類の性能の異なる加工機械が各1台ある工場で、100種類の製品を作っている。 >各製品がその日に受注した場合、LT(完成までにかかる日数)を表示するスケジューリングプログラムを作成せよ。 >また、ランダムに発注があり、発注があった場合にのみ実際に機械は使用される。 >すなわち、発注が一度もなければ100日間ずっと同じLTが表示され、発注があれば、 >その日以降は機械が使用されているので、LTが長くなる可能性があるということ。 ところまで。 // 生産計画・生産管理 // 97th-res: >>168 (>>111 , >>211 , >>229 ) // 2007/10/27 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5160.txt
358 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 16:46:34 ] >>356 #include<stdio.h> #include<math.h> int main(void) { double maximum_distance=0.0, distance; double x, y, point[5][2], (*maximum_point)[2]; int i; for(i=0;i<5;i++) { printf("Input x :"); scanf("%lf", &x); printf("Input y :"); scanf("%lf", &y); point[i][0]=x; point[i][1]=y; distance=sqrt(x*x+y*y); if(distance>maximum_distance || !i) { maximum_distance=distance; maximum_point=&point[i]; } } printf("\n( %lf , %lf )\n", (*maximum_point)[0], (*maximum_point)[1]); return 0; }
359 名前:入力うまくいかない [2007/10/27(土) 16:48:36 ] #include <stdio.h> main(){ int x[6],y[6],i,ban; double max=0,d; for(i=1;i<6;i++){ printf("\n%d 番目のx座標を入力して下さい ",i); x[i]=getchar(); printf("\n%d 番目のy座標を入力して下さい ",i); y[i]=getchar();} for(i=1;i<6;i++){ d=x[i]*x[i]+y[i]*y[i]; if(d>max){max=d;ban=i;}} printf("原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]); }
360 名前:scanfにしたら良くなったよ [2007/10/27(土) 16:54:18 ] #include <stdio.h> main(){ int x[6],y[6],i,ban; double max=0,d; for(i=1;i<6;i++){ printf("\n%d 番目のx座標を入力して下さい ",i); scanf("%d",&x[i]); printf("\n%d 番目のy座標を入力して下さい ",i); scanf("%d",&y[i]);} for(i=1;i<6;i++){ d=x[i]*x[i]+y[i]*y[i]; if(d>max){max=d;ban=i;}} printf("\n原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);}
361 名前:356 [2007/10/27(土) 16:54:35 ] >>358 さん >>359 さん 早い回答ありがとうございました!
362 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:00:45 ] // >>356 ソート付き #include <iostream> #include <math.h> #define NUM 5 using namespace std; int main (void){ double p[NUM][2], absolute[NUM]; for (int i=0; i<NUM; i++){ cout << i+1 << "番目の点の" << endl; cout << "\tx座標を入力してください : "; cin >> p[i][0]; cout << "\ty座標を入力してください : "; cin >> p[i][1]; } for (int i=0; i<NUM; i++) absolute[i] = sqrt(p[i][0] * p[i][0] + p[i][1] * p[i][1]); double tempabs, tempx, tempy; for (int i=0; i<NUM-1; i++) { for (int j=NUM-1; j>i; j--) { if (absolute[j-1] > absolute[j]) { tempabs = absolute[j]; tempx = p[j][0]; tempy = p[j][1]; absolute[j] = absolute[j-1]; p[j][0] = p[j-1][0]; p[j][1] = p[j-1][1]; absolute[j-1] = tempabs; p[j-1][0] = tempx; p[j-1][1] = tempy; }}} cout << "(" << p[NUM-1][0] << ", " << p[NUM-1][1] << ")" << endl; return (0); }
363 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:05:37 ] >>356 既に何人も回答してるけど参考までに #include <stdio.h> int main(int argc, char* argv[]) { int i, p[5][2], r2[5], r2max = 0; printf("input points\n"); for(i=0;i<5;i++) { printf("point[%d] : ", i); scanf("%d %d", p[i], p[i]+1); r2[i] = p[i][0] * p[i][0] + p[i][1] * p[i][1]; if(r2max < r2[i]) { r2max = r2[i]; } } printf("maximum range points\n"); for(i=0;i<5;i++) if(r2[i] == r2max) printf("point[%d] : %d %d\n", i, p[i][0], p[i][1]); return 0; }
364 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 17:29:58 ] すいません!このJAVAコードをCに直せって言われました! 直してください!!!! public static int[] invoke(int[] input){ //WARNING: This will destroy the contents of the input array //This function assumes input.length=2^n, n>1 int[] output = new int[input.length]; for(int length = input.length >> 1; ; length >>= 1){ //length=2^n, WITH DECREASING n for(int i = 0; i < length; i++) { int sum = input[i*2]+input[i*2+1]; int difference = input[i*2]-input[i*2+1]; output[i] = sum; output[length+i] = difference; } if (length == 1) return output; //Swap arrays to do next iteration System.arraycopy(output, 0, input, 0, length<<1); } }
365 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:03:32 ] >>364 >>1 読んでから書き直し
366 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:07:30 ] >>365 つまりテンプレ通りに書けってこった とりあえずこのコードが何をするかぐらいは書いたほうがいい
367 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:27 ] >>357 根本的に考え方が間違ってるよ。 これは生産計画立案の問題。
368 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:20:53 ] (int[] input)これをcで引数一個で実現するのは無理では? 最後尾にNULL入れた配列が欲しくなったり、 サイズを持った構造体へのポインタにしたくなったり、 int *input, int sizeみたいに素直になりたかったり。
369 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 18:37:29 ] 突っ込むところはinput.lengthこっちだろ
370 名前:aho mailto:sage [2007/10/27(土) 19:02:35 ] >>364 今書いてて思ったけど何がしたいのかいまいち分からない。 sumとdifferenceを計算した後何でoutputを上書きするの? どんどん足し込む仕様じゃないの? とりあえず、今ので書いてみるよーん
371 名前:aho mailto:sage [2007/10/27(土) 19:08:59 ] どうもごめんちゃーい。 最後の行のarrayCopyみてませんでした。
372 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:09:34 ] >>370 ものすごい助かります(;; 離散ウェーブレット変換 ttp://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B のHaarWavletというものです。
373 名前:aho mailto:sage [2007/10/27(土) 19:24:07 ] /* メモリの確保は呼び出し元で行う。 この関数内でメモリを確保して配列を返すと、メモリの解放ができない。 \param input 入力配列 \param output 出力配列 \param size 入力配列の大きさ */ void invoke(int* input, int* output, int size){ // 1/2 for(int length = size >> 1; ; length >>= 1){ for(int i=0; i<length; i++){ int sum = input[i*2] + input[i*2 + 1]; int difference = input[i*2] - input[i*2+1]; output[i] = sum; output[length+i] = difference; } if(length == 1) return; //array copy for(int i=0; i<length<<1; i++){ output[i] = input[i]; } } } 一応作ってみた。 確認お願い!
374 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 21:27:54 ] >>373 ああ…ありがたい 今確認します!!!どうもありがとう!!!!涙出てきた
375 名前:デフォルトの名無しさん [2007/10/27(土) 22:51:52 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5163.txt [3] 環境 [3.1] OS:Windows [3.3] 言語: C言語 [4] 期限: 10月28日午前12時30分まで よろしくおねがいします
376 名前:aho mailto:sage [2007/10/27(土) 23:01:10 ] 課題1 int sqr(int x){ return x * x; } int pow4(int x){ return sqr(x) * sqr(x); }
377 名前:デフォルトの名無しさん [2007/10/27(土) 23:01:24 ] >>375 最後のだけやってもいいよ 任意サイズでやってやるぜ
378 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:01:32 ] 関数sqrってなんだ?sqrtの間違い? でもなんで四乗値求めるのに平方根必要?
379 名前:aho mailto:sage [2007/10/27(土) 23:02:37 ] 課題2 void hello(void){ printf("こんにちは。\n"); return; }
380 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:02:42 ] squareって事ね。
381 名前:デフォルトの名無しさん [2007/10/27(土) 23:12:34 ] 任意サイズの2次配列を引数にするにはどうすればいい?
382 名前:aho mailto:sage [2007/10/27(土) 23:14:56 ] 課題3 void rev_intary(int vc[], int no){ int i; int* tmp = (int*)malloc(sizeof(int) * no); /* noをコピーしておく */ for(i=0; i<no; i++) tmp[i] = vc[i]; for(i=0; i<no; i++) vc[i] = tmp[no-1-i]; free(tmp); return; } stdlib.hをインクルードするように!
383 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:15:02 ] 配列のポインタかポインタのポインタを使う
384 名前:デフォルトの名無しさん [2007/10/27(土) 23:20:08 ] >>383 サイズをどうやって保存するの?
385 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:02 ] パンチで
386 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 23:22:17 ] 保存はできない。引数でサイズ指定するしかない。
387 名前:168 [2007/10/28(日) 00:20:59 ] >>357 ありがとうございます。 続きはやっていただけませんか?
388 名前:デフォルトの名無しさん [2007/10/28(日) 00:21:53 ] これうまくいかないけどなぜでしょうか?サイズがちゃんと求まりません #include <iostream> #include <vector> using namespace std; void sizehyoji(vector< vector<int> > x){ int m,n; m=sizeof(x)/sizeof(x[0]); n=sizeof(x[0])/sizeof(x[0][0]); printf("%d %d",m,n);} main(){ int i,j,M=200,N=100; vector< vector<int> > x; x.resize(M); for(i=0;i<M;i++)x[i].resize(N); for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0; sizehyoji(x);}
389 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:24:21 ] >>388 vectorはsize()を使え
390 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:26:59 ] >>375 課題3 void rev_intary(int vc[], int no) { int temp, i, n = no / 2; for(i=0; i<n; i++) { temp = vc[i]; vc[i] = vc[no-1-i]; vc[no-1-i] = temp; } }
391 名前:デフォルトの名無しさん [2007/10/28(日) 00:27:20 ] >>389 できました vectorでやればサイズ渡せますね #include <iostream> #include <vector> using namespace std; void sizehyoji(vector< vector<int> > x){ printf("%d %d",x.size(),x[0].size());} main(){ int i,j,M=200,N=100; vector< vector<int> > x; x.resize(M); for(i=0;i<M;i++)x[i].resize(N); sizehyoji(x);}
392 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 00:32:19 ] >>375 課題4 void mul(const int ma[2][3], const int mb[3][2], int mc[2][2]) { int i, j, k; for(i=0; i<2; i++) { for(j=0; j<2; j++) { for(k=0; k<3; k++) mc[i][j] += ma[i][k] * mb[k][j]; } } }
393 名前:デフォルトの名無しさん [2007/10/28(日) 01:01:51 ] 任意サイズのやつやろうとしたけど面倒になった あとでやるかもしれない 書き込んでおく #include <iostream> #include <vector> using namespace std; class Gyouretu { vector< vector<int> > x; public: Gyouretu(){Gyouretu(1,1);} Gyouretu(int M,int N){int i,j;x.resize(M);for(i=0;i<M;i++)x[i].resize(N); for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;} resize(int M,int N){Gyouretu(M,N);} Gyouretu& Gyouretu::operator=(Gyouretu& y){ if(&x!=this){} return *this;} }; main(){ Gyouretu x; x.resize(6,5);}
394 名前:デフォルトの名無しさん [2007/10/28(日) 04:31:04 ] 全ディレクトリのファイルでサイズが一致するものをプルパスで出力せよ
395 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 04:38:32 ] プルパスについてkwsk
396 名前:デフォルトの名無しさん [2007/10/28(日) 04:42:58 ] 植田佳奈 さんってこんな人だったの・・・? 相手の人、可哀想;; www.nicovideo.jp/watch/sm1282003 25分14秒付近より ●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑) 実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ てたんだ、ごめんね”って逆に謝られちゃって…(笑)」
397 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 10:19:24 ] [2] 問題文(含コード&リンク):携帯の文字入力をコマンドプロンプトから行うプログラムをつくれ [3] 環境 [3.1] OS: WindowsXP [3.2] VisualStudio 2008 [3.3] 言語: C [4] 期限: はやめに 途中までは作っているのですが、シンボルが重複しているみたいなエラーがでてしまいます デバッグと、濁点等の変換処理を手伝ってもらえませんか? Shift-jisでやろうと思うのですがこれでいいのかよくわかりません・・・ テンプレのうpろだに何故かうpできなかったので、別のうpろだを使いました www.uploda.org/uporg1085799.zip.html よろしくお願いします
398 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:59:19 ] >>397 [1]が抜けてる 期限が曖昧 その上マルチ そしてVisualStudio2008ってまだβ版だろ、そんなもん宿題に使うな
399 名前:397 mailto:sage [2007/10/28(日) 12:41:20 ] すいません。あせってて・・・ [1] 授業単元: C言語 期限:今日中になりました VisualStudio2005でも同じエラーでした
400 名前:デフォルトの名無しさん [2007/10/28(日) 14:14:11 ] >>352 さん >>355 さん お礼の返事送るのが遅れて申し訳ありませんでした >>351 の問題に答えていただきありがとうございました
401 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 15:58:29 ] 1] 授業単元: c言語 [2] 問題文:1.文字列の先頭のアドレスを引数とし、 その文字列の中にある文字’A’を探してそれが何番目かを計算し、 ‘A’があればその値を、なければ0を返値とする関数を作成せよ。 2.1.で作成した関数を用いて、自分の学籍番号をポインタに代入し、 その中で文字'A'を探してそれを先頭に持ってくるプログラムを作成せよ。 [3] 環境 [3.1] OS:windows [3.2] VisualStudio2005 [3.3] 言語:c [4] 期限:10月31日まで [5] その他の制限:特になし 問題が2個ありますが、よろしくお願いします
402 名前:デフォルトの名無しさん [2007/10/28(日) 16:08:15 ] #include<stdio.h> fnc(char *c){ int n; for(n=0;c[n]!='\0';n++)if(c[n]=='A')break; if(c[n]=='A')return n+1; else return 0; } main(){ char c[]="btfguhnexthgd,gj.lhgjkgh,nfgnvhg"; printf("%d\n",fnc(c)); }
403 名前:デフォルトの名無しさん [2007/10/28(日) 16:11:30 ] #include<stdio.h> fnc(char *c){ int n; for(n=0;c[n]!='\0';n++)if(c[n]=='A')break; if(c[n]=='A')return n+1; else return 0; } main(){ int i,n; char c[]="Gakusekibango ha AGS000123"; printf("%s\n",c); n=fnc(c); for(i=n-1;i>=0;i--)c[i]=c[i-1];c[0]='A'; printf("%s\n",c); }
404 名前:デフォルトの名無しさん [2007/10/28(日) 16:30:14 ] [1] 授業単元: C言語 [2] 問題文:整数nをscanfで入力後"prime"という関数を呼び出して、 nが素数ならば1(それ以外は0)を繰り返し、mainにて「○は素数です(ではありません)」 を表示させよ [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C [4] 期限: ([2007年10月28日まで] [5] その他の制限:if文を用いる
405 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:37:23 ] nが素数ならば1(それ以外は0)を返し、 だよな?
406 名前:デフォルトの名無しさん [2007/10/28(日) 16:42:35 ] #include<stdio.h> prime(int p){ int n,N=p/2; for(n=2;n<N;n++)if(p%n==0)break; if(n<N)return 0; else return 1;} main(){ int p; scanf("%d",&p); if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p); }
407 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:46:57 ] >>406 N=p/2 でpが奇数だったらNに入るのはintじゃなさそうな気がする
408 名前:デフォルトの名無しさん [2007/10/28(日) 16:47:22 ] #include<stdio.h> prime(int p){ for(int n=2;n<p/2;n++)if(p%n==0)return 0;return 1;} main(){ int p;scanf("%d",&p); if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p);}
409 名前:デフォルトの名無しさん [2007/10/28(日) 16:48:53 ] >>407 #include<stdio.h> main(){ int p=5; int N=p/2; printf("Nは%dです",N); }
410 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 16:59:01 ] #include<stdio.h> int prime(int p) { int n; for(n=2; n<=p/2; n++) if(!(p%n)) return 0; return 1; } int main(void) { int p; scanf("%d",&p); printf(prime(p) ? "%dは素数です" : "%dは素数ではありません", p); return 0; }
411 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:00:09 ] 0 1
412 名前:デフォルトの名無しさん [2007/10/28(日) 17:06:42 ] >>405 その通りでした。すいません
413 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:06:55 ] >>404 #include <stdio.h> int prime(int n) { int i; if(n<2) return 0; for(i=2; i*i<=n; i++) if(n%i==0) return 0; return 1; } int main(void) { int n; scanf("%d", &n); if(prime(n)==0) printf("%dは素数ではありません\n", n); else printf("%dは素数です\n", n); return 0; }
414 名前:デフォルトの名無しさん [2007/10/28(日) 17:43:11 ] cディレクトリのファイルでサイズが一致するものを出力せよ
415 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:10:14 ] はい。
416 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:10:35 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 8行10列の二次元配列においてです。 1行目の配列と2行目の配列を足します。(できた配列を配列Aとよぶ) 次に配列Aと3行目の配列を足します。(できた配列を配列Bとよぶ) 次に配列Bと4行目の配列を足します。(できた配列を配列Cとよぶ。) 次に 5行目の配列と6行目の配列を足します。(できた配列を配列aとよぶ) 次に配列aと7行目の配列を足します。(できた配列を配列bとよぶ) 次に配列bと8行目の配列を足します。(できた配列を配列cとよぶ。) そして配列Cを1行目、配列cを2行目とする 2行10列の二次元配列を表示しろ。(つまり4行の配列をたせということです) 配列のそれぞれの足し算は別関数にて行いなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2007年10月29日まで [5] その他の制限: なし よろしくお願いします。
417 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:15:39 ] >>416 これはなにか物理的演算なのかな?
418 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:18:12 ] >>416 1行目から4行目の各成分をそれぞれ足してCとする。 5行目から8行目の各成分をそれぞれ足してcとする。 Cとcを横に並べて2x10にする。 という意味?
419 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:19:05 ] 関数内はlogの加算にあとでかえますから。 logの加算じゃなかったらこんなめんどいことはしません。
420 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:21:16 ] 8X10の配列を 4X10と4X10とみて、4行ずつ配列を足します。そしたら1X10と1X10になるでしょう? でこの1X10と1X10をいっしょにして2X10というわけです。 対数の加算なので一辺には計算できないわけです
421 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:25:02 ] なんでこんな簡単なこともできないのに、そんなに偉そうなんだ?
422 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:27:08 ] >>420 言いたいことは分かるが4行ずつ配列を足してないだろ
423 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 18:28:55 ] #include <stdio.h> void add(const int *a, int *b, int n) { while(n--) b[n] += a[n]; } int main(void) { int a[8][10], b[2][10] = {0}; int i; for(i=0; i<8; i++) add(a[i], b[i/4], 10); return 0; }
424 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:44:51 ] >>416 配列A, B, a, b は配列として必要なのか?
425 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:42:09 ] わかる人いますか? [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 以下のような内容のテキストファイルを読み込んで それぞれ配列に格納した後、同じように出力せよ。 文章,文章,数字,数字,・・・,数字\n 文章,文章,数字,数字,・・・,数字\n 文章,文章,数字,数字,・・・,数字\n ただし行数および数字の列数は常に不定とする。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: VC 6.0 [3.3] 言語: C/C++どちらでも可 [4] 期限: 2007年10月28日24:00まで [5] その他の制限: 特になし
426 名前:425 mailto:sage [2007/10/28(日) 20:46:49 ] すみません。 読み込むのはtxtファイルじゃなくてcsvファイルでした。 よろしくおねがいします。
427 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:49:03 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): e^x = 1 + x^1/1! + x^2/2! + x^3/3! + x^4/4! + … を利用して e^x を計算する関数 double myexp(double x) を作成せよ. k=0, 1, 2, 3, … について x^k/k! を加算してゆき, x^k/k!<10-6 となった時点で計算を打ち切るようにせよ (無限ループと break 文を用いるのが一解法). main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ. [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語: C言語 [4] 期限: 2007年10月29日まで [5] その他の制限:特になし 次レスがプログラムです。実行はされますが値がおかしいです… よろしくお願いします。
428 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 20:50:56 ] #include <stdio.h> #include <math.h> double myexp(double); double x; int main( void ) { printf("\t x\t myexp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%.1f\t%13.5f\n",x,myexp(x)); } return 0; } double myexp(double x) { double r=1.0,f=1.0,y=1.0; int z,k; for(k=1;;k++) { for(z=1;z<=k;z++) { r=r*z; } if(pow(x,k)/r<1.0e-6) { return f; break; } f=f+pow(x,k)/r; } }
429 名前:とくめい [2007/10/28(日) 21:06:55 ] すみませんがプログラミングの宿題を教えてください。 「言語」= c++ 「問題」= 速度のfileを読み込みそれを微分して加速度を求めろ。速度を積分して距離を求めろ なおプログラムは1通です。 「os] = xp micro studio 2005
430 名前:とくめい [2007/10/28(日) 21:09:09 ] 上の追加です。 去年の参考にfile名は何でもいいので #include<stdio.h> FILE * fp1,* fp2,* fp3; //ファイルポインタの宣言 int main() { double k1=0,k;//k1=一つ前の距離、k=距離 double s1=0,s;//s1=一つ前の速度、s=速度 double T=0.4;//刻み値(台形の高さ) fp1 = fopen( "C:\\suzuki2\\car06spd.txt", "r" );//ファイルを読み込みで開く fp2 = fopen( "C:\\suzuki2\\sekibun.txt", "w" );//ファイルを書き込みで開く if( fp1 == NULL ){//fp1にデータがあるか確かる printf("ファイルが開けません。\n"); fclose( fp1 ); }
431 名前:とくめい [2007/10/28(日) 21:10:28 ] 書き込めなかったので2分割しました while( 1 ) {//無限ループ(微分) if( fscanf( fp2,"%lf",&k) == EOF ) break;//ファイルを読み終えたらループから抜ける s=(k-k1)*2/T*3600-s1;//速度(s)の式 、単位変換を行う fprintf(fp3,"%.0lf\n",s);//ファイルに速度sを出力する k1=k;//k1にkの値を入れる s1=s;//s1にsの値を入れる } fclose( fp2 );//ファイルを閉じる fclose( fp3 );//ファイルを閉じる return 0; }
432 名前:デフォルトの名無しさん [2007/10/28(日) 21:13:10 ] [1] 授業単元: C言語入門 [2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5164.txt [3] 環境 [3.1] OS: Windows [3.3] 言語: C言語 [4] 期限: 10月29日午前1時まで よろしくお願いします
433 名前:デフォルトの名無しさん [2007/10/28(日) 21:14:25 ] >>425 #include <iostream> #include <string> #include <vector> #include <fstream> using namespace std; main(){ string str="",buf; fstream fp("text.csv",ios::in); do {getline(fp, buf);str+=buf+"\n";}while(!fp.eof()); int m,n;vector<string> x; do{ m=str.find(",");n=str.find("\n"); if(m>n){x.push_back(str.substr(0,n));x.push_back("\n");m=n;} else x.push_back(str.substr(0,m)); str=str.substr(m+1);}while(m>=0); for(n=0;n<x.size();n++)cout<<x[n]; }
434 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:24:59 ] // >>427 eのマクローリン展開 #include <stdio.h> #include <math.h> double myexp(double); double x; int main( void ) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; } double myexp(double x) { double s = 0.0; double a = 1.0; s += 1.0; for (int n = 1; n < 20; n++) { a = a * x / n; s = s + a; } return s; }
435 名前:デフォルトの名無しさん [2007/10/28(日) 21:26:58 ] /* e^x を計算する関数 double myexp(double x) を作成せよ. k=0, 1, 2, 3, … について x^k/k! を加算してゆき, x^k/k!<10-6 となった時点で計算を打ち切る main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ. */ #include <stdio.h> #include <math.h> double myexp(double x){ double r=1,sum=0; for(int k=1;;k++){ sum+=r; r*=x/k; if(r < 1.0e-6)return sum;}} int main( void ){ double x; printf("\t x\t myexp(x)\n"); for(x=1.0;x<=10.0;x++){ printf("\t%.1f\t%13.5f\n",x,myexp(x)); } return 0; }
436 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:28:11 ] // >>427 e(x)の計算 さっきのはforのなかで宣言があったんでC++ #include <stdio.h> #include <math.h> double myexp(double); int main( void ) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=1.0;x<=10.0;x++) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; } double myexp(double x) { double s = 0.0; double a = 1.0; int n; s += 1.0; for (n = 1; n < 20; n++) { a = a * x / n; s = s + a; } return s; }
437 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:28:25 ] [1] 授業単元: データ1 [2] 問題文(含コード&リンク): 長いのでうpしました。 簡易電卓を作成する問題です。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5165.txt [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C [4] 期限:11/7まで [5] その他の制限:GUIで作ってはいけないそうです。 よろしくお願いします。
438 名前:デフォルトの名無しさん [2007/10/28(日) 21:29:20 ] #include <stdio.h> double myexp(double x){ double r=1,sum=0; for(int k=1;;k++){ sum+=r;r*=x/k; if(r<1.0e-6)return sum;}} main(){ printf("\t x\t myexp(x)\n"); for(double x=1.0;x<=10.0;x++)printf("\t%.1f\t%13.5f\n",x,myexp(x));}
439 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:31:11 ] >>437 厳しい制限だな。GUIで作っちゃだめなのか
440 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:34:38 ] >>432 #include <stdio.h> #include <math.h> int solve(double a, double b, double c); double answer1; double answer2; int solve(double a,double b, double c) { double check; check = b * b - 4 * a * c; if(check > 0){ answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a); answer2 = (b - sqrt(b * b - 4 * a * c)) / (2 * a); return 2; }else if(check == 1){ answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a); answer2 = answer1; return 1; } return 0; } main()は省略 汚いコードだけどこんな感じ
441 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:35:29 ] >>432 int solve(double a, double b, double c) { double d = b * b - 4 * a * c; if(d<0) return 0; answer1 = (-b + sqrt(d)) / 2 / a; answer2 = (-b - sqrt(d)) / 2 / a; return d == 0 ? 1 : 2; }
442 名前:デフォルトの名無しさん [2007/10/28(日) 21:36:31 ] >>440 それまちがってるよ
443 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:38:53 ] >>440 せっかくcheck計算してんのに、sqrtの引数に利用しないなんてムダすぎる
444 名前:440 mailto:sage [2007/10/28(日) 21:39:29 ] >>442 /(^o^)\bの前に”-”が抜けてた >>441 のほうが圧倒的に見やすくていいね
445 名前:425 mailto:sage [2007/10/28(日) 22:03:25 ] >>433 ありがとうございます!! あと数字は数字として格納して次の問題での計算に使いたいのですが 文字列として取得した数字を別の配列に整数型の数として取得するには どうすればいいでしょうか?
446 名前:デフォルトの名無しさん [2007/10/28(日) 22:08:48 ] st=str.substr(0,n)に対して st[i]が'0'から'9'にあればいい コードはちょっと待ってくれ
447 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:08:55 ] >>445 std::string str = "1.234"; double d; std::istringstream istr(str); istr >> d;
448 名前:デフォルトの名無しさん [2007/10/28(日) 22:30:14 ] stringが数値なら変換して違うならエラーを返す関数ってある?
449 名前:デフォルトの名無しさん [2007/10/28(日) 22:33:09 ] atofで良いんだな
450 名前:デフォルトの名無しさん [2007/10/28(日) 22:36:21 ] atofだと初めが数値だと計算してしまう
451 名前:デフォルトの名無しさん [2007/10/28(日) 22:38:30 ] .8222とか、100,000とかは数値にするのか?
452 名前:425 mailto:sage [2007/10/28(日) 22:42:07 ] >>446 その方法基本情報試験の勉強でやった覚えが!!! でもどうにも思い出せないです・・・ >>447 stringがvector<string>なためかうまくいきません。 atoiなどもvectorは拒否されてしまうみたいですね。 うーん、難しい・・・
453 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:44:19 ] #include<stdio.h> int main(int argc, char *argv[]){ int i, index; double value; for(i=1;i<argc;i++){ if(sscanf(argv[i], "%lg%n", &value, &index)>=1 && argv[i][index]=='\0') printf("%s は数値だ\n", argv[i]); else printf("%s は数値ではない\n", argv[i]); } return 0; }
454 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:50:47 ] [1] 授業単元:データ構造とアルゴリズム1 [2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ 完成する関数: void enqueue(char *x) void dequeue() void queue_print() 作成するプログラムについて:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5168.txt 実行例:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5169.txt ヒント:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5170.txt [3] 環境 [3.1] OS:win xp [3.2] Microsoft Visual Studio .NET 2003 [3.3] 言語:c++ [4] 期限:2007年10月29日9:30まで [5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
455 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 22:56:52 ] >>437 符号反転キーと演算キーがかぶる気がするんだけどどうするの?
456 名前:デフォルトの名無しさん [2007/10/28(日) 22:58:12 ] class mojisu { string str; double su; } mojisu x; x.input("777"); という関数を作る 数値なら数字として保存 このとき文字は空にする 違うなら文字として保存
457 名前: ◆nzw4qNGj6U [2007/10/28(日) 22:58:19 ] [1] 授業単元:プログラミング2 文字列処理 [2] 問題文(含コード&リンク): 英文(英単語)を入力し、入力した文字列を、逆から表示するプログラムを作成すること。 [3] 環境 [3.1] OS:Windows [3.3] 言語:C [4] 期限:2007年10月29日0:00迄 [5] その他の制限:NULL文字を使用して下さい。 よろしくお願いします。
458 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:41:00 ] >>457 NULL文字をどこで使用するんだ・・・ #include <stdio.h> int main() { int i=-1; char buf[256]; while((buf[++i]=getchar())!=EOF); while(i>0&&putchar(buf[--i])!=EOF); return 0; }
459 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 23:48:49 ] >>458 きっとこういう風にするんだよ #include <stdio.h> int main() { int i=-1; char buf[256]; while((buf[++i]=getchar())!=EOF); while(i>0&&putchar(buf[--i])!=NULL); // ここ return 0; }
460 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 00:19:06 ] NUL文字?