[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:30 / Filesize : 328 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 93代目



1 名前:デフォルトの名無しさん [2007/07/15(日) 22:31:51 ]
あなたが解けない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++の宿題を片付けます 92代目
pc11.2ch.net/test/read.cgi/tech/1183511364/

801 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:10:29 ]
確かに言ってた

802 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:22:13 ]
>>580じゃダメなん?

803 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:22:26 ]
>>747
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4729.c
一応580でも答えたんだけどスルーされてしまったらしい.
完成したソースでないと受理されないのか.
いずれにしても出題の仕方がひどい.p=cでもp=&cでもいいとかどこの講師だよ.

804 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:26:09 ]
>>803
ありがとうございます

805 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:33:56 ]
何だ、回答が出ているんだ。これだけ聞いていれば答えてくれているよね。
悪いが、作業は中止する。
提示された回答をチェックしてみて下さい。要求通りだと思うよ。
気になったのがあるんだが。
number()で数値と演算子に空白がある時と無い時で動きは違わないか?

806 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:35:47 ]
×数値と演算子に空白
○数値と演算子の間に空白

807 名前:803 mailto:sage [2007/07/24(火) 00:41:03 ]
スタック回りに微妙なバグがありそうだけど,いい加減に書いたから適当な修正方法が見当たらない.
とりあえずの応急処置ってことで,expression()内の最後のreturn ans;の直前に
op_stack = val_stack = NULL;
の一行を追加しといて.


808 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 01:02:26 ]
expressionの初っ端の処理がヤバイっぽい

809 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 01:05:50 ]
>>805
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4730.c
しかし作っちまったので俺は投稿する
因みに
struct stack *op_stack, *val_stack;

struct stack *op_stack=NULL, *val_stack=NULL;
なんだとおもふ



810 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 01:41:49 ]
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): 二分探索木の拡張
詳細はうpしました。元になるプログラムも入っています。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4731.zip
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) VC6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/27まで
[5] その他の制限:

どなたかご教授よろしくお願いします。


811 名前: ◆DpMW3bRjps [2007/07/24(火) 07:34:56 ]
1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
               プログラムのソースコードを提出しなさい。
                
              実行例)
              文字列を入力してください
              yamamotoyama
              さがす文字を入力してください
              y
              入力された文字列の中に指定された文字は2個あります


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年07月25日まで
[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
しつこいですがもう1回お願いします。。

812 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 07:55:11 ]
>>452で全く問題なくコンパイル通るが

813 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 07:58:32 ]
>>811
#include<stdio.h>
int main( void ){
char c, string[100], *pstr;
int count;

printf( "文字列を入力してください\n" );
scanf( "%s%*c", string );
printf( "さがす文字を入力してください\n" );
scanf( "%c%*c", &c );
pstr = string;
count = 0;
while ( *pstr != '\0' ) {
if ( *pstr == c ) {
count++;
}
pstr++;
}
printf( "入力された文字列の中に指定された文字は%d個あります\n", count );
return 0;
}


814 名前:813 mailto:sage [2007/07/24(火) 08:01:47 ]
その他制限に全く目を通していなかったorz
朝っぱらかやろうとするとすぐこれだ・・・

815 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 11:16:18 ]

[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):括弧が使用可能な四則演算の電卓プログラムを作成せよ。文字入力で、入力時の関数はgetsを使用する事。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:自作関数は不可、スキルは初心者用の参考書一冊を一通り読んだくらいです。

よろしくお願いします。

816 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 11:37:51 ]
自作関数は不可って?

817 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 11:45:17 ]
ごめんなさい、そこは無視して大丈夫ですorz

818 名前: ◆MmITqPYxy6 [2007/07/24(火) 13:42:22 ]
[1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
               体積の分布(区間数は20程度)を表示するプログラムを
               以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;

2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)

3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)

4,Nの値は実行時にキー入力するように設計しなさい.
          
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
       2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
          V=1/6|(r1×r2)・r3|
がありました。
vector.h はこれです www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h


819 名前: ◆MmITqPYxy6 [2007/07/24(火) 13:46:23 ]
よろしくお願い致します。



