C/C++の宿題を片付けます 57代目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/01/09(月) 10:02:47【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 56代目
http://pc8.2ch.net/test/read.cgi/tech/1135125328/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん
2006/01/09(月) 10:06:47http://ugzone.com/flash/flash/2get.html
オラオラ、たまちゃん様が2getしちゃうぞ〜?
〜⌒〜⌒〜⌒〜/⌒\〜⌒〜
⌒〜⌒〜⌒〜/ `・ω)ミ
〜⌒〜⌒〜⌒〜 U彡〜⌒〜⌒〜⌒
〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜
0003デフォルトの名無しさん
2006/01/09(月) 10:17:15乙
0004デフォルトの名無しさん
2006/01/09(月) 10:38:38[2] 問題文(含コード&リンク):int_{-1}^{1}f(x)dxをモンテカルロ法で計算するプログラムを作れ。
試行回数n:=2^MとしてM=2からM=20までのMの値と積分値を出力せよ。
fは自分で適当に与える。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
0005デフォルトの名無しさん
2006/01/09(月) 10:47:09[2] 問題文(含コード&リンク):n:=2^MでMを1から27まで順に変えながら、n以下の素数の個数p(n)と{p(n)*log{n}}/nの値を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年1月6日18時
[5] その他の制限:なし
0007デフォルトの名無しさん
2006/01/09(月) 11:20:150008デフォルトの名無しさん
2006/01/09(月) 11:47:200009デフォルトの名無しさん
2006/01/09(月) 14:45:02数字、英字の前後には半角スペースを入れるように。
0010デフォルトの名無しさん
2006/01/09(月) 14:47:13俺基準?
0011デフォルトの名無しさん
2006/01/09(月) 15:03:51世間共通基準じゃないの?
教科書、論文もそうなってるし。
0012デフォルトの名無しさん
2006/01/09(月) 15:27:44実行にかなり時間がかかること、メモリを結構(300MB弱)必要とすること
の2点に注意せよ。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char *sieve_of_eratosthenes(int upper) {
int i, notprime;
char *integers = (char *)malloc(upper + 1);
for (i = 2; i <= upper; i++) integers[i] = 1;
integers[0] = integers[1] = 0;
for (i = 2; i <= upper / 2; i++) {
notprime = i;
while ((notprime += i) <= upper) integers[notprime] = 0;
}
return integers;
}
#define MAX_M (27)
int main(void) {
int MAX = 2 << MAX_M, n, M, i, count = 0;
char *sieve = sieve_of_eratosthenes(MAX);
for (n = 2, M = 1; M <= MAX_M; n <<= 1, M++) {
for (i = (n >> 1) + 1; i <= n; i++) if (sieve[i]) count++;
printf("M=%2d:p(n)=%10d:{p(n)*log{n}}/n=%f\n", M, count, (count * log((double)n)) / n);
}
free(sieve);
return 0;
}
0013デフォルトの名無しさん
2006/01/09(月) 15:33:350014デフォルトの名無しさん
2006/01/09(月) 18:08:150015デフォルトの名無しさん
2006/01/09(月) 19:04:36[2] 問題文(含コード&リンク):
13台分の車両の長さの線路とその中心に3台分の転車台(くるっと回して向きを反転させる)があり、その上
に、1台の機関車と1〜7の番号が付けられた7台の客車の8両編成の列車が最初は右向きに配置されているとする。
この状態から転車台を使って、左向きに配置された状態(左から順に、機関車、客席1、2、‥)にする問題を
考える。ただし次のようなルールがある。
・機関車と客車は自由に切り離し可能であり、1回の転車で可能な台数は1〜3台である(ただし、線路の長さの関係
で、どんな状況でも1〜3台可能というわけではないことに注意。)
・転車台で向きを反転させる部分の中に、必ず機関車が含まれていなければならない。
・機関車には前後の向きはあるが、客席にはない。
目標状態に至るまでの手順を縦型探索、横型探索、A*アルゴリズムにより探索するプログラムを作成せよ。
ヒューリスティック値は各自でいろいろ設定してみて、最適なものを探してみること。また、状態を保持する
リストは配列のように保持可能な要素数が固定されているものでなく、ポインタなどを利用して保持可能要素数を
動的に変更可能なものを使用すること。
[3] 環境
[3.1] OS:WindowsXP [3.2] borland bcc55 [3.3] 言語: C言語
[4] 期限: 1/19
初期状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|2|1|機関車|
+++++++++++++++++++++++++++++++
|←5台分→|←3台分 →|←5台分→|
初期状態から転車させた状態
+++++++++++++++++++++++++++++++
|7|6|5|4|3|機関車|1|2|
+++++++++++++++++++++++++++++++
目標状態
++++++++++++++++++++++++++++++++
|機関車|1|2|3|4|5|6|7|
++++++++++++++++++++++++++++++++
001615
2006/01/09(月) 19:06:47切羽詰まっているのでこちらでも質問させてください。
卒業かかってるのでわかる方お願いします。。・;+゜・(ノД`):・゜+:・。
0017デフォルトの名無しさん
2006/01/09(月) 19:30:44A*の参考コード
ttp://www.geocities.com/jheyesjones/astar.html
0018デフォルトの名無しさん
2006/01/09(月) 23:16:14めるせんぬはゆるせんぬ
0019デフォルトの名無しさん
2006/01/09(月) 23:23:34[2] 問題文:問題1 3つの整数の並べかえ
三つのint型整数を昇順に並べかえる関数
void sort3(int *n1, int *n2, int *n3)
を作成せよ。
たとえば、a、b、cがそれぞれ5、3、7のときに sort(&a&b&c) と呼び出した後には
aには3、bには5、cには7が格納されていなければならない
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10日の16時まで
[5] その他の制限: 動作確認のためのmain関数を作成する。
0020デフォルトの名無しさん
2006/01/09(月) 23:57:58#include <stdio.h>
void sort3( int *n1, int *n2, int *n3 )
{
int tmp;
if ( *n1 > *n2 ) { tmp = *n1; *n1 = *n2; *n2 = tmp; }
if ( *n2 > *n3 ) { tmp = *n2; *n2 = *n3; *n3 = tmp; }
if ( *n1 > *n2 ) { tmp = *n1; *n1 = *n2; *n2 = tmp; }
}
int main( void )
{
int a = 5, b = 3, c = 7;
printf( "a: %d, b: %d, c: %d\n", a, b, c );
puts( "sorting..." );
sort3( &a, &b, &c );
printf( "a: %d, b: %d, c: %d\n", a, b, c );
return 0;
}
0021デフォルトの名無しさん
2006/01/10(火) 01:11:023つの数はmain(int argc, char *argv[])じゃないの??
0022デフォルトの名無しさん
2006/01/10(火) 04:10:170023デフォルトの名無しさん
2006/01/10(火) 04:57:380024デフォルトの名無しさん
2006/01/10(火) 05:48:09[2] 問題文:8×8の盤面上で白と黒の石を使い、相手の色の石を自分の色の石で挟むことで反転させ合う、皆さんよくご存知のオセロと同じルールの白黒ゲームを自動的に実行して盤面を表示するプログラムを作りなさい。
その際、実行する手は、その局面で最も多く相手の石を反転させるものを選ぶこと。ただし同数の手が複数あるときはその中の任意の1つを選べば良い。また、実行する手が存在しない場合はPass!と表示すること。
白が先手として実行を開始すること。また各回とも次に示す情報を画面に表示すること。
・○あるいは●の石を置く座標
・それによって相手の何個の石が反転するか
・手を実行直後の盤面
なお、盤面の表示は一手ごとに画面を静止させてキー入力を促すこと。
最後には○、●それぞれの数を示し、どちらがかったかも示すこと。
[3] 環境
[3.1] OS:Windows XP
[3.2] CPad for Borland C++ Compiler
[3.3] 言語: C
[4] 期限: 2006年1月10日まで
0025デフォルトの名無しさん
2006/01/10(火) 06:44:34今日が期限じゃん
こんなにギリギリで貼られても困る
俺は学校だし
0026デフォルトの名無しさん
2006/01/10(火) 06:55:01マルチ氏ね
002724
2006/01/10(火) 08:23:23期限ギリギリに課題にきずいて焦ってマルチになってしまったのですが・・・。
0028デフォルトの名無しさん
2006/01/10(火) 10:16:24一生PCの電源点けないほうがいいんじゃない
0029デフォルトの名無しさん
2006/01/10(火) 10:24:55[2] 問題文(含コード&リンク):0,1,1,2,2,2,3,4 から
3個選んだときの順列をすべて出力せよ(重複を許す順列)
ただし、同じ順列を表示しないこと
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2006年01月11日17:00まで
[5] その他の制限: 配列、ポインタ、再帰関数を使用
動的メモリ、構造体は習っていないので使用不可
出来ることならコメントもつけて頂けるとありがたいです。
ポインタと再帰関数を使ったプログラムが、
読めるかどうかも危うい未熟者ですので何卒、よろしくお願いします。
0030デフォルトの名無しさん
2006/01/10(火) 10:28:200031デフォルトの名無しさん
2006/01/10(火) 12:08:19[2] 問題文(含コード&リンク):
f(x,y)={((2x-y)^2*(x+3y)^2+x+y)/((4x^2+y^2)*(x^2+9y^2)+1)}+arctan(x^2+y^2-1)^2
の最小(極小)点およびその値(最小値)を次の方法で求める:
適当な初期値(x0,y0)から始めてn=0,1,2,3,・・・に対して
1.ynを固定して1変数関数g(x)=f(x,yn)を考え,
黄金分割法により、この最小点をx=xn+1として求める
2.上のxn+1を固定して,1変数関数h(y)=f(xn+1,y)を考え,
やはり黄金分割法により,最小点をy=yn+1として求める。
これらを繰り返して,(x1,y1),(x2,y2),・・・を生成し,(xn,yn)がほとんど変化
しなくなったら,これを近似解として返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc バージョン?
[3.3] 言語: C
[4] 期限: 1月11日12:00まで
[5] その他の制限: xnとかxn+1→x*nではなくて、xの配列です。みづらくてすみません。
前スレでも聞いたのですが・・・。
この問題はもう駄目でしょうか・・・?
どなたかお願いいたします。
0032デフォルトの名無しさん
2006/01/10(火) 12:13:43風邪で熱っぽい漏れが作ったぞ。
で、24はまだいるのか?
マルチしてるようだし、どっかで答えてもらったか?
0033デフォルトの名無しさん
2006/01/10(火) 12:18:35ダメってことないけど、ぱっと見でめんどくさそうなのは敬遠されがちだね。
せめて黄金分割法の説明してくれない限り、誰も手を出さないんでないかな。
0034デフォルトの名無しさん
2006/01/10(火) 12:19:07[2] 問題文(含コード&リンク):毎日の株価を連続して入力し、
前日より上昇している場合プラス記号'+’を、下降の場合は
マイナス記号'-'を出力する(最初は'+’を出力してよい)。
ストッパは-999とする。
<入力例>
23 24 19 17 20 24 27 23 18 16 -999
<出力例>
+ + - - + + + - - -
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月27日まで
どうかよろしくお願いします…m(__)m
0035デフォルトの名無しさん
2006/01/10(火) 12:34:41同じだったら?
0036デフォルトの名無しさん
2006/01/10(火) 12:40:03//取り敢えず同じだったら'='を出力してみる。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int value;
int oldValue = 0;
for (;;) {
if (fscanf(stdin, "%d", & value) < 1) {
fprintf(stderr, "Illegal input.\n");
return EXIT_FAILURE;
}
if (value == -999) {
return EXIT_SUCCESS;
}
if (value > oldValue) {
putchar('+');
} else if (value < oldValue) {
putchar('-');
} else {
putchar('=');
}
oldValue = value;
putchar(' ');
}
}
003734
2006/01/10(火) 12:56:38どうも有難うございますm(__)m
株価が同じ場合であったときのことは記載されていなかったので、
教授に聞いてこようかと思います。
0038デフォルトの名無しさん
2006/01/10(火) 13:24:08ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1420.txt
かなりテキトーに作ってる。
ttp://gakuen.gifu-net.ed.jp/~contents/museum/golden/page62_5.html
この辺を参考にしたんで、手法が違ってるようなら勝手に直しとけ。
003924
2006/01/10(火) 14:34:15教えてほしいです。お願いします。
004032
2006/01/10(火) 15:09:24004124
2006/01/10(火) 15:26:38ひとつ質問なんですが、このプログラムだと2手目の白がうったときに余計なところまでひっくり返りませんか?
0042デフォルトの名無しさん
2006/01/10(火) 15:42:24__ へ
i. ツ ゝ_!
. !_l _r' ⌒ヽ ノ ,/
. l ゝ、 ゙T ̄了:), ri' " ,/
゙ゝ、 `)"ー、._,r:'"` l、,/
ヾ、 l : i ,/
Y l : l'"
! l : ,l←なぜか英雄
l、 l : l
/~ ニ口ニ{
! ヽ ゙!
ゝ ヾ. ゙! ,D.←質問した>>24
\ ヽ.゙!ー七ヽ, __
\ )゙! く ゝ、 /゙ンニヾヽ,
 ̄ ̄ ̄ ̄ ̄ ̄ ̄/ / ゙!" ̄ ゙ ̄ト;'(_)゙lー! ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ゝ,/ l ! l.l l_/ヽ.ヽ,H、←風邪を押して一所懸命
