1 名前:デフォルトの名無しさん [2007/11/05(月) 20:38:18 ] あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク): [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html 【過去ログ検索】 chomework.sakura.ne.jp/ 【wiki】 www23.atwiki.jp/homework/ 【前スレ】 C/C++の宿題を片付けます 97代目 pc11.2ch.net/test/read.cgi/tech/1193150915/
2 名前:C [2007/11/05(月) 21:00:26 ] [1]3 [2] 数値(0:END):2 現在までの合計:2 一つ前の合計:0 a=2, b=0 数値(0:END):5 現在までの合計:7 一つ前の合計:2 a=2, b=7 数値(0:END):7 現在までの合計:14 一つ前の合計:7 a=14, b=7 数値(0:END):9 現在までの合計:23 一つ前の合計:14 a=14, b=23 数値(0:END):3 現在までの合計:26 一つ前の合計:23 a=26, b=23 数値(0:END):0 終了します。 ↑を↓の感じでお願いします。
3 名前:C [2007/11/05(月) 21:01:18 ] #include <stdio.h> #include <stdlib.h> int main() { int a=0, b=0; int *now, *prev; /* 変数宣言、および処理を書く */ printf("現在までの合計:%d\n一つ前の合計:%d\n", *now, *prev); printf("a=%d, b=%d\n", a, b); /* 処理を書く */ } [6]6日まで C言語でお願いします
4 名前:デフォルトの名無しさん [2007/11/05(月) 21:08:43 ] [1] 授業単元: C++ [2] 問題文(含コード&リンク): ・CPlayerクラスの定義 ・CPlayerのオブジェクトをnew演算子の4個の変数を動的に確保 ・4つの変数それぞれのm_nLifeに任意の値を入力させる ・入力された4つの変数それぞれのm_nLifeを表示する。 ・確保したオブジェクトを開放 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: VS2005 [3.3] 言語: C++ [4] 期限: 2007年11月6日10:00まで [5] その他の制限:特になし よろしくお願いします
5 名前:デフォルトの名無しさん [2007/11/05(月) 21:29:35 ] >>4 問題の意味がわからん
6 名前:デフォルトの名無しさん [2007/11/05(月) 22:14:19 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): ニュートン法と二分法の両方を用いて、直線y=x+1/2と単位円x*x+y*y=1の交点のの近似解(小数点以下第6位まで)を求めよ。 1つのプログラムに書くこと。 二分法の初期値[a,b]=[-1,1] ニュートン法で用いる初期値は2つとも0とせよ。 ニュートン法も二分法もともに何回で収束したかがわかるようにすること。 関数へのポインタは必ず使うこと。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cのみ [4] 期限: 2007年11月6日17時
7 名前:デフォルトの名無しさん [2007/11/05(月) 22:59:15 ] [1]授業単元:情報セキュリティ [2]問題文 これらの変換方式を理解しその法則から数値を導き出すプログラムを書きなさい。 以下内容 pc11.2ch.net/test/read.cgi/tech/1187079488/133-134 これをCで吐けるようにしたいのですが [3]環境 [3.1]OS:Windows [3.2]コンパイラ:VC or BCC [3.3]言語:C [4]期限:2007年11月6日 8時 アセンブラのところにも書いたのですが、こちらのほうが良さそうなので こちらで質問させていただきます。お願いします
8 名前:aho mailto:sage [2007/11/05(月) 23:48:48 ] >>4 問題文をちゃんと書かんかい! まあ一応作ったルわ まずはCPlayerクラスの定義から class CPlayer{ int* val1; int* val2; int* val3; int* val4; public: CPlayer::CPlayer(); CPlayer::~CPlayer(); void CPlayer::inputData(); void CPlayer::showData(); };
9 名前:aho mailto:sage [2007/11/05(月) 23:52:01 ] >>8 続き 次にコンストラクタ内で動的にメモリを確保する。 CPlayer::CPlayer(){ int size = 10; val1 = new int[size]; val2 = new int[size]; val3 = new int[size]; val4 = new int[size]; } 次は順番をちょっと変えてメモリの解放から先に CPlayer::~CPlayer(){ if(val1){ delete[] val1; val1 = NULL; } if(val2){ delete[] val2; val2 = NULL; } if(val3){ delete[] val3; val3 = NULL; } if(val4){ delete[] val4; val4 = NULL; } }
10 名前:aho mailto:sage [2007/11/05(月) 23:54:46 ] >>4 次はデータの入力の実装。 と思ったけど、面倒になったからやめる。
11 名前:4 mailto:sage [2007/11/06(火) 00:21:38 ] >>5 授業を理解してないので・・・ >>8 ありがとうございます。 頑張ってみます。
12 名前:デフォルトの名無しさん [2007/11/06(火) 02:56:48 ] [1] 授業単元: プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5218.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ [4] 期限: 11月6日22:00まで [5] その他の制限: 条件が問題文と一緒にありますので確認お願いします よろしくお願いしますm(_ _)m
13 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:43:49 ] 前スレ>>955 >正四面体があるとする。底面(ある一つの面)に平行な(n-1)枚の面で高さをn等分することを考える。この作業を他の面に平行な面でも行う(他の方向にもn等分する)場合、正四面体は全部で何個に分けられるか。 正四面体をn等分すると正四面体と正八面体の二種類の立体が出来て、それぞれの数は下記の通りです。 正四面体 n*(n^2+2)/3 正八面体 n*(n+1)*(n-1)/6 数学的な証明は自分でしてください。
14 名前:デフォルトの名無しさん [2007/11/06(火) 09:07:49 ] >>12 似たような課題前見て、そん時upしたソースファイルと開いた英文ファイルupしとく kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5219.lzh まぁ、好きなように改造してくれ strtok使ったりとまぁごちゃごちゃしてて読みづらいことこの上ないだろうけどな
15 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 13:49:04 ] void heikin_bunsan(int tensu[],int num){ int i; double f; double heikin; double bunsan; double goukei; double total; for(i=0;i<num;i++){ goukei=goukei+tensu[i]; } heikin=goukei/num; for(i=0;i<num;i++){ f=(tensu[i]-heikin)*(tensu[i]-heikin); total=total+f;} bunsan=total/num; printf("平均点%3.3d点\n",heikin); printf("分散%3.3d\n",bunsan); } goukeiとheikinの計算部分を間違えているようです、間違いの指摘お願いします。 もっと短縮できるところあったらそこもお願いします><
16 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:05:53 ] >>14 なに得意げにCの小汚いソースさらしてんだか
17 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:19:49 ] >>16 そういう前に綺麗なソースとやらを見せてくれ
18 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:33:03 ] >>15 goukeiとtotalが初期化されてない。 表示は%dじゃなくて%f。 工夫すればループは一回でできる。 void heikin_bunsan(int tensu[], int num) { int i; double goukei=0,total=0,heikin,bunsan; for(i=0; i<num; i++) { goukei += tensu[i]; total += tensu[i] * tensu[i]; } heikin = goukei / num; bunsan = total / num - heikin * heikin; printf("平均点%3.3f点\n",heikin); printf("分散%3.3f\n",bunsan); }
19 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:40:31 ] >>17 やだよ。 std::stringを使えってことだから、あの小汚いソースにあるmallocやstrtokなどは不要だし、 リスト構造も不要(std::listを使えという意味じゃない)。 なにより、汚いじゃん。あれ読むのに時間を使うとしたら無駄なので、そう言ったまで。
20 名前:デフォルトの名無しさん [2007/11/06(火) 16:21:50 ] >>14 >>12 です。C言語があまりわからないです・・・ すいません・・・
21 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:29:53 ] >>19 小汚いソースや変態的ソースで回答するのがこのスレの醍醐味ですよ^^
22 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 17:43:25 ] >>12 もろもろ適当だけど、まぁ宿題の回答位にはなってると思う。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5220.txt make&実行はしてみたが、テストはしてない。
23 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:23:10 ] 【質問テンプレ】 [1] 授業単元:1次元配列&2次元配列&else if~&switch case文 [2] 問題文(含コード&リンク): 1つ目。生徒10人分の身長データがある。 この身長データを配列に読み込み、平均身長を計算しなさい。 また、画面に番号・身長、最後に平均身長及び最も高い人の番号と身長を表示させなさい。 なおここでいう番号とは配列番号とする。 2つ目。上のデータを、身長をキーワードにして降順にソートしなさい。 3つ目。最初のプログラムに身長の低い順に順位をつける処理を追加しなさい。 [3] 環境 [3.1] OS: Unix [3.2] gcc34 [3.3] 言語: C言語 [4] 期限: ([2007年11月06日21:00まで) [5] その他の制限: できるだけ初心者でもわかる文がいいです
24 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:37:04 ] >>23 身長データはテキストファイルから読み込むのですか?
25 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:00:29 ] >>23 に追加です・・・ 入力データ:165、173、169、178、175、159、171、169、170、168 です。最初の問題の追加です。入力もれすいません
26 名前:デフォルトの名無しさん [2007/11/06(火) 19:03:58 ] [1] 授業単元:配列の使い方、関数の使い方 [2] 問題文: (1)2行3列の行列AとBの和と差を求めよ. c(i,j)=a(i,j)+b(i,j) d(i,j)=a(i,j)-b(i,j) (2)2行3列の行列Aと3行4列の行列Bの積Cを求めよ c(i,j)=Σ(k=1~3)a(i,k)b(k,j) (3)eのx乗=1+x/1!+xの2乗/2!+xの3乗/3!+・・・ を計算するプログラムを作れ (4)これを関数として定義し、 x=0,0.1,0.2,・・・,1.0を計算せよ. また、power(e,x)と比較せよ. ただし、e=2,71828として計算せよ. [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:不明 [3.3] 言語:C++ [4] 期限:2007念11月07日11:00まで [5] その他の制限:なし
27 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:04:19 ] >>26 (3)と(4)、ネーピア数などを求めるプログラムは前スレ>>427 にもあるみたいです。 #include <stdio.h> #include <math.h> 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; } int main(void) { double x; printf("\t x\t myexp(x)\t exp(x)\n"); for(x=0.1;x<=1.0;x+=0.1) { printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x)); } return 0; }
28 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:14:17 ] [1] 授業単元:C [2] 問題文(含コード&リンク): nを入力して、次の級数の和[1+(1/2)+(1/3)+(1/4)+...+(1/n)]の値を計算して出力する。 (整数型変数と実数型変数の混合演算の結果は実数型となり、整数が頼みの演算結果は整数になることに注意せよ) [3] 環境 [3.1] OS:Unix(MacOSX) [3.2] コンパイラ名とバージョン:gcc 4.0.1 [3.3] 言語: Cにて [4] 期限: [2007年11月6日まで] [5] その他の制限:特にはないです。 当方、C言語初心者なのですが、 どうしてもわからないので支援をお願い致します。 軽く書いてみたのですが、結果が0しか返ってきません。 よろしくお願いします。
29 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:22:54 ] 1.0にすればいいんじゃね?
30 名前:デフォルトの名無しさん [2007/11/06(火) 20:34:21 ] #define MAX 1 #define MIN 3 int * ranking(int *n1, int *n2, int *n3, int rank) { /* rankが1なら最大値、3なら最小値を返す */ /* 関数を作成 */ } int main() { int a, b, c, i; printf("(a,b,c):"); scanf("%d %d %d", &a, &b, &c); printf("(a,b,c)=(%d,%d,%d)\n", a, b, c); printf("最大値 : %d\n", *ranking(&a, &b, &c, MAX)); printf("最小値 : %d\n", *ranking(&a, &b, &c, MIN)); }
31 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 20:43:33 ] >>28 double KyuuSuu(int n) { int i; double num = 0.0; for(i = 1; i <= n; i++) num += (1.0/i); return num; }
32 名前:shin [2007/11/06(火) 21:04:55 ] [1] 授業単元: 文字と文字列 ASCIIコード [2] 問題文(含コード&リンク): 入力された文字列中に、文字 a がいくつ含まれているか個数を表示し、 見つけた箇所に「^」を表示するプログラム。 【動作例】 文字列を入力 >> aoriunvtyuoertnoainaainAi a を4個発見しました。 文字列・・・aoriunvtyuoertnoainaainAi ^ ^ ^^ (本当は ^ が a 下にきます) [3] 環境 [3.1] OS: Windows Vista [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C++ [4] 期限: 出来れば・・2007年11月7日 22:00までにお願いします
33 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:05:23 ] [1] 授業単元:C [2] 問題文(含コード&リンク): for( i?? ;i?? ;i?? ) { for ( j?? ;j?? ;j?? ) { printf("%d ",j); } printf("\n"); } for文の中を埋めて一行目 1 2 二行目 2 4 6 三行目3 6 9 12 四行目 4 8 12 16 20 五行目 5 10 15 20 25 30と表示させよ [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:BCC 5.5 [3.3] 言語: C [4] 期限: [2007年11月8日まで] [5] その他の制限:特にはないです。 よろしくお願いします。
34 名前:shin [2007/11/06(火) 21:05:50 ] ここまでは作りました・・(ちなみに「a」のASCIIコードは「0x61」です) #include <iostream.h> main() { const int Max_Length = 50 ; // 入力文字列の最大値 char sentence[Max_Length] ; // 入力文字列 int count ; // 文字カウンタ // 文字列の入力 cout << "英数字のみの文字列を入力して下さい。 >>> " ; cin.getline( sentence, Max_Length ) ; // 文字数のカウント count = 0 ; while( sentence[count] != '\0'){ count++ ; }
35 名前:23 mailto:sage [2007/11/06(火) 21:09:12 ] >>23 ですが、とりあえず最初の問題はできました。 #include<stdio.h> int main() { int a[9],sum=0,i,j,max=0,n; printf("身長を入力してください\n"); for(i=0;i<10;i++){ printf("%d人目の身長を入力⇒",i+1); scanf("%d",&a[i]); sum=a[i]+sum; if(max<a[i]){ max=a[i]; n=i+1; } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } printf("平均身長は%.2fcm 最高身長は%d番目の%dcmです\n",(float)(sum)/(j),n,max); } です。しかし、2番目と3番目がどうしてもわかりませんどなたかご教授ください
36 名前:shin [2007/11/06(火) 21:09:52 ] 32と34の書き込みはつながってると思ってください! おねがいします
37 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:24:34 ] >>31 ありがとうございましたm(__)m 完成しました。 明日の提出にも間に合いそうです。
38 名前:デフォルトの名無しさん [2007/11/06(火) 21:40:03 ] >>33 for (i=1; i<=5; i+=1) { for (j=i; j<=i*(i+1); j+=i) { printf("%d ",j); } printf("\n"); }
39 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:41:39 ] // >>32 文中のaの数をカウントするプログラム // bcc 5.5.1 for win32 #include <iostream.h> int main(void) { const int Max_Length = 50 ; // 入力文字列の最大値 char sentence[Max_Length] , dummy[Max_Length]; // 入力文字列 int count = 0, a = 0; // 文字カウンタ // 文字列の入力 cout << "英数字のみの文字列を入力して下さい。 >>> " ; cin.getline( sentence, Max_Length ) ; // 文字数のカウント while( sentence[count] != '\0'){ if (sentence[count] == 0x61){ a++ ; dummy[count] = '^' ; } else { dummy[count] = ' ' ; } count++ ; } dummy[count] = '\0' ; cout << "aは次の数だけ見つかりました : " << a << "\n" << sentence << "\n" << dummy << endl ; }
40 名前:デフォルトの名無しさん [2007/11/06(火) 22:07:50 ] 規制でパソコンから書けないので携帯から 1)C言語 2)積算日数計算(閏年含む)リンクはつなげません 3)環境 3、1)OS Linux 3、2)不明 3、3)言語 C言語 4)期限・2007年11月7日 5)void?は使わない方向で。if 又は for 文でお願いします。 月ごとに{31,28…}と指定したと思います。閏年は{31、29…}という感じで別に指定していました。 よろしくお願いします。
41 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:11:37 ] // >>23 #include<stdio.h> int main(){ int a[10],sum=0,i,j,max=0,n,temp; printf("身長を入力してください\n"); for(i=0;i<10;i++){ printf("%d人目の身長を入力 : ",i+1); scanf("%d",&a[i]); sum=a[i]+sum; if(max<a[i]){ max=a[i]; n=i+1; } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } printf("\n平均身長は%.2fcm 最高身長は%d番目の%dcmです\n\n",(float)(sum)/(j),n,max); for (i = 0; i < 10 - 1; i++) { for (j = 10 - 1; j > i; j--) { if (a[j - 1] > a[j]) { temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp; } } } for(j=0;j<10;j++){ printf("%d番目の身長は%dcmです\n",j+1,a[j]); } }
42 名前:23 mailto:sage [2007/11/06(火) 22:53:08 ] >>41 さん これは、1番最初のやつのプログラムでしょうか?
43 名前:デフォルトの名無しさん [2007/11/06(火) 23:06:21 ] [1] 授業単元: C [2] 問題文(含コード&リンク): int型の変数bunbo、bunshiをメンバに持つ、 構造体struct bunsuuを定義する。 2つのstruct bunsuu型の変数を引数として、 足し算、引き算、掛け算、割り算を行った結果を 戻り値とする関数をそれぞれ作成しなさい。 2つのint型を引数とし、その最大公約数を計算して 戻り値とする関数も作成し、必要に応じて利用しなさい。 struct bunsuu型の変数を出力する関数を作成しなさい。 出力は「分子 / 分母」の形で1行とする。 ただし分母が1の場合は、分子のみとする。 以上6種類の関数が作成できたら、 キーボードから2つの分数を入力し、 足し算、引き算、掛け算、割り算の計算結果を順に 分数で画面に出力するmain関数を作成しなさい。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/8まで [5] その他の制限: 特になし
44 名前:デフォルトの名無しさん [2007/11/06(火) 23:07:26 ] [1] 授業単元: C [2] 問題文(含コード&リンク):要素数が10のint型の配列に キーボードから数値を入力する関数を作成し (main関数の中で)呼び出しなさい。 配列はmain関数の中で宣言し、 入力を行う関数は、配列のアドレスと 配列の要素数を引数として受け取るものとする。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:VS2005 [3.3] 言語: C [4] 期限: 11/8まで [5] その他の制限: 特になし こちらもお願いします
45 名前:shin [2007/11/06(火) 23:27:35 ] >>39 ありがとうございました(´`)!!!!!!!!!!
46 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:39:17 ] [1] 授業単元:オペレーティングシステム [2] 問題文(含コード&リンク): HTTPリクエストを受け付けると、URLに記載された名前のHTMLファイルをブラウザに返す 簡単なWebブラウザをC言語を用いて作成せよ。 このWebサーバはHTTPリクエストを受け付ける毎にforkシステムコールにより新しいプロセスを生成し、 そのプロセスがURLに指定されたHTMLファイルをファイルシステムから取り出して、ブラウザに返す。 基本的には、リクエストを送りリプライを返すことができればいい。 また、結果をブラウザで表示できる程度の実装で構わない。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C言語 [4] 期限: 11月15日 [5] なし ブラウザに表示させることができません・・・どなたかお助けください
47 名前:デフォルトの名無しさん [2007/11/07(水) 02:19:00 ] (x1+x2+x3+・・・xn)の2乗/N((x1)の2乗+(x2)の2乗+・・・ (xn)の2乗) を計算するプログラムってどうやって書くんですか? 教えてください!!
48 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 03:15:43 ] >>47 あなたにはプログラミングの前にテンプレの使い方を教えます。 [1] には授業名などを書いてください。 [2] には問題文を書いてください。 [3] には環境を書いてください。とくに、CかC++は重要です。 [4] には期日。 [5] にはその他を書いてください。
49 名前:デフォルトの名無しさん [2007/11/07(水) 03:29:14 ] [1] C言語入門 [2] jain fairness index の式をC言語でプログラミングで書きなさい. (x1+x2+x3+・・・xn)の2乗/N((x1)の2乗+(x2)の2乗+・・・ (xn)の2乗) という式 [3] C言語 [4] 11月9日 [5] なし 48さんご指摘ありがとうございました! よろしくお願いします!
50 名前:デフォルトの名無しさん [2007/11/07(水) 03:46:17 ] >>22 遅れましたがどうもありがとうございました。とっても助かりました
51 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 03:52:56 ] >>49 double f(double *x, int n) { double s = 0, ss = 0; int i; for(i=0; i<n; i++) { s += x[i]; ss += x[i]*x[i]; } return s * s / (n * ss); }
52 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:48:54 ] >>44 #include <stdio.h> void input_array(int *a,int *ptr) { printf("%d個目の数値入力\n",(*ptr)+1); scanf("%d",(a+*ptr)); ++*ptr; } main() { int a[10],ptr=0; printf("数値を10個入力してください。\n"); while(ptr<10){ input_array(&a[0],&ptr); } printf("入力結果: "); for(ptr=0;ptr<10;ptr++) printf("%d ",a[ptr]); putchar('\n'); return; }
53 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 06:50:37 ] >>43 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5221.txt
54 名前:33 mailto:sage [2007/11/07(水) 07:40:52 ] >>38 どうもありがとうございました〜。
55 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 08:51:46 ] >>52 >入力を行う関数は、配列のアドレスと >配列の要素数を引数として受け取るものとする。
56 名前:名無し募集中。。。 [2007/11/07(水) 09:20:23 ] [1] 自習 明解C++演習5_9 [2] b以上a以下の全整数の和を求める関数sumを作成せよ。 なお、bが省略されて呼び出される場合はbを1とみなして合計を求めること [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:bcc55 [3.3] 言語:C++ [4] 期限:11/7まで お願いします。
57 名前:デフォルトの名無しさん [2007/11/07(水) 09:27:25 ] #include <iostream> using namespace std; int sum(int a){return a*(a+1)/2;} int sum(int b, int a){return a*(a+1)/2 - b*(b-1)/2;} main(){ cout<<sum(2,10); }
58 名前:デフォルトの名無しさん [2007/11/07(水) 09:48:19 ] [1]情報処理 [2]二分法で y=x*x−5 の根をもとめる [3]C言語 LInux [4]10時半まで [5]おねがいします><
59 名前:デフォルトの名無しさん [2007/11/07(水) 10:06:56 ] #include <stdio.h> double f(double x){return x*x-5;} main(){ double a=0,b=10,x; int i; for(i=0;i<100;i++){ x=(a+b)/2; if(f(a)*f(x)>0)a=x; else b=x; } printf("%.6f",x); }
60 名前:デフォルトの名無しさん [2007/11/07(水) 10:12:10 ] >59 めっっちゃありがとうございます!! 何回で収束するかもできますか?><
61 名前:デフォルトの名無しさん mailto:age [2007/11/07(水) 10:14:50 ] [1]情報処理 [2]第1引数で指定したint型の先頭から、第2引数で指定した数の要素に中に、 第3引数で指定した値と一致するものがあればその要素のアドレスを、一致す るものが無ければNULLを戻り値とする関数を作りなさい。探索アルゴリズムと して番兵法を用いなさい。作成した関数のテストは、戻り値として得たアドレス に格納されている値を表示する main関数を作成して行いなさい。一致するもの がない場合には何も表示しなくてよい。 [3]c言語 [4]11/7 23:00 お願いします。
62 名前:デフォルトの名無しさん [2007/11/07(水) 10:15:50 ] >>60 できるけど、収束はいくつぐらいだよ たとえば2乗したときに5からのずれが0.00001とか
63 名前:デフォルトの名無しさん [2007/11/07(水) 10:19:01 ] #include <stdio.h> #define gosa 0.00001 double f(double x){return x*x-5;} main(){ double a=0,b=10,x,y; int i; for(i=1;i<100;i++){ x=(a+b)/2; y=f(x); if(y<gosa && y>-gosa){printf("%d回目の試行で収束 x=%.6f",i,x);return 0;} if(f(a)*f(x)>0)a=x; else b=x; } printf("収束しない"); }
64 名前:デフォルトの名無しさん [2007/11/07(水) 10:21:52 ] ありがとうございました!! 条件じぶんでかえてやります><
65 名前:教えてください [2007/11/07(水) 11:52:10 ] double bibun_f(double a, double b,double c, double d) { double f; f = 1 / (1 - mu * pow(cos(d - c), 2)) * (mu * ga * sin(d) * cos(d - c) + mu * pow(a, 2) * sin(d - c) * cos(d - c) - ga * sin(c) + mu / lambda * pow(b, 2) * sin(d - c)); return(f); } ここでエラーが error C2018: 文字 '0x81' は認識できません。 と error C2018: 文字 '0x40' は認識できません。がでるのですが・・・どうすればいいのでしょうか??
66 名前:名無し募集中。。。 [2007/11/07(水) 11:55:15 ] >>57 ありがとうございました
67 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:05:21 ] >>65 エラーメッセージを読めばわかるように、全角スペースが混ざっている。 あと、宿題以外は基本的にはスレ違いだから、以後は別のところで聞いてね。
68 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:13:55 ] >>61 int *search(int *p, int n, int x) { /* destructive */ for (*(p+n) = x; *p != x; ++p); return p; } main() { int i, array[10+1]; /* +1 is for sentinel */ for (i = 0; i < 10; ++i) { array[i] = i % 7; printf("%p : %d\n", &array[i], array[i]); } printf("%d found at %p\n", 4, search(array, 10, 4)); }
69 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:17:48 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): N×N のチェス盤が与えられる( 左下を (1,1) とする )。 (x1,y1) にビショップを置いたとき、(x2,y2) に移動するまでの 最小手数を表示せよ。ただし移動できない場合は -1 と表示せよ。 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 今日中 [5] その他の制限: 特になし
70 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:32:43 ] [1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 同じ形をした正方形のブロックが N 個与えられる (N ≦ 1000)。 各ブロックには自分自身の重さ weight[k] と、 自分の上に乗せられる重さ load[k] が設定されている。 縦に積める最大のブロックの個数を求めよ。 例: N = 5, (weight, load) = (19,15), (7,13), (6,7), (6,8), (1,2) → 4 [3] 環境 [3.1] OS: 指定なし [3.2] コンパイラ名とバージョン: 指定なし [3.3] 言語: どちらでも可 [4] 期限: 今日中 [5] その他の制限: 特になし
71 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:37:29 ] >>70 >同じ形をした正方形のブロックが N 個与えられる (N ≦ 1000)。 違う形をした正方形があったら怖い。 同じ大きさと言う解釈でいいのかな?
72 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:43:34 ] >>71 そういうことです。形(大きさ)が問題になって積めない、ということはないとします。
73 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:45:24 ] >>71 重さ考えるだけでいんだから大きさはどうだっていいだろ それより >正方形のブロック 二次元か
74 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:45:46 ] >>69 #include<stdio.h> int main(void){ int x,y,x1,y1,x2,y2; printf("x1 y1 x2 y2 = "); scanf("%d %d %d %d",&x1,&y1,&x2,&y2); x=x1>x2?x1-x2:x2-x1; y=y1>y2?y1-y2:y2-y1; if(x==0&&y==0)printf("0"); else if(x==y)printf("1"); else if(x%2==y%2)printf("2"); else printf("-1"); printf("\n"); return 0; }
75 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:02:11 ] >>68 ありがとうございました^^
76 名前:デフォルトの名無しさん [2007/11/07(水) 13:45:49 ] このスレも遂に99代目、次100代目ですね。 [1] 授業単元: C言語演習V [2] 問題文(含コード&リンク): 前回の講義にてプログラム実行時の引数を表示するプログラムを作成した。 (実行例) >ensyu1 file1 argv[0]:ensyu1 argv[1]:file1 >ensyu1 file1 file2 argv[0]:ensyu1 argv[1]:file1 argv[2]:file2 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5223.txt 今回はプログラムが実行時にファイルを1つだけ引数として取るような プログラムを作成したい。 そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、 プログラムを終了するように修正せよ。 (実行例) >ensyu1 file1 argv[0]:ensyu1 argv[1]:file1 >ensyu1 file1 file2 Usagi: ensyu1 filename [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin gcc [3.3] 言語: C言語 [4] 期限: 11月8日(木)PM12時までにお願いします。 [5] その他の制限: ファイルの標準入出力まで習いました。
77 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 13:49:02 ] 兎じゃなくて、普通はUsageですよ。
78 名前:デフォルトの名無しさん [2007/11/07(水) 13:50:40 ] >>76 ×「そこで引数が違う場合には「Usagi: ./ensyu1 filename」と出力させ、 」 ○「そこで引数が2つ以上の場合には「Usagi: ensyu1 filename」と出力させ、」 でした./で実行はLinuxですね。(汗)
79 名前:デフォルトの名無しさん [2007/11/07(水) 14:03:53 ] >>77 Usageです。兎だと思ってた。orz
80 名前:デフォルトの名無しさん [2007/11/07(水) 15:27:01 ] すみませんが、お願いします。 [1] 授業単元: 音響工学 [2] 問題文(含コード&リンク): 正弦波に対してガウス窓を掛け、テキストファイルに出力せよ。窓間は任意。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:bcc [3.3] 言語:C++ [4] 期限:2007年11月8日まで [5] その他の制限:特にありません。 よろしくお願いします!
81 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:21:26 ] >>80 >>1 をきちんと読んだかい?
82 名前:80 [2007/11/07(水) 16:57:10 ] 一応読みましたけど、至らない点ありましたか?
83 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:59:55 ] ガウス窓の説明とその描画方法を書くように
84 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:07:45 ] >>83 知らないんなら無視すればいいんじゃないかなー やる気あるならググれば一発だしー 描画しろなんてどこにも書いてないしー
85 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 17:13:22 ] 同意。それは兎も角、テキストファイルへの出力形式については質問させてくれ。 1行1データでずらっとならべればいいのか?
86 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 19:44:02 ] >>80 gnuplot使えば簡単にできるってことでいいのか
87 名前:80 [2007/11/07(水) 19:46:33 ] はい。 1行1データです。 ガウス窓でぐぐってもよくわからなかったので、お願いしに来た次第なのです。 すみませんが、できればお願いします。
88 名前:80 [2007/11/07(水) 19:47:48 ] >>86 gnuplotでできるんですか?
89 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:07:16 ] // >>80 ガウス窓 // gnuplot でやるには plot sin(x)*exp(-x*x/0.03*0.03) #include <iostream> #include <math> #include <fstream> #define pi 3.141592 int main (void) // window function - Gauss window { double x, sigma=0.03; std::ofstream window("window.csv"); for (x=-pi; x<pi; x+=0.01){ window << x << ", " << sin(x) * exp(-x*x/sigma*sigma) << std::endl; } return 0; }
90 名前:80 [2007/11/07(水) 20:15:28 ] ありがとうございます! これでなんとかなるかもです! ご迷惑おかけしました。
91 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:58:38 ] [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): cat コマンドの作成 fgetc()とfputc() 関数の使用 標準出力とすること。ファイル名を指定しない場合は標準入力 [3] 環境 [3.1] OS:Linux [3.2] gcc 3.4 [3.3] C [4] 期限:無期限 [5] その他の:ポインタあたりからあやふやです よろしくお願いします。
92 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:25:02 ] >[5] その他の:ポインタあたりからあやふやです 自己紹介はしなくておk
93 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:26:25 ] [1] プログラミング [2] y=ax*x+b*x+cをfor文を使って計算しなさい。係数a b cは自分で入力 xの始めの値、終わりの値、増やす値も自分で入力できるようにしなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン: gcc3.4 [3.3] 言語: Cでおねがいします。 [4] 期限: 明日(11月8日まで) [5] その他 #include<stdio.h> main() { int i, x, y, a, b, c, d, e, f; printf("y=x*x*a+b*x+cを計算します。\n"); printf("aとbとcを入力して下さい。 --->"); scanf("%f %f %f",&a, &b,&c); printf("Xの始めの値を入力して下さい。 --->"); scanf("%f",&d); printf("Xの終わりの値を入力して下さい。--->"); scanf("%f",&e); printf("Xを増やす値を入力してください。 --->"); scanf("%f",&f); for(x=d; x<=e; x+f){ y=(x*x*a)+(b*x)+c; ここまでは自力でやったんですけどその先がまったく分かりません。 よろしくおねがいします。
94 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:58:32 ] >>93 完成間近じゃねえかよw
95 名前:デフォルトの名無しさん [2007/11/07(水) 22:02:18 ] >>53 コードありがとうございます。 所で・・・ 答えとして 入力された分数が 1 / 2 と 2 / 3 のとき 1 / 2 + 2 / 3 = 7 / 6 1 / 2 − 2 / 3 = - 1 / 6 1 / 2 × 2 / 3 = 1 / 3 1 / 2 ÷ 2 / 3 = 3 / 4 こうなるんですが、マイナスの所だけ違うんですがどこを修正すれば ↑のようになりますか?
96 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:14:20 ] >>95 int gcd(int a,int b) { int c,tmp; if(a<0) a=-a; if(b<0) b=-b; if(b>a){ tmp = b; b = a; a = tmp; } /* ユークリッドの互除法で最大公約数を計算 */ while(a%b!=0){ c = a % b; a = b; b = c; } return b; } 符号をチェックしてなかった。gcdをこれに入れ替えてください。 あと、無意味な比較があったのでそれも外してます。
97 名前:93 mailto:sage [2007/11/07(水) 23:17:20 ] >>94 いくらひねっても分からない・・・orz
98 名前:デフォルトの名無しさん [2007/11/07(水) 23:57:15 ] [1] 授業単元: 応用プログラミング [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5224.txt [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: g++ [3.3] 言語: C++ (Cは全くわからないです) [4] 期限: 11月8日21:00 [5] その他の制限: 条件は問題文と一緒にあります。 どうかよろしくおねがいいたします
99 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:05:27 ] >>93 基本的にはあと y の値と、必要なら x の値を表示するだけだろう それに加えて x,y,a〜f の型と、for のカッコの中身を修正するんだ
100 名前:デフォルトの名無しさん [2007/11/08(木) 00:11:29 ] [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 画像を上下反転させる [3] 環境 [3.1] OS: Mac [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: Cです [4] 期限: かなり急いでます、一時ぐらいまで・・・ [5] その他の制限: とりあえず基本的なこと(ポインタ、構造体等)はやりました。 簡単な解説とかあれば嬉しいです。よろしくお願いします。