820 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:20:45 ]
>>811
>[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
もしかして、gets()をfgets()に修正したと言うことですか?
それ以外にも変更していますか?
fgets()だけなら、引数を変更するだけで良いんじゃないでしょうか。


821 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:50:12 ]
>452はgets()の使い方が阿呆過ぎる。
それはさておき、>811はなんで自分がどう修正してダメだったかも書かないんだ?

822 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 14:59:12 ]
>>821
gets()の使い方なんか可愛いもんだ。突っ込みどころ満載で目も当てられない。

823 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:09:24 ]
取り敢えず書いてみた。
#include <stdio.h>
int main()
{
puts("文字列を入力してください");
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) return 1;
puts("さがす文字を入力してください");
char key;
if (scanf("%c", & key) != 1) return 1;
unsigned count = 0;
for (unsigned ic = 0; buf[ic] != '\0'; ++ic) if (buf[ic] == key) ++count;
printf("入力された文字列の中に指定された文字は%d個あります\n", count);
return 0;
}

824 名前:デフォルトの名無しさん [2007/07/24(火) 16:33:28 ]
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt


このデータをファイルから読み込み

挿入ソート
基数ソート
ヒープソート
クイックソート
マージソート

によってソートできるよう各プログラムを作成せよ

データ数が100,000個のときでも対応できるようメモリを確保しておいてください。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7月28日
[5] その他の制限:出来る限り単純なアルゴリズムで作ってください。合計5つのプログラムを作成してください。

大変な問題で申し訳ありませんがどなたか詳しい方よろしくお願いいたします

825 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 16:43:08 ]
>>824
なんで露骨にマルチするわけ?
専用ブラウザ使ってる連中の多くが両方とも見ているから、逆効果にしかならないのだが。
#それともネタか? ネタにマジレスしちゃったか?w

826 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 17:58:03 ]
だから答える気がない奴はいちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
行頭 # 野郎w

827 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:03:33 ]
>>826
お前も、なぁ…?

828 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:07:01 ]
>>826
こいつ、他のスレにも潜んでるよな
IDが出ないのをいいことに好き勝手やってやがる

829 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:08:26 ]
>>828
あ〜はいはい、去年質問したけど質問の仕方が悪くて
今年は自分が質問者を弄るようになった基地外えせ回答者さん乙でありますw
うぜぇから他の回答者の迷惑になるから、文句を言うだけのレスはするなや、答える気も
答える能力もないくせに、うざすぎ



830 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:10:00 ]
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と
加算(+)のみで解くプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7月25日まで
[5] その他の制限: ビット演算まで習っています。

お願いします。

831 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:11:10 ]
>>828
まぁ、アレだからスルーしてあげてくれ。

832 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:11:43 ]
答える気も能力もないクズらが質問者を叩くだけで自己満足か、必死だな

833 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:17:21 ]
何だ、本当に答える気がなくて質問者をスレのルールに則って詰るだけの低レベルか。
相手にするだけ無駄だ、お前ら俺がいる限り、もうこのスレには来なくて良いから。
邪魔だから失せろ。

834 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:19:16 ]
>>827
質問者に対して、回答ではなく叩きでレスしているって意味だと思うんだが。
頭大丈夫か?

835 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:20:30 ]
ここは馬鹿がアホをたたくスレですか?

836 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:21:31 ]
>>834
お前こそ頭大丈夫か?文盲?

837 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:21:38 ]
>>833
勝手にすればwww

838 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:22:39 ]
>>834
>いちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
これに対してオマエモナーだろ。

839 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:24:38 ]
>>838
いや、オマエモナーは>>827=>>838さんの専売特許ですから



840 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:27:21 ]
なんか話が通じてないぞ。

841 名前:にゃ〜 [2007/07/24(火) 18:31:53 ]
f(x)=sin(x)をテイラー展開すると

   ∞
f(x)=(-1)^(k-1)*{x^(2k-1)/(2k-1)!}
   k=1

となる.これを利用してsin(x)の値を多項式近似する関数double mysin(double x)を定義し,この関数を利用して,読み込んだ実数xのsin(x)を計算して出力するプログラム(sin.c)を書け.
また,数学関数sin(x)と自分で作ったsin(x)を比較せよ.