/ ,/ ゝニl `¨¨ ~~~ PG組んだ>>32>>40
(ゞヘ、 | |
004332
2006/01/10(火) 15:49:13全然気付かなかった。
修正版↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1422.c
0044デフォルトの名無しさん
2006/01/10(火) 15:57:02あ?
あーまだバグってんな。
004532
2006/01/10(火) 16:23:03で、vol0.03。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1423.c
こうなったら、どこまで行くか試してみるのも一興か。
004631
2006/01/10(火) 16:24:06コンパイルしたところ、下のようなエラーが出てしまうのですが、どこか間違っているのでしょうか?
ougon.c: In function `main':
ougon.c:76: warning: control reaches end of non-void function
/tmp/cczqUJoV.o: In function `f':
/tmp/cczqUJoV.o(.text+0x53): undefined reference to `atan'
collect2: ld returned 1 exit status
004732
2006/01/10(火) 16:36:390048デフォルトの名無しさん
2006/01/10(火) 16:52:05gcc ougon.c -lm
~~~~多分この辺
004924
2006/01/10(火) 17:15:16ほんとにありがとうございました。
0050デフォルトの名無しさん
2006/01/10(火) 17:19:38[2] 問題文(含コード&リンク):
構造体の配列を用いて、5人分の氏名、学籍番号、点数を記録し、
新しく入力された点数以上の氏名を出力するプログラムを書け。
(必ず、print_studen(struct student s)と言う学生一人分の情報を
1行に表示する関数を作成し、それを利用して出力を行うこと。)
<構造体の例>
struct student{
char name[50], id[20];
int score;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月23日まで
005131
2006/01/10(火) 17:29:10>>48 ありがとうございます。ご指摘の通りでした。
>>31をコンパイルして実行できたのですが、ループが3,4回くらいで終わるのは
仕様でしょうか?
0052デフォルトの名無しさん
2006/01/10(火) 17:50:56[2] 問題文(含コード&リンク):
10個の整数の中から最大のものと最小のものを探す
関数をそれぞれ作成し、メインプログラムで与えた
10個の整数の中の最大値、最小値を求めるプログラム
(合計3個の関数から成る)を作成しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2005年1月12日12:00まで
[5] その他の制限: どうかお願いします。
0053デフォルトの名無しさん
2006/01/10(火) 18:14:52#include <stdio.h>
#define SELECT2(op,x,y) ((y)op(x)?(y):(x))
#define SELECT3(op,x,y,z) SELECT2(op,(x),SELECT2(op,(y),(z)))
#define SELECT5(op,x,y,z,v,w) \
SELECT2(op,SELECT2(op,(x),(y)),SELECT3(op,(z),(w),(v)))
#define SELECT10(op,q,r,s,t,u,v,w,x,y,z) \
SELECT2(op,SELECT5(op,(q),(r),(s),(t),(u)),SELECT5(op,(v),(w),(x),(y),(z)))
#define SELECT10_F(f,q,r,s,t,u,v,w,x,y,z) \
int f##_10(q,r,s,t,u,v,w,x,y,z)int q,r,s,t,u,v,w,x,y,z; \
{ return SELECT10(f,q,r,s,t,u,v,w,x,y,z); }
#define max >
#define min <
SELECT10_F(max,q,r,s,t,u,v,w,x,y,z) SELECT10_F(min,q,r,s,t,u,v,w,x,y,z)
int main()
{
printf("max..%d\nmin..%d\n",
max_10(0,8,4,12,2,10,6,14,1,9),
min_10(0,8,4,12,2,10,6,14,1,9));
}
0054デフォルトの名無しさん
2006/01/10(火) 18:19:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1424.txt
普通にループさせてみた
>>53
すばらしい。
0055デフォルトの名無しさん
2006/01/10(火) 18:51:13[2] 問題文(含コード&リンク):
[問題]正の整数を入力し,それを各桁毎に分解し,
それらの数字を正順及び逆順に,間に1つ以上の空白をあけて出力するプログラムを書け。
例えば,12345 と入力したら,5 4 3 2 1 と 出力することになる。
ただし,整数の桁数は最大9桁であるとする.
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C++
[4] 期限: 一月下旬
[5] その他の制限: 繰り返しの問題です。よろしくお願いします。
0056デフォルトの名無しさん
2006/01/10(火) 19:32:41仕様。その回数が悪ければアルゴリズムとして多分紹介されない。
意図的にループ回数が長くなりそうな関数を用意したんで同様に突っ込んでみたら?
double f(double x, double y){double a = x - 57.0, b = y - 31.0; return 100*(a+b)*(a+b)+(b-a)*(b-a); }
あとはEPSを小さくして精度を上げるとか。
0057デフォルトの名無しさん
2006/01/10(火) 19:49:10ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1425.txt
てきとーに作ってみた。
scanfの"%9s"の9を、#defineしたもので置き換えたかったんだが
これってどうやるんだっけ?忘れてしまった。
0058デフォルトの名無しさん
2006/01/10(火) 19:57:32仕様通り「分解」が面倒なので、ズルをした
#include <stdio.h>
#include <string.h>
#define swap(x,y) do{char temp; temp=x; x=y; y=temp;}while(0)
int main()
{
int i,j,n;
char s[10];
printf("9桁以内の整数を入力\n-->");
scanf("%s",s);
if(strlen(s)>9){
printf("9桁までと言ったはずだ\n");
return 1;
}
n=strlen(s);
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(s[i]<s[j]) swap(s[i],s[j]);
}
}
for(i=0;i<n;i++){
printf("%c ",s[i]);
}
putchar('\n');
return 0;
}
0059553
2006/01/10(火) 20:54:41[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
Web ページの探索アルゴリズム
1.文字列操作を使ったURLの比較アルゴリズムの作成
2.HTML文書からハイパーリンクを抽出するアルゴリズムの作成
3.Webページの構成を解析するアルゴリズムの作成
という問題です。
詳しくは http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1401.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C言語
[4] 期限: 1月11日8時まででお願いします。
以前、553としてお願いしたんですが、まだ完成していません。
明日、レポートとして提出しなければならないんです。コメントも書かないといけないんです。
誰かお願いします。
0060デフォルトの名無しさん
2006/01/10(火) 21:30:25scanf("%*d",s,/*桁数指定する変数、等*/);
っていうのはprintf限定か?
0061デフォルトの名無しさん
2006/01/10(火) 21:47:37調べてみよう。
すぐに判ることだが、scanf()系では変換結果を無視してしまう。
0062デフォルトの名無しさん
2006/01/10(火) 22:33:37[2] 問題文(含コード&リンク):
2つのグラフが同型であるかどうかを判定するプログラムを作成しなさい。ただし、入力データは講義で配布した形式(mat4,mat5,...)のものとする。また、次の条件を守ること。
* プログラムはC言語で作成して下さい。
* 同型の場合はその対応(全単射)も出力すること。
* 可能な限り速いプログラムを作成しなさい。例えば、各頂点の次数に着目したり、木を探索する際途中で探索しても無意味だと判明した時点でそれ以下の探索を中止するなど枝刈りを行うことで高速化できます。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:どちらでも可
[4] 期限: 2006年01月11日16:00
入力データ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1426.zip
0063デフォルトの名無しさん
2006/01/10(火) 22:42:46誰も作ってくれなかったための保険として書いておくと、wget という
プログラムがあって、ソースも公開されているから参考になるかもね。
でもむずいよ。
ttp://www.gnu.org/software/wget/wget.html
0064デフォルトの名無しさん
2006/01/10(火) 22:43:00プログラムを作成せよ。
・sin(π/4)の値を二倍して求めること。
・階乗と累乗の計算は各々関数で行うこと。
・πの値(3.141592)はプログラムに与える。
・重要な処理のところを、コメント文で簡単に説明する。
(お願い)
12日の朝8時50分ぐらいまでにお願いします。
0065デフォルトの名無しさん
2006/01/10(火) 22:45:42�@テンプレに従っていない
�A個人的に卒研が忙しい
�BJavaしか使えない
0066デフォルトの名無しさん
2006/01/10(火) 22:47:160067 ◆1oKmZSIAF.
2006/01/10(火) 22:48:53[2] 問題文(含コード&リンク):
RSA暗号のプログラム作成。
まず鍵ペアの作成。
(1)Nを求める N=p*q(p,qは素数) 素数は自分で入力することにする。
(2)Lを求める L=lcm(p-1,q-1) 最小公倍数
(3)Eを求める 1<E<L gcd(E,L)=1 EとLの最大公約数は1(EとLは互いに素)
(4)Dを求める 1<D<L E*D mod L =1
(暗号化) 平文^E mod N (復号化) 暗号文^D mod N
p,q、平文を自分で入力して(1)〜(4)、暗号化、復号化を出力。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2006年1月11日朝まで。
鍵ペアの作成まででも良いので、よろしくお願いします。
0068デフォルトの名無しさん
2006/01/10(火) 22:52:47拡張子 zip なのに zip じゃないとはこれいかに
0069デフォルトの名無しさん
2006/01/10(火) 22:55:24007055
2006/01/10(火) 22:57:21正しい出力する数字は以下の通りです。
[2] 問題文(含コード&リンク):
[問題]正の整数を入力し,それを各桁毎に分解し,
それらの数字を正順及び逆順に,間に1つ以上の空白をあけて出力するプログラムを書け。
例えば,12345 と入力したら,
1 2 3 4 5 (正順)
5 4 3 2 1 (逆順)
と 出力(数字だけ)することになる。
ただし,整数の桁数は最大9桁であるとする。
すでに教えてくれた方には申し訳ありませんが、もう一度よろしくおねがいします。
0071デフォルトの名無しさん
2006/01/10(火) 22:57:30でも文系だしわけわかんないからパス。
0072デフォルトの名無しさん
2006/01/10(火) 22:58:43すいません�Bは一発ギャグです
0073デフォルトの名無しさん
2006/01/10(火) 23:08:12ばか。答え↓
#include <stdio.h>
int main( void )
{
int n_digits[10] = { 0,0,0,0,0,0,0,0,0,0 };
int c, i;
while (( c = getchar() ) != EOF )
++n_digits[ c - '0' ];
for ( c = 0; c < 10; ++c ) {
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
}
putchar( '\n' );
for ( c = 10; c >= 0; --c ) {
for ( i = 0; i < n_digits[c]; ++i )
printf( "%d ", c );
}
putchar( '\n' );
return 0;
}
>>72
ナイスぼけだったと思う
0074デフォルトの名無しさん
2006/01/10(火) 23:09:51意地悪してみた。VC6では無理かもしれない。
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
#include <altorithm>
int main()
{
using namespace std;
int n;
cin >> n;
ostringstream oss;
oss << n;
string str = oss.str();
ostream_iterator<char> osit(cout, " ");
copy(str.begin(), str.end(), osit);
cout << '\n';
copy(str.rbegin(), str.rend(), osit);
cout << endl;
}
007558
2006/01/10(火) 23:12:17見逃した俺も悪いが、それぐらいの修正は自分でやってくれよ
#include <stdio.h>
#include <string.h>
#define swap(x,y) do{char temp; temp=x; x=y; y=temp;}while(0)
int main()
{
int i,j,n;
char s1[10],s2[10];
printf("9桁以内の整数を入力\n-->");
scanf("%s",s1);
if(strlen(s1)>9){
printf("9桁までと言ったはずだ\n");
return 1;
}
n=strlen(s1);
strcpy(s2,s1);
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(s1[i]>s1[j]) swap(s1[i],s1[j]);
if(s2[i]<s2[j]) swap(s2[i],s2[j]);
}
}
for(i=0;i<n;i++) printf("%c ",s1[i]);
putchar('\n');
for(i=0;i<n;i++) printf("%c ",s2[i]);
putchar('\n');
return 0;
}
0076デフォルトの名無しさん
2006/01/10(火) 23:52:29無意味な意地悪だったなw
007759
2006/01/11(水) 00:25:13データを見ましたが、難しすぎてまったくわかりません。
これを出したら、さすがにやばいので、誰かお願いします。
私を助けてください。進級したいんです。これが甘えだということもわかってます。
よろしくお願いします。
0078デフォルトの名無しさん
2006/01/11(水) 00:31:000079デフォルトの名無しさん
2006/01/11(水) 00:34:47問題の中に書いてあるwww.edu.fe.takushoku-u.ac.jpにアクセス出来ないんだが。
www.takushoku-u.ac.jpならアクセス出来るんだけど違うよねぇ
0080デフォルトの名無しさん
2006/01/11(水) 00:43:31俺HTMLよく知らないし
0081デフォルトの名無しさん
2006/01/11(水) 00:51:09過去5文字が"href="だったらダウト
008255
2006/01/11(水) 00:55:57ありがとうございます。
>>74を
#include <iostream>
#include <sstream>
#include <string>
#include <iterator>
int main()
{
using namespace std;
int n;
cin >> n;
ostringstream oss;
oss << n;
string str = oss.str();
ostream_iterator<char> osit(cout, " ");
copy(str.begin(), str.end(), osit);
cout << '\n';
copy(str.rbegin(), str.rend(), osit);
cout << endl;
return 0;
}
という風にしてみたら自分のパソコンでは無事に実行できましたが大学に送ると以下のエラーが出ました。
work.cpp: In function `int main()':
work.cpp:15: implicit declaration of function `int copy(...)'
work.cpp:17: warning: cannot pass objects of type `reverse_iterator' through `...'
work.cpp:17: warning: cannot pass objects of type `reverse_iterator' through `...'
***error*** コンパイルできませんでした
何度もすみませんがまたよろしくお願いします。
0083デフォルトの名無しさん
2006/01/11(水) 01:37:02[2] 問題文(含コード&リンク): headコマンドを実装せよ
[3] 環境
[3.1] OS:WinXP
[3.2] BCC無償版
[3.3] 言語: C
[4] 期限: 2006/01/12
http://proxy.f2.ymdb.yahoofs.jp/users/ccb552f0/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/head.c.c?bcgtoOEBR_MiPR_O
↑
にソースをアップさせていただきました。
このソースに、コマンドラインから渡したパラメータを一つないし二つのみに限定し
三つ以上渡してしまった場合はエラー表示をさせるという機能を追加したいのですが
どうすればよいのでしょうか?
お手数でなければ、ソースにコメントをつけてくださると助かります。
不躾な御願いかと思われますが何卒よろしく御願いします。
0084デフォルトの名無しさん
2006/01/11(水) 01:51:220085デフォルトの名無しさん
2006/01/11(水) 01:53:000086デフォルトの名無しさん
2006/01/11(水) 02:01:02アホか。それを言ったらこのスレの意義がなくなるだろが。
0087デフォルトの名無しさん
2006/01/11(水) 02:06:05#include <algorithm>
#include <string>
#include <functional>
struct print : public std::unary_function< const char&, std::ostream& > {
std::ostream& operator()(const char& t) const {
return std::cout << t << ((t == '\n') ? "" : " ");
}
};
int main(int argc, char* argv[]) {
if (argc < 2) {
std::cout << "9" << std::endl;
return 1;
}
std::string str(argv[1]);
if (str.length() > 9) {
std::cout << "9" << std::endl;
return 1;
}
std::for_each(str.begin(), str.end(), print())('\n');
std::for_each(str.rbegin(), str.rend(), print())('\n');
return 0;
}
0088デフォルトの名無しさん
2006/01/11(水) 02:08:360089デフォルトの名無しさん
2006/01/11(水) 02:15:12まったく手がつかずに困っています。
0090デフォルトの名無しさん
2006/01/11(水) 02:18:25Pascalの宿題は俺にやらせろ!!Part1
http://pc8.2ch.net/test/read.cgi/tech/1089719714/
0091デフォルトの名無しさん
2006/01/11(水) 02:19:55ありがとうございます!!
0092デフォルトの名無しさん
2006/01/11(水) 05:35:59if(argc>3)
return 0;
0093デフォルトの名無しさん
2006/01/11(水) 06:03:38今まで何を習ってきたのか
ここで甘えても何の進歩にもならない
また同じ事を繰り返すだけ
0094デフォルトの名無しさん
2006/01/11(水) 07:32:21[2] 問題文(含コード&リンク):
nを入力すると、n!を計算して出力するプログラムを再帰を用いて作りなさい。
(nを読み込む時に、fgets(), sscanf() を用いること。)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2006/01/13
単純だとは思いますが、どうかよろしくお願いします。
0095デフォルトの名無しさん
2006/01/11(水) 08:43:230096デフォルトの名無しさん
2006/01/11(水) 09:57:21#include <stdio.h>
int kai(int n)
{
if(n==1) return n;
else return n * kai(n-1);
}
int main()
{
int a;
char s[10];
printf("数字入れなはれ(´・ω・) ");
fgets(s,sizeof(s),stdin);
sscanf(s,"%d",&a);
if(a<=0) printf("\nまたまたご冗談を(´・д・`)");
else printf( "\n%d の階乗は %d ですよ.\n", a, kai(a));
return 0;
}
0097デフォルトの名無しさん
2006/01/11(水) 09:57:56#include <stdio.h>
unsigned get_factorial( unsigned n )
{
if ( n == 1 || n == 0 ) return 1;
return n * get_factorial( n-1 );
}
int main( void )
{
char buf[ 1024 ];
unsigned n;
printf( "Input n > " );
fgets( buf, sizeof(buf), stdin );
sscanf( buf, "%u", &n );
printf( "%u! = %u\n", n, get_factorial(n) );
return 0;
}
0098デフォルトの名無しさん
2006/01/11(水) 10:31:05いきなりsizeofとか使ってきたら期待されそうだな。
0099デフォルトの名無しさん
2006/01/11(水) 12:20:55こう書かなくても平気?
0100デフォルトの名無しさん
2006/01/11(水) 12:25:45[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する。
配列にデータを読み込む関数inputをmainから呼んで入力を行い
データを書き出す関数outputを呼んで出力するプログラムを
配列で呼んで配列で受け取るやりかたで作成せよ
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年1月13日
[5] その他の制限:昔ここで教えて貰ったんですけど、ソースプログラムが
違うって言われたのでおねがいします。
0101デフォルトの名無しさん
2006/01/11(水) 12:31:10[2] 問題文(含コード&リンク):
二次元渦の運動方程式をつかって二対の渦の運動を数値的に求める。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年1月20日
[5] その他の制限:gnuplot
■ このスレッドは過去ログ倉庫に格納されています