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/
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] その他の制限: とりあえず基本的なこと(ポインタ、構造体等)はやりました。 簡単な解説とかあれば嬉しいです。よろしくお願いします。
101 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:18:05 ] 二次元配列の上下の要素を入れ替えるやり方でいいんじゃないの?
102 名前:デフォルトの名無しさん [2007/11/08(木) 00:28:09 ] それがわからないんです・・・。 ネットで探してみましたが、プログラムの内容がさっぱりわかりません。
103 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:36:08 ] 単純な二重ループじゃない?
104 名前:デフォルトの名無しさん [2007/11/08(木) 00:51:16 ] >>76 まだ待ってます。よろしくお願いします。
105 名前:デフォルトの名無しさん [2007/11/08(木) 01:01:06 ] 文字列の配列変数とか使いますか?
106 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:04:50 ] [1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク): 行列Aとベクトルxの積y=Axを求めるプログラムを作成したい。 ・行列nと列数mを入力させる。 ・n×x(nかけるx)の行列Aのメモリを動的に確保する。 ・ベクトルx,yのメモリを動的に確保する。 ・A[0][0]からA[n-1][m-1]までの数値を1つずつ入力させる。 ・ベクトルxの要素x[0]からx[m-1]の数値を入力させる。 ・計算結果yの要素y[0]からy[n-1]を出力する。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: cygwin [3.3] 言語: C [4] 期限:11/11(日)
107 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:06:09 ] >> 106ーーー実行結果ーーー ./ensyu3 行(n)の数は?2 列(m)の数は?3 ------ A[0][0]=1 A[0][1]=2 A[0][2]=3 A[1][0]=4 A[1][1]=5 A[1][2]=6 ------ x[0]=1 x[1]=2 x[2]=3 ------ y[0]=14 y[1]=32 $
108 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:07:27 ] >>105 どれ宛の安価?
109 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:10:00 ] そこまで書いてあるなら順番どおりにやるだけじゃん。
110 名前:デフォルトの名無しさん [2007/11/08(木) 01:10:18 ] すみません、自分は100です。 色々定義しないとダメですよね・・・。 呼び出し関数を使わなくてもforを使えばいいのでしょうか?
111 名前:デフォルトの名無しさん [2007/11/08(木) 01:30:02 ] >[4] 期限: かなり急いでます、一時ぐらいまで・・・ 1時くらいまでといってる割には、ノンビリしてるな。 「1時くらいまでには、私は寝たい」から急いでるだけだろ? こんなやつに、教える必要ないぞ。
112 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:56:26 ] >>110 #define SWAP(type, a, b) {type c;c=a;a=b;b=c;} for(y=0;y<height/2;y++) { for(x=0;x<width;x++) { SWAP(data_t, data[y][x], data[height-1-y][x]); } }
113 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 01:59:36 ] 期限近いヤツの先にやってやれよ。 >>76 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5225.txt
114 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:02:29 ] >>113 ありがとうございます。 もう出来ないのかと思ってました。ほんとにありがとうございます。
115 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:12:31 ] >>91 #include<stdio.h> void file_output(FILE *fp_in, FILE *fp_out){ int moji; while((moji=fgetc(fp_in))!=EOF) fputc(moji, fp_out); } int main(int argc, char *argv[]){ FILE *fp=stdin; int i; if(argc==1) file_output(fp, stdout); for(i=1;i<argc;i++){ fp=fopen(argv[i], "r"); if(fp==NULL) continue; file_output(fp, stdout); fclose(fp); } return 0; }
116 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 11:40:25 ] 【質問テンプレ】 [1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 入力した文字列(行単位)n個をソートして 昇順に表示するプログラムを作成してください。 ただし同じ文字列は1回だけ表示します。 また、nは1024以下とし、文字列は1024文字までします。 <補足> >以下を加えてください。 #include<stdio.h> #include<string.h> [3] 環境 [3.1] OS:Linux [3.2] わかりません [3.3] C言語 [4] 期限: 11月10日 [5] その他の制限: 文字列の関数 strlen(s):sの長さを数える strcmp(s1,s2):2つの文字列s1,s2を比較し、辞書的に大きい、等しい、小さいに対して 正数、0、負数を返す。 strcpy(s1,s2):文字列s2をs1にコピーし、s1のアドレスを返す。 strcat(s1,s2):文字列s2をs1の後に付け、s1のアドレスを返す。
117 名前:デフォルトの名無しさん [2007/11/08(木) 11:52:35 ] 【質問テンプレ】 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 整数除算 a/b (a,b は正または負の整数)を計算する関数 int fdivide(int a, int b )を作成せよ。 a と b とを入力、 fdivide(a,b )を計算して出力するmain 関数を作成し、 プログラムと実行結果を提出せよ。 a/b は a がb未満になるまでaから b を繰り返し 引き続け、その回数を記憶することで実現させる。 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン: (bcc) [3.3] 言語: (C++) [4] 期限: ([11月10日]まで) [5] その他の制限:C++ の割り算演算子の利用は禁止 よろしくお願いします
118 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 14:43:16 ] #include <stdio.h> #include <stdlib.h> unsigned fdivide(unsigned a, unsigned b) { unsigned sum = 0; for (unsigned ic = 1; ic < a; ++ic) { sum += b; if (sum > a) return ic - 1; } return a; } int main(int argc, char ** argv) { printf("%d\n", fdivide(atoi(argv[1]), atoi(argv[2]))); return 0; }
119 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 15:00:38 ] >>116 #include <stdio.h> #include <stdlib.h> #include <string.h> #define WORD_LEN_MAX 1024 int cmp(char **a, char **b){ return strcmp(*a, *b); } int main(int argc, char *argv[]){ char buf[WORD_LEN_MAX+1+1], **word=NULL; int len, wordnum=0L, i; while(fgets(buf, sizeof(buf), stdin)!=NULL){ len=strlen(buf); if(len>0 && buf[len-1]=='\n') buf[len-1]='\0'; word=realloc(word, sizeof(*word)*(wordnum+1)); word[wordnum++]=strdup(buf); } qsort(word, wordnum, sizeof(*word), cmp); for(i=0;i<wordnum;i++) printf("%s\n", word[i]); for(i=0;i<wordnum;i++) free(word[i]); free(word); return 0; }