という問題なのですがどうしてもわからないんです。
今日中にできる方いらっしゃいますか??  
理解したいので、コメント付きでどうかお願いします。

842 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:36:48 ]
ループで適当なとこまで足してきゃいいだけだろ。

843 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:39:32 ]
>>841
どの辺が分からない?式の意味は分かるよね?

844 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 18:58:17 ]
>>841
#include <stdio.h>
#include <math.h>

double mysin(double x) {
double sub = 1.0;
int last = 1001; /* 奇数 */
while (last > 1) {
sub = 1 - (x*x / ((last-1)*last)) * sub;
last -= 2;
}
return x * sub;
}
int main(int argc, char *argv[]) {
while (1) {
double x;
scanf("%lf", &x);
printf("mysin(x) = %lf\t(sin(x) = %lf)\n", mysin(x), sin(x));
}
}
/* コメント:原点から遠ざかると近似が効かなくなるのはマクローリンの宿命だな */

845 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 20:27:21 ]
マクローリン云々よりも漸化式の形で解くのに疑問を持つ
1001もマジックでエロい人だなぁ

846 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 21:42:25 ]
>>841
クソわかりやすいつもり。わからないなら数学やりなおせ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4737.c

847 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 21:55:07 ]
>>753
ありがとうございますー
最長一致するようにして使わせてもらいます

>\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
勘違いしてたみたいですね
すいません

>つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>>420が問題の趣旨を理解していない気が激しくするぞコラ
授業ではプリプロセッサにまったく触れてないんでそれはないです

848 名前:デフォルトの名無しさん [2007/07/24(火) 22:22:39 ]
さんざん考えたけど難しかったです。
よろしくお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
2つの複素数z=a+bi、w=c+di(ただしiは虚数単位)を読み込み、足し算とかけ算を計算して表示するプログラムを作成せよ。
但し、以下の仕様を満足するように作成すること。
・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXを構造体で定義する。
・足し算の関数:COMP_ADD(z、w)とかけ算の関数:COMP_MULT(z、w)を作成し、main関数ではこれらの関数を呼び出す。
(実行例)
1つ目の複素数(実部):2
1つ目の複素数(虚部):3
2つ目の複素数(実部):4
2つ目の複素数(虚部):-2
足し算:(6)+(1)i
かけ算:(14)+(8)i
(ヒント)
複素数を扱う構造体(メンバで実数部、虚数部を2つの数値で格納)を宣言し、各変数を格納、演算を行う。
複素数同士の足し算、かけ算は普通に行う。
(a+bi)+(c+di) (a+bi)×(c+di)
を展開して虚数の2乗は-1という知識があれば解ける。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限:7/26(木)12:00まで

849 名前:にゃ〜 [2007/07/24(火) 22:46:34 ]
いろいろやってみたところ自己解決しました
載せてくれた人もいるみたいですが
いちおう礼をいっておきます



850 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:00:02 ]
>構造体COMPLEXを構造体で定義する。
構造体を構造体以外でどうやって定義するんだよw

851 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:00:30 ]
>>848 ほい。名前が適当だから、そこだけ自分で修正して。

#include <stdio.h>
typedef struct{
double r;
double i;
} comp;

comp add_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r+c2.r;
tmp.i=c1.i+c2.i;
return tmp;
}

comp mul_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r*c2.r-c1.i*c2.i;
tmp.i=c1.r*c2.i+c1.i*c2.r;
return tmp;
}


852 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:01:35 ]
>>851の続き

int main(){
comp c1={2.0,3.0};
comp c2={4.0,-2.0};
comp result;
printf("1つ目の複素数(実部):%lf\n",c1.r);
printf("1つ目の複素数(虚部):%lf\n",c1.i);
printf("2つ目の複素数(実部):%lf\n",c2.r);
printf("2つ目の複素数(虚部):%lf\n",c2.i);

result=add_comp(c1,c2);
printf("足し算:(%lf)+(%lf)i\n",result.r,result.i);
result=mul_comp(c1,c2);
printf("かけ算:(%lf)+(%lf)i\n",result.r,result.i);

return 0;
}


