トップページ⇒tech
1001コメント428KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/01/09(月) 10:02:47
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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:47

http://ugzone.com/flash/flash/2get.html

オラオラ、たまちゃん様が2getしちゃうぞ〜?
〜⌒〜⌒〜⌒〜/⌒\〜⌒〜
⌒〜⌒〜⌒〜/  `・ω)ミ
〜⌒〜⌒〜⌒〜 U彡〜⌒〜⌒〜⌒
〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜⌒〜
0003デフォルトの名無しさん2006/01/09(月) 10:17:15
>>1
乙
0004デフォルトの名無しさん2006/01/09(月) 10:38:38
[1] 授業単元:情報処理
[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
[1] 授業単元:情報処理
[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] その他の制限:なし
0006デフォルトの名無しさん2006/01/09(月) 10:49:13
>>4
>>5
間違えました。[4] 期限:2006年1月10日16時です。
0007デフォルトの名無しさん2006/01/09(月) 11:20:15
コピペ乙
0008デフォルトの名無しさん2006/01/09(月) 11:47:20
p = プッチ神父(2^M);
0009デフォルトの名無しさん2006/01/09(月) 14:45:02
>>4
数字、英字の前後には半角スペースを入れるように。
0010デフォルトの名無しさん2006/01/09(月) 14:47:13
>>9
俺基準?
0011デフォルトの名無しさん2006/01/09(月) 15:03:51
>>10
世間共通基準じゃないの?
教科書、論文もそうなってるし。
0012デフォルトの名無しさん2006/01/09(月) 15:27:44
>>5
実行にかなり時間がかかること、メモリを結構(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:35
フェルマーとかその他色々とか
0014デフォルトの名無しさん2006/01/09(月) 18:08:15
めるせんぬ数
0015デフォルトの名無しさん2006/01/09(月) 19:04:36
[1] 授業単元:人工知能
[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|
++++++++++++++++++++++++++++++++
0016152006/01/09(月) 19:06:47
すいません、前スレでも質問したのですが
切羽詰まっているのでこちらでも質問させてください。
卒業かかってるのでわかる方お願いします。。・;+゜・(ノД`):・゜+:・。
0017デフォルトの名無しさん2006/01/09(月) 19:30:44
>>15
A*の参考コード
ttp://www.geocities.com/jheyesjones/astar.html
0018デフォルトの名無しさん2006/01/09(月) 23:16:14
>>14
めるせんぬはゆるせんぬ
0019デフォルトの名無しさん2006/01/09(月) 23:23:34
[1] 授業単元:コンピュータ基礎
[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
>>19

#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:02
>>19
3つの数はmain(int argc, char *argv[])じゃないの??
0022デフォルトの名無しさん2006/01/10(火) 04:10:17
前スレ落ちた唐揚げ
0023デフォルトの名無しさん2006/01/10(火) 04:57:38
sagesage
0024デフォルトの名無しさん2006/01/10(火) 05:48:09
[1] 授業単元: 情報基礎論演習
[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
>>24
今日が期限じゃん

こんなにギリギリで貼られても困る
俺は学校だし
0026デフォルトの名無しさん2006/01/10(火) 06:55:01
>>24
マルチ氏ね
0027242006/01/10(火) 08:23:23
なんとかつくってもらえないですか?
期限ギリギリに課題にきずいて焦ってマルチになってしまったのですが・・・。
0028デフォルトの名無しさん2006/01/10(火) 10:16:24
日本語も満足に打てない様じゃ
一生PCの電源点けないほうがいいんじゃない
0029デフォルトの名無しさん2006/01/10(火) 10:24:55
[1] 授業単元:計算機数学
[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:20
焦って「はわわー」と(ry
0031デフォルトの名無しさん2006/01/10(火) 12:08:19
[1] 授業単元: C言語
[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
風邪で熱っぽい漏れが作ったぞ。

で、24はまだいるのか?
マルチしてるようだし、どっかで答えてもらったか?
0033デフォルトの名無しさん2006/01/10(火) 12:18:35
>>31
ダメってことないけど、ぱっと見でめんどくさそうなのは敬遠されがちだね。
せめて黄金分割法の説明してくれない限り、誰も手を出さないんでないかな。
0034デフォルトの名無しさん2006/01/10(火) 12:19:07
[1] 授業単元:プログラム基礎
[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
>>34
同じだったら?
0036デフォルトの名無しさん2006/01/10(火) 12:40:03
//>>34
//取り敢えず同じだったら'='を出力してみる。
#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(' ');
}
}
0037342006/01/10(火) 12:56:38
>>36
どうも有難うございますm(__)m
株価が同じ場合であったときのことは記載されていなかったので、
教授に聞いてこようかと思います。
0038デフォルトの名無しさん2006/01/10(火) 13:24:08
>>31
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1420.txt
かなりテキトーに作ってる。
ttp://gakuen.gifu-net.ed.jp/~contents/museum/golden/page62_5.html
この辺を参考にしたんで、手法が違ってるようなら勝手に直しとけ。
0039242006/01/10(火) 14:34:15
まだ答えてもらってないです。
教えてほしいです。お願いします。
0040322006/01/10(火) 15:09:24
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1421.c
0041242006/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
         (ゞヘ、   | |
0043322006/01/10(火) 15:49:13
あー本当だ。
全然気付かなかった。
修正版↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1422.c
0044デフォルトの名無しさん2006/01/10(火) 15:57:02
>角が白くなったり黒くなったりします。

あ?
あーまだバグってんな。
0045322006/01/10(火) 16:23:03
削除キー設定して無かったから消せやしねえ。

で、vol0.03。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1423.c
こうなったら、どこまで行くか試してみるのも一興か。
0046312006/01/10(火) 16:24:06
>>38さんありがとうございます。
コンパイルしたところ、下のようなエラーが出てしまうのですが、どこか間違っているのでしょうか?
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
0047322006/01/10(火) 16:36:39
漏れの事かと思ってコンパイルしてエラー確認しちまったよ。>46
0048デフォルトの名無しさん2006/01/10(火) 16:52:05
>>46
gcc ougon.c -lm
        ~~~~多分この辺
0049242006/01/10(火) 17:15:16
32さんありがとうございます。おかげで課題を終えることができそうです。
ほんとにありがとうございました。
0050デフォルトの名無しさん2006/01/10(火) 17:19:38
[1] 授業単元:基礎プログラミング演習

[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日まで
0051312006/01/10(火) 17:29:10
>>47 申し訳ありませぬ
>>48 ありがとうございます。ご指摘の通りでした。

>>31をコンパイルして実行できたのですが、ループが3,4回くらいで終わるのは
仕様でしょうか?
0052デフォルトの名無しさん2006/01/10(火) 17:50:56
[1] 授業単元:プログラミング
[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
>>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:41
>>52
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1424.txt
普通にループさせてみた

>>53
すばらしい。
0055デフォルトの名無しさん2006/01/10(火) 18:51:13
[1] 授業単元:プログラミング1
[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
>>51
仕様。その回数が悪ければアルゴリズムとして多分紹介されない。
意図的にループ回数が長くなりそうな関数を用意したんで同様に突っ込んでみたら?
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:10
>>55
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1425.txt
てきとーに作ってみた。

scanfの"%9s"の9を、#defineしたもので置き換えたかったんだが
これってどうやるんだっけ?忘れてしまった。
0058デフォルトの名無しさん2006/01/10(火) 19:57:32
>>55
仕様通り「分解」が面倒なので、ズルをした
#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;
}
00595532006/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:25
>>57
scanf("%*d",s,/*桁数指定する変数、等*/);
っていうのはprintf限定か?
0061デフォルトの名無しさん2006/01/10(火) 21:47:37
>>60
調べてみよう。
すぐに判ることだが、scanf()系では変換結果を無視してしまう。
0062デフォルトの名無しさん2006/01/10(火) 22:33:37
[1] 授業単元:情報処理
[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
>>59
誰も作ってくれなかったための保険として書いておくと、wget という
プログラムがあって、ソースも公開されているから参考になるかもね。
でもむずいよ。
ttp://www.gnu.org/software/wget/wget.html
0064デフォルトの名無しさん2006/01/10(火) 22:43:00
・sin(x)のマクローリン展開から√2の近似値を計算する
 プログラムを作成せよ。

・sin(π/4)の値を二倍して求めること。

・階乗と累乗の計算は各々関数で行うこと。

・πの値(3.141592)はプログラムに与える。

・重要な処理のところを、コメント文で簡単に説明する。

(お願い)

12日の朝8時50分ぐらいまでにお願いします。
0065デフォルトの名無しさん2006/01/10(火) 22:45:42
やらない理由
�@テンプレに従っていない
�A個人的に卒研が忙しい
�BJavaしか使えない
0066デフォルトの名無しさん2006/01/10(火) 22:47:16
いやいや、�Aはともかく�Bならなんでこのスレをみてるんだよ ww
0067 ◆1oKmZSIAF. 2006/01/10(火) 22:48:53
[1] 授業単元:暗号理論
[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
>>62
拡張子 zip なのに zip じゃないとはこれいかに
0069デフォルトの名無しさん2006/01/10(火) 22:55:24
拡張子をexeにすると開けるお
0070552006/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
ごめん、Windows じゃない。でも .tar.gz だったから開けた。
でも文系だしわけわかんないからパス。
0072デフォルトの名無しさん2006/01/10(火) 22:58:43
>>66
すいません�Bは一発ギャグです
0073デフォルトの名無しさん2006/01/10(火) 23:08:12
>>70
ばか。答え↓

#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
>>70
意地悪してみた。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;
}
0075582006/01/10(火) 23:12:17
>>70
見逃した俺も悪いが、それぐらいの修正は自分でやってくれよ
#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
>>74
無意味な意地悪だったなw
0077592006/01/11(水) 00:25:13
>>63
データを見ましたが、難しすぎてまったくわかりません。
これを出したら、さすがにやばいので、誰かお願いします。

私を助けてください。進級したいんです。これが甘えだということもわかってます。
よろしくお願いします。
0078デフォルトの名無しさん2006/01/11(水) 00:31:00
進級ってことは卒業するときにまた頼ってくるのかな・・・
0079デフォルトの名無しさん2006/01/11(水) 00:34:47
>>77
問題の中に書いてあるwww.edu.fe.takushoku-u.ac.jpにアクセス出来ないんだが。
www.takushoku-u.ac.jpならアクセス出来るんだけど違うよねぇ
0080デフォルトの名無しさん2006/01/11(水) 00:43:31
だってHTMLからハイパーリンク抽出するのめんどいんだもん
俺HTMLよく知らないし
0081デフォルトの名無しさん2006/01/11(水) 00:51:09
1字1字読んで
過去5文字が"href="だったらダウト
0082552006/01/11(水) 00:55:57
>>73-75
ありがとうございます。
>>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
[1] 授業単元:プログラミング
[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:22
それくらいは自分でやれよ
0085デフォルトの名無しさん2006/01/11(水) 01:53:00
すみません・・・
0086デフォルトの名無しさん2006/01/11(水) 02:01:02
>>84
アホか。それを言ったらこのスレの意義がなくなるだろが。
0087デフォルトの名無しさん2006/01/11(水) 02:06:05
#include <iostream>
#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:36
"9" -> "9桁以上の正整数を引数うんぬん"
0089デフォルトの名無しさん2006/01/11(水) 02:15:12
cではなくてPascalなんですが、お願いできないでしょうか?
まったく手がつかずに困っています。
0090デフォルトの名無しさん2006/01/11(水) 02:18:25
>>89
Pascalの宿題は俺にやらせろ!!Part1
http://pc8.2ch.net/test/read.cgi/tech/1089719714/
0091デフォルトの名無しさん2006/01/11(水) 02:19:55
>>90
ありがとうございます!!
0092デフォルトの名無しさん2006/01/11(水) 05:35:59
>>83

if(argc>3)
return 0;
0093デフォルトの名無しさん2006/01/11(水) 06:03:38
>>77
今まで何を習ってきたのか
ここで甘えても何の進歩にもならない
また同じ事を繰り返すだけ
0094デフォルトの名無しさん2006/01/11(水) 07:32:21
[1] 授業単元:プログラミング
[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:23
既出
0096デフォルトの名無しさん2006/01/11(水) 09:57:21
>>94


#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
>>94

#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
 fgets(s,sizeof(s)-1,stdin);

こう書かなくても平気?
0100デフォルトの名無しさん2006/01/11(水) 12:25:45
[1] 授業単元:プログラミング
[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
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
二次元渦の運動方程式をつかって二対の渦の運動を数値的に求める。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年1月20日
[5] その他の制限:gnuplot
■ このスレッドは過去ログ倉庫に格納されています