1 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:28:30 ] あなたが解けない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++の宿題を片付けます 94代目 pc11.2ch.net/test/read.cgi/tech/1185452895/
2 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 19:45:41 ] いちおつ
3 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 20:31:24 ] これが2なら今年こそ34年目にして初めて彼女ができる
4 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 21:26:28 ] >>3 また来年
5 名前:デフォルトの名無しさん [2007/08/24(金) 22:51:48 ] ちょっと質問。 std::istreamから区切り文字のある場所を発見するのに std::find(first, last, '&'); ってやると、戻り値がfirstと一致してしまうんだけど、 こういう使い方って駄目なの?
6 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:41:36 ] >>3 96代目が待っている。どんどん問題を解いてスレ消化
7 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 02:57:20 ] ____ / \ / ─ ─ \ / (●) (●) \ >>3 さん2GETできなかった気分はどう? | :::::: (__人__) :::::: | \. `ー'´ /ヽ (ヽ、 / ̄) | | ``ー――‐''| ヽ、. | ゝ ノ ヽ ノ |
8 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 12:41:11 ] しつこい粘着は嫌われる
9 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 17:56:06 ] しつこくない粘着は好かれる
10 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:05:14 ] だよね〜 きれいにはがれないとむかつくよね〜
11 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:06:10 ] はがれて欲しい時はサクッとはがれてほしいし はがれては困る時にははがれてほしくない 人間ってゼイタクだよな
12 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 00:05:59 ] >>5 firstとlastの型は何?
13 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 03:28:22 ] ゼイタクだから今の経済は回ってるんだよな
14 名前:デフォルトの名無しさん [2007/08/26(日) 14:36:25 ] 1] 授業単元:C言語 [2] 問題文: 月(1〜12)と日(1〜31)をキーボードから入力し、入力された日付を表示する プログラムを作成しなさい。 条件@:月の入力については1〜12で範囲チェックを行い。範囲外の入力 だった場合は、エラーメッセージを表示して再入力させること 条件A:日の入力については1〜31で範囲チェックを行い。範囲外の入力 だった場合は、エラーメッセージを表示して再入力させること [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン: (VS 2005) [3.3] 言語: C [4] 期限: (2007年9月1日まで) [5] その他の制限: 実行結果 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━ ┃月を入力:15 (15の部分はキーボードからの入力) ┃月の入力は「1以上12以下」にしてください ┃月を入力:8 (8の部分はキーボードからの入力) ┃日を入力:46 (46の部分はキーボードからの入力) ┃日の入力は「1以上31以下」にしてください ┃日を入力:25 (25の部分はキーボードからの入力) ┃入力された日付は「8月25日」です ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━ ↑みたいな感じでよろしくお願いします<(_ _*)> 説明下手ですいません^^;
15 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:53:21 ] >>14 #include <stdio.h> int main(void) { int m,d; do{ printf("月を入力:"); scanf("%d",&m); if( m<1 || m>12 ) printf("月の入力は「1以上12以下」にしてください\n"); else break; }while( 1 ); do{ printf("日を入力:"); scanf("%d",&d); if( d<1 || d>31 ) printf("日の入力は「1以上31以下」にしてください\n"); else break; }while( 1 ); printf("入力された日付は「%d月%d日」です\n",m,d); return 0; }
16 名前:デフォルトの名無しさん [2007/08/26(日) 15:54:08 ] 14です。 素早い返信ありがとうございます^^ またよろしくお願いします(*- -)(*_ _)ペコリ
17 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 04:40:10 ] 前スレ967ですが [1] 授業単元: C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4866.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年8月25日 お願いします。
18 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 05:19:07 ] >>17 #include <stdio.h> #include <string.h> main(){char b1[10],b2[10];scanf("%s %s",b1,b2);if(strcmp(b1,b2)<1)printf("%s %s",b1,b2);else printf("%s %s",b2,b1);} #include <stdio.h> #include <string.h> main(){char b1[10],b2[10];scanf("%s %s",b1,b2);if(strcmp(b1,b2)<1){strcat(b1,b2);printf("%s",b1);}else{strcat(b2,b1);printf("%s",b2);}} #include <stdio.h> #include <stdlib.h> main(){char b1[10];scanf("%s",b1);printf("%d %lf",atoi(b1),atof(b1));}
19 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 23:44:53 ] ttp://www.afpbb.com/article/life-culture/life/2273019/2049450
20 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 10:47:50 ] [1] 授業単元: C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4871.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年8月30日
21 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 11:04:38 ] >>20 1 #include <stdio.h> void exch_order(int *pa, int *pb) { if(*pa>*pb) { int tmp=*pa; *pa=*pb; *pb=tmp; } } int main(void) { int a,b; printf("Input > "); scanf("%d %d",&a,&b); exch_order(&a, &b); printf("%d %d\n",a,b); return 0; }
22 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 11:55:23 ] >>20 2 きんもぉ〜☆なクソース♪ #include <stdio.h> #include <string.h> #include <ctype.h> #define MAX 256 #define swap(type,x,y) do{type tmp=x; x=y; y=tmp;}while(0); int main(void) { char str[MAX]; size_t i,str_len; printf("Input > "); for(i=0; i<sizeof str/ sizeof str[0] -1; i++) { str[i]=getchar(); if( !isprint(str[i]) ) break; } str[i]='\0'; str_len=strlen(str)-1; for(i=0; i<=str_len/2; i++) swap(char,str[i],str[str_len-i]); printf("%s \n",str); return 0; }
23 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 13:03:00 ] >>21 ,22 ありがとうございました。
24 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:24:29 ] >>21 >20の1は、こういうことではないのか? >整数a,bを入力とし、以下の関数を定義して、小大の順に出力するプログラムを作成せよ。区切りは空白とする。 入力:整数 出力対象:以下の関数 出力条件:小大の順に 関数を小大の順に出力ってのがどういうことかはわかりませんが。
25 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 14:25:43 ] しかし、京大にもまとに文章を書けない指導教官がいるんだなぁ……
26 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 15:52:35 ] っつか > void exch_order(int *pa, int *pb) > ポインタ引数を用い、大小関係により、 *pa と *pb を入れ替えて格納する。 入れ替えて格納する機能だけで十分でしょ。前文には「以下の関数を定義して」とあるんだし。 以下に該当する関数が、表示するところまでは条件に入ってない。
27 名前:デフォルトの名無しさん [2007/08/28(火) 17:20:57 ] xy平面の図形の問題なのですが、 二点(xs,ys)-(xe,ye)で与えられる線分が、長方形の領域(左下コーナー(xmin,ymin)、右上コーナー(xmax,ymax)) と交わるかどうか判定したいのですが、良い方法はありますか? 細かく場合分けして、判定したら出来そうなのですが、 何か物凄くいい方法で、数行で書けるような判定方法があればうれしいのですが。 Cで書いています。 よろしく
28 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:21:07 ] 月を入力したら、1日からその月の最後の日までを 日 月 火・・・ 1 2・・・ ・・・ と表示するプログラムを教えてください。
29 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 18:25:41 ] >>28 カレンダーを見た事は有りますか? 年も指定しないと無理なんですよ。
30 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:09:32 ] >>29 日本語を見たことありますか? 書かれたまんまのことを答えれば良いのですよ。
31 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:23:57 ] つまり、実際の曜日に関わらず月の下に1と書けば宜しいか。
32 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 19:34:52 ] >>31 たぶん、>>28 の内容からしたらそうアルよ。難しく考えないで、答えるアルよ。 けど、テンプレに則ってないんで無視しチャイナ。
33 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:33:59 ] [1] 授業単元: C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4873.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年8月30日 再々ですがお願いします
34 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:41:32 ] int *pstr でいいんすか?
35 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 20:47:08 ] >>33 #include<ctype.h> int mystrlen(int*pstr){ char*pstr_=(char*)pstr; int count = 0; for(;*pstr_;++pstr_) if(isspace(*pstr_)) ++count; return count; } void mystrcpy(int*pstr,int*pans){ char*pstr_=(char*)pstr; char*pans_=(char*)pans; do if(!isdigit(*pans_))*pstr_++ = *pans_; while(*pans++); }
36 名前:デフォルトの名無しさん [2007/08/28(火) 21:52:09 ] [1] 授業単元:C言語 [2] 問題文: 二次座標平面において,ランダムに4〜5個ほど点が与えられる. そのような複数の点の最近傍を通る円の方程式を求めよ. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:[2007年08月31日24:00まで] [5] その他の制限:計算速度が速い方が好ましい. 今現在最急降下法で作ってみたのですがうまく動きません。 よろしくお願いします。
37 名前:ジャレ [2007/08/28(火) 22:05:11 ] 1] 授業単元:プログラミング [2] 問題文: pgmファイルを読み込み、幅(width)、高さ(height)、色調(val)を を表示する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual C++ [3.3] 言語:C [4] 期限:[2007年08月29日12:00まで] [5] 自分の実力のなさでグローバル変数を使用しないと上手くいきませんでした・・。 ですので、グローバル変数は使わない方向でお願い致します。 読み込んだ後フーリエ変換させる必要があるので、pgmの読み込み部分は 関数化してくだい。では、よろしくお願い致します!!
38 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:16:32 ] >>36 回帰直線(最小二乗法)のように数式で表現できるはずだから、それを晒してくれれば…
39 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 23:18:52 ] >>27 >>1 の質問テンプレ それと線分の交差って高校の数学でやらなかったっけ? もう忘れてしまったけど
40 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 00:42:22 ] >>36 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4875.c クラメルじゃ遅いかな 入力例 4 (点の個数) 1.0 0.0 (各座標) 0.0 1.0 -1.0 0.0 0.0 -0.5 点の個数が3未満のときと全ての点が一直線上にあるときは答えが出ない
41 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 02:24:44 ] >>37 できてるところまでうp!
42 名前:デフォルトの名無しさん [2007/08/29(水) 07:31:35 ] [1] 授業単元:C [2] 問題文(含コード&リンク): テーマ:ユーザ関数の作成 再帰関数を使って、Xのn乗を求めるプログラムを作成しなさい プロトタイプ宣言:int power(int x, int n); 実行画面 文字列入力==>2 文字列入力==0 値:1 文字列入力==>2 文字列入力==>3 値:8 文字列入力==>6 文字列入力==>4 値:1296 [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: ボーランド [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
43 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 08:19:00 ] [1] 授業単元: C [2] 問題文(含コード&リンク): 50行以上のプログラムをつくりなさい。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C [4] 期限: 2007年8月31日 [5] その他の制限: C言語検定3級まで習いましたので、その範囲でお願いします。
44 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:55:36 ] >>42 #include<stdio.h> int result; int power(int x,int n){ if(n==0) return 0; result*=x; n<0?n++:n--; return power(x,n); } int main(void){ for(;;){ int x,n; result=1; printf("文字列入力=="); scanf("%d",&x); printf("文字列入力=="); scanf("%d",&n); power(x,n); printf("値:%s%s%d\n",result<0?"-":"",n<0&&(result<-1||result>1)?"1/":"",result<0?-result:result); } return 0; }
45 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:18:59 ] [1] 授業単元: C [2] 問題文(含コード&リンク):非負整数の不定長配列 arr[] 中で、指定データ data が出現する回数を返却するプログラムを関数 arr_occur_ct() を用い作成せよ。終端番兵は、EOA(-1) とする。反復変数を用いず、ポインタのアドレス演算を用いる。 int arr_occur_ct(int *arr, int data) システム上では、入力の先頭をdata、それ以降はarrとする。入力の終了はEOA(-1)とする。 入力例 0 2 0 0 7 0 7 1 0 -1 出力例 4 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: C [4] 期限: 2007年8月30日
46 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:25:03 ] unsigned arr_occur_ct(unsigned const * array, unsigned data) { if (array == NULL || data == EOA) return 0; unsigned count = 0; for (unsinged ic = 0; array[ic] != EOA; ++ic) { if (array[ic] == data) ++count; } return count; }
47 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:26:34 ] 仕様を勝手に変えるのは最悪
48 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:34:40 ] 問題が悪いな、非負整数の不定長配列と言いつつint *なんだから。 とは言え、>46は性質が悪すぎる。
49 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:48:37 ] >>46 ソース全部書いて貰えるとうれしいのですが
50 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:26:02 ] // >>45 // >46を参考に。 #include <stdio.h> #include <stdlib.h> #define EOA (-1) int arr_occur_ct(int const * array, int data) { if (array == NULL || data == EOA) return 0; unsigned count = 0; for (const int * p = array; * p != EOA; ++p) { if (* p == data) ++count; } return count; } int main() { int data = EOA; scanf("%d", & data); if (data == EOA) return 0; unsigned cnt = 0; int * arr = NULL; do { int val = EOA; scanf("%d", & val); arr = realloc(arr, (cnt + 1) * sizeof(* arr)); arr[cnt] = val; } while (arr[cnt++] != EOA); printf("%d\n", arr_occur_ct(arr, data)); return 0; }
51 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:41:22 ] 数字一つごとにreallocって凄いな
52 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 11:42:39 ] realloc()が毎回API叩く仕様だったら泣けるね。
53 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:03:42 ] 何個か一括して要求したらいいのに。
54 名前:デフォルトの名無しさん [2007/08/29(水) 12:25:57 ] [1] 授業単元:C [2] 問題文(含コード&リンク): 問題1 テーマ:文字配列の操作 文字型の配列変数mojiに設定されている文字数を数えなさい char moji[] = "ABCDEFG"; 実行画面 文字数:7 問題2 テーマ:ユーザ関数の作成 問題1をもとに文字数を返すユーザ関数を作成しなさい プロトタイプ宣言:int MyLen(char *s); char moji[]="ABCDEFG"; 実行画面 文字数:7 [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: ボーランド [4] 期限: [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
55 名前:デフォルトの名無しさん [2007/08/29(水) 12:33:33 ] [1] 授業単元:C [2] 問題文(含コード&リンク): 検索する文字列を入力し、その一を返すユーザ関数を作成しなさい プロトタイプ宣言:char *MojiSearch(char *m,char *s); 引数1:検索対象文字列 引数2:検索文字列 戻り値:あった場合(一致した文字列を先頭アドレス) なかった場合(NULL) char moji[] = "ABCDEFGHJABFGHSKL"; 結果 検索文字列==>HS 検索位置:HSKL [3] 環境 [3.1] OS: (Windows/Linux/等々) XP [3.2] コンパイラ名とバージョン: ボーランド [4] 期限: [5] その他の制限: 何方かお願いします
56 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:54:04 ] >>54 strlenでググれ。 それだけで解決するから。
57 名前:【4200円(定額)】 [2007/08/29(水) 13:06:24 ] >>56 #include <stdio.h> #include <string.h> char *MojiSearch(char *m,char *s){ int i = 0; int j = 0; int result = 0; while(i < strlen(m)-strlen(s)+1){ for(j=0;j<strlen(s);j++){ if(m[i+j] == s[j]){ result++; } else{ result = 0; break; } } if(result != 0) break; i++; } if(result == 0) return NULL; else return &m[i]; }
58 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:08:03 ] 悪い見本のようなコードだな
59 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:16:55 ] >>58 BM法でやれとか書いてないからいいんじゃないかな。 いかにもって感じで。
60 名前:デフォルトの名無しさん [2007/08/29(水) 13:18:42 ] >>55 char *Mystrstr(const char *m, const char *s) { char *cp = (char *)m; if(*s == '\0') return cp; while(*cp != '\0') { char *tp = cp; char *pp = (char *)s; while(*tp == *pp) { if(*pp =='\0') return cp; tp++; pp++; } if(*pp == '\0') return cp; cp++; } return NULL; }
61 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:00:56 ] >>37 のやつ、真面目にやろうとすると、コメント行読み飛ばしたり、 区切り文字判別したりしなきゃならないのか。 ・改行が出現するまでを1行とする ・1行は70文字未満 ・区切り文字は空白、タブ、改行の三種類 効率よく単語毎に切り出せるプログラムってどうやって作るの?
62 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:03:26 ] [1] 授業単元: C [2] 問題文(含コード&リンク): 自作プログラム作成 1.ステップは最低50文 2.1次元配列or2次元配列を使用 3.if文,while文,for文使用 4.自作関数使用 5.♯define使用 6.ヘッダファイル化 7.必ずプロンプトで誰が見てもわかる対応型プログラムにする [3] 環境 [3.1] OS:Windows [3.2] VS2005 [3.3] 言語: C [4] 期限: ([2007年8月31日AM8:00まで] お願いします。
63 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:05:28 ] >>62 その条件を満たせばどんなプログラムでもいいってこと?
64 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:21:41 ] >必ずプロンプトで誰が見てもわかる対応型プログラム 物凄く難しくね?
65 名前:62 mailto:sage [2007/08/29(水) 14:31:50 ] >>63 どんなプログラムでも良いです。
66 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:55:26 ] 対応型じゃなくて対話型?
67 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:02:22 ] >>64 >>66 問題文には対応型と書いてあったのですが、よくわからないので7番目の条件はどうでも良いです。 すいません。
68 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:07:36 ] 7.がどうでもいいのなら無意味なコードを書き連ねて完成だなw
69 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 15:18:35 ] >>62 2〜5の条件にある文は既に習ったんだろうけど それぞれを学んだ時の題材として作ったのはどんなプログラム?
70 名前:デフォルトの名無しさん [2007/08/29(水) 15:21:16 ] >>62 なんでも良いなら、以前宿題スレであった問題に つけた俺の答えを送ろう 「数値を螺旋状に表示するプログラム」 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4877.txt
71 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 16:34:41 ] >>69 入力した数値が処理された数値として出力されるようなプログラムですかね。 平均を出したりとか。 あと、例としてはカレンダーをつくってみてはどうか?と書いてありました。
72 名前:33 mailto:sage [2007/08/29(水) 20:52:18 ] >>35 ソース全部を書いて貰えるとうれしいのです 後、2もお願いできませんか
73 名前:ジャレ [2007/08/29(水) 22:51:12 ] >>61 ファイルタイプの判別、コメントを飛ばしが必要です。 1] 授業単元:プログラミング [2] 問題文: pgmファイルを読み込み、幅(width)、高さ(height)、色調(val)を を表示する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:visual C++ [3.3] 言語:C [5] 作成途中で、バグもありますが仕様はこんな感じになっています。 www8.uploader.jp/user/loaiza21/images/loaiza21_uljp00001.txt
74 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:23:52 ] >>61 pgmにはバイナリとアスキーがあって、どちらもヘッダ部(コメント含む)を読んだら後は、前者はfread()、 後者は本体部分が70文字以上の長い行のデータが多いことを鑑みてfscanf()で取り出せばいい。 問題はヘッダ部で、途中で改行されると読めないツールや逆に改行がないと読めないツールもあって、 どう解釈するかが微妙。
75 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:27:16 ] なんだ、>73を見る限りヘッダだけ読めば本体読む必要ないじゃん。 しかし、depthを色調と言われてもぴんとこないなぁ。
76 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 01:47:49 ] [1] 授業単元: C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4878.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年8月30日
77 名前:デフォルトの名無しさん [2007/08/30(木) 02:29:00 ] [1] 授業単元:C言語 [2] 問題文: int型の配列に設定されている値の中の最大値と最小値 を求めて出力するプログラム 条件1:int型配列のサイズは10とし、 あらかじめ初期リストによって値が設定されているものとする。 条件2:アルゴリズムは繰り返しで処理すること。 ※初期化リストは{10,7,3,15,12,1,18,21,25,14}と設定されているものとする。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン: (VS 2005) [3.3] 言語: C [4] 期限: (2007年9月1日まで) [5] その他の制限: よろしくお願いします<(_ _*)>
78 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:40:39 ] >>33 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4879.c kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4880.c 1と3だけきんもぉ〜☆なクソースでお届けしまつ
79 名前:デフォルトの名無しさん [2007/08/30(木) 03:13:12 ] >>76 #include <string.h> #include <stdlib.h> #include <stdio.h> #define EOA 0.0 void arr_cycle(int *arr, int len){ int *temp = malloc((sizeof(int))*len); memcpy(temp,arr,((sizeof(int))*len)); memcpy(arr+1,temp,((sizeof(int))*(len-1))); memcpy(arr,temp+len-1,((sizeof(int)))); free(temp);} int arr_positive(double *arr1, double *arr2) {double *temp;int i; for(temp = arr1,i = 0; *temp != EOA; temp++){ if(*temp > 0.0){arr2[i] = *temp;i++; } } arr2[i] = EOA; return i; } int main() { int ary[] = {1,2,3,4,5,6}; int i,positive; double arr1[] = {1.2, -0.8, 2.3, 3.4, -1.1, EOA}; double arr2[sizeof(arr1)/sizeof(double)] = {0}; double *temp; arr_cycle(ary,6); for(i = 0; i < 6; i++) printf("%d ",ary[i]); putchar('\n'); positive = arr_positive(arr1,arr2); for(temp = arr2; *temp != EOA; temp++) printf("%lf ",*temp); putchar('\n'); return 0; }
80 名前:デフォルトの名無しさん [2007/08/30(木) 03:25:38 ] >>77 #include <stdio.h> #define N 10 void bubble_sort(int sort[], int elements) { int i,j,temp; for(i=0; i < elements-1; i++){ for(j=i+1; j < elements; j++){ if(sort[i] > sort[j]){ temp = sort[i]; sort[i] = sort[j]; sort[j] = temp; } } } } int main() { int ary[N] ={10,7,3,15,12,1,18,21,25,14}; bubble_sort(ary, N); printf("MAX %d MIN %d \n",ary[9],ary[0]); return 0; }
81 名前:デフォルトの名無しさん [2007/08/30(木) 03:45:09 ] >>33 #include <stdio.h> #include <ctype.h> #define EOA -1 int mystrlen(int *pstr); int usepointersum(int *ary); void mystrcpy(char *pstr,char *pans); int main() { char ary1[] = "Kyoto"; char ary2[] = "Kyoto Univ"; int iary[] ={ 1,3,5,7,9,2,10,4,8,6,EOA}; char ary3[] = "m04d12t5"; char ary4[20] ={'\0'}; int i; printf("%s\t%d\n",ary1,mystrlen(ary1)); printf("%s\t%d\n",ary2,mystrlen(ary2)); for(i = 0; i < sizeof(iary)/sizeof(int);i++) printf("%d ",iary[i]); putchar('\n'); printf("%d \n",usepointersum(iary)); printf("%s \n",ary3); mystrcpy(ary3,ary4); for(i = 0; ary4[i] != '\0';i++) putchar(ary4[i]); putchar('\n'); return 0; } int mystrlen(int *pstr) { char *temp=NULL; int num = 0; int i = 0; for(temp = (char *)pstr; *temp!='\0';temp++){ if(*temp > ' '){ num++; } } return num; } int usepointersum(int *ary) { int sum = 0; int *temp; for(temp = ary; *temp != EOA;temp++) sum += *temp; return sum; } void mystrcpy(char *pstr,char *pans) { char *tstr; int i,j=0; for(tstr = pstr; *tstr != '\0'; tstr++) if(!(isdigit(*tstr))){ pans[j] = *tstr; j++; } pans[j]='\0'; }
82 名前:デフォルトの名無しさん [2007/08/30(木) 04:32:39 ] 1] 授業単元:C++ [2] 問題文(含コード&リンク):メインプログラムを参考に3次元配列を動的に確保する関数を作成せよ。 ただし、関数宣言は”void func(***)”を仕様する kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4882.txt [3] Visual Studio 2005 [3.1] OS:Windows [3.2] VC [3.3] 言語: C++ [4] 期限: 無期限 [5] その他の制限: 特にありません よろしくお願いします
83 名前:デフォルトの名無しさん [2007/08/30(木) 12:08:13 ] 授業単元: C [2] 問題文(含コード&リンク): テーマ:文字列配列の操作 問題1:文字列を入力して偶数番目の要素と奇数番目の要素を別の配列に格納し、文字列として表示しなさい 実行画面 文字列入力==>ABC123def 偶数要素:AC2df 奇数要素:B13e 問題2:文字列と削除文字列を入力し文字列中から削除文字を排除しなさい 実行画面 文字列入力(m1)==>ABCDEFAABCDABC 削除文字==>A 結果文字列(m2):BCDEFBCDBC [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:ボーランド [3.3] 言語: C [4] 期限: [5] その他の制限:
84 名前:デフォルトの名無しさん [2007/08/30(木) 12:18:53 ] 授業単元: C [2] 問題文(含コード&リンク): テーマ:ポインタの利用 問題1: ポインタ変数を利用して、2つの合計を求めなさい int a=10,b=5,g; int *pa,*pb; 実行画面 g:15 問題2:ポインタ変数を利用して、文字型の配列変数mojiの値を実行画面のように表示させなさい char moji[]="ABCD"; char *mp; 実行画面 A B C D 問題3:文字列を入力し、文字列中の数字のみを別の配列に格納し表示しなさい 実行画面 文字列入力==>AB1CDE23FG4 数字文字列:1234 実行画面 実行画面 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:ボーランド [3.3] 言語: C [4] 期限: [5] その他の制限:
85 名前:デフォルトの名無しさん [2007/08/30(木) 12:27:03 ] こんな問題もできないのか
86 名前:デフォルトの名無しさん [2007/08/30(木) 12:27:56 ] 授業単元: C [2] 問題文(含コード&リンク): テーマ:文字列配列の操作 問題1:2値を小さい順に表示するユーザ関数を作成しなさい プロトタイプ宣言:void SortDisp(int dt1,int dt2); 実行画面 数値1入力==>10 数値2入力==>15 数値1:10 数値2:15 数値1入力==>15 数値2入力==>10 数値1:10 数値2:15 問題2:2値の合計を返すユーザ関数を作成しなさい プロトタイプ宣言:int Add(int aa,int bb); 実行画面 変数a入力==>3 実数b入力==>8 合計:11 数値1入力==>15 数値2入力==> [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:ボーランド [3.3] 言語: C [4] 期限: [5] その他の制限:
87 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:41:05 ] >>74 仕様に忠実にするなら P5 100 100 255 P5 #hoge hoge 100 100 255 どちらも読めなきゃだめだよなあ。
88 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:33:48 ] 課題というより依頼みたいなものもここでいいのでしょうか?
89 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:46:07 ] 宿題・課題のみです。
90 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 13:50:48 ] あるC++のプログラムをC言語のプログラムに書き変えてほしいのですが 該当スレなどはありませんか?
91 名前:デフォルトの名無しさん [2007/08/30(木) 14:01:05 ] 何方か83 84お願いします
92 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:12:40 ] >>83 の問題1 #include <stdio.h> #define MAX_NUM 128 int main() { char str[MAX_NUM], even[MAX_NUM/2], odd[MAX_NUM/2]; int i, j, k; printf("文字列入力==>"); scanf("%s", str); for(i=0, j=0, k=0; str[i]; i++) { if(i%2) {odd[j] = str[i];j++;} else {even[k] = str[i];k++;} } odd[j] = even[k] = '\0'; printf("偶数要素:%s\n", even); printf("奇数要素:%s\n", odd); return 0; }
93 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:20:22 ] >>83 の問題2 #include <stdio.h> #define MAX_NUM 128 int main() { char m1[MAX_NUM], m2[MAX_NUM], delchr; int i, j; printf("文字列入力(m1)==>"); scanf("%s", m1); fflush(stdin); printf("削除文字==>"); delchr = (char)getchar(); for(i=0, j=0; m1[i]; i++) { if(m1[i] != delchr) {m2[j] = m1[i]; j++;} } m2[j] = '\0'; printf("結果文字列(m2):%s", m2); return 0; }
94 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:23:07 ] >>84 の問題1 #include <stdio.h> int main() { int a=10, b=5, g; int *pa, *pb; pa = &a; pb = &b; g = *pa + *pb; printf("g:%d", g); return 0; }
95 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:24:32 ] >>84 の問題2 #include <stdio.h> int main() { char moji[]="ABCD"; char *mp; mp = moji; while(*mp) putchar(*mp++); return 0; }
96 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:28:06 ] >>84 の問題3 #include <stdio.h> #include <ctype.h> #define MAX_NUM 128 int main() { char moji[MAX_NUM], digit[MAX_NUM]; int i, j; printf("文字列入力==>"); scanf("%s", moji); for(i=0, j=0; moji[i]; i++) { if(!isdigit(moji[i]) == 0) {digit[j] = moji[i]; j++;} } digit[j] = '\0'; printf("数字文字列:%s", digit); return 0; }
97 名前:デフォルトの名無しさん [2007/08/30(木) 14:28:18 ] 何方か86お願いします
98 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 14:32:18 ] >>86 の問題1 void SortDisp(int dt1,int dt2) { printf("数値1:%d\n数値2:%d\n", dt1<dt2 ? dt1 : dt2, dt1<dt2 ? dt2 : dt1); } >>86 の問題2 int Add(int aa,int bb) { return aa+bb; }
99 名前:デフォルトの名無しさん [2007/08/30(木) 14:59:04 ] [1] 授業単元: ランダム関数 [2] 問題文(含コード&リンク):20〜100までのランダムな値を表示 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:BorlandC++ [3.3] 言語:C++
100 名前:76 mailto:sage [2007/08/30(木) 14:59:28 ] 問題1、2、共にこれを参照と言ってました。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4884.c あと>>33 の2もお願いできませんか?
101 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:14:23 ] [1] 授業単元: C [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4885.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年8月31日
102 名前:デフォルトの名無しさん [2007/08/30(木) 15:22:46 ] >>76 あとから、これ参照してとか言うなカス 作った関数意味ねーだろうが あと>>33の2も答え出てるだろうが
103 名前:82 [2007/08/30(木) 15:23:50 ] 何方か82お願いします
104 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:26:58 ] [1] 授業単元:確率統計 [2] 問題文(含コード&リンク): 指定ファイルを読み込んで、 平均値と標準偏差を標準出力するプログラムを作成せよ。 (指定ファイル) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4886.txt このファイルの2列目の要素のみ(0.0732421875 0.0693359375 ・・・)の 平均値等を出せばいいようで、他の列の数値は無視して大丈夫だそうです。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 9月1日 [5] その他の制限:制限はありません。 よろしくおねがいします。
105 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:30:08 ] >>99 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); printf("%d", rand()%81 + 20); return 0; }
106 名前:デフォルトの名無しさん [2007/08/30(木) 15:45:54 ] [1] 授業単元: 配列 [2] 2次元配列の中に1~100までの連続した数字を格納し、表示させる [3.1] WinXP [3.2] Borland [3.3] C++ [5] 1 2 3 4 5 6 7 8 910 11121314151617181920 21222324252627282930 …こんな感じで100まで表示させたいのです。
107 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:56:27 ] #include <stdio.h> int main(void) { int array[100], i; for (i = 1; i <= 100; i++) array[i-1] = i; for (i = 0; i < 100; i++) { printf("%2d", array[i]); if (array[i] % 10 == 0) putchar('\n'); } }
108 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 15:59:20 ] #include <stdio.h> int main(void) { int num[10][10], i, j; for(i=0; i<10; i++){ for(j=0; j<10; j++){ num[i][j] = i*10 + j + 1; printf("%2d", num[i][j]); } putchar('\n'); } return(0); }
109 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 16:05:47 ] >>101 3番めこんなのでどうでしょう? /* xの昇順階乗を計算する。 fact_pow(10,3) = 10*11*12 = 1320 fact_pow(0,3) = 0*1*2 = 0 fact_pow(3,0) = 1; fact_pow(-3,3) = -3*-2*-1 = -6 */ #include <stdio.h> #include <stdlib.h> int fact_pow(int x,int p); int main(void) { int x, p; printf("整数[x]を入力してください:"); scanf("%d",&x); printf("整数[p]を入力してください:"); scanf("%d",&p); printf("%d^[%d] = %d\n",x,p,fact_pow(x,p)); return 0; } int fact_pow(int x,int p) { int value = 1; int i; if(p == 0) return 1; for(i = 0; i < p; i++) value *= (x + i); return value; }
110 名前:デフォルトの名無しさん [2007/08/30(木) 16:12:55 ] [1] 授業単元: 乱数 [2] 1~25までの数字をランダムで25個表示させる。その際同じ値がでないようにする。 [3.1] WinXP [3.2] Borland [3.3] C++ よろしくお願いします
111 名前:デフォルトの名無しさん [2007/08/30(木) 16:24:11 ] >>104 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4887.txt
112 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 16:24:20 ] >>110 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int num[25]; int i, index, tmp; for(i=0; i<25; i++) num[i] = i+1; srand(time(NULL)); for(i=0; i<25; i++) { index = rand() % (i + 1); tmp = num[i]; num[i] = num[index]; num[index] = tmp; } for(i=0; i<25; i++) printf("%d\n", num[i]); return 0; }
113 名前:デフォルトの名無しさん [2007/08/30(木) 16:47:21 ] >>110 #include <iostream> #include <cstdlib> #include <ctime> const int N = 25; int main() { int rnd[N] = {0}; int i,r,r1,r2,temp; srand((unsigned)time(NULL)); for(i = 0; i < N; i++) rnd[i] = i + 1; r = rand(); for(i = 0; i < r; i++){ r1 =rand()%N; r2 =rand()%N; temp = rnd[r1]; rnd[r1] = rnd[r2]; rnd[r2] = temp; } for(i = 0; i < N; i++) std::cout << rnd[i] << ' '; std::cout << '\n'; return 0; }
114 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 17:06:12 ] >>110 #include <iostream> #include <cstdlib> #include <ctime> #include <deque> using namespace std; int main(void) { const int NUM = 25; //定数宣言 srand((unsigned)time(NULL)); //乱数初期化 //配列qiの宣言と初期化 deque<int> qi; for(int i = 0; i != NUM; i++) { qi.push_back(i+1); //1〜NUMまでの数値を並べる } //乱数を使って数値をランダムに取り出す for(int i = NUM; i != 0; i--) { int n = rand() % i; //0〜(i-1)までの乱数を取り出す cout << qi.at(n) << endl; // n番目の数値を表示 qi.erase(qi.begin()+n); // n番目の数値を配列から削除 } return 0; }
115 名前:104 mailto:sage [2007/08/30(木) 17:23:00 ] >>111 お早い回答ありがとうございます!! おかげで助かりました!
116 名前:111 [2007/08/30(木) 17:48:33 ] 久々ありがとうレスをもらった 「どういたしまして」
117 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:08:54 ] >>116 回答をしてもらったわけではない部外者だが、他の回答者として 自分よりお早く回答してくれてありがとうございました! おかげで自分が回答せずに済みました!
118 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:19:47 ] >>114 このスレでGNUスタイルのコードは初めて見た気がする
119 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 20:48:25 ] 残念だが C++ の標準スタイルでは引数がないなら int main() で良いんだよ。CはISO準拠だとint main(void)ってなるが
120 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:05:03 ] >>73 こんなもんでおk?後々P5 を読む気が無いコードだけど… #include<stdio.h> FILE *comment_remove(const char *filename){ // P5 の時はデータ領域が不正になります FILE *fp_src, *fp_work; int moji, is_comment=0; if((fp_src=fopen(filename, "r"))==NULL) return NULL; if((fp_work=tmpfile())!=NULL){ while((moji=fgetc(fp_src))!=EOF){ if(moji=='#') is_comment=1; if(moji=='\n') is_comment=0; if(!is_comment) fputc(moji, fp_work); } fseek(fp_work, 0L, SEEK_SET); } fclose(fp_src); return fp_work; } int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){ FILE *fp; char buf[3+1]; int width, height, depth; fp=comment_remove(filename); if(fp!=NULL){ if(fscanf(fp, "%3s%d%d%d", buf, &width, &height, &depth)==4) sprintf(pformat, "%s", buf),*pwidth=width,*pheight=height,*pdepth=depth; fclose(fp); } return 0; }
121 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:12:07 ] >>73 >>120 の訂正と使い方 (関数 pgm_info の返り値で成否を判定できるようにした) int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){ FILE *fp; char buf[3+1]; int width, height, depth, ret=0; fp=comment_remove(filename); if(fp!=NULL){ if(fscanf(fp, "%3s%d%d%d", buf, &width, &height, &depth)==4){ sprintf(pformat, "%s", buf),*pwidth=width,*pheight=height,*pdepth=depth,ret=1; } fclose(fp); } return ret; } int main(void){ char format[3+1]; int width, height, depth; pgm_info("a.pgm", format, &width, &height, &depth); printf("format : %s\nwidth : %d\nheight : %d\ndepth : %d\n", format, width, height, depth); return 0; }
122 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:29:58 ] >>109 ありがとうございます。 1,2の方もお願いできませんか
123 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:54:22 ] >>109 1はyの範囲に制限を付けないと難しいのではないかな。 例えば1900年以降でよいとか、前提はないの?
124 名前:123 mailto:sage [2007/08/30(木) 23:57:24 ] 失礼、 >>109 さんではなく>>101 さんあてです
125 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:24:33 ] >>124 問題を確認しましたが101で書いたことしか載ってませんでした。
126 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:56:07 ] 76の1で void arr_cycle(int *arr, int len) { int i, temp; temp = a[len-1]; for(i=len-1;i>0;i--) arr[i] = arr[i-1]; a[0] = temp: } でソースをかいてくれませんか
127 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:10:34 ] >>126 日本語でOk
128 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 02:01:56 ] >>101 日付チェックはしてない。グレゴリオ暦が使われた年以降。 int leap(int y) { return (y%4==0)?(y%100==0)?(y%400==0)?1:0:1:0; } int days(int y,int m,int d) { int dom[2][12]= {{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int day=0,i,j; j=leap(y); for(i=0;i<m-1;i++) day+=dom[j][i]; day+=d; return day; } main() { int y,m,d; scanf("%d %d %d",&y,&m,&d); printf("days=%d\n",days(y,m,d)); }
129 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 07:51:47 ] >>101 #include<stdio.h> int f(int y,int m,int d){ if(m<3) y--,m+=12; return y*365+y/4-y/100+y/400+(m+1)*306/10+d-428; } int leap(int y){ return f(y,3,1)-f(y,2,29); } int days(int y,int m,int d){ return f(y,m,d)-f(y,1,0); } int main(void){ int ymd; printf("yyyymmdd="); scanf("%d",&ymd); printf("leap=%d\ndays=%d\n",leap(ymd/10000),days(ymd/10000,ymd%10000/100,ymd%100)); return 0; } #include<stdio.h> #define PI 3.1415926535897932384626433832795 double rad(double s){ return s*PI/180; } double deg(double r){ return r*180/PI; } int main(void){ double s; printf("s="); scanf("%lf",&s); printf("rad(s)=%.9f\ndeg(rad(s))=%.9f\n",rad(s),deg(rad(s))); return 0; }
130 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:41:06 ] >>73 バイナリフォーマットにも対応できるように作りなおしてみた #include<stdio.h> #include<stdlib.h> #include<ctype.h> int pgm_get_word(FILE *fp, char buf[], int buf_size){ int i=0, moji; while(i<buf_size-1 && (moji=getc(fp))!=EOF){ if(isspace(moji)){ if(i>0) break; } else if(moji=='#'){ fscanf(fp, "%*[^\n]"); if(i>0) break; }else{ buf[i++]=moji; } } buf[i]='\0'; if(i>=buf_size-1) while((moji=getc(fp))!=EOF && !isspace(moji)) ; return (i>0); } int pgm_info(const char *filename, char *pformat, int *pwidth, int *pheight, int *pdepth){ FILE *fp; char format[3+1], width[10+1], height[10+1], depth[4+1]; int ret=0; fp=fopen(filename, "rb"); if(fp!=NULL){ if(pgm_get_word(fp, format, sizeof(format)) && pgm_get_word(fp, width, sizeof(width)) && pgm_get_word(fp, height, sizeof(height)) && pgm_get_word(fp, depth, sizeof(depth)) ){ sprintf(pformat, "%s", format); *pwidth=atoi(width); *pheight=atoi(height); *pdepth=atoi(depth); ret=1; } fclose(fp); } return ret; }
131 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:01:58 ] これを76の1のようにずらしたいのですが #include <stdio.h> void arr_cycle(int arr[], int len) { int i, temp; temp = arr[len-1]; for(i=len-1;i>0;--i) arr[i] = arr[i-1]; arr[0] = temp; } int main(void) { int i; int n; int data[10]; scanf("%d", &n); for(i = 0;i < n;i++) scanf("%d",&data[i]); arr_cycle(&data[i], n); for(i=0;i<n;i++) printf("%d ",data[i]); return 0; }
132 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 11:46:32 ] [1] 授業単元: c言語 [2] 非負整数の不定長配列 arr[] 中で、全てのデータが閾値 thre 以上かどうかの真偽値(0または1)を返却する関数 arr_thre_all() を作成する。終端番兵は、EOA(-1) とする。反復変数を用いず、ポインタのアドレス演算を用いる。 システム上では、入力の先頭をthre、それ以降はarrとする。入力の終了はEOA(-1)とする。全て閾値以上の場合は 1 、そうでない場合は 0 を出力するプログラムを作れ。 入力例:1 2 3 4 1 -1 出力例:1 [3.1] WinXP [3.2] bcc [3.3] C [4]8/31
133 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 12:02:54 ] >>131 arr_cycle(data,n);
134 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 12:39:47 ] >>131 ありがとうございます。
135 名前:デフォルトの名無しさん [2007/08/31(金) 12:48:51 ] [1] 授業単元: [2] 問題文:1~10までの数字を2回入力し1番目と2番目までの入力された値を足し算して表示させる [3.1] WinXp [3.2] Borland [3.3] C++ [5] その他の制限:2番目に入力される値は1番目よりも小さくなるようにする。 8 4 と入力されたら 8+7+6+5+4と計算され、30と表示される感じです
136 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 12:52:11 ] >>33 の2ですが kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4888.txt 和がうまく求めたいのですが、どうすればいいのでしょうか?
137 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:00:10 ] >>136 > int iary[] ={0}; これだとそもそも一個しか入力できないわけだが。 入力ロジックは兎も角、積算ロジックはぱっと見良さそうだよ。
138 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 13:30:57 ] サイズの問題以外にも配列にEOAを入れないのはまずいだろ。
139 名前:136 mailto:sage [2007/08/31(金) 14:29:34 ] どのように入力を変えればよいのでしょうか?
140 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:46:34 ] int iary[数値] ={0}; ってやればいいんじゃない?
141 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:55:26 ] 入力の終了条件を-1が入力されたらにする。
142 名前:136 mailto:sage [2007/08/31(金) 15:04:55 ] ちょっとよくわからないので書いてくれませんか?
143 名前:デフォルトの名無しさん [2007/08/31(金) 15:23:51 ] >>136 のソース見て、usepointersumなんて言う情けない関数名 を見て、「あれ、どっかで俺、こんな関数名の入ったソースを張ったぞ」 と思って見返したら>>81 で>>33 に向けて張ったソースの一部じゃねぇか どおりで<ctype.h>が意味無くincludeされてるわ。 ファイルそのものUpしてあげる kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4889.txt それで、いったい何をしたいのか、事細かく質問しなよ 何が分からないのかがわからないの?まぁ、良いや。 ついでに>>33 よ、まるで自分が書いたようにソースファイルをupしちゃだめだよ
144 名前:136 mailto:sage [2007/08/31(金) 15:31:29 ] >>143 すいませんでした。 ソースから数値を読み取るんじゃなくて、コンパイラから入力したいのですが
145 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 15:36:13 ] >>144 もう我慢ならねえ!!!! コマンドラインから受け取るようにしろよ、この穀つぶしが!!!!!!!
146 名前:143 mailto:sage [2007/08/31(金) 16:06:11 ] 「コンパイラから入力したいのですが」の意味が俺にはわからない。
147 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 16:30:45 ] コンパイラが対話式とみた
148 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 16:48:30 ] コンパイルオプションで -Dxxx=yyy とか付けるんじゃない?
149 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 17:41:01 ] 統合開発環境で、デバッグ時に、引数を与えたいが、やり方がわからない。 こうなんじゃないか?
150 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 19:59:35 ] 最近のコンパイラは賢いな。ESP機能がある。
151 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 01:14:10 ] >>132 #include <stdio.h> #define EOA -1 #define ARRMAX 1024 int arr_thre_all(int* arr, int thre){ while(*arr != EOA) if(*(arr++) < thre) return 0; return 1;} int main(void){ int i; int arr[ARRMAX]; unsigned int thre; scanf("%d", &thre); for(i = 0; i != ARRMAX; i++){ scanf("%d", &arr[i]); if(arr[i] == EOA) break;} i = arr_thre_all(arr, thre); printf("%d\n", i); return 0;}
152 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 02:18:00 ] #include <stdio.h> int main(){ int u,l; while(1){scanf("%d",&u);if(u<11 && u>0){break;}} while(1){scanf("%d",&l);if(l<u && l>0){break;}} //printf("%d +%s%d = %d\n", u, (u-l>2)?" ... + ":" ", l, ( u + l )*( u - l + 1 ) / 2); printf("%u\n", ( u + l )*( u - l + 1 ) / 2); return 0;}
153 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:53:36 ] [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): C#でクラスを用いてシューティングゲームを作れ。 スタート・中断・再開ボタン機能を必ず入れ、敵味方と弾は全てオブジェクトとする [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C# [4] 期限:9月4日 [5] その他の制限: なし C#は駄目でしょうか。 C#のソース付きのゲームとかがあればそれを参考にやれるんですが・・・
154 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 15:54:59 ] C/C++のみです。C#は他言語です。
155 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 16:30:32 ] C#のソース付きのゲームのサンプルってテトリスぐらいしかしらんな〜
156 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:03:05 ] >>153 夏休み中に何をしていたんだ
157 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:14:24 ] >>153 ガンシューにしてみたら?
158 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 19:58:00 ] 1対1のガンマンシューティングなんてどうだ?
159 名前:デフォルトの名無しさん [2007/09/01(土) 20:50:01 ] [1] 授業単元:C言語 [2] 問題文: 文字列に含まれるすべての文字を、1つ後のASCUコードをもつ文字に置き換えるプログラムを作成する。 例:Nurupo → Ovsvqp [3] 環境 [3.1] OS:Windows [3.2] コンパイラ: bcc [3.3] 言語: C [4] 期限: 9月4日 [5] その他の制限: 特にありません。 よろしくお願いします。
160 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:07:52 ] >>159 #include <stdio.h> #define MAX_LENGTH 512 int main(void) { char str[MAX_LENGTH] = "Nurupo", buf[MAX_LENGTH]; int i; for(i=0; str[i]; i++) buf[i] = str[i] + 1; buf[i] = '\0'; printf("%s → %s", str, buf); return 0; }
161 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:08:52 ] ああ、置き換えるのか・・・仕様とは違うなorz
162 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 21:16:12 ] do *p+=1; while(*++p); 適当に置き換えておいてくれ
163 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:39:03 ] アスキーコード最後の文字はどうするん?
164 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 22:45:54 ] 何も考えずに1つ後のASCUコードをもつ文字にするんだろ
165 名前:デフォルトの名無しさん [2007/09/01(土) 22:56:37 ] [1] 授業単元:C言語 [2] 問題文: 長方形の縦と横の長さ(double型)を引数として受け取り、その長方形の面積(double型)を 返す関数Xを作り、mainから呼び出して動作を確認するプログラムの作成 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月3日 21時 [5] その他の制限: なし
166 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:02:06 ] #include <stdio.h> double X(double width, double hight) { return width * hight; } int main(void) { printf("%g", X(10.0, 8.0)); return 0; }
167 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 23:50:03 ] >>155 テトリスでもいいんで教えてもらえないでしょうか。要領さえ分かれば何とかなるんで >>156 全然違う事の勉強です。
168 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:11:21 ] >>162 これって1文字目が\0だとPC爆発しないか?
169 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 00:21:51 ] しないよ
170 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 05:25:19 ] >>167 school.topposystem.co.jp/SampleCode/PictureList.asp のフリーサンプル集のどっかにあったよ。 っていうか、俺もサンプルとして見たかったからダウンしたので それをupしますね kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4891.zip
171 名前:デフォルトの名無しさん [2007/09/02(日) 20:09:48 ] >>160 お早い回答ありがとうございます!! おかげで助かりました! >>162 どこを置き換えればいいかもおしえていただけると助かるのですが おしえていただけないでしょうか?
172 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 20:53:33 ] >>171 void replaceFollower(char * foo) { for (unsigned ic = 0; foo[ic] != '\0'; ++ic) { ++foo[ic]; } } #include <stdio.h> int main() { char str[] = "Nurupo"; printf("%s\n", str); replaceFollower(str); printf("%s\n", str); return 0; }
173 名前:36 [2007/09/02(日) 22:49:56 ] >>36 です. 遅くなりましたが,答えてくださった方ありがとうございます. 無事に課題提出を行うことができました. 実は>>36 で書いた課題にはオプション問題がありまして, 自分には全く分からなかったので手を出さなかったのですが…. どのように解答するか気になるので, もし分かる方がいたらよろしくお願いします. [1] 授業単元:C言語 [2] 問題文: 二次座標平面において,ランダムに4〜5個ほど点が与えられる. そのような複数の点の最近傍を通る円の方程式を求めよ. ただし,中心座標(x_0,y_0)は (1)一番低いy座標よりも下にある. (2)一番低いx座標よりも左にある.または,一番高いx座標よりも右にある. {if((x_0<=xmin||x_0<=xmax)&&y_0<=ymin) true;} を満たすものとする. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限:期限なし [5] その他の制限:計算速度が速い方が好ましい.
174 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 22:55:35 ] >>173 最近傍の評価はどうするの? 円と点 n の距離を Dn と置く時 Σ(Dn) Σ((Dn)^2) とかそういうのが無いと解けないっぽ
175 名前:36 [2007/09/02(日) 23:28:37 ] >>174 評価関数は各自で任意に設定すると言われているのですが…. 今回は Σ(Dn^2) の最小二乗法でお願いします.
176 名前:デフォルトの名無しさん [2007/09/03(月) 00:47:20 ] [1] 授業単元:C言語 [2] 問題文: 整数aと自然数nを入力してaのn乗を求める。入力は正しく行われるものとする。 [3] 環境 [3.1] OS:Win [3.2] コンパイラ:Win visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 [5] その他の制限: --nを使うところまではわかるのですが、どうも上手くできません。 お力を貸していただけると助かります。
177 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 01:04:59 ] int factorial(int a,int n){ long int buf=a; while(n!=0){ buf *=a; n--; } return buf; } ただし少しnを大きくしただけでオーバーフローする
178 名前:デフォルトの名無しさん [2007/09/03(月) 07:13:30 ] [1] 授業単元:C言語 [2] 問題文:掛け算の九九の表をファイルprod99.txtに書き込むプログラムを作成する。 [3.1] OS:Windows [3.2] コンパイラ:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 12時 [5] その他の制限: 特にありません
179 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:34:13 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 仕事は「納期 T、作業時間 W、ペナルティ C」の 三つの情報で特徴付けられるとする。 N 個の仕事が与えられる。これらの仕事を適当に並び替えて 「納期から遅れた時間×ペナルティ」の総和を最小にせよ。 なお、開始の時刻は 0 とする。 入力: 一行目は仕事の総数 N (正の整数、N ≦ 50 としてよい) 二行目から n+1 行目までは仕事の情報 T W C (すべて正の整数) 出力: 最小の「納期から遅れた時間×ペナルティ」の総和。 例: (入力) 2 1 2 3 1 1 1 (出力) 5 (1番目の仕事をやってから2番目の仕事をやる。両方納期には遅れるが ペナルティ 5。逆にすると2番目の仕事は納期に間に合うがペナルティ 6) [3] 環境:特に指定なし(OS環境問わず、C/C++どちらでも可) [4] 期限:9月10日 [5] その他の制限:特になし
180 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:40:41 ] >>173 付帯条件がよくわからんのだけど、つまり円の右上だけ(or 左上だけ)で 他の点に近い円を描けってことでよいのかね?
181 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:43:42 ] >>178 #include <stdio.h> int main() { int i, j; FILE *fp = fopen("prod99.txt", "w"); for (i = 1; i <= 9; ++i) { for (j = 1; j <= 9; ++j) { fprintf(fp, "%2d ", i*j); } fprintf(fp, "\n"); } fclose(fp); }
182 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 08:45:10 ] >>178 #include <stdio.h> int main(void){ FILE *file; if(({file=fopen("prod99.txt","r"))==NULL){ fputs("エディタを開いて、ファイル名 prod99.txt に以下を書き込んでください\n" " 1 2 3 4 5 6 7 8 9\n" " 1 1 2 3 4 5 6 7 8 9\n" " 2 2 4 6 81012141618\n" " 3 3 6 9121518212427\n" " 4 4 812162024283236\n" " 5 51015202530354045\n" " 6 61218243036424854\n" " 7 71421283542495663\n" " 8 81624324048566472\n" " 9 91827364554637281\n",stderr); return 1; } fputs( " 1 2 3 4 5 6 7 8 9\n" " 1 1 2 3 4 5 6 7 8 9\n" " 2 2 4 6 81012141618\n" " 3 3 6 9121518212427\n" " 4 4 812162024283236\n" " 5 51015202530354045\n" " 6 61218243036424854\n" " 7 71421283542495663\n" " 8 81624324048566472\n" " 9 91827364554637281\n",file); fclose(file); return 0; }
183 名前:182 mailto:sage [2007/09/03(月) 09:01:27 ] if(({file=fopen("prod99.txt","r"))==NULL){ → if(({file=fopen("prod99.txt","w"))==NULL){
184 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 09:11:13 ] {
185 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 12:02:13 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 逆ポーランド記法に変換してから計算する四則演算の電卓プログラムを作れ [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: c [4] 期限: 2007年9月4日 よろしくおねがいします。
186 名前: ◆kRtmRcQ9ak [2007/09/03(月) 12:41:26 ] [1] 授業単元: コンピュータプログラミング [2] 問題文: 名前&身長&体重の入力&ファイルに記録&読み出し&BMI計算(BMI=体重kg/(身長m)^2)&身長順に並び替え [3] 環境 [3.1] windows [3.2] コンパイラ名とバージョン:C++Compiler5.5 [3.3] 言語: C [4] 期限:2007 9/5まで [5] その他の制限:無し。 よろしくお願いします。
187 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 13:35:05 ] >>185 エラーチェックはしていない 二桁以上の数が入力される場合にも対応していない kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4893.c
188 名前:billy [2007/09/03(月) 14:58:50 ] 構造体に入っている値を32個ずつ別のテキストファイルに出力したいのですが、どうしたらいいのですか?
189 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:00:11 ] >>188 スレ違い
190 名前:デフォルトの名無しさん [2007/09/03(月) 16:19:38 ] 〔1〕C言語 〔2〕問題(下記) #include<stdio.h> void main() { int ia; printf("整数を入力してください:"); scanf("%d",&ia); if(○○) printf("偶数です"); else printf(”奇数です”); } 問 上記に示したのは、入力した整数が偶数か奇数かを判断するプログラムである。 if(○○)の○○を埋めよ。 〔3〕WinXP 9月4日〆 よろしくお願い致します。
191 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 16:23:52 ] >>190 (ia+191)%2
192 名前:デフォルトの名無しさん [2007/09/03(月) 16:35:44 ] >>191 協力感謝です。 有難うございました!
193 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:47:42 ] [1] 授業単元:C言語 [2] 問題:引数として渡された2つの整数の小さい方の値を返す関数である。 〔 〕のを埋めて関数を完成させよ。 〔 〕imin(int ia,int ib) { if(ia<ib) 〔 〕 else 〔 〕 } [3] 環境 [3.1] OS:WindowsXP [3.3] 言語:C++ [4] 期限: 9月4日まで [5] その他の制限: なし 葬式で1週間授業休んだらおいてかれた\(^o^)/
194 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:52:28 ] >>193 〔int〕imin(int ia,int ib) { if(ia<ib) 〔return ia;〕 else 〔return ib;〕 }
195 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:54:22 ] 〔/* 〕imin(int ia,int ib) { if(ia<ib) 〔; 〕 else 〔*/int imin(int ia,int ib){return ia<ib?ia:ib;〕 }
196 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:55:12 ] >>193 馬鹿?これよんどけ。 ttp://www5c.biglobe.ne.jp/~ecb/c/07_01.html ttp://www5c.biglobe.ne.jp/~ecb/c/07_01_02.html ttp://www5c.biglobe.ne.jp/~ecb/c/07_01_03.html int return ia; return ib;
197 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:55:22 ] >195の勝ち。
198 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 17:56:07 ] >>195 この発想はなかったわ
199 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:52:39 ] [1] 授業単元:パターン認識 [2] 問題: 問題の概要はwww.uploda.org/uporg1000429.txt にかきました。 問題は、入力データを正規分布のデータで評価し確率をもとめてほしいのです。 長くなりましたがお願いします。 計算がめんどうだったらlogで出してくれてもいいです。 [3] 環境 [3.1] OS:LINUX [3.3] 言語:C [4] 期限: いつでもいいです。
200 名前:36 [2007/09/03(月) 21:35:18 ] >>180 そうです,右上または左上となる円を描くイメージです. もしお時間ありましたらよろしくお願いします.
201 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:49:05 ] >>199 「正規分布のデータで『評価』」ってなに? アップローダにあるほうもグダグダかかれてて 結局問題でやるべきことがよくわからないんだが。
202 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:01:08 ] 評価するっていうのは平均と分散からできる分布のグラフ (横軸が数値で、縦軸が度数(ここでは確率))において 入力データと数値を見比べて一致したところの確率を出すことを評価するっていうんです。 1つのデータが9次元なんです。 9次元の入力データから9次元の平均をひいたものを2乗して 9次元の分散でわる。そうすると9個の値がでますからそれをたせばexpの中身になって expの前にある変数とexpをかけると確率が出せるわけです。 それがfです。 すいませんfの式がここでかけなくて。
203 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:07:30 ] >>202 平均分散が与えられた多次元正規分布の式に、与えられた 20個のデータを突っ込んだときの値を出せと言っている? 『評価』は estimate じゃなくて evaluate だということ?
204 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:12:00 ] そうです。まさしくそうです
205 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:19:08 ] しかしこの正規分布で出した確率があまりに小さくなってあってるかどうかもわからないまま 他のアルゴリズムに用いないといけないから困る。
206 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:32:06 ] >>204 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4894.c 205 のいうとおり、値があまりに小さくなったがこれでいいのかね。
207 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:35:07 ] 値いくらになりました? logで表示してくれるとありがたいです。 検算させていただきます。
208 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:37:44 ] >>173 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4895.c ファイル point.dat に次のように記述し、実行ファイルを実行する 4 1.0 0.0 0.0 1.0 -0.5 0.0 0.0 -1.0
209 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:50:46 ] >>208 目的関数の性質が悪そうなんだけど、単純な降下法でうまくいくの?
210 名前:208 mailto:sage [2007/09/04(火) 07:23:05 ] >>209 多分うまくいかない 局所解にはまってしまうと思う でも、数学はもう解けない頭になってしまった (仕事ならやるけどね)
211 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 07:45:43 ] 数式で表すと、適当な平行移動と反転をして min. Σ| (x-x_i)^2 + (y-y_i)^2 - r^2 | s.t. x ≧ 0, y ≧ 0, r ≧ 0 を解く、という問題に落ちるんだけど、この目的関数は 凸でないし、滑らかでもないので非常に面倒な問題になるはず。 ただ、関数が綺麗だから逐次二次緩和くらいで十分解けそう。 とても実装する気にはならないけど。
212 名前:デフォルトの名無しさん [2007/09/04(火) 15:02:44 ] [1] 授業単元: ランダム関数 [2] 問題文(含コード&リンク): トランプをランダムで表示させる [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:Borland [3.3] 言語:C++ 表示が○○(マーク)の○(数字)と表示させたいのです
213 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 15:58:55 ] >>212 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { enum {MK_HEART, MK_DIAMOND, MK_CLOVER, MK_SPADE}; int mark, num; srand(time(NULL)); mark = rand() % 4; num = rand() % 13 + 1; switch(mark) { case MK_HEART:printf("ハート");break; case MK_DIAMOND:printf("ダイヤ");break; case MK_CLOVER:printf("クローバー");break; case MK_SPADE:printf("スペード");break; } if(1 < num && num < 11) printf("%d", num); else { switch(num) { case 11:putchar('J');break; case 12:putchar('Q');break; case 13:putchar('K');break; case 1:putchar('A');break; } } return 0; }
214 名前:デフォルトの名無しさん [2007/09/04(火) 21:20:09 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3967.txt 以前提出した物:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4897.txt [3] 環境 [3.1] OS: Windows/Linux [3.2] コンパイラ名とバージョン: MicrosoftFramework/gcc [3.3] 言語: C [4] 期限:なるべく早く [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 以前もこのスレで質問し、教えていただいたものを用いて形にし、 提出はしたのですが結果がおかしく再提出を求められました フィボナッチ数(fib)の値がおかしいのですが、 提出した物の最後の print(b3); printf("\n");を直前のfor文の中に入れて確認したところ、 8+13の結果(fib(8))が21でなく121になってしまっているため以降の全ての値がおかしくなっているようです。 おそらくpaddがおかしいのだと思うのですが、いろいろ変えてみても上手くいきません おかしい箇所の指摘や改善方法のご教授をお願いします
215 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:25:30 ] MMXでも使ってんのかと思った
216 名前:デフォルトの名無しさん [2007/09/04(火) 21:26:26 ] [1] 授業単元:C言語 [2] 問題文:文字列を入力し、その文字列を縦に並べて表示するプログラムの作成。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月5日 21時 [5] その他の制限: ないです。 よろしくお願いします。
217 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:29:45 ] >>216 #include <stdio.h> int main(void) { char buf[512], *p = buf; scanf("%s", buf); while(*p) { printf("%c\n", *p); p++; } return 0; }
218 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:37:52 ] >>216 2バイト文字対応は不要?
219 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 21:50:15 ] 海栗に書き換えればいいだけ
220 名前:214 mailto:sage [2007/09/04(火) 22:13:01 ] 自己解決しました。 スレ汚しすみませんでした。
221 名前:デフォルトの名無しさん [2007/09/04(火) 23:04:34 ] 授業単元:C 問題文(含コード&リンク): テーマ:文字配列の操作 1問目:キーボードより表示開始文字と表示終了文字を入力開始〜終了までの文字を表示しなさい char moji[]="ABCDEF〜XYZ"; /*大文字26文字*/ 実行画面 moji:ABCDEF〜XYZ 開始位置==>B 終了位置==>F 表示:BCDEF moji:ABCDEF〜XYZ 開始位置==>D 終了位置==>D 表示:D moji:ABCDEF〜XYZ 開始位置==>E 終了位置==>B 表示:EF〜XYZAB 環境: OS:WindowsXP コンパイラ名とバージョン:ボーランド 言語:C 期限:
222 名前:デフォルトの名無しさん [2007/09/04(火) 23:06:43 ] 授業単元:C 問題文(含コード&リンク): テーマ:文字配列の操作 問題2:文字列と検索文字、置換文字を入力し文字列中の検索文字を置換文字に置き換え なさい 実行画面 文字列(m1)入力==>ABCDEFAABCDABC 削除文字==>A 置換文字==>* 結果文字列(m1):*BCDEF**BCD*BC 環境: OS:WindowsXP コンパイラ名とバージョン:ボーランド 言語:C 期限:
223 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:20:30 ] >>211 #include <stdio.h> #include <ctype.h> int main(void) { char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; /*大文字26文字*/ char start, end, *p; printf("moji:%s\n", moji); printf("開始位置==>"); scanf("%c", &start); fflush(stdin); printf("終了位置==>"); scanf("%c", &end); fflush(stdin); if(!isalpha((int)start) || !isalpha(end)) return 1; start = (char)toupper(start); end = (char)toupper(end); p = moji + start - 'A'; for(;;) { putchar(*p); if(*p == end) break; if(*(++p) == '\0') p = moji; } return 0; }
224 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 23:24:39 ] >>222 #include <stdio.h> #include <ctype.h> int main(void) { char m1[512]; char del, rplc, *p = m1; printf("文字列(m1)入力==>"); scanf("%s", m1); fflush(stdin); printf("削除文字==>"); scanf("%c", &del); fflush(stdin); printf("置換文字==>"); scanf("%c", &rplc); fflush(stdin); for(; *p; p++) { if(*p == del) { *p = rplc; } } printf("結果文字列(m1):%s", m1); return 0; }
225 名前:デフォルトの名無しさん [2007/09/05(水) 00:32:04 ] [1] 授業単元:C言語 [2] 問題文: 文字(char型)を引数として受け取り、その文字が英小文字ならば大文字に、英大文字なら小文字に変換して返す関数toulを作り、 mainから呼び出して動作を確認するプログラムの作成する。ただし、引数はスペース、英字、数字のみとし、スペースや字数はそのまま変更しない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Windows visual studio2005 [3.3] 言語: C [4] 期限: 9月6日 22時 [5] その他の制限: なし
226 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:46:54 ] >>225 mainは省略 動作確認も省略 char toul(char buf){ int dif='A'-'a'; if(buf >= 'a' && buf <='z'){ return char + dif; }else if(buf >= 'A' && buf <='Z'){ return char - dif; }
227 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 00:50:15 ] >>225 #include <stdio.h> #include <ctype.h> char toul(char ch) { if(isupper(ch)) return tolower(ch); else if(islower(ch)) return toupper(ch); else return ch; } int main(void) { printf("'%c' → '%c'\n", 'a', toul('a')); printf("'%c' → '%c'\n", 'B', toul('B')); printf("'%c' → '%c'\n", ' ', toul(' ')); printf("'%c' → '%c'\n", '2', toul('2')); return 0; }