853 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:24:02 ]
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4739.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限: 7月26日まで
[5] その他の制限:ファイルを読込んだり、書込んだりするところを習いました。

854 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:29:39 ]
>>853
例をみると、改行も区切りと見なしてるが、それでいいのか?

855 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:32:04 ]
>>854
はい

856 名前:にゃ〜 [2007/07/25(水) 00:37:12 ]
>>844
わかりやすいっす!!
ありがとうございます。勉強しなおします

857 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:39:18 ]
>>853
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4740.c

858 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:52:03 ]
>>853
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4741.c

859 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:54:40 ]
>>853 ちょい修正
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4742.c



860 名前:853 mailto:sage [2007/07/25(水) 00:57:53 ]
すいません。
補足で
入力ファイルを読込モードでオープン
出力ファイルを書出モードでオープン
while ( 1 ) {
入力ファイルから書式付で字句を読込
ファイル終端なら脱出
出力ファイルに書式付で番号を付けて書込
}
入力ファイルをクローズ
出力ファイルをクローズ
と言う形で作れと書いていました。

861 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:02:14 ]
>>860
後だしイクナイ

862 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:03:16 ]
>>853 >>860
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4743.c

863 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:04:32 ]
>>862の#include <ctype.h>は不要だから消しておいて

864 名前:853 mailto:sage [2007/07/25(水) 01:15:02 ]
ありがとうございました。

865 名前:デフォルトの名無しさん [2007/07/25(水) 10:02:24 ]
>>851 >>852
ありがとうございます。
ソースも分かりやすく書いてくれたみたいで、参考になります。

866 名前:デフォルトの名無しさん [2007/07/25(水) 10:02:24 ]
パワプロ14でオールAを作るプログラムを作れ

867 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:48:35 ]
すごい宿題だな

868 名前:デフォルトの名無しさん [2007/07/25(水) 11:20:58 ]
>>866
攻略本が必要だ。
でも宿題の内容熱いな。

869 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 11:44:08 ]
探索とその評価の方法をパワプロを通して学ぶわけだな



870 名前: ◆6MtsdamhF6 [2007/07/25(水) 11:45:35 ]
すいません、まだ初心者であんまりわかりません。
締切が近いのでどうかお願いします

【質問テンプレ】
[1] 授業単元:プログラミングC言語
[2] 問題文(含コード&リンク):
次の違いに注意しながら、forの変わりにwhileを使うものにそれぞれ
書き換えなさい。ただし書き換えは最低限にすること
(1)
#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
printf("%c", c);
printf("\nTatal=%d\n", nc);
}

A#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
putchar(c);
printf("\n%d\n", nc);
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:今日の14時までなんです。
どうかおねがいします。

871 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:19:36 ]
#include<stdio.h>
main(){
int nc=0, c;
while((c= getchar()) != EOF) {
printf("%c", c);
nc++;
}
printf("\nTatal=%d\n", nc);
}

#include<stdio.h>
main(){
int nc=0, c;
while((c= getchar()) != EOF) {
putchar(c);
n++;
}
printf("\n%d\n", nc);
}

期限切れだが

872 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:22:21 ]
Aのn++はnc++の間違い

873 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:46:14 ]
今、>>841をやってみた。最初は簡単かと思ったけど、
そのまま階乗つかうとオーバーフローするから面倒なのね。
>>844ほど華麗ではないけど、x/n * ...x/3 * x/2 * x/1の和で計算した。

874 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:55:45 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のように、2桁以下の正整数が1行に3つずつ書かれたファイルを input.txt とする。
ただし、ファイルの末尾には、終了を表す番兵0がある。
1 45 90
2 7 41
13 67 60
0
入力リダイレクトで input.txt を読み込み、出力リダイレクトで、以下のような形式で output.txt に保存するプログラムを作れ。
番号 数学 英語 合計
01 45 90 135
02 7 41 48
13 67 60 127
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限:7/27
反復構文を使うっぽいです。

