- 1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ]
- あなたが解けない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++の宿題を片付けます 102代目 pc11.2ch.net/test/read.cgi/tech/1197132472/
- 959 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:22:47 ]
- [1]授業単元 C言語
[2]問題文 整数yを入力すると、y×yの正方形を描くプログラム ex)y=4のとき ・・・・ ・ ・ ・ ・ ・・・・ y=1のときは ・ y=2のときは ・・ ・・ でOK [3]環境 Windows、C [4]期限 2/6 9:30まで。なるべく早めにお願いします。
- 960 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:32:04 ]
- // >>959 2バイト文字にするのは自分でやってくれ。
#include <stdio.h> int main() { int y; scanf("%d", & y); if (y >= 1) { for (int xc = 0; xc < y; ++xc) { printf("."); } printf("\n"); } for (int yc = 0; yc < y - 2; ++yc) { printf("."); for (int xc = 0; xc < y - 2; ++xc) { printf(" "); } printf(".\n"); } if (y >= 2) { for (int xc = 0; xc < y; ++xc) { printf("."); } printf("\n"); } return 0; }
- 961 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 15:42:01 ]
- /* こんでいいじゃんw */
#include <stdio.h> int main() { int y, xc, yc; scanf("%d", & y); for (yc = 0; yc < y; ++yc) { for (xc = 0; xc < y; ++xc) { printf("%s", yc == 0 || yc == y - 1 || xc == 0 || xc == y - 1 ? "・" : " "); } putchar('\n'); } return 0; }
- 962 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 17:56:42 ]
- >>960-961
ありがとうございました。
- 963 名前:デフォルトの名無しさん [2008/02/05(火) 18:21:06 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): ・時計の長針と短針がなす角を求めるプログラム 時刻 h時 m分 (24時間制、mは整数)において、時計の長針と短針がなす角θ(0°≦θ≦180°) を計算するプログラムを書きなさい。 ただし、h、mを入力する部分、及びなす角θを計算する部分をそれぞれ関数化しなさい。 結果の出力はh、m、θが表示されていれば細かい様式は問わない。 ヒント:時計の長針は1時間で一周するということは、1分間あたり何度動くか。 同様に、時計の短針は12時間で一周するということは1時間当たり何度動くか。 また1分間あたり何度動くか。時計の長針は短針に比べて1分間にどれだけ多く動くか。 実行例 >clock.exe input h:22 input m:0 22:00 (60.0°) [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 2008年2月6日12:00まで [5] その他の制限: 制限は特にありません。よろしくお願い致します
- 964 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:04:08 ]
- [1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):ip.tosp.co.jp/i.asp?I=cgenger [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語:C++ [4] 期限:2月9日 [5] その他の制限: 宜しくお願いします
- 965 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:04:22 ]
- >>963
#include<stdio.h> #include<math.h> double calc_theta(int hour, int minute){ double degree_hour, degree_minute, theta; degree_hour=(hour+minute/60.0)*30.0; degree_minute=minute*6.0; theta=fmod(degree_hour-degree_minute, 360.0); if(theta<0.0) theta+=360.0; if(theta>180.0) theta=360.0-theta; return theta; } void get_value(int *pvalue, const char *message){ printf("%s", message); scanf("%d", pvalue); } void get_hour(int *phour){ get_value(phour, "input h:"); } void get_minute(int *pminute){ get_value(pminute, "input m:"); } int main(void){ int hour, minute; get_hour(&hour); get_minute(&minute); printf("\n%02d:%02d (%.1f°)\n", hour, minute, calc_theta(hour, minute)); return 0; }
- 966 名前:963 mailto:sage [2008/02/05(火) 20:50:26 ]
- >>965さん
宿題でこれだけがどうしても分からなかったので、 本当に助かりました。 コードを見て理解することができました。 ありがとうございました!
- 967 名前:デフォルトの名無しさん [2008/02/05(火) 21:51:10 ]
- 【質問テンプレ】
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6002.txt このプログラムにより1つのxに対して100個の誤差を含んだyが求められるので それぞれのxについて分散S=(1/100)*((yの平均値)-(yの値))を求めて fprintf(fp2,"%lf\t%lf\n",x,S);を使ってtxtファイルに書き出す [3] 環境 [3.1] Windows [3.2] Visual Studio 2005 [3.3] 言語:C [4] 期限:2月6日正午 問題文のプログラムに付け加える形でやってもらえるとありがたいです 時間短いですがどうかよろしくお願いします
- 968 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:54:27 ]
- 2乗が足りないな
- 969 名前:967 mailto:sage [2008/02/05(火) 23:10:36 ]
- あ、ほんとだ
S=(1/100)*((yの平均値)-(yの値))^2 ですね
- 970 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:31:18 ]
- >>967
void main() { double X[2]; int flag=0; srand( (unsigned)time( NULL ) ); int i; long double x,y, sum_y, sum_y2, s; x=0; FILE *fp1, *fp2; fp1=fopen("file1.txt","w"); fp2 = fopen("file2.txt", "w"); for(x=0;x<=10;x++) { i=0; sum_y = sum_y2 = 0; while(i<100){ i=i+1; y=x*x+AddError(&flag,X)*0.05; sum_y+=y; sum_y2 += pow(y, (long double)2.0); fprintf(fp1,"%lf\t%lf\n",x,y); } s = -pow(sum_y, (long double)2.0)/10000 + sum_y2/100; fprintf(fp2, "%lf\t%lf\n", x, s); } fclose(fp1); fclose(fp2); }
- 971 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:37:07 ]
- >>954
std::set<std::string>(moji,moji+sizeof(moji)/sizeof(*moji)).size()
- 972 名前:デフォルトの名無しさん [2008/02/06(水) 00:14:18 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6003.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Visual Studio [3.3] 言語: C [4] 期限: 2月7日 [5] その他の制限: おねがいします。
- 973 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 06:51:28 ]
- >>972
またその問題かいな。
- 974 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:31:03 ]
- >>973
!! もう誰かが質問してたってことですか! ぐへえ
- 975 名前:デフォルトの名無しさん [2008/02/06(水) 09:25:24 ]
- 【質問テンプレ】
[1] 授業単元:C++ [2] 問題文 テトラナッチ数列の問題で。 初項と第2項は0、第3項は1の値となるが第n項(n>3)び値Tnは以下の式で あらわせられる。 Tn=Tn-1+Tn-2+Tn-3 再起を利用した関数int tetra(int n)を作成しn=1から n=30までに各値を表示 させたい。以下の質問に答えよ @関数tetraを以下に記述せよ Amain関数を以下に記述せよ [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (borand5.5) [3.3] 言語: (/C++/) [4] 期限: 今日中
- 976 名前:975 [2008/02/06(水) 09:29:17 ]
- 追記で。
上記プログラムを何回実行したかを確認したいときどこをどのように変更したらよいか答えなさい。
- 977 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:53:54 ]
- >>975
#include <stdio.h> int tetra(int n) { if (n < 2) return 0; else if (n == 3) return 1; else return tetra(n - 4) + tetra(n - 3) + tetra(n - 2) + tetra(n - 1); } int main() { for (int i = 0; i <= 30; i++) printf("T%d : %d\n", i, tetra(i)); return 0; }
- 978 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:08:07 ]
- >>977
一個増えてるwww
- 979 名前:967 [2008/02/06(水) 13:14:45 ]
- >>970
こうじゃなくて、 ひとつのxについて 100個でてくるyの平均を出す ↓ 100個のyについてそれぞれ平均との差を出して二乗をとる ↓ それを100個分足してΣが出るので、それを100で割って分散を求める っていうのをそれぞれ1〜10について求めたいんですけれど・・・
- 980 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:49:32 ]
- (E[y] - y)^2=((E[y])^2-2E[y]y+y^2)
1/100*Σ((E[y]^2-2E[y]y+y^2)=E[y]^2-2E[y](1/100)Σy+(1/100)Σ(y^2) E[y]=(1/100)Σyだから ((1/100)Σy)^2-2((1/100)Σy)^2+(1/100)Σ(y^2) =-((1/100)Σy)^2+(1/100)Σ(y^2) だと思ったんだが,違ったのか
- 981 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:54:14 ]
- 間違ってるようでいて、合ってる。
N回分お得。
- 982 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:46:13 ]
- [1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):課題作成 簡単なすごろく 20でゴール [3] 環境 [3.1] OS: (WindowsXP) [3.2] Visual studio 2005 8 [3.3] 言語: (C++) [4] 期限: 2月12日 最終課題ですごろくを作れと言われたのですが、基礎の基礎しか習ってないのでよくわかりません。 過去ログにあったプログラム例も試してみたのですが無理でした。 どなたかお願いします。
- 983 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:49:22 ]
- >>982
GUI付き?
- 984 名前:982 mailto:sage [2008/02/06(水) 21:02:41 ]
- GUIはないと思います・・多分。
- 985 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:15:05 ]
- すいません、詰まっています。教えてください。
「第6回 万年カレンダー(2) キーボードから年と月を入力し、その月のカレンダーを表示する。 」 #include <stdio.h> int is_bissextile(int year) { /* 閏年かどうか判定する関数 閏年なら1,そうでなければ0を返す */ int bis; if((year % 400) == 0 || ((year % 4) == 0 && (year % 100) != 0)){ bis = 1; } else { bis = 0; } /* 下のような書き方も可能 bis = ( year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)); */ 1日の曜日を計算する)
- 986 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:16:35 ]
- 2008年2月のカレンダーを表示する
2月1日が金曜日であることがわかっているものとする (課題では,前回のプログラムを使って1日の曜日を計算する) */ int year = 2008; int month = 2; int first_dow = 5; /* 1日は金曜日 */ int i; int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if(is_bissextile(year)) { /* 閏年なら,2月を29日までにする */ days[1] = 29; } printf(" %d年%2d月\n", year, month); printf("日 月 火 水 木 金 土\n");
- 987 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:26:58 ]
- for(i=0; i<first_dow; i++){
printf(" "); /* 最初の曜日の,1日の前の空白 */ } for(i=1; i<days[month-1]+1; i++){ printf("%2d ", i); /* 数字二桁と,二つの空白 */ if((first_dow + i) % 7 == 0){ printf("\n"); /* 土曜日になったら,改行 */ } } /* 最終日が土曜日以外だったら,最後に改行を入れる 土曜日の場合は,既に入っているので入れない */ if((first_dow + i)%7!=1) printf("\n"); }
- 988 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:52:24 ]
- >>985-987
わかりづれーなww >>985と>>986の間に return bis; } int main(void){ を追加すればいいだけじゃないのか?
- 989 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:56:35 ]
- [1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):課題1:キーボードから文字列を入力し、その内容をファイルに保存するプログラムを作成しなさい。 なお、文字列の最大長は256バイトとし、プログラムの終了条件は、文字データの入力がないときとする。 課題2:課題1で作成されたファイルを読み込み、画面に表示するプログラムを作成しなさい。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] Visual studio 2005 [3.3] 言語:C [4] 期限: 2月14日 課題が2つもありますがどうかよろしくお願いします
- 990 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:59:20 ]
- 連続投稿すみません。課題1の最後の分に「すなわち、次の入力とする「C:\>Enter」」を追加します。
- 991 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:41:11 ]
- >>988
ごめんなさいちょっとミスしましたw えっと、この日本語を全てプログラムにしないとダメなのですが、分からないんです jbbs.livedoor.jp/bbs/read.cgi/game/33978/1163833286/313n- 問題こちらです、よろしくお願いします。
- 992 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:42:11 ]
- >>991
特定したwwwwww
- 993 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:43:37 ]
- え、ちょ、何がですか?怖いです
- 994 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:00:44 ]
- >>989
初心者ですが作ってみました。 //課題1 #include <stdio.h> #include <string.h> #define CHARMAX 256 int main(void) { int i=0; char str[CHARMAX]; FILE *fp=fopen("data.txt","w"); if(!fp) return 1; do{ fgets(str, CHARMAX, stdin); i += int(strlen(str)); if(i > CHARMAX){ printf("入力文字数オーバー"); break; } fputs(str, fp); }while(str[0]!='\n'); return 0; }
- 995 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:01:04 ]
- //課題2
#include <stdio.h> #define CHARMAX 256 int main(void) { char str[256]; FILE *fp=fopen("data.txt", "r"); if(!fp) return 1; while(!feof(fp)){ fgets(str, CHARMAX, fp); printf("%s", str); } return 0; }
- 996 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:14:20 ]
- >>982
こんなんでいいんでしょうか。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6014.txt
- 997 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:34:05 ]
- >>994
問題の解釈違いかも知れんが、入力制限はトータルではなくて毎回個別でいいんじゃないか? それなら、fgets()任せで済むことだし。
- 998 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:39:15 ]
- >>997
ああ、確かに文字列一個当たりの最大値っぽいですね。 指摘ありがとうございます。 //課題1 #include <stdio.h> #define CHARMAX 256 int main(void) { char str[CHARMAX]; FILE *fp=fopen("data.txt","w"); if(!fp) return 1; do{ fgets(str, CHARMAX, stdin); fputs(str, fp); }while(str[0]!='\n'); return 0; } 課題2は同じで大丈夫ぽいかな。
- 999 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:47:22 ]
- う
- 1000 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:48:02 ]
- め
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|