- 1 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 03:01:54 ]
- あなたが解けない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++の宿題を片付けます 99代目 pc11.2ch.net/test/read.cgi/tech/1194262698/
- 284 名前:デフォルトの名無しさん [2007/11/27(火) 12:52:30 ]
- m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム
ただし、/や%や10回以上のループは使えない
- 285 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:54:59 ]
- >>284
mの因数分解表をあらかじめ作っておいて判定する
- 286 名前:デフォルトの名無しさん [2007/11/27(火) 12:55:16 ]
- 訂正
m < 30000 、n< 16 が与えられたとき、mがnで割り切れるか調べるプログラム ただし、/や%や16回以上のループは使えない
- 287 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:57:28 ]
- 別にループが使えないならループを展開しとけば良いだろ
- 288 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:59:47 ]
- >>286
2 ・・・ 一の位が2の倍数 3 ・・・ 各位の数の和が3の倍数 4 ・・・ ・ 下二桁が4の倍数 ・ 一の位を2で割った数を十の位に足した数が偶数 5 ・・・ 一の位が5の倍数 6 ・・・ 2かつ3の倍数 7 ・・・ 3桁毎に交互に足したり引いたりしてできた数が7の倍数 8 ・・・ ・ 下3桁が8の倍数 ・ 一の位を2で割り十の位に足して2で割った数を百の位に足した数が偶数 9 ・・・ 各位の数の和が9の倍数 10 ・・・ 一の位が0 11 ・・・ 各位の数を交互に足したり引いたりしてできた数が11の倍数 12 ・・・ 3かつ4の倍数 13 ・・・ 7の倍数の判定と同じ 14 ・・・ 2かつ7の倍数 15 ・・・ 3かつ5の倍数 16 ・・・ 下4桁を2で割った数が8の倍数(下4桁を4で割った数が4の倍数 ttp://www004.upp.so-net.ne.jp/s_honma/number/multiple.htm
- 289 名前:デフォルトの名無しさん [2007/11/27(火) 13:01:44 ]
- >>288
各位って10進数ですよね どうやってその値をゲットするんですか
- 290 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:04:47 ]
- >>289
Cの文字列で一文字ずつmを取得する
- 291 名前:デフォルトの名無しさん [2007/11/27(火) 13:07:32 ]
- >>290
整数を文字列に変換する関数とかは使わないで下さい
- 292 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:10:01 ]
- >>291
は?後付してんじゃねえよ
- 293 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:12:38 ]
- 最初から誤解の余地が無い言い方で訊けってのは無茶だろ。
問題に対する疑問に答える過程で条件を追加するのは当然のことだと思うが。
- 294 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:23 ]
- 文字列で受け取って、「文字のまま」演算を行うようなプログラムを書けばいい。
たとえば、tasu('A', 'B')の戻り値が'C'になるとか、 kakeru('A', 'B')は'B'とか。
- 295 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:13:51 ]
- テンプレに制限やら書く所まであるのに、完全に無視してそれか?
とっとと帰れ帰れ
- 296 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:16:36 ]
- テンプレの利用は任意だ。
そもそも、答えたくないならお前が黙って帰れよ。
- 297 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:20:28 ]
- だから、文字のまま判定を行うプログラムを書く。そうすれば10進数の演算と同じ。
例えば tasu(char a, char b) なら、 if ((a=='A' && a=='B') || (a=='B' && a=='A')) return 'C'; っていう式を延々と書けば、これは10進数の演算と全く同じになる。
- 298 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:21:20 ]
- #include<stdio.h>
int mod(int m, int n) { int i, num[16]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768}; if(m<0 || n<0) return -1; for(i=16-1;i>=0;i--) if(m>=num[i]*n) m-=num[i]*n; return m; } int main(void) { mod(20000, 15); return 0; }
- 299 名前:デフォルトの名無しさん [2007/11/27(火) 13:26:53 ]
- >>298 サンクス
- 300 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:33:25 ]
- >>284 = >>296 = >>298 = >>299
- 301 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:50:54 ]
- >>300
残念、>>296だけ俺だ。
- 302 名前:コーンポタージュ [2007/11/27(火) 15:11:18 ]
- >>253
問題例 頂点i に色i mod 6 を割当てるプログラム •ランダム幾何グラフUn,d を作成 •頂点数n,パラメータd を入力とし,単位正方形[0,1]2内に一様かつ独立にn 個の頂点をランダムに分布させ,距離がd 以下の2頂点間に辺を結ぶ •各頂点の平均次数がnπd2となることが知られている 問題例のプログラム www-2ch.net:8080/up/download/1196004323585273.o4l1bm
- 303 名前:デフォルトの名無しさん [2007/11/27(火) 15:26:14 ]
- うわぁ糞スレ
ニート風情が偉そうにε−(´・`)
- 304 名前:デフォルトの名無しさん [2007/11/27(火) 15:31:12 ]
- 【質問テンプレ】
[1] 授業単元:プログラム言語2 [2] 問題文:課題A で作成したプログラムを以下のように修正する. * gcc kadai08b.c でコンパイルすると5パーセントの商品価格だけ表示される. * gcc -DZEI=*** kadai08b.c でコンパイルすると***パーセントの商品価格だけ表示される. * gcc -DDEBUG kadai08b.c でコンパイルすると5パーセントの消費税と商品価格が表示される #include <stdio.h> #include <stdlib.h> #define a 5 #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("tax of x+y %d \n", TAX(x,y)); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&x); printf("tax of x+y: %d \n",); printf("price of x+y %d \n", PRICE(x,y)); return0; } [3] 環境 [3.1] OS: (Linux/) [3.2] コンパイラ名とバージョン: (gcc) [3.3] 言語: (C) [4] 期限: ([2007年11月28日まで] [5] その他の制限: (Cプリプロセッサぐらいまで) 課題Aはなんとか出来ましたが、課題Bがわからないので、宣しくお願いします。 貼りつけたプログラムは、課題Aが完成したものです。
- 305 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:40:23 ]
- >>304
ついでにいろいろ修正した。 #include <stdio.h> #include <stdlib.h> #ifdef ZEI # define a ZEI #else # define a 5 #endif #define TAX(x,y) (x+y)*a/100 #define PRICE(x,y) (x+y)+(x+y)*a/100 int main(void) { int x,y; printf("lnput an integer x:"); scanf("%d",&x); printf("lnput an integer y:"); scanf("%d",&y); #ifdef DEBUG printf("tax of x+y %d \n", TAX(x,y)); #endif printf("price of x+y %d \n", PRICE(x,y)); return 0; }
- 306 名前:デフォルトの名無しさん [2007/11/27(火) 15:54:20 ]
- 修正までありがとうございました。
本当に助かりました。 またの機会がありましたら、よろしくお願いします。
- 307 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:08:10 ]
- [1] 授業単元: C言語
[2] 問題文: 1.正三角形の面積を求めるマクロ定義を作る。一辺の長さをaとする 2.課題1で作ったマクロを使って、1辺の長さが5mの正三角形の面積を求めるプログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++2005 [3.3] 言語:C [4] 期限:11月28日午後10時まで [5] その他の制限:特にありません。 よろしくお願いします
- 308 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:23:12 ]
-
[1] 授業単元:C言語基礎 [2] 問題文(含コード&リンク):色々な整数値a,bに対してtを媒介変数として、 座標がx=cos(2πat)、y=sin(2πbt)であらわされる曲線を描くリサージュ関数を作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] Astex(?) [3.3] 言語:C [4] 期限: 2007/11/29 19時 [5] その他の制限: 配列・ポインタの使い方、簡単な数式の入力まで習いました。 どこから手をつけてよいか分かりません。お力添え頂ければと思います。
- 309 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:24:47 ]
- >>307
#include <stdio.h> #define TRI(a) ((a)*(a)*1.7320508/4.0) int main( ){ return printf( "%lf\n", TRI(5)); }
- 310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:32:04 ]
- [1] 授業単元: C言語
[2] 問題文:入力された文字列のそれぞれの文字をカウントし、出現回数と生起確率を表示させよ。 またそのエントロピーも表示させよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual C++ 6.0 [3.3] 言語:C [4] 期限:11月28日午前2時まで。 [5] その他の制限:特にありません。 以前ご教示頂いたのですが、データが壊れてしまいました。
- 311 名前:310 mailto:sage [2007/11/27(火) 16:32:53 ]
- 途中送信orz
何卒よろしくお願いいたします・・・。
- 312 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:20:20 ]
- >>308
ソース ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5343.txt csvを表計算ソフトで描画した図形 ttp://www15.axfc.net/uploader/90/so/l/119615151025982656815/Img_5482.jpg
- 313 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:59:13 ]
- [1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): メイン関数において、キーボードから正の整数の個数(100以内)を入力し、次いで実 際の数値を配列に入力する。そしてメイン関数はサブ関数に、入力した個数と配列を引数とし て渡す。 サブ関数は、これらの配列から、まず1番目に大きい数を見つけて、それを別途設けた配列 の先頭の要素に格納し、次に2番目に大きい数を見つけてこれをこの配列の先頭から数えて 2番目の要素に格納し、という処理を最後の数に至るまで繰り返す。これにより新しい配列に は大きい数から順に並んでいることになるので、これを引数を利用してメイン関数に渡す。(す なわちサブ関数は引数を3つ持つことになる。1つはデータの個数を示す変数、1つは入力デ ータを格納する配列、残りの1つはサブ関数で計算した結果を格納する配列である) 最後にメイン関数はサブ関数で計算された新配列の値を若い方の要素から順に(即ち大き い数から順に)画面に表示する。またこの数列の中央値を表示する(中央値に小数が含まれ る場合は、その小数を切り捨てた整数を表示することとする)。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ名とバージョン: Visual Studio .NET 2003 [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 12月3日 [5] その他の制限: 現在、関数・ポインターについて学んでるところです。 よろしくお願いします。
- 314 名前:デフォルトの名無し [2007/11/27(火) 18:03:09 ]
- 以前236でプログラムをお願いしたものです。
ポインタではなく配列でお願いしたいのですが、もう一度お願いできないでしょうか。 できればmainもお願いします。 [1] 授業単元: プログラム演習 [2] 問題文:入力された「対象文字列(s)」の中から、「検索文字列(t)」を検索し、 該当した「対象文字列」の添字を戻り値とする関数「search(s,t)」を作成しなさい。 ただし、「対象文字列」が「検索文字列」を含まない場合には「-1」を戻り値とする。 なお、関数「search(s,t)」は別ファイルに分け(main関数とそれ以外の関数)、 分割コンパイルできるように作成しなさい。 このとき、main関数以外の関数宣言が記述されたヘッダファイルを作成し、 main関数のソースファイルにて利用すること。 引数 char s[] 対象文字列 char t[] 検索文字列 (例) 以下の値で動作した場合は、「3」を返す。 文字列s = “aababcbaa” 文字列t = “abc” 入力は最大128バイトとする。128バイトを超える入力があった場合は処理を終了する [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限:11月27日まで [5] その他の制限: なし
- 315 名前:デフォルトの名無し [2007/11/27(火) 18:04:22 ]
- [1] 授業単元: プログラム演習
[2] 問題文:入力された正の2整数の最大公約数と最小公倍数を算出する。 ・キーボードからの入力が空の場合は処理を終了する。 ・キーボードからの最大入力桁数は4バイトとする。 ・キーボードからの入力が4バイトを超える場合は処理を終了する。 ・キーボードからの入力が正の整数に変換できない場合は処理を終了する エラーメッセージ 未入力 :入力されていません、桁あふれ:4文字以下で入力してください、数値以外:半角数字以外入力できません、ゼロ入力:0は入力できません 文字列を正数に変換する関数はatoiを使用。 引数 char data[] 文字列 戻り値 : 正数 エラー値 -1 未入力 -2 桁あふれ -3 数値以外-4 ゼロ入力 最大公約数を算出の関数名はgcdでユークリッドの互除法を使用。 引数 int data1 データ1 int data2 データ2 戻り値 : 最大公約数 最小公倍数を算出する関数名はlcm。最小公倍数を算出する際、最大公約数の関数を使用する。 引数 int data1 データ1 int data2 データ2 戻り値 : 最小公倍数 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 11・28まで [5] その他の制限: なし
- 316 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:06:06 ]
- >>310
#include <stdio.h> #include <string.h> #include <math.h> int main() { int i=0,l,c[256]={0}; char buf[256]; double h=0,p; scanf("%s",buf); l=strlen(buf); for(i=0;i<l;i++) c[buf[i]]++; for(i=0;i<256;i++) if(c[i]>0) { p=(double)c[i]/l; printf("\"%c\" %lf\n",i,p); h-=p*log(p); } printf("H = %lf\n",h); return 0; }
- 317 名前:デフォルトの名無し [2007/11/27(火) 18:14:32 ]
- [1] 授業単元: プログラミング
[2] 問題文: 入力された整数0〜9のn個の文字列に対応したヒストグラムを出力するプログラムを作成せよ。 例:(n個の整数文字列=0050011050) 数値0が6個、1が2個、5が2個の場合、以下のように出力する。 <出力例> a[0] = 6 ****** a[1] = 2 ** a[2] = 0 a[3] = 0 a[4] = 0 a[5] = 5 ** a[6] = 0 a[7] = 0 a[8] = 0 a[9] = 0 ただしキーボードからの入力は最大128バイトとし、それを超える場合129バイト以降のデータはカウントしない。 入力データは半角数字のみとし、全角数字の入力は考えない。 文字列カウント関数 count 引数 char inputdata[] 入力データ int outputdata[] 出力データ 算出結果をヒストグラムで描写する関数名 hist 引数 int outputdata[] [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C言語 [4] 期限: 11月28日まで [5] その他の制限: なし
|

|