875 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:42:24 ]
[1] 授業単元:情報基礎
[2] 問題文:次の仕様を満たすプログラムを作成せよ
(1)入力は2以上の整数n
出力はnのすべての正の約数
(2)入力は2以上の整数n
出力はnの正の約数の個数
(3)入力は2以上の整数n
出力はnが素数ならば"n is prime",
合成数ならば"n is not prime"
(nの部分には、入力した整数が表示されるようにすること)
3つのプログラムは1つにまとめてもよい。その場合には、ど
れが約数でどれが約数の個数を表しているかが分かるようにす
ること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:7月27日(金)提出は20:45までです


876 名前:デフォルトの名無しさん [2007/07/25(水) 16:43:30 ]
>>874
#include <stdio.h>
void main(){
int buf = 0;
int count = 0;
int total = 0;
printf("番号 数学 英語 合計\n");
while(scanf("%d",&buf)) {
if(buf == 0)
break;
count++;
printf("%d ", buf);
total += buf;
if(!(count%3)){
printf("%d\n", total);
total = 0;
}
}
}
なんにもエラー処理してないけどこんなんでいいかな・・・


877 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:58:51 ]
>>875
#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\nn is ",c);
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}

878 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:01:34 ]
間違えた・・
#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\n%d is ",c,n); //修正
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}


879 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:03:43 ]
学校の先生はこのスレにかかれているままのコードで
宿題をだしている生徒がいたら、減点すればいいわけだなwwww



880 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:17:55 ]
教官、見てるなら指摘された問題の間違い位直せよ。

881 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:31:47 ]
そこまで良心的な教師いないよ

882 名前:デフォルトの名無しさん [2007/07/25(水) 17:55:14 ]
[1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
               体積の分布(区間数は20程度)を表示するプログラムを
               以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;

2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)

3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)

4,Nの値は実行時にキー入力するように設計しなさい.
          
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日20時迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
       2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
          V=1/6|(r1×r2)・r3|

vector.h はこれです www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h

今日が期限なんですが、全然わからないんです。
よろしくお願い致します

883 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:01:02 ]
>>882
結果表示のイメージが分からない。グラフにするのかな?合計数値?

884 名前: ◆TDJK/P.926 [2007/07/25(水) 18:16:42 ]
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク)
講義中の題材として扱っていた電卓を、以下の点について改良せよ。
(1)変数に文字列を代入できるようにする。たとえば
   s1="Programing"
word="apple"
 のような代入が可能になる。

(2)文字を扱う関数を取り扱えるようにする。たとえば
 s1="Programing"
s2="Language"
s3=concatenate(s1,s2) 上で代入されたs1とs2を連結したものをs3に代入する。
s3
=ProgramingLanguage

(5)次のようなif文を使えるようにする。→if(条件式) 実行文
例: if(a+b>10) a=a-1
条件式には、>または<が使用できるものとする。条件式が成立していたときには、実行文(複文も可)を実行する。

(6)その他、この電卓に追加するとよいと思う昨日を考え、実現してみよ。

[3] 環境
 [3.1] OS:WindowsXP 上でのUNIX
 [3.2] コンパイラ名とバージョン: gcc (※yaccとlexのプログラミングです。
 [3.3] 言語:C言語
[4] 期限: (2007年07月27日20:00まで]
[5] その他の制限:講義中の題材のソースはすぐアップします。

885 名前: ◆TDJK/P.926 [2007/07/25(水) 18:19:36 ]
>>884のソースです。

※ヘッダファイル:ch3-05.h
#define NSYMS 20 /* maximum number of symbols */
struct symtab {
char *name;
double (*funcptr)();
double value;
} symtab[NSYMS];
struct symtab *symlook();

886 名前: ◆TDJK/P.926 [2007/07/25(水) 18:20:42 ]
>>885 続き

※lexファイル:ch3-05.l
%{
#include "y.tab.h"
#include "ch3-05.h"
#include <math.h>
%}
%%
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) {
yylval.dval = atof(yytext);
return NUMBER; }
[ \t] ; /* ignore white space */
[A-Za-z][A-Za-z0-9]* { /* return symbol pointer */
struct symtab *sp = symlook(yytext);
yylval.symp = sp;
return NAME;
}
"$" { return 0; /* end of input */ }
\n |
. return yytext[0];
%%
yyerror(char *errmsg)
{
fprintf(stderr,"ERROR: %s at %s\n", errmsg, yytext);
}
yywrap(){}

887 名前:デフォルトの名無しさん [2007/07/25(水) 18:20:50 ]
説明不足でした。申し訳ありません

N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000

が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すみたいです。

888 名前: ◆TDJK/P.926 [2007/07/25(水) 18:23:05 ]
>>886続き

※yaccファイル:ch3-05.y
%{
#include "ch3-05.h"
#include <string.h>
#include <math.h>
%}
%union {
double dval;
struct symtab *symp;
}
%token <symp> NAME
%token <dval> NUMBER
%left '+' '-'
%left '*' '/'
%nonassoc UMINUS
%type <dval> expression
%%
statement_list: statement '\n'
| statement_list statement '\n'
;
statement: NAME '=' expression { $1->value = $3; }
| expression { printf("= %g\n", $1); }
;


889 名前: ◆TDJK/P.926 [2007/07/25(水) 18:25:09 ]
>>888 yaccの続き。次で最後です。
expression: expression '+' expression { $$ = $1 + $3; }
| expression '-' expression { $$ = $1 - $3; }
| expression '*' expression { $$ = $1 * $3; }
| expression '/' expression { if($3==0.0) yyerror("Divide by Zero");
else $$ = $1 / $3; }
| '-' expression %prec UMINUS { $$ = -$2; }
| '(' expression ')' { $$ = $2; }
| NUMBER { $$ = $1; }
| NAME { $$ = $1->value; }
| NAME '(' expression ')' { if( $1->funcptr ) $$ = ($1->funcptr)($3);
else {printf("%s not a function.\n", $1->name);
}
}
;
%%
/* look up a symbol table entry, add if not present */
struct symtab *symlook(char *s)
{
char *p;
struct symtab *sp;
for(sp=symtab; sp<&symtab[NSYMS]; sp++) {
/* is it already here? */
if( sp->name && !strcmp(sp->name, s) ) return sp;
/* is it free */
if( !sp->name ) { sp->name = strdup(s);
           return sp;}
/* otherwise continue to next */
}
yyerror("Too many symbols");
exit(1); /* cannot continue */
} /* end of symlook */



890 名前: ◆TDJK/P.926 [2007/07/25(水) 18:35:56 ]
>>889 これで最後です。
void addfunc(char *name, double (*func)())
{
struct symtab *sp = symlook(name);
sp->funcptr = func;
}
int main()
{
extern double sqrt(), exp(), log(), sin(), cos();
addfunc("sqrt", sqrt);
addfunc("exp", exp);
addfunc("log", log);
addfunc("sin", sin);
addfunc("cos", cos);
yyparse();
return 0;
}

891 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:44:24 ]
>>1にもある様に長文はロダ使おうぜ
その方が回答者にとってはやりやすい

って書くといつもの基地外に噛み付かれるのかなぁ?

892 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:47:19 ]
◆TDJK テンプレ嫁

893 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:47:47 ]
>>891
ガブ

894 名前: ◆TDJK/P.926 [2007/07/25(水) 18:47:51 ]
>>891
うpロダには学校からアクセスしてるので規制されててアクセスできないんですよ(汗)申し訳ないです。

895 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:50:20 ]
2chはおkなのに?おかしな話だ

896 名前: ◆TDJK/P.926 mailto:sage [2007/07/25(水) 18:54:39 ]
>>895
2ch自体にはアクセスできますがPink板など18禁系には規制かかります。
うpロダもそれで規制かかったので。

897 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:05:05 ]
いくらでもあるのに規制って(´,_ゝ`)プッ
宿題まるなげするやつのいいそうなことだ。(´,_ゝ`)プッ

898 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:10:14 ]
>>897
>>762


899 名前:デフォルトの名無しさん [2007/07/25(水) 19:11:16 ]
説明不足でした。申し訳ありません。

N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000

が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すようです。
よろしくお願いします。





900 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:12:19 ]
>>898こてはずして必死だなwww






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<328KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef