2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2007/01/13(土) 13:51:48
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 80代目
http://pc10.2ch.net/test/read.cgi/tech/1166969820/

2 :デフォルトの名無しさん:2007/01/13(土) 14:52:03
              ,:/:::::::::::::;;;;;: -――‐- :;;;;;;`ヽ、
         ,:'/:::::::::::::::::/u      ,  ,  ``-;ヽ
         ,:':/:::::::::::::::::/  '⌒`ー‐'| | |`ー-‐、u|::|
        ,:'/:::::::::::::::::/u /⌒ヽ     /⌒ヽ !::! ;
       ,' l--、:::::::/   l  O | lj  | O | '、l ,:
       /´,―、ヽ:/     ヽ、,r‐'-、:::::::::ゝ--く  l ;
     .;'/ /ニ_ノ |   ..::::::::{  r,、 ヽ / ,r-, ノ::.. '、;
     ; | l  '-,        / ヽ !},. ---'し'_,ヘ   :..ヽ':, 
       ':,!  `‐'   u ヽ  ,. -'"´_,. ----,、 ヽ、u  l ;
        ':,ヽ_ノ u   ノ'" ,. -''" ̄ ̄ ̄ ヽ. ヽ  |
        .,: | lj      /  /_,. ---、,. -----、|  |  / ;.,
    --―'ヽ     /  '-------―――‐''" ノ /``ー- 、_
        ヽ、u '`ljー-----―――

3 :デフォルトの名無しさん:2007/01/13(土) 15:28:31
[1] 授業単元: 情報論
[2] 問題文(含コード&リンク):
優先的選択モデルによるSFN(Scale Free Network)の生成
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3373.txt
↑の/* 自分で書いてください*/の部分の穴埋め
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C++
[4] 期限: 1/15
[5] その他の制限:
使用する方法:ソート、再帰的アルゴリズム、線形リスト、動的なメモリの確保

再度投稿しますが、どうか宜しくお願いいたします。
長いので面倒かも知れませんが、ヒントだけでも戴ければと…。

4 :デフォルトの名無しさん:2007/01/13(土) 18:06:17
>前スレ998
>void swap(int*x,int*y){if(x!=y)*x^=*y^=*x^=*y;}

スマートでもなんでもない。これは正しくないプログラム。
ひとつの式の中で同じ変数を複数回書き換えたとき、結果は未定義になる。

常識だから下くらいは読んどけ。
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html

5 :デフォルトの名無しさん:2007/01/13(土) 18:10:17
http://ja.wikipedia.org/w/index.php?title=XOR%E4%BA%A4%E6%8F%9B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0&oldid=9203181
人に教えるプログラムにXORはやめてほしい

6 :デフォルトの名無しさん:2007/01/13(土) 18:12:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
課題1のプログラムに、さらに、検索キーとして年齢を入力し、
入力と一致した場合、そのデータの直後に新しい要素を挿入するプログラム
を追加する。
また、検索キーとして、名前を入力し入力と一致した場合、
そのデータを削除するプログラムを作成する。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) WinXP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) BorlandC++5.5
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)次の月曜日



7 :6:2007/01/13(土) 18:16:01
課題1は多分あっていれば、↓です。よろしくおねがいします。
#include <stdio.h>
#include <stdlib.h>
#define N 10
typedef struct {
char *name;
int age;
} Card;
typedef struct _tree{
Card card;
struct _tree *next;
struct _tree *prev;
} Tree;
Card meibo[] = {{ "Takahashi", 14 },{ "Kobayashi", 15 },{ "Hosokawa", 17 },
{ "Sugimoto", 18 },{ "Sawai", 19 },{ "Itou", 20 },{ "Kawai", 22 },{ "Ishikura", 24 },
{ "Oda", 25 },{ "Nakamura", 28 },};
int main(void) {
Tree* root = NULL;
Tree* p;
Tree* a;
int i, k;
int n = sizeof(meibo)/sizeof(meibo[0]);
int age;int head, tail, mid;


8 :6:2007/01/13(土) 18:16:38
for (i=n-1 ; i>=0 ; i--){
p=(Tree*)malloc(sizeof(Tree));
p->card = meibo[i];
p->next = root;
if(root != NULL){
root->prev = p ;
}
else{a = p;}
root = p;
}
p = root;
while (p != NULL){
printf("%20s %d\n", p->card.name, p->card.age);
p = p->next;
}
printf("---------------------------\n");
p = a;
while (p != NULL){
printf("%20s %d\n", p->card.name, p->card.age);
p = p->prev;
}
return 0;
}

9 :デフォルトの名無しさん:2007/01/13(土) 19:28:12
ソースの圧縮
http://www.geocities.jp/c_cpp_cs/code/code.html

10 :デフォルトの名無しさん:2007/01/13(土) 19:29:49
そんなもの使わずに素直にアップロードしてくれ

11 :デフォルトの名無しさん:2007/01/13(土) 19:31:07
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク): ファイルを読み込み、英字のみか、先頭が
英字で二文字目以降が英字または数字である
文字列を出力するプログラムを作りなさい。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: mingw
 [3.3] 言語:C++
[4] 期限: 1/17
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします

12 :デフォルトの名無しさん:2007/01/13(土) 19:39:39
>>11
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
    for (int c = cin.get(); cin.good(); c = cin.get()) {
        if (isalpha(c)) {
            cout.put(c);
            for (c = cin.get(); cin.good() && isalnum(c); c = cin.get())
                cout.put(c);
            if (cin.good()) cin.unget();
            cout.put('\n');
        }
    }
    return 0;
}

13 :前スレ972:2007/01/13(土) 19:40:31
>>4
コンパイラの未定義処理とか初めて知ったよ
教えてくれてありがとう。

>>5
並列処理にするとどちらの処理が先に終わるかによって結果がかわるから
並列処理不可能なのか。それも知らなかった。

14 :デフォルトの名無しさん:2007/01/13(土) 19:47:10
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク): テキストファイルを読み込み、文字列を配列に代入せよ
[3] 環境
 [3.1] OS:Windowsxp
 [3.2] コンパイラ名とバージョン:.NET ver1.1
 [3.3] 言語: C
[4] 期限: 2007年1月14日
[5] その他の制限:ファイルポインタ程度まで習っていますよろしく願いします

15 :デフォルトの名無しさん:2007/01/13(土) 19:53:03
>>14#include <stdio.h>

int main(int ac, char **av)
{
    int c;
    char a[1];
    if (ac > 1 && freopen(av[1], "r", stdin) == NULL) {
        perror(av[1]);
        return 1;
    }
    if ((c = getchar()) != EOF)
        a[0] = (char)c;
    return 0;
}


16 :デフォルトの名無しさん:2007/01/13(土) 19:56:56
>>15
ありがとうございます

ただそのあとソートしたいので配列一つ一つに一文字ずつアルファベットを入れたいんです
注文多くてすみません

17 :デフォルトの名無しさん:2007/01/13(土) 19:58:00
>>16
>>1
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。

18 :デフォルトの名無しさん:2007/01/13(土) 19:59:46
注文が多い分にはいいが、後から注文を追加するのはうざいな

19 :デフォルトの名無しさん:2007/01/13(土) 20:01:04
>>17
テンプレしっかり読まずに書きこんでしまい申し訳ありません
ありがとうございました

20 :デフォルトの名無しさん:2007/01/13(土) 20:41:55
>>9
そのサイトの管理者さん?
そういう独自形式でソースを圧縮すると、そのサイトがつぶれた時に解読できなくなって
情報価値がなくなるから止めれ。どうしてもやるならせめてgzipヘッダか何か付けてくれ。

他の皆さんも >9 は使わないようにお願いします。

21 :デフォルトの名無しさん:2007/01/13(土) 20:45:27
XZDLTsJgFIT3JLxDX8ONr2PcuXbVOT9UsBq8BC1egoWGahGMC40Gig8zvbnyFTz/T9y4mZzFzDcnQ9w
TS8obJaHp6V0v4/osaPwuMaRc/qzHXrtFawuIjmodPjdHWZlPyvWASCk5zZrySbko79L6Y0mMKCHxSB
/8zz8hEuKdose4Ggkxb9Jpky0sCqdERgycTomZVlemWz68Fpu49BMX/zPYipDSrxYTCizQV9qT+/Nas
xShdJxNzX3i1tow2zvcP6CJaAyNr4giH1pdRcS5jSndsbS73SpWV3aTm2C7hjK93R2PeCnyL8r2Ue3o
udY5cfwdR24m/WBjh1DOLw==


22 :デフォルトの名無しさん:2007/01/13(土) 20:47:37
XZDLTsJgFIT3JLxDX8ONr2PcuXbVOT9UsBq8BC1egoWGahGMC40Gig8zvbnyFTz/T9y4mZzFzDcnQ9w
TS8obJaHp6V0v4/osaPwuMaRc/qzHXrtFawuIjmodPjdHWZlPyvWASCk5zZrySbko79L6Y0mMKCHxSB
/8zz8hEuKdose4Ggkxb9Jpky0sCqdERgycTomZVlemWz68Fpu49BMX/zPYipDSrxYTCizQV9qT+/Nas
xShdJxNzX3i1tow2zvcP6CJaAyNr4giH1pdRcS5jSndsbS73SpWV3aTm2C7hjK93R2PeCnyL8r2Ue3o
udY5cfwdR24m/WBjh1DOLw==?

23 :デフォルトの名無しさん:2007/01/13(土) 20:48:12
C言語ておk

24 :デフォルトの名無しさん:2007/01/13(土) 20:48:37
いや、冗談抜きにマジでその文字列うざいんだけど?
普通にうpロダ使えって。まぁそういうとトーマスはファイル化するのが
面倒くせぇだの言うが、嫌なら答えなくて良いから

25 :デフォルトの名無しさん:2007/01/13(土) 21:00:27
>>9使いたいやつは変換したのをファイルに保存してうpろだに上げてくれ
ついでになんか注意書きをつけてくれると嬉しい

26 :デフォルトの名無しさん:2007/01/13(土) 21:00:37
同意

少なくとも携帯端末やコンソールなどのあまり強くない
環境から見るのにはとても不向きだし、プログラムで処理を
かけるのにも不向き。

27 :デフォルトの名無しさん:2007/01/13(土) 21:03:53
>>25
9 で変換してうpする位なら、そのままうpした方がいいのでは。

28 :デフォルトの名無しさん:2007/01/13(土) 21:08:08
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
うpロダ使え、以上。

29 :デフォルトの名無しさん:2007/01/13(土) 21:14:41
>>20
今世紀最大の釣り

30 :20:2007/01/13(土) 21:18:45
>>29
釣りではないですよ。

31 :デフォルトの名無しさん:2007/01/13(土) 21:25:08
>>30
マジレスですか?

32 :デフォルトの名無しさん:2007/01/13(土) 21:25:55
特定防止には役立つだろ

33 :デフォルトの名無しさん:2007/01/13(土) 21:27:59
>>20
> そのサイトがつぶれた時に解読できなくなって
情報失われるのはロダ使っても全く同じじゃね?


34 :デフォルトの名無しさん:2007/01/13(土) 21:28:40
俺もソース圧縮の意味がわからない
うpしたほうがいいと思われ

35 :デフォルトの名無しさん:2007/01/13(土) 21:31:05
>>33
仮に手元に圧縮されたコードがあってそれを解読するのに
独自形式じゃ解読困難または不可能って事だろ

そういう意味でgzipっていってるんじゃないのか?
まあどちらにしろソース圧縮の意味を見出せないけどな俺は

36 :デフォルトの名無しさん:2007/01/13(土) 21:33:15
じゃあ、管理人が圧縮アルゴリズムを公開すれば問題ないって事だな

37 :デフォルトの名無しさん:2007/01/13(土) 21:35:20
まあ適当で

38 :デフォルトの名無しさん:2007/01/13(土) 21:36:11
>>36
JavaScriptだからフツーにそのページから落とせるけどな。
そのサイトのオーナが書いたコードではなく、元は
ttp://www.onicos.com/staff/iz/amuse/javascript/expert/
みたいよ。

zlibの圧縮解凍アルゴリズムと基本的には同じっぽいが、
gzipヘッダをつけてなかったりと、要するに互換性が無いようだ。

39 :デフォルトの名無しさん:2007/01/13(土) 21:36:44
これだけ不満を言う人が居るのを見て、まだあなたは使いますか?

ってだけでしょ。それでも使うなら文句は言わんよ。

40 :デフォルトの名無しさん:2007/01/13(土) 21:37:02
無駄な手間を省くだけでも十分だろ。きめぇ文字列を書くなよw

41 :デフォルトの名無しさん:2007/01/13(土) 21:38:20
使う使わない以前にこの流れはワロタ

42 :デフォルトの名無しさん:2007/01/13(土) 21:38:25
互換性だけが問題なら、
gzip -c foo.c | base64
したのならおk?


43 :デフォルトの名無しさん:2007/01/13(土) 21:40:22
つーかここは議論スレじゃなくて宿題を片付けるスレだぜ?

44 :デフォルトの名無しさん:2007/01/13(土) 21:41:52
>>42 >>26 とか

45 :デフォルトの名無しさん:2007/01/13(土) 21:42:04
はい終了ー。

46 :20:2007/01/13(土) 21:42:25
>>36
個人的には、アルゴリズム公開と言ったレベルではなく、
解凍プログラムが普及してる位のレベルを望みたい。

>>42
漏れ的には許容範囲だけど、>26 あたりの意見も酌んでほしい。

47 :デフォルトの名無しさん:2007/01/13(土) 21:42:56
はい終了ー。

48 :デフォルトの名無しさん:2007/01/13(土) 21:44:11
>>41
もう一度レス読み直したら俺もなんだか可笑しくなってきたwwww

49 :デフォルトの名無しさん:2007/01/13(土) 21:44:50
要するにどうでもいいって事だろ

50 :デフォルトの名無しさん:2007/01/13(土) 22:00:35
うんうん

51 :デフォルトの名無しさん:2007/01/13(土) 22:54:46

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

    下記の二分木探索の非再帰版を書きなさい。(再帰版は K&R に乗っているコード)
    ttp://users.kyoto-kcg.ac.jp/~k-konishi/Program/CProgram/section6-5.htm

[3] 環境
 [3.1] OS: (Windows/Linux/等々) ALL
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ALL
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)

2007年01月15日23:59まで 以降、ペナルティ

[5] その他の制限:


52 :869 ◆xkG5F/RZlA :2007/01/13(土) 23:27:54
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
   ・9×9の数独の問題を表示させ、マウスとキーボードを使い解答する。
   ・解答後に、誤っている部分(数字)を強調させる。
   ・全て正解の場合は、その旨を表示させる。
   ・解答時間を計測できるようにし、ランキング表示可能にする。
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: Borland C++ 5.02
 [3.3] 言語: C言語
[4] 期限: 2007/01/15
[5] その他の制限:

担任は、GUIを使うと楽だよ。
とか言ってました。
GUIに関しては、必要なのでしょうか?
必要なければ、使わなくても大丈夫だと思います。

よろしくお願いします。

53 :デフォルトの名無しさん:2007/01/13(土) 23:29:56
>>52
>GUIに関しては、必要なのでしょうか? 

GUIを使わずに、どうやって

>マウスとキーボードを使い

という条件を満たすつもりなの?


54 :デフォルトの名無しさん:2007/01/13(土) 23:37:02
CUIでもマウス使えるだろ!

55 :デフォルトの名無しさん:2007/01/14(日) 00:27:01
[1] CによるプログラミングV
[2] 点データから,凸包の辺を求める効率の良いプログラムを作成せよ
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] gcc 3.4
 [3.3] C
[4] 期限: 1月19日(金曜日)


56 :デフォルトの名無しさん:2007/01/14(日) 00:33:15
[1] プログラム概論
[2] ソートプログラムのうち次を作成せよ
その上で、速度を測定し、どのような違いがあるか述べよ
・バブルソート
・クイックソート
[3] 環境
 [3.1] OS: MACOS
 [3.2] gcc
 [3.3] C
[4] 期限: 1月15日
[5] その他の制限:
バブルソートはできましたが
クイックソートがうまく動かず断念しました。
よろしければ、作成時に再帰に関して、コメントを付けていただければ幸いです。
速度はn^2とn log nですよね。
間違っていたら、これも教えていただけると助かります。


57 :デフォルトの名無しさん:2007/01/14(日) 01:11:29
[1] 授業単元:
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3378.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限:2007/01/14 20:00
[5] その他の制限:特になし

よろしくお願いいたします。

58 :デフォルトの名無しさん:2007/01/14(日) 01:14:21
>>56
できたバブルソートってのを見せてくれるとうれしい

59 :デフォルトの名無しさん:2007/01/14(日) 01:25:18
[1] 授業単元: アルゴリズム論(ナップザック問題とその応用)
[2] 問題文

   (1)  (2)  (3)  (4)  (5)
A1  10  45  30  10  10

A2  20  15  10  20  18

A3  30  25  30  40  15

A4  18  15  30  10  18

(1)〜(n)のタスクと、A1〜Amの人がいます。
例えば、4人いて、タスクが5つあるとき、(1)〜(5)を実行するのにかかるコストが
上の表の通り与えられています。
そして、それぞれの人は、1つだけタスクを担当することができます。
但し、タスクが人の数より少ない場合は、タスクが与えられない人がいても構いません。
また、人の数がタスクの数より少ない場合は、余ったタスクがあっても構いません。
ただし、できるだけ多くの仕事をこなさなければなりません。
(この場合はタスクが5つ、仕事4つなので、A〜D全員が受け持たなければならない。)
このとき、コストを最小にする選択を見つけるようなプログラムを書きなさい。

[3] 環境 … Visual C++ (Visual Studio2005 Express Edition)
[4] 期限 … 2007/01/15 00:00
[5] STL使用禁止だそうです。
------------------------------------------------------------

効率のよいアルゴリズムを教えていただけないでしょうか。
よろしくお願いします。

60 :デフォルトの名無しさん:2007/01/14(日) 02:06:37
>>59
> 効率のよいアルゴリズムを教えていただけないでしょうか。 
コストが超増加性をもつなら話は別かもしれないけど
準NPにこの発言は鬼門

というわけで総当りが妥当

61 :デフォルトの名無しさん:2007/01/14(日) 02:42:29
> 効率のよいアルゴリズムを教えていただけないでしょうか。
なんか少し前にも似たようなセリフ聞いたなあ。

62 :869 ◆xkG5F/RZlA :2007/01/14(日) 02:47:32
>>53
問題文にGUIの記載が無かったので、必要ないのかも?と思いました。
どのように、マウスとキーボードを使うのかが分からず、困っています。

63 :デフォルトの名無しさん:2007/01/14(日) 04:00:38
[1] 授業単元: 情報実習
[2] 問題文(含コード&リンク):
入力される整数をカンマ編集した文字列に変換する
char edit[15];
int n;
scanf("%d", &n);
   :
   :カンマ編集処理
   :
puts(edit);
(例)
入力が1234なら1,234
入力が-1234567890なら-1,234,567,890

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2007年1月19日まで]
[5] その他の制限:
基本的な事しか習ってません。
できる限り簡単な(初級者でもわかりやすい)ものでお願いします。

64 :デフォルトの名無しさん:2007/01/14(日) 04:13:37
[1] 授業単元:情報基礎及び演習
[2] 問題文(含コード&リンク):
・データファイル(in.dat)から全体の人数、英語、数学、理科の3教科の得点を読み込む。
・各自の3科目合計点を求める。
・全体の合計、平均を英語、数学、理科、合計点について求める。
・3科目および合計点について標準偏差を求めよ。
・各自の3科目および合計について標準偏差を計算せよ。
・結果をファイル(out.dat)に保存せよ。
・データは50人分以上作成すること。
・出力結果に入れるもの
 ・各自の英数理合計の得点および偏差値
 ・全体の英数理合計の平均点および標準偏差
 ・全体の人数
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C++
[4] 期限: 可能なら、1/15 00:00 まで(過ぎてもいいです
[5] その他の制限:入出力データファイルはdat形式のみ

入力用データファイルは

50人 (全体の人数として
50 50 50 (各教科の点数 横:科目 縦:人数
51 51 51
  ・
  ・
  ・
100 100 100

という内容で作ってあります(これすらも正しく作れてるか分からないので、不備があれば指摘してください)
長文で申し訳ないですが、どう手をつければいいかすら分からないので、どうかよろしくお願いします

65 :デフォルトの名無しさん:2007/01/14(日) 05:27:43
n = $stdin.gets.chomp!
n = n.gsub(/(\d)(?=\d{3}+$)/, '\\1,')
p n

66 :デフォルトの名無しさん:2007/01/14(日) 07:30:00
>>59
それは「割り当て問題」と呼ばれることもある有名最適化問題。
(普通割り当て問題というと n = m のことが多いけれど)

基本的な解法は、人を左側、タスクを右側に置き、各人と各タスクの間に
コストを重みとする辺を張って二部グラフを構成する。
そして二部グラフの最小重みマッチングを解けば解が求まる。

二部グラフの最小重みマッチングは最小費用流問題に帰着でき、
最小費用流問題は多項式時間で解けるので、多項式時間で解ける。


>>60
授業単元だけ読んで回答するのは止めようぜ。

67 :デフォルトの名無しさん:2007/01/14(日) 07:37:04
>>51
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3381.txt

>>63
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3382.c



68 :デフォルトの名無しさん:2007/01/14(日) 08:44:56
>>3
カーナビソフトみたいで面白かったが、仕様理解能力の欠如で頓挫m(_ _)m

イメージ的には最大五差路の交差点を繋いでいくような感じだが
ノードの動的な発生がいつなのか掴めなかった
新らしい交差点の生成時にノードをメモリ上に作るのか?
交差点は既に在って名前(key)を付けていくだけなのか?
そもそも初期化部で最大ノード数分確保してしまうのは動的?          ってな感じに始まり

root-key@-keyA-keyB-・・・・とやっていくとノード毎に必ずlinkが2発生するが
このときはリンクを作らず番号振りだけ?
randで無作為に選択した2ノードのリンク張る場合に初めてリンクが発生するのか?
ノードのメモリ開放部分がcallされないが、作り込み部分はある
どこぞで関数内で自前で呼べってことか????             といった具合

再帰の形にすればかなりスッキリするがスタックは意識しなくていい????
先輩方諸氏に任せたm(_ _)m

69 :デフォルトの名無しさん:2007/01/14(日) 09:31:47
[1] 授業単元:プログラミング入門
[2] 問題文:AのテストとBのテストそれぞれ5人分の点数を入力し、AとBそれぞれの
合計、平均、最高得点者とその番号、最低得点者とその番号を出力せよ
[3] 環境
 [3.1] OS: XP home
 [3.2] コンパイラ名とバージョン:djgpp
 [3.3] 言語: C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: if,while,for.乱数,配列まで習ってます

最低得点者の出し方と番号の出し方がわからず挫折しましたorz
どうかよろしくお願いします

70 :51:2007/01/14(日) 10:24:13
>>67
ありがとうございます。

厚手がましいですが
void treeprint(struct tnode *p) の右側のツリーを表示する、
非再帰版のコードをお願いできないでしょうか?

void treeprint(struct tnode *p)
{
  if( p != NULL){
    treeprint(p->left);
    printf("%4d %s\n", p->count, p-> word);
    treeprint(p->right);
 }
}

>>51で提示したページの再帰版コードのtreeprint()はleftしかなかった・・・


71 :51:2007/01/14(日) 10:26:48
>>70の自己レスです。

×右側のツリー"を"表示する
○右側のツリー"も"表示する

すみませんがよろしくお願いします。

72 :デフォルトの名無しさん:2007/01/14(日) 12:05:17
>>69
ソース見てないが、最低値の初期値が間違ってるだけと思われ

limits.hをインクルードして
a_min=INT_MAX;
b_min=INT_MAX;
と初期化すれば良いだけと思う

一応書いてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3383.txt

73 :デフォルトの名無しさん:2007/01/14(日) 12:08:13
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):
構造体とポインタを用いてスタックを実現せよ。ただし、スタックが保持するデータは整数とする。
プログラムはキーボードから入力された文字により以下のように動作する。

i : スタックにデータの挿入(PUSH)。
d : スタックの先頭データを削除(POP)。スタックが空ならその旨を表示。
p : スタックにあるデータを先頭から順に表示。
q : 終了。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: LSI C-86
 [3.3] 言語: C
[4] 期限: 2007年1月15日まで
[5] その他の制限: 特になし


試しに色々作ってみたんですが、なんかどれも思い通りに動いてくれなくて困ってます。
途中まで作ったやつをうpしておくので、こちらの意図を汲み取っていただければ幸いです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3384.txt


74 :69:2007/01/14(日) 12:21:55
>>72
わざわざ書いてくださって
ありがとうございます
でも、授業では本当に基本的にな事しか習っていないので
limits.hとか難しいのを使わずに
出来る方法はありますか・・・?

ここまでは一応書けました・・・
ttp://up.spawn.jp/file/up65616.txt

75 :デフォルトの名無しさん:2007/01/14(日) 12:38:57
>>74
何点満点かワカランが100点満点だとすると
kokugo_saitei=0;
sugaku_saikou=0;

kokugo_saitei=100;
sugaku_saikou=100;
としておけばINT_MAXでなくていい


76 :デフォルトの名無しさん:2007/01/14(日) 12:39:49
>>75
ごめ
sugaku_saikouではなくてsugaku_saiteiな

77 :69:2007/01/14(日) 12:45:21
>>75
わかりにくい変数でもうしわけないですorz

えっと、問題文を読む限りだと点数の上限が書かれていないのですが、
そういう場合だと、どのようにすればよろしいんでしょうか・・?

78 :デフォルトの名無しさん:2007/01/14(日) 12:46:29
>>77
おれも判らなかったからINT_MAXにしたw

79 :デフォルトの名無しさん:2007/01/14(日) 12:49:23
>>6をおねがいしますorz

80 :デフォルトの名無しさん:2007/01/14(日) 12:51:16
初期値が0なのがまずいので
最初の人の点数でもいれとけばOKっぽい

81 :デフォルトの名無しさん:2007/01/14(日) 12:52:15
>>79
課題1ってどこ?

82 :69:2007/01/14(日) 12:54:17
>>78
なるほどorz

今期最後の課題なので今まで習った
ことを使えば出来ると言ってたんですけど
もしかして罠問題なのかな・・・

83 :69:2007/01/14(日) 12:56:11
>>80
ありがとうございます
えっと
int ,kokugo_saitei=[0];
ってことでしょうか・・?
ちょっとやってみます

84 :デフォルトの名無しさん:2007/01/14(日) 12:56:35
>>82
>>79

85 :デフォルトの名無しさん:2007/01/14(日) 12:58:58
>>83
いぁいぁfor文の中で最初に入力されたときのみにsaiteiに値を入れる
メンドイから直ししてUPする しばし待たれよ

86 :69:2007/01/14(日) 13:08:11
やってみたのですがエラーが出て失敗でしたorz

>>85
わざわざすみません
お手数おかけします

87 :デフォルトの名無しさん:2007/01/14(日) 13:20:21
>>86
おまたせ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3385.txt

88 :デフォルトの名無しさん:2007/01/14(日) 13:24:49
>>81

>>6-8
ですorz

89 :69:2007/01/14(日) 13:26:56
>>87
ありがとうございます
後はフローチャート書けば課題終了です
本当に助かりました
いろいろとお騒がせしてすみませんでしたorz

90 :デフォルトの名無しさん:2007/01/14(日) 14:06:50
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3386.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし

よろしくお願いします

91 :デフォルトの名無しさん:2007/01/14(日) 14:10:46
>>69
うちの身内かもしれないwwwwwwww
研修?

92 :51:2007/01/14(日) 14:45:38
>>51です。

再質問時に元質問と情報が断片化してしまったので再度整理します。

回答は、すでに>>67様がお答え下さり感謝しております。

私のミスで元の問題に不手際がありました。
念のため、参照先させて頂いたページが悪いとは言っていません。
作者の意図でオリジナルとは違うもの(学習用に穴埋め)となっていました。

-----再度---------------------------------------------------------

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):

    下記の二分木探索の非再帰版を書きなさい。(再帰版は K&R に乗っているコード)
    【訂正】ttp://stuff.mit.edu/iap/c/week2_day1/tree.c
    【訂正】この二分木のtreeprint()の非再帰版を記述せよ。

[3] 環境
 [3.1] OS: (Windows/Linux/等々) ALL
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) ALL
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)

2007年01月15日23:59まで 以降、ペナルティ

[5] その他の制限:

お手数おかけしますがよろしくお願いします。


93 :デフォルトの名無しさん:2007/01/14(日) 14:48:25
>>90
#include <stdio.h>
#include <ctype.h>

int main()
{
    int c;
    while ((c = getchar()) != EOF) {
        if (isalpha(c)) {
            putchar(toupper(c));
            while ((c = getchar()) != EOF && isalpha(c))
                putchar(c);
            ungetc(c, stdin);
        } else {
            putchar(c);
        }
    }
    return 0;
}

94 :デフォルトの名無しさん:2007/01/14(日) 15:02:10
あ、
>4.宣言した変数名にコメントを書く。(意味がわかる名前を付けよう) (3点)
なのか。
変数一個しか使ってないし、こんなのにコメントつけてもマヌケなだけだが。

int c; /* getchar()の戻り値(入力された文字またはEOF)を格納する。 */

とでもしてくれ。

95 :90:2007/01/14(日) 15:07:54
>>94
ありがとうございました。
まだ課題はあるのですがこれでなんとかなりそうです。

96 :デフォルトの名無しさん:2007/01/14(日) 15:11:22
>>51
よくわからんが treeprint だけ答えればいいのか?

#define MAXSIZE 1000
void treeprint(struct tnode *p)
{
  int top = 0;
  struct tnode *stack[MAXSIZE];
  stack[top++] = p;
  while (top > 0) {
    p = stack[--top];
    if (!p) continue;
    if (p->count > 0) {
      stack[top++] = p->left;
      p->count *= -1;
      stack[top++] = p;
    } else {
      p->count *= -1;
      printf("%4d %s\n", p->count, p->word);
      stack[top++] = p->right;
    }
  }
}

97 :51:2007/01/14(日) 15:19:33
>>96
どうもありがとうございます!

たどってきたノードをスタックに記憶すればOKですね。
難しく考えてました。
参考にさせていただきます。


98 :デフォルトの名無しさん:2007/01/14(日) 15:22:51
>6 >79 >88
>7-8でアヤシイとこがある
Crad構造体のnameがポインタ宣言になっていて実体は初期化時にはとられるが
初期化以外ではアドレス格納エリアしかないが?挿入時には別メモリを確保するのか?
メンドイから20Byte在るものして書いた char *name; ⇒ char name[20];

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3387.c



99 :デフォルトの名無しさん:2007/01/14(日) 15:24:15
>>93
複雑杉。
こっちのほうが簡単。

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    int c, pc = 0;

    while ((c = getchar()) != EOF) {
        if (! isalpha(pc))
            c = toupper(c);
        putchar(c);
        pc = c;
    }
    return 0;
}

100 :51:2007/01/14(日) 15:28:22
>>96
たびたびすみません。

お答えを頂いておきながら恐縮ですが
p->countを比較する理由がよくわかりません。

どういう順番で表示されるのでしょうか?
制限があるPCなので試せないのでスミマセン。


101 :デフォルトの名無しさん:2007/01/14(日) 15:37:50
>>100
もとの再帰のプログラムを見れば分かるが、再帰中の
頂点 p の状態には以下の二つが存在する:

1. 次に左側頂点を見る
2. 次に右側頂点を見る

スタックを用いてループ展開をするには、いまどちらの
状態にあるのかを管理しないといけない。そこでこの情報を
count の正負をフラグとして用いて覚えている。

102 :デフォルトの名無しさん:2007/01/14(日) 16:01:06
>>73
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3388.txt

103 :デフォルトの名無しさん:2007/01/14(日) 16:40:54
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の社員の意見にはたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異や問題を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい


104 :73:2007/01/14(日) 16:42:44
>>102
ありがとうございます!
自分で考えていたものよりもはるかにコンパクトで、無駄がないって感じですごいです。
「先頭から表示」っていうのがこちらの意図したものと逆になっていたので、自分で修正してみます。
精進します。ありがとうございました。

105 :デフォルトの名無しさん:2007/01/14(日) 16:54:47
[1] 授業単元:プログラミング入門
[2] 問題文:試験でのN人分の成績を読み込んで、平均点、最高点、最低点を出力しなさい。
また、100点満点で60点以上を合格とし、合格者数と不合格者数を表示しなさい。
[3] 環境
 [3.1] OS: XP home
 [3.2] コンパイラ名:gcc
 [3.3] 言語:c言語
[4] 期限: 本日中で是非よろしくおねがいします。

106 :デフォルトの名無しさん:2007/01/14(日) 16:59:25
[1] 授業単元: 計算物理
[2] 問題文: データを読み込んで最小値と中心値をもとめる問題です

   「データを格納する配列をつくり、forループを使い、fscanf関数でデータを順次読み込んでいく。
    その後y軸データについて順次解析を行う。最小値を求めるには、最小値を入れる変数を宣言しておき、
    これに十分大きい数を代入して、順次データと比較、データが小さい場合はそのデータを最小値の
    変数に代入する。これを全ての変数で行う。」

    データの構造は、最初にx軸、次にy軸に対応するデータ(2500個)が入ってる→http://www.uploda.org/uporg653775.dat.html

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: 分かりません・・
 [3.3] 言語: C
[4] 期限: 本日中

[5] その他の制限:

   ・for(i=0; i<2501; i++) {
fscanf(fp, "%lf%lf", &num1[i], &num2[i])
}  というのを使うのですがどう使ったらいいか、num1[]num2[]をどう定義したらいいか
   ・配列をx軸のデータとy軸のデータをどう区別して格納するのか
   ・積分に関してはまったくわかりません、よろしくお願いします。

107 :デフォルトの名無しさん:2007/01/14(日) 17:05:21
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク): 自動販売機のプログラム
アルゴリズムから自動販売機の一連の流れを見て、
プログラムせよ・・・だとか・・・。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:わかりません・・・
 [3.3] 言語: C
[4] 期限: 1月末まで
[5] その他の制限: ある程度までは制限していいらしいけど、何をどう制限していいのやら・・・

ずっと考えてるのですが全然わからないです・・・。
全体的にわかっていないので、どなたかご教授お願いしします・・・

108 :デフォルトの名無しさん:2007/01/14(日) 17:06:47
わろた

109 :デフォルトの名無しさん:2007/01/14(日) 17:49:54
>>107
こんなんでいいのか?w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3389.txt
ちなみに硬貨種別や貨幣の判断とか
ある程度時間たったら自動的に釣り銭排出とか
そういうの一切やってないぞ。

110 :デフォルトの名無しさん:2007/01/14(日) 18:08:13
以前Cマガにあったな

111 :デフォルトの名無しさん:2007/01/14(日) 18:26:02
>>106
漏れには問題が理解できないから訂正だけ・・・
for(i=0; i<2500; i++) {
fscanf(fp, "%lf%lf", &num1[i], &num2[i]);
}

112 :デフォルトの名無しさん:2007/01/14(日) 18:31:12
[1] 授業単元:
[2] 問題文(含コード&リンク):

文字列 s が与えられる。s の中に含まれる二回以上出現する
部分文字列の中で最長のものを効率よく求めよ。ただし同じ長さの
ものが複数ある場合は、どれかひとつだけ求めればよい。

例: s = "abaaabadcabacaabaaacb" --> "abaaa"

[3] 環境
 [3.1,3.2] OS, コンパイラ: 問わず
 [3.3] 言語: どちらでも可
[4] 期限: 1月16日程度
[5] その他の制限: 特になし

113 :112:2007/01/14(日) 18:34:35
補足: 二つの部分文字列は重なっていてもよい。たとえば
s = "aaaaa" ならば "aaaa" が解となる。

114 :デフォルトの名無しさん:2007/01/14(日) 19:04:53
>>112
>効率よく

ここをもちっと具体的に・・・


115 :デフォルトの名無しさん:2007/01/14(日) 19:08:34
[1] 授業単元:
[2] 問題文(含コード&リンク):
tanx-20x+5をニュートン法で解くプログラムを作成せよ
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] bcc
 [3.3] C言語
[4] 期限: 10月30日の12時まで
[5] その他の制限: 特に無し。

お願いします

116 :112:2007/01/14(日) 19:17:19
>>114
もっともナイーブな解法はすべての部分文字列を生成してチェック
することですが、これは O(n^3) かかります。そこで、これよりも計算量が
小さい解法をとりあえず「効率のよい」と言っています。

117 :デフォルトの名無しさん:2007/01/14(日) 19:34:51
>>112
とりあえずKMP法でやってみた。
#include<string>
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
std::vector<int> makeIndex(const std::string& s ){
    const char*str = s.c_str();
    std::vector<int> index(s.size()+1);
    int txt = 1 , pat = 0;
    while(txt < index.size()){
        if(str[txt] == str[pat]) index[++txt] = ++pat;
        else if(pat != 0)pat = index[pat];
        else index[++txt] = 0;
    }
    return index;
}
int main(){
    std::string line;
    std::getline(std::cin,line);
    std::vector<int> index(makeIndex(line.c_str()));
    std::vector<int>::iterator it(std::max_element(index.begin(),index.end()));
    std::cout << line.substr(it-index.begin() - *it,*it) << std::endl;
}


118 :デフォルトの名無しさん:2007/01/14(日) 19:37:26
どなたか是非>>105もお願いしますm(__)m

119 :デフォルトの名無しさん:2007/01/14(日) 19:45:28
>>118 >>105
成績の読み込み方はファイルかキーボードか、
形式はどんな形か

120 :デフォルトの名無しさん:2007/01/14(日) 19:52:57
>>119
よくわからないのですが、
点数を一人ぶんずつ打ち込んで行って、
最後に適当な数を打ち込めばfor文とかのループが終わって
結果が出力されるような形式を想像してるのですが、、、

言ってる事わかるでしょうか?^^;
意味不明だったらすみません。

121 :デフォルトの名無しさん:2007/01/14(日) 19:53:41
>>117
入力に bddebbcbba を食わせると invalid memory reference で落ちた
わけのわからないところにある c_str() を外したら b とだけ表示された

122 :デフォルトの名無しさん:2007/01/14(日) 19:57:13
>>117
>index[++txt]
配列に++って言語仕様的にまずいと思うんだが

123 :デフォルトの名無しさん:2007/01/14(日) 20:00:00
>>122 それはない。まずいと思うなら具体的に仕様書から引いてくれ。

124 :デフォルトの名無しさん:2007/01/14(日) 20:22:58
>>120 >>105
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3392.txt

125 :117:2007/01/14(日) 20:33:08
>>121
うわ、やべ。おもいっきり勘違いしてた
このアルゴリズム駄目だわw

俺の書いたコードは全部忘れてくれ。

126 :124:2007/01/14(日) 20:35:41
>>120 >>105
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3393.txt
適当な数ってのが今理解できた

127 :デフォルトの名無しさん:2007/01/14(日) 20:47:56
>>126
ありがとうございます!!
すごくわかりやすいです!
助かりました^^!

128 :デフォルトの名無しさん:2007/01/14(日) 20:51:23
>>122
それがまずいのはindex[++txt] = txt; みたいな副作用完了点内に
インクリメント/デクリメントを付けた変数とそうでない変数が混在
している場合。普通に考えたら不定となりそうだが、実際は未定義
とされており、つまり鼻から悪魔。

129 :デフォルトの名無しさん:2007/01/14(日) 20:54:28
・・・じゃないな。

index[++txt] = --txt; のようなのも未定義だから、副作用完了点内に
インクリメント/デクリメントを付けた変数が一つでもあれば、それ以外に
同一の変数があった場合は未定義となる、か。

130 :デフォルトの名無しさん:2007/01/14(日) 20:55:52
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3394.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし

よろしくお願いします

131 :デフォルトの名無しさん:2007/01/14(日) 20:57:02
>>126
ループの後ろにif(n == 0) return 1;
とか入れておかないといきなり-1とか入力したときエラーになるな orz

132 :デフォルトの名無しさん:2007/01/14(日) 21:02:22
>>128
>それがまずいのはindex[++txt] = txt; みたいな副作用完了点内に 

ま、どうでもいいんだけどさ。
「点内」って言葉に疑問を持った事はないかい?


133 :デフォルトの名無しさん:2007/01/14(日) 21:07:16
店内・・・・


いらっしゃいませ〜こんにちわ〜

134 :デフォルトの名無しさん:2007/01/14(日) 21:07:53
>>132
まあ確かに日本語がおかしいな。

135 :デフォルトの名無しさん:2007/01/14(日) 21:14:08
>>131
あっ なるほど 
丁寧にありがとうございます!

136 :64:2007/01/14(日) 21:31:48
誰か>>64のも見てやってくださいm(_ _)m

137 :デフォルトの名無しさん:2007/01/14(日) 21:37:27
>>112
O(n^2*log(n))だけど,少し粗っぽい感じもする.もっと賢い方法があるかもしれない.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int my_strcmp(const void *l, const void *r)
{ return strcmp(*(char **)l, *(char **)r); } /* キモい */

int main(int argc, char *argv[]) {
int i, j, maxi = -1, maxj = 0;
int len = strlen(argv[1]);
char **heads = malloc(len * sizeof(char *));
for (i=0; i<len; i++) heads[i] = &argv[1][i];
qsort (heads, len, sizeof(char *), my_strcmp);
for (i=0; i<len-1; i++) {
j = 0; while (heads[i][j] == heads[i+1][j]) j++;
if (j > maxj) { maxi = i; maxj = j; } }
if (maxi>=0)
{ heads[maxi][maxj] = '\0'; printf("%s\n", heads[maxi]); } }


138 :3:2007/01/14(日) 21:40:45
>>68
問題の補足として出されたのですが、

(1)ノードをNmax個生成する
(2)No(<<Nmax)のノードに対して、kNo本のリンクをランダムに張る
(3)残りのNmax−No個のノードそれぞれに対してk本ずつのリンクを張る。
 このとき、どのノードとリンクを張るかは、ノードnが有するリンク数L(n)
に応じた確率によるものとする。すなわち、ある未リンクノードが、
 ノードnとリンクされる確率は
 L(n)/(@=1〜Nmax)L(i)である
(4)全てのノードに対して(3)の処理を繰り返す。

No=10、Nmax=10000、k=5とした時、各ノードのリンク数に応じてソートする。

という事らしいです。いかがでしょうか?
必修科目でこれ落とすと留年もありえるので、何とかお願いしますm(_ _)m
途中までのでも、続きは自分で考えますのでアップして頂けると嬉しいです。

139 :63:2007/01/14(日) 22:57:13
>>67さんありがとうございます。
作成していただきたい内容は完璧で、正常に動きました。

しかし、私の説明不足ですが、ポインタはまだ習っていないのです・・・。
ですから、もしよろしければポインタを使わないやり方でお願いできないでしょうか?
よろしくお願いします。

140 :デフォルトの名無しさん:2007/01/14(日) 22:57:33
>>112
ループを回す順番を工夫するだけでO(n^2)にはなる。
int solve(const char *chs, int len, int *r_begin, int *r_len)
{
  int i, gap, max_begin, max_len = 0;
  for(gap = 1; gap < len; gap++)
  {
    int begin, matching = 0;
    for(i = 0; i < len - gap; i++)
      if(chs[i] == chs[i + gap])
      {
        if(!matching)
        {
          begin = i;
          matching = 1;
       
        if(i - begin + 1 > max_len)
        {
          max_begin = begin;
          max_len = i - begin + 1;
        }
      }
      else
        matching = 0;
  }
  if(!max_len) return 0;
  *r_begin = max_begin;
  *r_len = max_len;
  return 1;
}
# include <stdio.h>
int main(void) { int a, b; char m[] = "bddebbcbba"; solve(m, sizeof m - 1, &a, &b); printf("%.*s\n", b, m + a); return 0; }

141 :デフォルトの名無しさん :2007/01/14(日) 22:57:59
必修の履修科目ならすでに単位とってる友達もいんだろ
友達の見せてもらえよ
情報学科じゃなくて電気学科卒だけど、友達の丸写しとか
しょっちゅうだったぞ
ま、おかげで大学でなんにも身に付かなかったけどな

142 :140:2007/01/14(日) 22:58:28
編集ミス。
matching = 1;
の後に
}
が要る。

143 :デフォルトの名無しさん:2007/01/14(日) 23:11:09
[1] 授業単元:応用プログラミング
[2] 問題文
1,各ノードがint型の値と次のノードへのリンクからなる連結リストを自己参照構造体を用いて
   実現したい。この連結リストに適した自己参照構造体を記せ。ただし、構造体名をnodeとすること。

  2,1の問題で定義した自己参照構造体を用いて連結リストを実現したい。以下の問に答えなさい。
   (a)連結リストの先頭に新しいノードを追加する関数add_topを記述せよ。
【注意】いずれも、関数を記述する問題であるが、引数の数、引数の型、return値の型などを明確に
書いていない。これらを適切に設定することも問いの一部である。

   (b)データ要素を検索する(整数nを仮引数の1つとして受け取ると、連結リストの中にnを保持する
ノードがあればそのポインタを、なければNULLを返す)関数searchを記述せよ。ただし、nを保持する
ノードが複数ある場合は、それらのいずれか1つのポインタを返す。
[3] 環境
 [3.1] OS: windowsXp
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 明日
どうかよろしくお願いします。


144 :デフォルトの名無しさん:2007/01/14(日) 23:17:10
>>141
ここは友達のいない人が丸投げするスレだから
そんなこと言ってもしょうもない

145 :デフォルトの名無しさん:2007/01/14(日) 23:18:47
>>140
計算量はいいはずなのに 137 のほうがだいぶ早いな

146 :デフォルトの名無しさん:2007/01/14(日) 23:20:06
>>136
作ったデータうpしる

147 :デフォルトの名無しさん:2007/01/14(日) 23:35:56
>>112
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3395.cpp

137 とアルゴリズムは同じ.ただし suffix array の構成を
手を抜かずにまじめにやったので計算量は O(n log n).
ここは理論上 O(n) でできるが,俺には実装しきれん.

結構複雑なことをやっているので,多少のサイズの
問題では 137 に速度負けする.というか qsort-strcmp が
計算量に比べて早すぎる.std::sort-strcmp ではそんなこと
無いんだけど,何でだろう.

148 :デフォルトの名無しさん:2007/01/15(月) 00:22:10
O(n^2*log(n))は文字列比較をO(n)として出したものだから,
実質的な計算量は O(kn*log(n)) (kは最長一致の長さ)で,
十分にランダムなデータではO(n*log(n))に近い.
aaa...a
みたいな同じ文字の羅列が最悪ケースで,これだと140が逆転する.

147のコードで試したけど,同じ文字の羅列だと140の結果が違ってる.
7行目の
i < len - gap

i <= len - gap
にすればいいのかな.

149 :デフォルトの名無しさん:2007/01/15(月) 00:39:20
どなたか>>130見てくれませんでしょうか

150 :デフォルトの名無しさん:2007/01/15(月) 00:45:57
[1] 授業単元:プログラミング
[2] 問題文:数独を解くプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 1月16日午後2時まで
[5] その他の制限: 数独の問題はファイルを用意して読み込むよりもコンパイルした
時に自分で入力するタイプにした方がいいそうです。よろしくお願いします。結構調べたのですが
ネット上にあるプログラムは難しすぎて私には理解できませんでした。


151 :デフォルトの名無しさん:2007/01/15(月) 00:50:39
http://rogiken.org/puzz/program/sudoku.html

152 :107:2007/01/15(月) 01:10:43
>>109
ごめん・・・見れないんだけど・・・

153 :デフォルトの名無しさん:2007/01/15(月) 01:12:29
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3396.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし


よろしくお願いします

154 :107:2007/01/15(月) 01:22:03
>>109
あ!見れた!!!本当にありがと!!

でも金種計算ってどうするんだろ^^;

155 :デフォルトの名無しさん:2007/01/15(月) 02:30:58
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
整数専用の足し算電卓です。
=が入力されたら計算を終了し、結果を表示します。
記号は半角で入力してください

整数値を入力してください
+か=を入力してください
(反復)
合計は○○です
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン: BorlandC++5.5
 [3.3] 言語: C
[4] 期限:なるべく早めにお願いします
[5] その他の制限:while文と文字列を使ってお願いします
わからなくなってしまったんでどうかよろしくお願いします

156 :デフォルトの名無しさん:2007/01/15(月) 03:45:01
>>155
#include <stdio.h>
int main() {
int sum = 0, n, c;
while(1) {
if(scanf("%d", &n)) sum += n;
else if((c = getchar()) == '=') break;
else if(c != '+') abort();
}
printf(" %d\n", sum);
return 0;
}

157 :デフォルトの名無しさん:2007/01/15(月) 05:24:16
[1] 授業単元: アルゴリズム応用論
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3397.txt
[3] 環境
 [3.1] OS: windowsXP
 [3.2] VC++6.0
 [3.3] どちらでも可
[4] 期限:2007/1/16
[5] その他の制限: ポインタ・構造体辺りまで学習しました。stdio.hも利用可です
よろしくおねがいします。

158 :デフォルトの名無しさん:2007/01/15(月) 09:11:27
常識的に考えてprintfだろ文字表示は…

159 :デフォルトの名無しさん:2007/01/15(月) 09:11:51
>>157
cin >> ninzuu;

ninzuu = getint(cin, cout);
におきかえる。

同様に、
cin >> str[count].name;
などを、
getstring(cin, cout, str[count].name, sizeof(str[count].name));
などに置き換えるか、
そもそもchar[]ではなくstringにしてしまう。

getint(), getstring()の実装は↓参照。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3399.txt

160 :デフォルトの名無しさん:2007/01/15(月) 12:54:01
[1] 授業単元:コンピュータ実習
[2] 問題文(含コード&リンク):
ある先生が、 開講していたとき、次週も開講する確立は70%
       休講していたとき、次週も休講する確立が10%

長期的に見て、この先生が開講している確立は何%か、
モンテカルロ法で求めるプログラムを作成しなさい。
また、解析的に求めた値と比較しなさい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 01月17日(水)
[5] その他の制限:得になし

161 :助けてください:2007/01/15(月) 13:14:16
80代目の930の方ありがとうございました。なんとか間に合いそうです。

162 :デフォルトの名無しさん:2007/01/15(月) 13:23:10
>>160

#include <stdio.h>
const int max = 1000000;

int teacher(void)/* 開講: 1, 休講: 0 */
{
static int st = 1;
if (st == 0 && rand() % 10 != 0)
st = 1;
if (st == 1 && rand() % 10 < 3)
st = 0;
return st;
}

int main(int argc, char* argv[])
{
int i, count;

srand(time(NULL));
for (i = 0; i < max; i++) {
if (teacher()) { count++; }
}
printf("%d (%lf%%)¥n", count, (double)count / max * 100);
return 0;
}


163 :デフォルトの名無しさん:2007/01/15(月) 13:39:09
>162
そりゃねーだろ

164 :デフォルトの名無しさん:2007/01/15(月) 13:59:04
>>156
説明が不足していました。 下に例を出しました

整数値を入力してください。 と表示
10            整数を入力させる。
+か=を入力してください と表示
+なら再度整数の入力
=なら終了

合計は○○です と表示

165 :助けてください:2007/01/15(月) 14:39:03
80代目の930の方に質問なんですけど結果をランダムに出すにはどうしたらいいのですか?

166 :デフォルトの名無しさん:2007/01/15(月) 15:01:16
>155
#include <stdio.h>
int main(void){
int n , sum = 0;
char ch;
do {
printf("整数を入力してください\n");
scanf("%d", &n);
sum += n;
printf("+か=を入力してください\n");
scanf(" %c", &ch);
if(!(ch=='+' || ch=='=')) return 1;
}while(ch=='+');
printf("合計は%dです", sum);
return 0;}

167 :150:2007/01/15(月) 15:30:42
>>150
誰か150をお願いします

168 :デフォルトの名無しさん:2007/01/15(月) 15:54:09
>>159
ありがとうございました。
理解しつつ実装していきたいと思います。

169 :デフォルトの名無しさん:2007/01/15(月) 17:26:13
>>162
countが初期化されていない。
関数teacher()内の二つ目のifの前にはelseが必要。
<time.h><stdlib.h>がインクルードされてない。
mainの引数は不要。
rand()%10は乱数として微妙。

170 :デフォルトの名無しさん:2007/01/15(月) 18:49:30
1] 授業単元: 情報処理
[2] 問題文(含コード&リンク): 入力された文字列を逆から表示するプログラムを作成し、
そのプログラムの特徴、性能を説明せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 1月16日
[5] その他の制限: コメントも付けていただけると助かります。


171 :デフォルトの名無しさん:2007/01/15(月) 19:02:58
>>167
>>151じゃダメなの?

172 :デフォルトの名無しさん:2007/01/15(月) 19:34:41
>>170
#include <stdio.h>
void output(void) {
    int c = getchar();
    if (c != EOF) {
        output();
        putchar(c);
    }
}
int main(void) {
    output();
    return 0;
}
特徴:コードが短い。単純。再帰を使っている。
性能:再帰を使っているため、かなり悪い。字数は可変である。

173 :デフォルトの名無しさん:2007/01/15(月) 19:53:18
>>149
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3400.txt
誰かがUPしてたが2chは規制で書き込めなかった模様w

174 :デフォルトの名無しさん:2007/01/15(月) 21:05:54
すみません >>153
出来たらお願いします

175 :130:2007/01/15(月) 21:16:29
>>173
ありがとうございました。
でもさっき自分でやったら解けましたw

176 :869 ◆xkG5F/RZlA :2007/01/15(月) 21:31:49
>52
です。
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
   ・9×9の数独の問題を表示させ、マウスとキーボードを使い解答する。
   ・解答後に、誤っている部分(数字)を強調させる。
   ・全て正解の場合は、その旨を表示させる。
   ・解答時間を計測できるようにし、ランキング表示可能にする。
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: Borland C++ 5.02
 [3.3] 言語: C言語
[4] 期限: 2007/01/18
[5] その他の制限:

期限が延期になりました。
どなたか、お願いします。

9×9のマスを表示させ、マウスとキーボードから数字を入力する部分だけでも構いませんので、よろしくお願いします。

177 :デフォルトの名無しさん:2007/01/15(月) 22:03:06
>>174
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3402.txt
適当に直して使って。

178 :デフォルトの名無しさん:2007/01/15(月) 22:34:00
>>177
どうもです。

179 :デフォルトの名無しさん:2007/01/15(月) 22:36:31
>>174 >>153
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3404.txt

>>177さんと被ったようだw


180 :デフォルトの名無しさん:2007/01/15(月) 22:43:42
>>176
(゚∀゚)アヒャヒャヒャヒャ
http://a-draw.com/uploader/src/up11461.png

181 :デフォルトの名無しさん:2007/01/15(月) 22:45:06
BC++5.02ってもしかしてOWLかよw
VCLを使ってはいけないというのはキツイ制限だな

182 :デフォルトの名無しさん:2007/01/15(月) 22:51:43
>>64誰かやってもらえないですか?

183 :デフォルトの名無しさん:2007/01/15(月) 22:58:31
>>182
>>146
作ったデータファイルをうpしてくれ

184 :デフォルトの名無しさん:2007/01/15(月) 22:59:47
[1] 授業単元: プログラミング実習U
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3406.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2007年01月17日14:00まで]
[5] その他の制限:特にありません

よろしくお願いします

185 :デフォルトの名無しさん:2007/01/15(月) 23:22:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  2つのintの値をjとkに受け取り、
  j≧kならj-k、j<kならk-jを
  関数値として戻すintの関数big_subを書きなさい
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: BorlandC++5.5
 [3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:特にありません


186 :デフォルトの名無しさん:2007/01/15(月) 23:25:19
int big_sub(int j, int k) { return j >= k ? j - k : k - j; }

187 :185:2007/01/15(月) 23:27:59
>>186
どうもありがとうございます

188 :デフォルトの名無しさん:2007/01/15(月) 23:31:17
>>184
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3407.c
mean[100]のところはmean[50]に直してくれ。

189 :デフォルトの名無しさん:2007/01/15(月) 23:31:39
>>183
作れないので聞いているのですが。
もしくはうpしろっていうのの意味が違ったらすみません。

190 :869 ◆xkG5F/RZlA :2007/01/15(月) 23:32:21
>>181
Visual C++のインストールが認められているので、Visual C++対応できますでしょうか?

191 :869 ◆xkG5F/RZlA :2007/01/15(月) 23:33:35
>>181
Visual C++のインストールが認められているので、Visual C++で対応できますでしょうか?
なにか必要なモノがあれば、随時インストールしてよいと言われています

192 :デフォルトの名無しさん:2007/01/15(月) 23:35:43
>>189
>>64
>入力用データファイルは
>(中略)
>という内容で作ってあります
この作ってある奴をうpしてって言ってるんだけど、実際は作ってないの?

193 :デフォルトの名無しさん:2007/01/15(月) 23:36:38
>>185
それぐらい瞬殺だろ。。。

194 :デフォルトの名無しさん:2007/01/15(月) 23:38:11
>>192
作ってないです。申し訳ないです。入力用データファイルが、すでにあるって言うことです。
プログラミング自体はさっぱり分かりません。

195 :デフォルトの名無しさん:2007/01/15(月) 23:38:46
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):二重ループを用いて九九の表を作れ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明後日の10時まで
ネットを参考にしながら何とか考えたら
#include <stdio.h>
main(void){
int i, j;
printf(" ");
for(j=1;j<10;j++){
printf("%3d", j);
}
printf("\n");
for(i=1;i<10;i++){
printf("%d", i);
for(j=1;j<10;j++)
printf("%3d", i*j);
printf("\n");
}
return 0;
}
という感じになって九九の表を作れたのですが、
ここでのiとjの説明についてなんですが、
iは列方向のカウンタ変数
jは行方向のカウンタ変数
だと違いますかね?

196 :デフォルトの名無しさん:2007/01/15(月) 23:39:28
>>194
>入力用データファイルが、すでにある
いや、その入力用データファイルが欲しいって言ってるんだけど
プログラミングは関係ないだろ

197 :デフォルトの名無しさん:2007/01/15(月) 23:43:48
>>196
入力データの読み込みを、$./a.out<入力データ   と、いう風にして実行しろと
指示がありました。データはまだコピーの許可が下りていません。
データというのは、得点データが入ってるものです。

198 :デフォルトの名無しさん:2007/01/15(月) 23:45:59
>>197
コピーの許可が下りてないのね、了解

199 :デフォルトの名無しさん:2007/01/15(月) 23:46:53
え、プログラムはつくってもらえないんですか!?

200 :デフォルトの名無しさん:2007/01/15(月) 23:49:50
>>184
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3408.txt

201 :デフォルトの名無しさん:2007/01/15(月) 23:49:58
>>197
無断でコピーしちゃえよ

202 :デフォルトの名無しさん:2007/01/15(月) 23:52:38
>>179
どうも サンクスです。

203 :お願いしますm(_ _)m:2007/01/15(月) 23:58:56
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
  T)以下の条件に合うプログラムを作成せよ。
   @main()の中で2つの整数a,bを入力する
   A入力された2つの整数を別の関数(名前は任意)に渡す
   B値を渡された関数では2つの値を入れ替えるが、main()側でも入れ替わるようにする
     ※ポインタを使用すること
   Cmain()に戻ったら、2つの変数の値を表示させ、入れ替わったことがわかるようにすること

  U)2次元の配列を用いて、3次正方行列の積を求めるプログラムを作成せよ。
     ※繰り返し文を使って3重ループで計算すること

  V)以下のプログラムを作成せよ。
   @文字型の配列s[11],t[11]を確保
   Aキーボードから「s」に半角10文字以内の文字列を入力させる
   B「t」に「s」を反対にしたものを代入する(appleだったらelppa)
     ※ポインタを使用する
   C「t」を表示させる
     ※繰り返し文を用いる

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: 習った範囲は
             @if else文  Awhile、do〜whileによる繰り返し
             Bfor文による繰り返し  Ccontinue文、break文
             D関数(作り方、呼び出し方、他モジュールにある関数、変数の扱い、記憶クラスと適応範囲)
             E1次、2次以上の配列、文字列の配列  
             Fポインタ(使い方、配列との関係、関数との値の受け渡し) G構造体、共用体

204 :デフォルトの名無しさん:2007/01/16(火) 00:03:05
記録残んじゃね?

205 :デフォルトの名無しさん:2007/01/16(火) 00:04:54
>>188
>>200
ありがとうございました。

206 :デフォルトの名無しさん:2007/01/16(火) 00:33:14
>>203
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3409.txt
同じファイルに三問とも書いた

207 :デフォルトの名無しさん:2007/01/16(火) 08:54:50
>>197
データのコピーは気にするのに宿題丸投げを気にしないとは是如何に

208 :デフォルトの名無しさん:2007/01/16(火) 11:02:31
摂氏温度(C)と華氏温度(F)は、次の式で変換できる。摂氏温度30度から、5度みに、105
度まで、それに対応する華氏温度を計算し,
下記のような対応表を作成しなさい。
F=5/9C+32.0
出力は、左右に2列に摂氏温度と華氏温度が{表}になるようにしなさい。


この問題が分からないのですが、よかったら誰か教えてくださいorz

209 :デフォルトの名無しさん:2007/01/16(火) 11:04:46
>>208
よかったら>>1をしっかり読んで書き直してください
後で条件を付け足す必要が無いようにしっかり書いてね

210 :デフォルトの名無しさん:2007/01/16(火) 11:07:59
[1] CによるプログラミングV
[2] n点の凸包の計算
n個の点データがファイルに保存されている.
http://www.geocities.jp/programxxxxx/points.dat
ファイルは1行目はデータの数,
2行目以降はそのデータ数分の点データである.
点データは1列目が点番号,2,3列目が点のx,y座標である.
この点データから,凸包の辺を求める効率の良いプログラムを作成し,
入力データ数に対する実行時間の挙動について調査せよ.
ただし,ここで言う「効率の良いプログラム」とは,
Graham 走査法,逐次構成法の一つを使う。
報告事項は,そのプログラムのアルゴリズムを
フローチャート等により示したもの,プログラムソースファイル,
および実行時間である.
実行時間については,できれば包装法についても同じ表に結果を記入し
比較すると良い(横軸に入力線分数.縦軸に実行時間としたグラフを作成し
実行時間について明らかに違う挙動を表すことがわかるようにせよ.)


[3] 環境
 [3.1] OS: Windows Xp
 [3.2] gcc 3.4
 [3.3] C
[4] 期限: 1月19日(金曜日)


211 :デフォルトの名無しさん:2007/01/16(火) 11:12:47
>>208
>>173

212 :デフォルトの名無しさん:2007/01/16(火) 11:27:39
>>210
また「効率の良い」の人か

213 :デフォルトの名無しさん:2007/01/16(火) 11:36:44
ソートの安定性ってどうゆうことですか?

214 :デフォルトの名無しさん:2007/01/16(火) 11:41:08
>>213
ソートの安定性 の検索結果 約 1,710 件中 1 - 10 件目 (0.33 秒)

215 :デフォルトの名無しさん:2007/01/16(火) 11:42:45
>>64
英 数 理 合 英偏 数偏 理偏 合偏の順番で出力してる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3411.txt

216 :デフォルトの名無しさん:2007/01/16(火) 11:48:28
>>210
ちがうよ これまでに何度か出てる「効率の良い」の人とは別だよ

217 :デフォルトの名無しさん:2007/01/16(火) 12:21:44
[1] 授業単元:プログラミング演習
[2] 問題文:
摂氏温度(C)と華氏温度(F)は、次の式で変換できる。摂氏温度-30度から、5度刻みに、105度まで、それに対応する華氏温度を計算し、下記のような対応表を作成しなさい。
F = 9/5C + 32.0
出力は、左右に2列に摂氏温度と華氏温度が「表」になるようにしなさい。

出力例
0.0℃ = 32.00°F  5.0℃ = 41.00°F
10.0℃ = 50.00°F  20.0℃ = 59.00°F

          ・・・

100.0℃ = 212.00°F  105.0℃ = 221.00°F

[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語:C++
[4] 期限:明日まで
[5] その他:
ちなみに自分ではさっぱり分からないです。
何か不明な点があったら聞いて下さい、お願いします。

218 :デフォルトの名無しさん:2007/01/16(火) 12:24:38
出力例ミスです;

× 20.0℃ = 59.00°F
○ 15.0℃ = 59.00°F

219 :デフォルトの名無しさん:2007/01/16(火) 12:27:49
また出力例ミス・・・すみません;

例では0.0℃から始まっていますが実際は-30.0℃からです

220 :デフォルトの名無しさん:2007/01/16(火) 12:49:13
>>217
>>173を改悪して作った
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3412.txt

221 :デフォルトの名無しさん:2007/01/16(火) 13:14:55
>>217-219

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3413.txt

222 :デフォルトの名無しさん:2007/01/16(火) 13:20:59
>>221
まちがっとるやんw

223 :デフォルトの名無しさん:2007/01/16(火) 13:33:40
>>217-219 及び >>221
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3414.txt


224 :デフォルトの名無しさん:2007/01/16(火) 13:34:10
[1] 授業単元:計算機演習
[2] 問題文:数独のプログラム作成。
・4×4のマス目の数字をファイルから入力(数字の無いところは0を表示)。
1000
0200
3001
0004
・配置できる数字は1から4まで。
・各行、各列、2×2の小領域において、各数字は丁度一個しか使用できない。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ:gcc -o
 [3.3] 言語: C
[4] 期限: 2007年1月19日
[5] その他の制限: 特になし。

どうか宜しくお願いします。

225 :デフォルトの名無しさん:2007/01/16(火) 13:35:39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3415.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし

よろしくお願いします

226 :デフォルトの名無しさん:2007/01/16(火) 13:46:32
前からちらほら気になって、言おうと思っていたんだが、
お前等倉木麻衣好きなんだな。

227 :デフォルトの名無しさん:2007/01/16(火) 13:48:23
くらきまい 逆から読むと いまきらく
気楽に行こうってことか?そうはいかんざき!

228 :デフォルトの名無しさん:2007/01/16(火) 13:50:14
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):以下に示した構造体の型を利用して,分数を扱う構造体変数f1,f2 を宣言する.それぞれの構造
体変数の分子部,分母部の係数をキーボードから入力し,分数の和,差,積,商を演算して画面表
示するプログラムを作成しなさい.ただし,以下に示すプロトタイプを利用し,分数の四則演算を行
う関数をそれぞれ作成すること.

構造体の型
struct frac {
int numerator;
int denominator;
};

関数のプロトタイプ
void frac_wa( struct frac, struct frac, struct frac * );
void frac_sa( struct frac, struct frac, struct frac * );
void frac_seki( struct frac, struct frac, struct frac * );
void frac_sho( struct frac, struct frac, struct frac * );

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C

宜しくお願いします。


229 :デフォルトの名無しさん:2007/01/16(火) 13:59:59
>>225
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3416.txt
コメントは自分でつけてくれ、変数3つしか使ってないから。

230 :217:2007/01/16(火) 14:04:26
>>220-223
助かりました
ありがとうございます!

231 :225 :2007/01/16(火) 14:29:20
>>229
ありがとうございました


232 :デフォルトの名無しさん:2007/01/16(火) 15:27:51
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 1 リストを意味するデータ構造を、配列を使わずに定義せよ
2配列を整列するプログラムを二種類以上の方法で実装せよ。 また、その計算量について数学的に考察せよ。
3ハッシュを用いて、英単語を日本語に翻訳するプログラムを作れ。
4トライを用いて、英単語を日本語に変換するプログラムで補完機能のついたものを作れ。
5出発地から目的地への最短経路を示すプログラムをJavaアプレットとして実装せよ。 (アプレットはウェブで公開し、レポート提出の際にそのアドレスを通知すること。)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: どちらでも可
[4] 期限: 過ぎてるので早めにお願いしたいです 。こんなの無理!って感じでしたorz
[5] その他の制限: なし

233 :デフォルトの名無しさん:2007/01/16(火) 15:59:12
>>232
5番とかどう見てもJavaの宿題なんだけど、本当にC言語演習?

234 :デフォルトの名無しさん:2007/01/16(火) 16:00:24
>>232
Java?

235 :228:2007/01/16(火) 16:03:50
最後の課題だけはJavaなんですけど、ほかはC言語の宿題です。レベルが高すぎてついていけないです

236 :デフォルトの名無しさん:2007/01/16(火) 16:08:32
[1] 授業単元:情報
[2] 問題文(含コード&リンク):
・25個の値をrand関数(乱数)によって発生させ、一旦5×5の2次元配列に格納する(値は1から100の範囲)
・入力された値が配列内に存在するか探索する。
*存在する場合その値が格納されている配列の添え字を表示すること
*存在しない場合は、その旨を表示する
・値の一覧もあわせて表示し、これらの結果をすべてファイルに出力する。
・レポートの実行結果には、出力したテキストファイルの内容も記載すること。
・必ず自作関数を使ったプログラムにすること
・繰り返しは何度でも探索できるようにする。その際、必ず終了する場合の入力値を示せ。

[3] 環境
 [3.1] OS: (Windows等々)
 [3.2] コンパイラ名とバージョン: ( VC ++6.0)
 [3.3] 言語: C++
[4] 期限: ([2007年1月16日23:30まで]
[5] その他の制限: C言語の初歩は習いました。


急ぎですが、お願いします!!!

237 :デフォルトの名無しさん:2007/01/16(火) 16:20:00
>>232
3番と4番、まさかすべての単語を網羅しろってことはないと思うけど
使う単語と訳をよろしく

238 :デフォルトの名無しさん:2007/01/16(火) 16:35:33
>>232の4.で「補完」て、どーすんだ
Win32 Console APIを使わせる気か

239 :デフォルトの名無しさん:2007/01/16(火) 16:37:52
>>228
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3417.txt

240 :デフォルトの名無しさん:2007/01/16(火) 16:38:18
教えてください。

【問題】
「計算式対応電卓」
・計算式を文字列として入力すると、その計算を行い、結果を出力するプログラムを
作成せよ。
-入力文字列を解析し、数値と演算子に分けて計算する。
-例:計算する式を入力してください。終了:end
   使用可能演算子:四則演算(+-*/)
1+2
   答えは3です。
・必ず四則演算のほかに、使用可能な演算子を追加せよ。
 入力する際の演算子記号は任意にきめてよい。
-例:あまりを求める %
   二乗を求める
・繰り返し何度も計算できるようにする。
 その際、終了する場合の入力文字列を示せ。

【質問テンプレ】
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク): 上記
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 2007年1月19日am0:00まで
[5] その他の制限:

よろしくお願いします!!

241 :デフォルトの名無しさん:2007/01/16(火) 17:03:52
[1] 授業単元: c言語
[2] 問題文(含コード&リンク): 以下に示した「氏名」と「英語」,「数学」,「物理」の得点を構造体の配列を用いて格納する.各科目
について得点の高い順にソートを行う関数 「void sort_score ( struct SCORE *, int )」 を作成し,ソ
ート関数呼び出し後に画面表示するプログラムを作成しなさい (ソート,画面表示は3 回繰り返さ
れる).関数の第1 引数には構造体配列を,第2 引数には整数値をとり,第2 引数の値が0 の場合
には英語,1 の場合には数学,2 の場合には物理をキーにしてソートを行うこと.ただし,構造体の
型は以下に示したものを利用し,各データは構造体の「初期化」により格納しておくこと.また,ソー
トを行う場合には,必ず構造体の要素の入れ替えを行うこと.

得点表
氏名 英語 数学 物理
小野妹子 82 93 56
菅原道真 89 87 91
源頼朝 56 76 45
豊臣秀吉 62 83 65
徳川家康 78 56 87

構造体の型
struct SCORE {
char name[20];
int english;
int mathematics;
int physics;
};

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C

分かる方、よろしくお願いします。


242 :デフォルトの名無しさん:2007/01/16(火) 17:04:00
>>236
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3418.txt

243 :242:2007/01/16(火) 17:06:20
>>236
ごめん。自作関数使うの忘れた。
適当に関数作っといて。
あと入力終了は-1ね。

244 :デフォルトの名無しさん:2007/01/16(火) 18:05:23
>>240
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3419.txt
結構いい加減な感じ

245 :デフォルトの名無しさん:2007/01/16(火) 18:11:09
二分木で解くの作ってたんだけど
演算子の優先順位ってそんな適当でいいんかね。

246 :244:2007/01/16(火) 18:49:11
>>245
うわ。ごめん。俺、あたま悪いね。

247 :デフォルトの名無しさん:2007/01/16(火) 18:52:17
[1] 授業単元:プログラミング実習
[2] 問題文:ID番号(int型)と名前(char型20個)をメンバーに持つ構造体を定義し、
その構造体の変数を2個の配列で宣言する。
2件分のID番号と名前を入力し、それを逆順に表示するプログラムを関数を用いて作成せよ。
データを格納する構造体変数はmain()関数にて宣言する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2007年1月18日
お願いします。

248 :デフォルトの名無しさん:2007/01/16(火) 19:01:14
名前(char型20個)ってのを見てこんなのを想像してしまった
struct{
int id;
char name1,name2,name3,name4,name5,name6,name7,name8,name9,name10,
name11,name12,name13,name14,name15,name16,name17,name18,name19,name20;
};

249 :244:2007/01/16(火) 19:01:26
>>240
ごめんなさい。
さっきの間違えてました。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3420.txt

(ただ、変な数式をはじく処理とか、
 0divとか一切考慮してません。)

250 :デフォルトの名無しさん:2007/01/16(火) 19:08:34
>>241
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3421.txt

251 :デフォルトの名無しさん :2007/01/16(火) 19:18:37
>>247
#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
int main()
{
IDNAME obj[2];
char buff[20];
int i;
for(i = 0; i < 2; i++){
puts("ID入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);
memset(buff,'\0',sizeof(buff));
puts("name入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
strcpy(obj[i].name,buff);
memset(buff,'\0',sizeof(buff));
}
for(i = 1; i >=0 ; i--){
printf("%d, %s \n",obj[i].ID,obj[i].name);
}
return 0;
}



252 :デフォルトの名無しさん:2007/01/16(火) 19:19:43
a

253 :デフォルトの名無しさん:2007/01/16(火) 19:33:57
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):"in_file"という名前のファイルの中に多数の整数データが空白や
              改行コードで区切られて並んでいることを仮定した上で、このファイルの中のデータを
              1行に5個ずつきれいに並べて"out_file"という名前のファイルに出力するcプログラムを作成せよ。
               
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:1月29日


例えば、入力ファイル"in_file"の内容が
        11111111 3333333 44444 32 35 34 24 53 242
254 35 532 5235 3452 3545 34
63 54
の時には、このプログラムは次のような出力ファイル"out_file"に書き出す。
11111111 33333333 44444 32 35
34 24 53 242 254
35 532 5235 3452 3545
34 63 54

254 :247:2007/01/16(火) 19:35:06
>>251 structの他に、データ入力は別関数(例えばvoid input_data)のポインタを使って書きたいのですが、ダメですか?

255 :253:2007/01/16(火) 19:35:39
出力の形は、一の位がそろっていて、一行に五個ずつ並んでいるように
見てください。書き方が下手でスミマセン。

256 :デフォルトの名無しさん:2007/01/16(火) 19:48:36
>>253
#include <stdio.h>
int width(int n)
{
    int w = 1;
    while ((n /= 10) > 0)
        ++w;
    return w;
}
int main()
{
    int i, d, w, colsize[5] = { 0 };
    if (!freopen("in_file", "r", stdin)) {
        perror("in_file");
        return 1;
    }
    for (i = 0; scanf("%d", &d) == 1; i = (i+1)% 5) {
        w = width(d);
        if (w > colsize[i])
            colsize[i] = w;
    }
    rewind(stdin);
    for (i = 0; scanf("%d", &d) == 1; i = (i+1)% 5) {
        printf("%*d ", colsize[i], d);
        if (i == 4) putchar('\n');
    }
    if (i)
        putchar('\n');
    return 0;
}

257 :251:2007/01/16(火) 20:42:06
>>247こんな感じで良いの?
#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
void input_data(IDNAME *obj, int size);
int main()
{IDNAME obj[2];int i;
input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
for(i = 1; i >=0 ; i--)
printf("%d, %s \n",obj[i].ID,obj[i].name);
return 0;}
void input_data(IDNAME *obj, int size)
{
char buff[20];int i;
for(i = 0; i < size; i++){
puts("ID入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);
memset(buff,'\0',sizeof(buff));
puts("name入力: ");
fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';
strcpy(obj[i].name,buff);
memset(buff,'\0',sizeof(buff));
}
}

258 :デフォルトの名無しさん:2007/01/16(火) 20:52:34
>253
#include "stdio.h"
#include "ctype.h"
void main(void){
char ch,wk[10],*p;
FILE *rfp,*wfp;
int cnt;
  if ( NULL != ( rfp=fopen ("in.file","r") ) ){
    if ( NULL != ( wfp=fopen ("out.file","w") ) ){
      p=wk;
      *p='\0';
      cnt=0;
      while ( EOF!=(ch=fgetc(rfp)) ){
        if (isdigit(ch) )
          *p++ =ch;
        else if( '\0'!=wk[0] ){
          fprintf(wfp,"%9s",wk);
          cnt++;
          p=wk;
        }
        *p='\0';
        if (5==cnt){
          fprintf(wfp,"\n");
          cnt=0;
        }
      }
      fprintf(wfp,"\n");
      fclose(wfp);
    }
    fclose(rfp);
  }
}

259 :デフォルトの名無しさん:2007/01/16(火) 21:05:07
この前回答書いてやったらさ、本当にこれコンパイルできたんですか?って言われた。
別のところの話ね。  ここで回答書いてる人ってコンパイルまでしてやってる??

260 :デフォルトの名無しさん:2007/01/16(火) 21:06:40
>>258
桁数決めうちなのは題意に反するだろうな。
>>256はちゃんと計算してフォーマットしてる。

それと、 にはセミコロンをつけてくれないか。
ブラウザによっては解釈できないから。

261 :デフォルトの名無しさん:2007/01/16(火) 21:14:55
>>259
するよ。
だって、恥ずかしいじゃん

262 :251:2007/01/16(火) 21:15:37
>>259
俺は、ちょっとした確認するためのソース用の使い捨てプロジェクトフォルダ一個
あるから、そのプロジェクトにソースファイル追加して一応コンパイルと実行してはみている。
っていうか、レス書くウィンドウに書けるくらいの簡単なのでも、やっぱかきずらい。

263 :デフォルトの名無しさん:2007/01/16(火) 21:15:56
最近回答者が真面目すぎてつまらない

264 :デフォルトの名無しさん:2007/01/16(火) 21:23:34
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
引数をとる以下のマクロを、標準関数 ( isdigit、isalpha 等 ) を使わずに
すべて記述してください。例で示すように条件として使えるようにしてください。

マクロ1. 引数が大文字のアルファベットかどうか調べるマクロIS_UPPER
マクロ2. 引数が数字を表す文字かどうか調べるマクロIS_NUMBER
マクロ3. 引数がアルファベットかどうか調べるマクロIS_ALPHA
マクロ4. 引数がスペースまたはタブまたは改行かどうか調べるマクロIS_SPACE

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし

265 :デフォルトの名無しさん:2007/01/16(火) 21:25:23
>>257 ありがとうございます!

266 :デフォルトの名無しさん:2007/01/16(火) 21:25:47
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
 ある文字列の中に特定の文字が含まれているかを検索する関数 str_chr を書いてください。仕様は次のとおりです。
char ポインタ型の引数 s と int 型の引数 c をとり、char ポインタ型 s が示す文字列を先頭から調べて、引数 c
が示す文字と同じものがあればその文字のアドレスを、なければ NULL を返します。

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし


267 :デフォルトの名無しさん:2007/01/16(火) 21:33:32
>>266

char* str_chr(char* s, char c)
{
while (*s){
if (c == *s){
return s;
}
s++;
}
return NULL;
}

268 :デフォルトの名無しさん:2007/01/16(火) 21:46:34
>>260
所詮256も表示時に可変で渡してるが桁数取得部が10桁決めうち
てか32bit幅なら10桁でOK

269 :デフォルトの名無しさん:2007/01/16(火) 21:57:47
>>268
おいおい、桁数決め打ちだと>>253の出力例のようにならんだろ。
それと、>>256は「10桁決め打ち」なのではなく、単にintのサイズに
依存してるだけだ。
負数には対応してないがな。

270 :デフォルトの名無しさん:2007/01/16(火) 21:59:27
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
入力したグレースケール(白黒)画像[256×256画素、8ビット256階調]を
8枚のビットプレーンに分解し、それぞれのプレーンを出力するプログ
ラムを作成せよ。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限:1/17 19:00
[5] その他の制限:なし


271 :デフォルトの名無しさん:2007/01/16(火) 22:22:29
>>270
入力ファイルの形式は?出力先は?

272 :251:2007/01/16(火) 22:28:19
>>253
なんかえらく長くなっちったからロダにあげた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3422.txt

273 :270:2007/01/16(火) 22:43:17
>>271
入力ファイルはnotファイルです。出力先は特に指定されてないのでprintfで結果を表示すればよいと思います。
説明足らずですみませんでした。

274 :デフォルトの名無しさん:2007/01/16(火) 22:48:24
>>259
毎回期待通りに動くかどうかデバッグまでやるよ
たまにミスに気づかずアップして後で訂正することがあるけど orz

そこまでしてるのにたまにコンパイルできないとか言われて ヽ(`Д´)ノ

275 :デフォルトの名無しさん:2007/01/16(火) 23:33:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3423.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/18
[5] その他の制限:特になし


よろしくお願いします

276 :デフォルトの名無しさん:2007/01/16(火) 23:49:12
>>3と同じ課題ですが、質問します。

[1] 授業単元: 情報論
[2] 問題文(含コード&リンク):
優先的選択モデルによるSFN(Scale Free Network)の生成
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3373.txt
↑の/* 自分で書いてください*/の部分の穴埋め
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 2007年1月17日19:00まで
[5] その他の制限:
使用する方法:ソート、再帰的アルゴリズム、線形リスト、動的なメモリの確保

(1)ノードをNmax個生成する
(2)No(<<Nmax)のノードに対して、kNo本のリンクをランダムに張る
(3)残りのNmax−No個のノードそれぞれに対してk本ずつのリンクを張る。
 このとき、どのノードとリンクを張るかは、ノードnが有するリンク数L(n)
に応じた確率によるものとする。すなわち、ある未リンクノードが、
 ノードnとリンクされる確率は
 L(n)/(@=1〜Nmax)L(i)である
(4)全てのノードに対して(3)の処理を繰り返す。

No=10、Nmax=10000、k=5とした時、各ノードのリンク数に応じてソートする

277 :デフォルトの名無しさん:2007/01/16(火) 23:58:02
>>275
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3424.txt

278 :デフォルトの名無しさん:2007/01/17(水) 00:03:05
>>277
ありがとうございます

279 :195:2007/01/17(水) 00:04:09
どなたか解答頂けないでしょうか?

280 :デフォルトの名無しさん:2007/01/17(水) 00:08:49
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):
2元連立非線形方程式
x^2+y^2-2=0
x^2-y^2-1=0
を解く以下のプログラムhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3425.cppを例に、
3元連立非線型方程式
x1^2+x2^2+x3^2-4=0
x1^2-2x1+x2^2+x3-2=0
x1^2+sin^2(x2)+x3^2-3=0
を解くニュートン法のC++プログラムを作り、領域0<x1,x2,x3<2にある解を求めよ。
やだし、ヤコビアンの計算に必要となる変動関数は数値微分により計算し、
連立一次方程式の解法にはガウスの消去法あるいはLU分解法を用いる事。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C++
[4] 期限: ([07年1月17日10:00まで]
[5] その他の制限:特になし

さっぱり分からないのでどなたかご教示願います。

281 :デフォルトの名無しさん:2007/01/17(水) 00:23:52
>>279
あってるよ

282 :デフォルトの名無しさん:2007/01/17(水) 00:54:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3426.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/17
[5] その他の制限:特になし

よろしくお願いします


283 :195:2007/01/17(水) 00:55:20
>>281
了解です。
ありがとうございました。

284 :デフォルトの名無しさん:2007/01/17(水) 02:22:18
>>282
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3427.txt
酔っぱらいだから間違っててもキニシナイ

285 :デフォルトの名無しさん:2007/01/17(水) 02:24:36
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

配列dataに10個の整数データを保存している。
その中の最大値を探すプログラムを完成せよ

#include <stdio.h>
void main()
{
int k,max=0;;
int data[10]={20,87,56,90,87,34,18,98,65,87};

よろしくお願いします。

286 :デフォルトの名無しさん:2007/01/17(水) 02:43:42
>>285
for(k=0;k<10;k++)if(max<data[k])max=data[k];
printf("%d\n",max);
}

287 :デフォルトの名無しさん:2007/01/17(水) 02:46:30
for(k=0;k<10;k++){
if(data[k]>max)
max=data[k];
}

288 :デフォルトの名無しさん:2007/01/17(水) 02:50:08
>>285
#include <stdio.h>
void main()
{
int k,max=0;
int data[10]={20,87,56,90,87,34,18,98,65,87};
for(k=0; k<sizeof(data)/sizeof(data[0]); k++) {
if(max < data[k]) max=data[k];}
printf("最大 : %d ",max);
}


289 :デフォルトの名無しさん:2007/01/17(水) 02:59:33
ありがとうございました、助かりました。
最後にもう1個だけお願いします。

次の10個の整数データを降順に並べ替えて出力するプログラムを作成せよ

#include <stdio.h>
void main()
{
int k;
int data[10]={20,87,56,90,87,34,18,98,65,87};

290 :デフォルトの名無しさん:2007/01/17(水) 03:14:15
>>289
int i,max;
for(k=0;k<10;k++){
max = k;
for(i=k+1;i<10;i++)if(data[max]<data[i])max=i;
if(k!=max){
data[k] ^= data[max];
data[max] ^= data[k];
data[k] ^= data[max];
}
}
for(k=0;k<10;k++)printf("%d ",data[k]);
降順って大きい順だったよな?ようやく酔いが覚めてきた

291 :デフォルトの名無しさん:2007/01/17(水) 09:00:01
>>280
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3428.cpp

292 :デフォルトの名無しさん:2007/01/17(水) 09:55:26
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
引数をとる以下のマクロを、標準関数 ( isdigit、isalpha 等 ) を使わずに
すべて記述してください。例で示すように条件として使えるようにしてください。

マクロ1. 引数が大文字のアルファベットかどうか調べるマクロIS_UPPER
マクロ2. 引数が数字を表す文字かどうか調べるマクロIS_NUMBER
マクロ3. 引数がアルファベットかどうか調べるマクロIS_ALPHA
マクロ4. 引数がスペースまたはタブまたは改行かどうか調べるマクロIS_SPACE

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし


293 :デフォルトの名無しさん:2007/01/17(水) 10:05:07
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次に一部が空欄になっている関数 mem_set を示します。
この関数は、s で指定されたアドレスから n バイト分を c で
埋め、返り値として、s を返します。呼び出し側の参考例を示します。
呼び出し側
char str[128];
int i;
mem_set(str, 0, 128); /* すべてのバイトを0に初期化 */
mem_set(&i, 0, 4); /* すべてのバイトを0に初期化 */
/*
関数mem_set
渡されたvoidポインタ型の引数sの示すアドレスからnバイト分 c で埋める。
返り値は s
*/
void *mem_set(void *s, int c, int n){
int i = 0;
char *p = ([ 空欄1 ])s;
for(i = 0; i < [ 空欄2 ] ; i++)
*(p + i) = [ 空欄3 ];
return [ 空欄4 ];
}
この空欄をうめてプログラムを完成させてください。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明日
[5] その他の制限:なし


294 :デフォルトの名無しさん:2007/01/17(水) 10:31:33
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
下に示すように、1から読み込んだ正の整数値までの和を求めるプログラムを作成せよ。

実行結果

正の整数を入力してください:10

1から10までの足した値は55です。

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (VC6.0)
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:なし


295 :デフォルトの名無しさん:2007/01/17(水) 10:55:05
>>294
#include<stdio.h>
int main(){
int i,n,sum=0;
printf("正の整数を入力してください:");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum += i;
printf("1から%dまでの足した値は%dです。\n",n,sum);
return 0;
}

296 :デフォルトの名無しさん:2007/01/17(水) 10:55:18
>>293

void *mem_set(void *s, int c, int n)
{
int i = 0;
char *p = (char *)s;

for(i = 0; i < n; i++)
*(p + i) = c;

return s;
}

297 :デフォルトの名無しさん:2007/01/17(水) 10:58:45
>>292
#define IS_UPPER( x )   ( (x) >= 'A' && (x) <= 'Z' )
#define IS_NUMBER( x )  ( (x) >= '0' && (x) <= '9' )
#define IS_ALPHA( x )   (((x) >= 'A' && (x) <= 'Z' ) || ((x) >= 'a' && (x) <= 'z') )
#define IS_SPACE( x )   ( (x) == ' ' || (x) =='\t' || (x) =='\n' || (x) =='\r' )


298 :247:2007/01/17(水) 11:48:30
たびたび失礼します。
247で質問した者ですが、
「ID番号(int型)と名前(char型20個の配列)をメンバーに持つ構造体を定義し、
その構造体の変数を2個の配列で宣言する。
2件分のID番号と名前を入力し、それを逆順に表示するプログラムをデータを格納する構造体配列はmain()関数にて宣言し、データの入力は別関数により行う。」
例えば入力処理関数の例として、
void inp_data(構造体配列へのポインタ, int 入力個数);
が挙げられていたのですが、この問題を5人分のデータに変更するときはどのようなプログラムになりますか?

難しいことは習っていないので、できるだけ簡単なプログラムでお願い致します。

299 :デフォルトの名無しさん:2007/01/17(水) 12:26:32
>>298
>>257のmain関数を改造
変更したいサイズを5とすると下みたいな感じ?

#define ID_MAX 5 ←main関数の前にこの一行を追加
(今後、サイズを変えたい場合はここを変える)

int main()
{
IDNAME obj[ID_MAX];int i;              ←ここ変更
input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
for(i = ID_MAX - 1; i >=0 ; i--)              ←ここ変更
printf("%d, %s \n",obj[i].ID,obj[i].name);
return 0;
}

300 :251:2007/01/17(水) 12:42:26
>>247表示も、順方向と逆方向共に表示できる関数用意したぞ
それと質問するときは、ぶつ切りで聞かずに全部聞いて
#include <stdio.h>
#include <string.h>
typedef struct IDNAME{
int ID;
char name[20];
}IDNAME;
void input_data(IDNAME *obj, int size);void show_data(IDNAME *obj, int size);void rshow_data(IDNAME *obj, int size);
int main(){IDNAME obj[100];int i;input_data(obj, (int)sizeof(obj)/sizeof(IDNAME));show_data(obj, (int)sizeof(obj)/sizeof(IDNAME));rshow_data(obj, (int)sizeof(obj)/sizeof(IDNAME));
return 0;}
void input_data(IDNAME *obj, int size){char buff[20];int i;
for(i = 0; i < size; i++){puts("ID入力: ");fgets(buff, sizeof(buff),stdin);buff[strlen(buff)-1] = '\0';
sscanf(buff,"%d",&obj[i].ID);memset(buff,'\0',sizeof(buff));puts("name入力: ");fgets(buff, sizeof(buff),stdin);
buff[strlen(buff)-1] = '\0';strcpy(obj[i].name,buff);memset(buff,'\0',sizeof(buff));}}
void show_data(IDNAME *obj, int size){
int i;puts("順方向で表示");
for(i = 0; i < size; i++)
printf("%d %s \n",obj[i].ID,obj[i].name);}
void rshow_data(IDNAME *obj, int size){
int i;puts("逆方向で表示");
for(i = size - 1; i >=0; i--)
printf("%d %s \n",obj[i].ID,obj[i].name);}


301 :デフォルトの名無しさん:2007/01/17(水) 12:47:29
>>295
ありがとうございます。

302 :デフォルトの名無しさん:2007/01/17(水) 12:49:20
>>298-300 改造した
#include <stdio.h>
#define ID_MAX  (5)    //人数
typedef struct IDNAME{
    int ID;
    char name[20];
}IDNAME;

void input_data(IDNAME *obj, int size)
{
    while(size--){
        printf("ID入力: ");
        scanf("%d",&obj->ID);
        printf("name入力: ");
        scanf("%s",obj->name);
        obj++;
    }
}

int main()
{
IDNAME obj[ID_MAX];
int i;
    input_data( obj, ID_MAX );
    for(i=ID_MAX-1; i >=0; i--)
        printf("%d, %s \n",obj[i].ID,obj[i].name);
    for(i=0; i<ID_MAX; i++)
        printf("%d, %s \n",obj[i].ID,obj[i].name);
    return 0;
}


303 :247:2007/01/17(水) 12:59:41
>>300
gccでコンパイルすると
int i;puts("順方向で表示");
int i;puts("逆方向で表示");
にエラーが現れるようなのですが・・・?
エラーが初めて見るものでよく意味が分からないのですが、unknown escape sequence :'\216'
と、どちらも書いてありました。。。

304 :デフォルトの名無しさん:2007/01/17(水) 13:02:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
下に示すように、読み込んだ整数値の個数だけ * を縦に連続して表示するプログラムを作成せよ。
なお、0以下の整数が入力された場合は、何も表示しないこと。

実行結果

正の整数を入力してください:3

*
*
*

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (VC++2005)
 [3.3] 言語: C
[4] 期限: 明日
[5] その他の制限:なし

305 :247:2007/01/17(水) 13:02:49
>>302

あーー!とっても分かりやすい!!
大変ありがとうございます!!!!!!

306 :デフォルトの名無しさん:2007/01/17(水) 13:10:27
>>304
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i;
int dat;
char buf[256];

while (1){
printf("正の整数を入力して下さい:");
if (NULL != fgets(buf, 255, stdin)){
if (1 == sscanf(buf, "%d\n", &dat)){
break;
}
printf("数字じゃないようですが?\n");
}
}

for (i = 0; i < dat; i++){
printf("*\n");
}
}

307 :デフォルトの名無しさん:2007/01/17(水) 13:22:40
>>306
ありがとうございます

308 :デフォルトの名無しさん:2007/01/17(水) 13:25:35
>>306
エラーにしないと(数字以外を入力しないと)延々聞かれるのか?w

309 :デフォルトの名無しさん:2007/01/17(水) 13:27:01
>>308
正常入力まで延々と聞かれるだけyo

310 :デフォルトの名無しさん:2007/01/17(水) 13:43:23
>>303
なんとなくだが…
 ShiftJIS で保存してて
 文字 "表" の 2btye目 が実は '\' と同じで
 gcc が ShiftJIS非対応でエスケープと勘違いした
とか。 一旦漢字一切無しでやってみそ

311 :デフォルトの名無しさん:2007/01/17(水) 15:27:34
>>303
gccのオプションに
-finput-charset=sjis -fexec-charset=sjis
を追加汁

312 :デフォルトの名無しさん:2007/01/17(水) 15:30:54
早くといてくれよ
単位おとしちまう

313 :デフォルトの名無しさん:2007/01/17(水) 16:01:13
>>312
どれ?

314 :デフォルトの名無しさん:2007/01/17(水) 16:02:07 ?2BP(202)
>>312
落とせばいいだろ。クズが。

315 :デフォルトの名無しさん:2007/01/17(水) 16:05:05
>>312
期限過ぎてから解いてやるからどの課題か教えてくれ

316 :270:2007/01/17(水) 16:35:29
訂正です。入力ファイルはnotファイルです。出力先はnotファイル8枚作るでした。
よろしくお願いします。


317 :デフォルトの名無しさん:2007/01/17(水) 16:36:33
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
Ctr+C を押すだびに、ログファイルに、日付時間情報と、プログラム実行開始からの
経過時間(秒数)をを記録していくプログラムを作成する。
プログラム本体は無限ループでとまらない(Ctr+\でとめる)ようにする。
ログファイル名は特に指定しない。
雛形( main 部分だけ)
#include <stdio.h>
#include <signal.h>
#include <time.h>
time_t startTime;
int main( void )
{
int onsignal();
time( &startTime );
puts("Ctr+c is ignored. Press Ctr+\\ to stop.");
signal( ??????????????? );
while(1);
exit( 0 );
}
int onsignal( int sig )
{
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1月24日
[5] その他の制限:特になし

318 :デフォルトの名無しさん:2007/01/17(水) 16:59:50
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
以下のような構造体を定義する。
typedef struct _Student Student;
struct _Student {
char name[10]; // 名前(英名)
int pt1; // 数学の得点
int pt2; // 英語の得点
}
データ数numを入力し、
num人分のデータを端末から tommy 87 64 のように入力し、
構造体の各メンバーに格納する。
合計点の高い方から順に出力する。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] 期限:1月24日
[5] その他の制限:特になし

319 :デフォルトの名無しさん:2007/01/17(水) 17:03:11
>>244
助かりました!!
本当にありがとうございましたm(_)m

320 :デフォルトの名無しさん:2007/01/17(水) 18:23:43
>>318
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3429.txt

321 :251:2007/01/17(水) 18:54:04
>>318
俺も出来たからはっちゃお
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3430.txt

322 :デフォルトの名無しさん:2007/01/17(水) 18:58:01
名無しにすんのわすれてた
>>321のは無し
こっち
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3431.txt

323 :デフォルトの名無しさん:2007/01/17(水) 19:10:09
#include <iostream>
using namespace std;

int main(void)
{
unsigned char x,y;

cout << "2つの値を入力してください。\n";

cin >> x >> y;

x -= '0';
y -= '0';

int a = x + y;
int b = x * y;

printf("x = %d, y = %d, x + y = %d, x * y = %d",x,y,a,b);

return 0;
}

これで出力したら10以上の数値が出ないんですが、
どうしたら出るようになるか教えてください。

324 :デフォルトの名無しさん:2007/01/17(水) 19:13:38
>>320-322
buff[strlen(buff)-1] = '\0'; これは?どんな意味があるんだ?w


325 :デフォルトの名無しさん:2007/01/17(水) 19:14:31
>>317
Linux環境が手元に無いのでアレなのだが……
onsignal()の関数型は
void onsignal(int)
が正しいと思う。

main()のsignal()の呼び出しは
signal(SIGINT, onsignal);
のようにする、onsignal()の実装は↓のような感じで。
void onsignal(int sig)
{
    time_t now;
    struct tm *local;
    FILE *fp;
    time(&now);
    local = localtime(&now);
    fp = fopen("a.log", "a");
    fprintf(fp, "%04d/%02d/%02d %02d:%02d:%02d  %d seconds elapsed.\n",
            local->tm_year + 1900, local->tm_mon+1, local->tm_mday,
            local->tm_hour, local->tm_min, local->tm_sec,
            now - startTime);
    fclose(fp);
    /* ↓ this may be needless */
    signal(SIGINT, onsignal);
}

326 :デフォルトの名無しさん:2007/01/17(水) 19:15:53
>>324
誰にレスしてるんだよw

327 :デフォルトの名無しさん:2007/01/17(水) 19:16:34
>>323
unsigned charじゃなくintで受けたら?

328 :デフォルトの名無しさん:2007/01/17(水) 19:18:36
そうしたいのはやまやまなんですが、
宿題で『unsigned char』と『printf』ははずせないんです…。


329 :デフォルトの名無しさん:2007/01/17(水) 19:21:53
>>328
とりあえず>>1に従って、問題を書いて。
どういう条件の問題なのか分からないと…。

330 :デフォルトの名無しさん:2007/01/17(水) 19:22:58
>>323
x, yのことなら、そのやり方なら一桁の整数しか受けられないのは当たり前
x + y, x * yが10以上になる場合は、それできちんと出力されるぞ

331 :デフォルトの名無しさん:2007/01/17(水) 19:28:34
すみませんでした。問題は下記の通りになります。

2つの値を入力しunsigned char 型の変数x,yに代入してください。
また、a = x + y, b = x * yの計算を実施し、表示してください。

※aとbは、オーバーフローに気を付け作ること
 printf関数を使い
 x = 1, y = 10 , x + y = 11 , x * y = 10
と出力すること

332 :デフォルトの名無しさん:2007/01/17(水) 19:32:10
>>331
#include <iostream>
using namespace std;
int main(void)
{
    int a, b;
    unsigned char x, y;
    cin >> a >> b;
    x = a;
    y = b;
    printf("x = %d, y = %d, x + y = %d, x * y = %d\n",
            x, y, x + y, x * y);
    return 0;
}

333 :332:2007/01/17(水) 19:34:19
すまん、ちと修正
#include <cstdio>
#include <iostream>
using namespace std;
int main(void)
{
    int a, b;
    unsigned char x, y;
    cin >> a >> b;
    x = a, y = b;
    printf("x = %d, y = %d, x + y = %d, x * y = %d\n",
            x, y,  a = x + y, b = x * y);
    return 0;
}

334 :デフォルトの名無しさん:2007/01/17(水) 19:36:42
>>324
fgets()はgets()と違って末尾に'\n'を追加する仕様になっているからだと思われる。
7.19.7.2 The fgets function
2 The fgets function reads at most one less than the number of characters specified by n
from the stream pointed to by stream into the array pointed to by s. No additional
characters are read after a new-line character (which is retained) or after end-of-file. A
null character is written immediately after the last character read into the array.

335 :デフォルトの名無しさん:2007/01/17(水) 19:37:34
>>332
助かりました。ありがとうございます。

336 :デフォルトの名無しさん:2007/01/17(水) 19:40:53
>>334
ファイル末尾が改行で終端してない場合や行長がバッファサイズを越えた場合は
\n がつかないから、決めうちで削るのは良くないんだけどな。
if (p = strchr(buff, '\n'))
  *p = '\0';
とでもしたほうがよい。


337 :203:2007/01/17(水) 20:32:45
>>206さん
ありがとうございます!

338 :デフォルトの名無しさん:2007/01/17(水) 20:36:41
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次のプログラムは、コマンドライン引数の文字数をそれぞれ調べて表示するものです。

#include <stdio.h>

/* 文字列の長さを調べる関数str_len */
int str_len(char *p){
int len = 0;

for(; [ 空欄 1 ] != [ 空欄 2 ] ; [ 空欄 3 ])
[ 空欄 4 ]++;

return len;
}

int main(int argc, char *argv[]){
int i = 0;

for(i = 0; i < argc; i++)
printf("%s: %d\n", argv[i], str_len(argv[i]));
return 0;
}
空欄を埋めて関数 str_len を完成させてください。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし


339 :デフォルトの名無しさん:2007/01/17(水) 20:37:16
>>336
それって'\n'を見つけて'\0'にしてるだけで
fgets()の使用上、>>324に書いてる書き方と
大差ねーんじゃねーの?
てか、バッファサイズ越えた時の対処の仕方を書いてやれよ。
バッファ超えしない限り、終端が'\n''\0'っていう並びになるのはfgets()使う限り
あたりまえの事だしよ。

340 :デフォルトの名無しさん:2007/01/17(水) 20:41:54
>>338
int str_len(char *p){
int len = 0;

for(; p[len] != '\0' ; )
len++;

return len;
}

341 :デフォルトの名無しさん:2007/01/17(水) 20:44:00
1] 授業単元:C言語
[2] 問題文(含コード&リンク):
-----------------
% ./a.out
I'm
ready.
%
------------------
include <stdio.h>
int main(void){
char str[] = "I'm ready.\n";
char *argv[3];
char **ap = NULL;
str[[ 空欄 1 ]] = '\0';
str[[ 空欄 2 ]] = '\0';
argv[0] = [ 空欄 3 ] ;
argv[1] = [ 空欄 4 ];
argv[2] = [ 空欄 5 ] ;
ap = [ 空欄 6 ] ;
/* 各文字列を表示 */
for(; *ap != NULL; ap++)
printf("%s\n", *ap);
return 0;
}
実行すると、上記の結果になるようにプログラムの空欄を埋めてください。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: 明後日
[5] その他の制限:なし


342 :デフォルトの名無しさん:2007/01/17(水) 20:46:54
>>339
>てか、バッファサイズ越えた時の対処の仕方を書いてやれよ。
>>336がまさにそれだろ。
改行があるときだけそれを潰している。

343 :デフォルトの名無しさん:2007/01/17(水) 20:51:26
>>341
str[3] = '\0';
str[10] = '\0';
argv[0] = &str[0];
argv[1] = &str[4];
argv[2] = NULL;
ap = argv;

344 :デフォルトの名無しさん:2007/01/17(水) 21:59:12
>>339
>バッファ超えしない限り、終端が'\n''\0'っていう並びになるのはfgets()使う限り
>あたりまえの事だしよ。

そんなことはない。ファイルからリダイレクトで食わせた場合などはそうならない。

345 :デフォルトの名無しさん:2007/01/17(水) 22:15:44
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
DEBUG が定義されている場合には、引数名と引数の示す値を10進数で表すマクロ dprintf が有効に
なるように空欄を埋めてください。その際、ファイル名、行数の出力が行われるようにしてください
また、必ずヒントに記述されている方法を利用してください。
dprintf の期待される結果は、次のとおりです。
ファイル名(行番号): 変数名 = 変数の示す値
#ifdef [  1  ]
#define dprintf(x) [  2  ]
#else
#define dprintf(x) /* 定義しない */
#endif
ヒント====
#include <stdio.h>
/* 変数名とその値を10進数で表示 */
#define printparam(x) printf("%s = %d\n", #x, x)
int main(void){
int i = 3;
printparam(i);
return 0;
}
実行結果
% ./a.out
i = 3
%
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: 1月19日
[5] その他の制限:なし


346 :デフォルトの名無しさん:2007/01/17(水) 22:28:21
あくまでも仮定の話
1.>>338 >>341 >>345 が同一人物
2.宿題が新人教育の一環

1.2.が共に真ならば、
できる人間の足を引っ張るプログラマができあがって、
会社からすると、いないほうがマシなクズが一丁上がり

347 :デフォルトの名無しさん:2007/01/17(水) 22:36:22
同一人物だったら、小出しにしないで全部の問題をまとめてうpして欲しいな

348 :デフォルトの名無しさん:2007/01/17(水) 22:43:33
>>345
そんな穴埋め問題を丸投げにしてるようじゃ先が思いやられるなあ

#ifdef DEBUG
#define dprintf(x) printf("%s(%d): %s = %d\n", __FILE__, __LINE__, #x, (x))
#else
#define dprintf(x) /* 定義しない */
#endif

いまから道を変えても遅くないと思うよ

349 :デフォルトの名無しさん:2007/01/17(水) 23:00:25
すいません、こちらでC#できる人はいませんか?
課題お願いしたいんですけど・・・。

350 :デフォルトの名無しさん:2007/01/17(水) 23:03:28
C#のスレってないんだっけ
誰も答えてくれる保証は無いけど、とりあえず書いてみたら?
案外Javaスレの方が分かる人多そうだな・・・

351 :349:2007/01/17(水) 23:13:51
>>350 ありがとう。

[1] 授業単元: インタフェース
[2] 問題文(含コード&リンク):
人に説明することを想定して簡明に説明をつけること。

1:正規表現のプログラムを作成しなさい。
内容、取り扱うクラス、作成するプログラム数、プログラムの長さなどは自由

2:MatchEvaluator デリゲートに関するプログラムを作成しなさい。
内容、取り扱うクラス、作成するプログラム数、プログラムの長さなどは自由。

3:Point構造体ならびにSize 構造体と(ほぼ)同機能の
PointCクラスならびにSizeCクラスを作成しなさい。
作成する新クラス名は自由。

[3] 環境
 [3.1] OS: Win
 [3.2] Visual Studio.NET
 [3.3] C#
[4] できれば早めに
[5] なし

よろしくお願いします。

352 :デフォルトの名無しさん:2007/01/17(水) 23:22:56
>>351
1番と2番はこれじゃ駄目なのかい?
http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_03.html

353 :349:2007/01/17(水) 23:37:27
>>352
こんなとこがあったのか・・・OTLオレノメハフシアナカ・・・
盗作は評価大幅減だそうだけど大丈夫かなぁ?

354 :デフォルトの名無しさん:2007/01/18(木) 00:41:28
>>353
このスレを利用できるのはバレたときに開き直れる勇気と根性を持ってる香具師だけ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3435.txt
適当に削って使ってくれ

355 : ◆ZKcfds8GQA :2007/01/18(木) 00:46:03
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
・9×9のマスを表示する。
  ・マウスクリックで対象のマスをアクティブにし、キーボードから数字を入力。
  ・マスは、キーボードのカーソルキーで移動できるようにする。
  ・入力された数字は、2次元配列に格納させる。
[3] 環境
 [3.1] OS:Windoes Xp
 [3.2] コンパイラ名とバージョン: Borland C++ 5.02
 [3.3] 言語:C言語
[4] 期限: 2007/01/20 17;00
[5] その他の制限:GUIを使うこと。

エディタは、VC++を使ってます。

よろしくお願いします。

356 :デフォルトの名無しさん:2007/01/18(木) 00:49:54
学校で提出された課題がどうにも間に合いそうにないので、複数投下しても大丈夫でしょうか?

[1] 授業単元:C言語 プログラムの流れの繰返し
[2] 問題文(含コード&リンク):
(1)非負の整数値を読み込んで、その数を逆順に表示するプログラムを作成せよ。 負の値を読み込んだ場合は、再入力を促すこと。なお複合代入演算子/=を用いて解きなさい。
実行結果
非負の整数を入力してください:1963
1963を逆から読むと3691です。

(2)段数を読み込んで、縦横に * を並べて右上側が直角となる直角三角形を表示するプログラムを作成よ。
実行結果
何段ですか?:5
*****
****
***
**
*

(3)下に示すように、読み込んだ整数の段数をもつピラミッドを表示するプログラムを作成せよ。
実行結果
ピラミッドを作りましょう。
何段ですか?:3
*
***
*****

[3] 期限: 明日

よろしくお願いします。

357 :354:2007/01/18(木) 00:50:16
    public void Offset(PointC pt)
    {
        this.Offset(pt.X, pt.Y);
    }
    public void Offset(Int32 dx, Int32 dy)
    {
        this.x += dx;
        this.y += dy;
    }

おっと、忘れてた。PointCに追加

358 :356:2007/01/18(木) 00:53:30
すいません、間違えました。
>>356は「*」は問題文通りです。

359 :デフォルトの名無しさん:2007/01/18(木) 01:17:26
>>356
(1)
#include <stdio.h>
int main(void)
{
int num;
do {
printf("悲負の整数を入力してください:");
scanf("%d", &num);
} while ( num < 0);
printf("%dを逆から読むと", num);
do {
printf("%d", num % 10);
num /= 10;
} while (num > 0);
puts("です。");
return 0;
}


360 :デフォルトの名無しさん:2007/01/18(木) 01:18:14
(2)
#include <stdio.h>
int main(void)
{
int i, j, num;
printf("何段ですか?:");
scanf("%d", &num);
for (i=num; i>0; i--) {
for (j=0; j<i; j++) {
printf("*");
}
putchar('\n');
}
return 0;
}

361 :デフォルトの名無しさん:2007/01/18(木) 01:19:15
(3)
#include <stdio.h>
int main(void)
{
int i, j, num;
printf("何段ですか?:");
scanf("%d", &num);
for (i=0; i<num; i++) {
for (j=0; j<=i; j++) {
printf("*");
}
putchar('\n');
}
return 0;
}

362 :デフォルトの名無しさん:2007/01/18(木) 01:21:36
(3)間違えた

363 :デフォルトの名無しさん:2007/01/18(木) 01:31:15
>>356
#include <stdio.h>
int main(void) {
    int n = 6;
    int i, j;
    printf("ピラミッドを作りましょう。\n何段ですか?:");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        for (j = 0; j < n - i - 1; j++) printf(" ");
        for (j = 0; j < 2 * i + 1; j++) printf("*");
        printf("\n");
    }
    return 0;
}

364 :デフォルトの名無しさん:2007/01/18(木) 01:32:56
>>356
(3)(>>363)に続いて(2)
#include <stdio.h>
int main(void) {
    int n = 6;
    int i, j;
    printf("何段ですか?:");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        for (j = 0; j < i; j++) printf(" ");
        for (j = 0; j < n - i; j++) printf("*");
        printf("\n");
    }
    return 0;
}

365 :デフォルトの名無しさん:2007/01/18(木) 01:36:31
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
名簿を作るプログラムを構造体関数ポインタで書くにはどうしたらよいですか教えてください。
書き込むほうをinputo、表示するほうをoutputでおねがいします。
struct meibo{
char name[15];
char address[40];
char tel[15];
};
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語:C
[4] できれば早く
[5] その他の制限:特になし

366 :デフォルトの名無しさん:2007/01/18(木) 01:39:38
>>365
その"inputo"は冗談だよな?

367 :356:2007/01/18(木) 01:43:11
コンパイルできました。
本当にありがとうございます。

368 :デフォルトの名無しさん:2007/01/18(木) 01:44:07
そんなことより
> "構造体関数ポインタ" の検索結果 約 13 件中 1 - 8 件目 (0.88 秒) 

369 :349:2007/01/18(木) 02:29:22
>>354
わかった。開き直ってくるよ。
それはそれとして本当にありがとう。


370 :デフォルトの名無しさん:2007/01/18(木) 09:16:09
>>368
構造体(内) の 関数ポインタ
構造体関数 の ポインタ (C++ でメンバ関数のポインタ?)
構造体 をとる 関数 で 引数はポインタ
etc....

色々解釈できるな

371 :デフォルトの名無しさん:2007/01/18(木) 09:19:52
>>355
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3438.zip

borland5.02とか使ったことないので、
ちゃんとmakeできるかどうか知りません。

372 :デフォルトの名無しさん:2007/01/18(木) 10:11:09
先頭だけ大文字にしたいんですけど・・
toupperを使ってできますか?
よろしくでお願いします

373 :デフォルトの名無しさん:2007/01/18(木) 10:45:00
>>372
できるよ

374 :デフォルトの名無しさん:2007/01/18(木) 11:01:45
ソースに貼り付けたけど プログラムとして逸脱した文字とかでて
でませんよ
>>372


375 :デフォルトの名無しさん:2007/01/18(木) 11:05:23
[1] 授業単元:
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3439.txt
[3] 環境
 [3.1] OS: Windows
[3.3] 言語: C
[4] 期限:2007/01/18

お願いします

376 :デフォルトの名無しさん:2007/01/18(木) 12:18:16
>>375
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3441.txt

377 :デフォルトの名無しさん:2007/01/18(木) 12:21:40
>>376
設問 (2) が微妙だけど、その実装は 1+1/1!+ … +1/k! … +1/10! だよね。

>>375
1+1/1! + 1+1/2! + ・・・+1/10!
      ~~~~ こいつは誤植なのかどうなのか?

378 :デフォルトの名無しさん:2007/01/18(木) 12:26:31
すみません 1+1/1!+1/2!でしたorz

379 :376:2007/01/18(木) 12:27:51
>>377
うわ。気づかなかった…。
そうだったのね…。

380 :デフォルトの名無しさん:2007/01/18(木) 13:10:28
>>375
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3442.txt

381 :デフォルトの名無しさん:2007/01/18(木) 13:13:12
まだ解かれてない宿題ある?

382 :デフォルトの名無しさん:2007/01/18(木) 13:14:47
期限切れてるやつならいっぱいあると思う。

383 :デフォルトの名無しさん:2007/01/18(木) 13:14:55
先頭の文字を大文字に変えるプログラム
教えてください。
toupperを使ってのプログラムを

384 :デフォルトの名無しさん:2007/01/18(木) 13:15:42
>>383
>>99でいいんじゃないか?

385 :デフォルトの名無しさん:2007/01/18(木) 13:21:12
これでいいんじゃないか?

#include <stdio.h>
#include <ctype.h>

int main(void)
{
int c;
while ((c = getchar()) != EOF)
putchar(toupper(c));
return 0;
}

386 :デフォルトの名無しさん:2007/01/18(木) 13:21:18
宿題スレの回答者って何人ぐらいなんだろう?

387 :デフォルトの名無しさん:2007/01/18(木) 13:43:45
一人もいないんじゃね?

388 :デフォルトの名無しさん:2007/01/18(木) 14:40:56
高度なAIが搭載されてるからな

389 :デフォルトの名無しさん:2007/01/18(木) 14:52:12
1のテンプレはJava宿題の方が分かりやすくていいな


390 :デフォルトの名無しさん:2007/01/18(木) 14:59:36
急速にスレの質が低下してまいりました

391 :デフォルトの名無しさん:2007/01/18(木) 15:30:07
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
・テキストファイルを読み込んで指定した文字または文字列が何行目にあるか検索する。

・読み込むテキストファイルはコマンドライン引数から得る
・検索する文字、文字列はscanf()から得る
・scanf()から得た文字、文字列の配列はヒープで確保
・検索する文字、文字列がなければエラーメッセージを出して
再び文字、文字列を指定して再検索
・指定した文字、文字列がみつかれば、「○○は○行目にあります。」と表示する
・and検索、or検索もできるようにする

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1月20日に提出
[5] その他の制限:
何を習ったかはここを見てください!学校バレますがw
http://ylb.jp/c/
http://ylb.jp/2006b/proc/index.html
http://www.kyoto-su.ac.jp/%7Eyamada/programming/programmingB.html
自由製作課題なんで、習ってないやつを多少使っても大丈夫です!
よろしくお願いします!

392 :デフォルトの名無しさん:2007/01/18(木) 15:49:30
>>386
聞いたところによると、四千万人らしいぜ

393 : ◆.Gr6nQtn0w :2007/01/18(木) 15:51:10
[1] 授業単元: 情報システム論
[2] 問題文(含コード&リンク):
windowsマシンとLinuxマシンでのネットワークプログラミング
windowsマシンでコンピュータ名、ログインユーザ名を取得し、LAN内のLinuxマシンに送信。
Linuxマシンは送信されたデータを標準出力に表示するとともに、ファイルにも書き込む。
というものですが、windows側で取得した情報をLinux側に送信するとLinux側のプロンプトでは1文字だけしか表示されません。
文字コードの違いによるものらしいのですが、調べてもいまいちわかりませんでした。
windowsマシンでは TCHAR 型の文字列でこの情報を送信し、Linux側は char 型で受信しています。
できればwindows側でLinuxに対応した文字コードに変換したいのですが、何かいい方法はないでしょうか。
よろしくお願いします。
[3] 環境
 [3.1] OS: Windows : XP Pro/Linux : Turbolinux Personal
 [3.2] コンパイラ名とバージョン: Visual C++ 2005 Express Edition/cc
 [3.3] 言語: C
[4] 期限: 2007年1月20日、正午まで
[5] その他の制限: 特になし


394 :デフォルトの名無しさん:2007/01/18(木) 15:51:12
日本人だけで?全世界でもすごい数だがw

395 :デフォルトの名無しさん:2007/01/18(木) 16:12:38 ?2BP(222)
>・検索する文字、文字列はscanf()から得る

この条件だけでやる気失せた。
こんなクソ課題出す教官はいますぐ死ね。

396 :デフォルトの名無しさん:2007/01/18(木) 16:20:47
>・scanf()から得た文字、文字列の配列はヒープで確保
一見簡単そうに見えて難しいことを要求しているのか(標準入力の巻き戻し?)
大きさを 決め打ちしてヒープで 受けろ ということなのか

397 :デフォルトの名無しさん:2007/01/18(木) 16:46:44
> ・and検索、or検索もできるようにする
これの指定は?

398 :デフォルトの名無しさん:2007/01/18(木) 16:48:35
>>393
unsigned int sjis2euc(unsigned int sjis)
{
    unsigned int hib, lob;
    hib = (sjis >> 8) & 0xff;
    lob = sjis & 0xff;
    hib -= (hib <= 0x9f) ? 0x71 : 0xb1;
    hib = (hib << 1) + 1;
    if (lob >= 0x9e) {
        lob -= 0x7e;
        hib++;
    } else if (lob > 0x7f) lob -= 0x20;
    else lob -= 0x1f;
    hib |= 0x80;
    lob |= 0x80;
    return (hib << 8) | lob;
}

399 :デフォルトの名無しさん:2007/01/18(木) 17:19:04
ピリオドで改行するプログラムを教えてください


400 :デフォルトの名無しさん:2007/01/18(木) 17:23:00 ?2BP(222)
ジャパン語でおk

401 :デフォルトの名無しさん:2007/01/18(木) 17:23:14
>>399
>>1

402 :デフォルトの名無しさん:2007/01/18(木) 17:25:32
>>391
and検索 or検索 は 指定が方法が不明なので未実装w
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3443.txt


403 :デフォルトの名無しさん:2007/01/18(木) 17:27:46
>>399
#include <stdio.h>

int main()
{
    int c;
    while ((c = getchar()) != EOF) {
        putchar(c);
        if (c == '.')
            putchar('\n');
    }
    return 0;
}

404 :デフォルトの名無しさん:2007/01/18(木) 17:36:28
これってここに書き込んでいいんでしょうか・・・?スレ違いならすぐどかすので言ってください

[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
リバーシ(オセロ)を作れ。なおreverse(石を反す)、evalate(評価)、Tentative(仮置き)
turn(順番)、terminate(終了判定)、diffcrence(得失点差)、AlfaBeta(最良手)、Display(盤面データ)
Input(入力)、Level(レベル設定)等の関数を使い作成し、作成過程を3〜4段階にわけてレポートにすること。(コメントが明瞭な場合には加点する)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 2007年1月23日、正午まで
[5] その他の制限: 最終的に3,4個のファイルが必要になります。授業では二分木やMin-MaX法、α−β法、リスト構造などを習いました。
基礎的なC言語の知識もあります。よろしくお願いします


405 :デフォルトの名無しさん:2007/01/18(木) 17:36:31
そのひとMULTIPOSTERですよ。

406 :デフォルトの名無しさん:2007/01/18(木) 17:37:25
>>405>>399に対して。一応。

407 :デフォルトの名無しさん:2007/01/18(木) 17:45:15
>>404
ttp://hp.vector.co.jp/authors/VA015468/platina/algo/

408 :デフォルトの名無しさん:2007/01/18(木) 18:19:48
テスト

409 :デフォルトの名無しさん:2007/01/18(木) 18:41:53
[1] 授業単元: プログラミング基礎
[2] 問題文

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3445.txt

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: な し
[5] その他の制限: よろしくお願いします

410 :デフォルトの名無しさん:2007/01/18(木) 19:25:55
>>409
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3446.txt

411 :355 ◆ZKcfds8GQA :2007/01/18(木) 19:42:43
>>371
ありがとうございます。
やっぱり、エラー出てしまいました…

412 :デフォルトの名無しさん:2007/01/18(木) 19:42:51
>>410
名前にCRLFが混在するかもよw
で生年月はbuffから書式付きで食わせてるから NULL削除イラネ

413 :デフォルトの名無しさん:2007/01/18(木) 19:45:00
>>412
NULLじゃね〜〜 改行削除だったorz  颯爽と退場

414 :デフォルトの名無しさん:2007/01/18(木) 20:02:47
>>412
すいません。教えてください。
CRLFってWindowsの改行コードのことだと思うんですけど、
混在するとどの部分で問題になるんですか?

(すいません。
 プログラムの練習のつもりでここで回答してるので
 そういう詳しいところ良く分かんないんです…)

415 :デフォルトの名無しさん:2007/01/18(木) 20:04:07
>>411
とりあえずエラーメッセージ書いて

416 :デフォルトの名無しさん:2007/01/18(木) 20:20:53
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
木構造の木とは、階層関係にあるデータを表現する構造です。
木は節点(ノード)と呼ばれる要素を階層状に関係つけたものになっている。
入力されたデータを2分探索木で作成し、その内容を表示するプログラムを作れ。
穴埋め形式の問題で自分なりに埋めてみましたがうまく動きません…。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3447.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007/01/20 PM01:00まで
[5] その他の制限: 上記のファイルを修正する形でお願いします。


417 :デフォルトの名無しさん:2007/01/18(木) 20:37:00
>>416
とりあえず明らかにおかしそうなのは、この辺だな。

- root = makeNode(p->left, w);
+ p = makeNode(p->left, w);


- root = makeNode(p->right, w);
+ p = makeNode(p->right, w);

- printf("%s\n", root);
+ printf("%s\n", p->word);


418 :デフォルトの名無しさん:2007/01/18(木) 20:46:34
>>417
- p = makeNode(p->left, w);
- p->left = makeNode(p->left, w);


- p = makeNode(p->right, w);
+ p->right = makeNode(p->right, w);

かな?

419 :デフォルトの名無しさん:2007/01/18(木) 21:00:19
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
  T)double型のメンバ2つを要素とする構造体(名前は適当で)をつくり、
    メンバをx座標、y座標と考えて3点の値を入力させ、その3点を頂点とする
    三角形の重心を計算し、出力する。

  U)キーボードから1行入力すると、、その行が「output」という名前のファイルに
    出力されるプログラムを作成せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: 習った範囲は
             @if else文  Awhile、do〜whileによる繰り返し
             Bfor文による繰り返し  Ccontinue文、break文
             D関数(作り方、呼び出し方、他モジュールにある関数、変数の扱い、記憶クラスと適応範囲)
             E1次、2次以上の配列、文字列の配列  
             Fポインタ(使い方、配列との関係、関数との値の受け渡し) G構造体、共用体

420 :416:2007/01/18(木) 21:23:06
>>417-418
ありがとうございます。
まともに動かすことが出来ました。

421 :355 ◆ZKcfds8GQA :2007/01/18(木) 21:37:35
>>415
エラーの内容です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3449.txt
お願いします。

422 :デフォルトの名無しさん:2007/01/18(木) 22:03:54
>>421
ごめん。俺には分からん

423 :デフォルトの名無しさん:2007/01/18(木) 22:26:44
>>421
bcc5.5.1ならコンパイルできたぞ
bcc5.02なんてやめてバージョンアップしちゃだめなのか?

424 :デフォルトの名無しさん:2007/01/18(木) 22:40:03
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3450.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:bcc55
 [3.3] 言語:C++
[4] 期限:2007/1/19

複数文ありますが、よろしくお願いします


425 :355 ◆ZKcfds8GQA :2007/01/18(木) 22:40:28
>>423
明日、bcc5.5.1にバージョンアップしてみます。

426 :419:2007/01/18(木) 23:01:03
速くお願いします

427 :デフォルトの名無しさん:2007/01/18(木) 23:01:56
>>424
1)
#include<iostream>
#include<algorithm>
#include<functional>
#include<numeric>
using namespace std;
int main(){
    const int size = 10;
    int data[size];
    for(int i=0;i<size;++i)
        std::cin >> data[i];
    int pos[size],neg[size];
    int pos_size = remove_copy_if
        (data,data+size,pos,bind2nd(   less<int>(),0)) - pos;
    int neg_size = remove_copy_if
        (data,data+size,neg,bind2nd(greater<int>(),0)) - neg;
    cout
        << "正の数の個数 = " << pos_size << " 和 = "
        << std::accumulate(pos,pos+pos_size,0) << endl;
    cout
        << "負の数の個数 = " << neg_size << " 和 = "
        << std::accumulate(neg,neg+neg_size,0) << endl;
}

428 :デフォルトの名無しさん:2007/01/18(木) 23:03:15
>>424
2)
#include<bitset>
#include<iostream>
#include<limits>
using namespace std;
int main(){
    int n;cin >> n;
    bitset<numeric_limits<unsigned int>::digits> sets(n);
    for(int i=sets.size();i-->0;){
        cout << sets[i];
        if(!(i&3))cout << (i?' ':'\n');
    }
}


429 :デフォルトの名無しさん:2007/01/18(木) 23:27:24
>>419
#include <stdio.h>
#define input(p) printf(#p ": "),scanf("%lf %lf", &p.x, &p.y)
#define output(p) printf(#p ": %f %f", p.x, p.y)

struct Point { double x, y; };

int main(void) {
    struct Point a, b, c;
    input(a);
    input(b);
    input(c);
    struct Point g = { (a.x + b.x + c.x) / 3, (a.y + b.y + c.y) / 3 };
    output(g);
    return 0;
}

430 :デフォルトの名無しさん ::2007/01/18(木) 23:42:25
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
次々に読み込んで、各人の総得点を計算して出力せよ。
前スレと同じですが平均や偏差はいりません。
・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
 プログラムを修正せずにうまく対処しなければならない)
・学生一人のデータは構造体としてまとめて、それにStudentという
 データ型名をつけること。
・Student型を要素とする配列を用意してプログラムを組むこと。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年1月21日) 構造体は用意しました。これを使ってください。
#include<stdio.h>
#include<math.h>
typedef struct {
charid[6];
inttotal, jap, math, eng,}
Student;

皆さんお願いします。


431 :デフォルトの名無しさん:2007/01/18(木) 23:46:25
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
英文を入力しアルファベットa〜z(大文字と小文字の区別なし)の出現回数を表示するプログラム

まだ、stdio.hしか習ってません。
過去ログも検索しましたが、標準ライブラリなどを使ってたのでダメでした。
アルファベット数だけ配列を用意し、文字列を順番にチェックして、その配列にカウントするらしいですが
文字列のチェックがわかりませんでした…。
よろしくです。


432 :デフォルトの名無しさん:2007/01/18(木) 23:51:27
[1] 授業単[1] 授業単元: プログラミングU
[2] 問題文(含コード&リンク):
  配列のデータを昇順で並び替えるプログラムを作成せよ
  ただし、次の誕生日をデータとし、月と日を2つの配列に入力してから
  関数を呼び出して、並び替えなさい。
  
  なお、入力形式は月/日として、/をデータの区切りとして、以下五件の
  データを入力しなさい。
  09/15,03/21,12/31,05/05,04/29
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:すいません。分かりませんので
                 色々書いときます…
                 visual C++ win32 コンソールアプリケーション
 [3.3] 言語: C
等々)
[5]手順としてはまずデータを文字列配列で入力して、ポインタ配列でそれを
数字に変換し、その後ポインタ配列を使って並び替えると思うのですが、
プログラムが作れません。ヒントでも結構ですので、ご教授ください。

433 :デフォルトの名無しさん ::2007/01/18(木) 23:56:21
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
非負整数h、m、sを入力して、h時間m分s秒に相当する
時間の長さを秒単位に変換して出力せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限:2007/1/22


434 :デフォルトの名無しさん:2007/01/18(木) 23:56:46
>>431
出力形式の指定がないから適当だが、こんな感じかね。

#include <stdio.h>
#define ALPHABETS 26
int main(void) {
    int c, count[ALPHABETS] = {}, i;
    while((c = getchar()) != EOF) {
        if('a' <= c && c <= 'z') count[c - 'a']++;
        else if('A' <= c && c <= 'Z') count[c - 'A']++;
    }
    for(i = 0; i < ALPHABETS; i++) {
        printf("%c\t%d\n", i + 'A', count[i]);
    }
    return 0;
}

435 :430:2007/01/18(木) 23:59:06
charとintの間を空けてください。

436 :431:2007/01/19(金) 00:05:54
>>434
ありがとうございます!!!

437 :デフォルトの名無しさん:2007/01/19(金) 00:06:08
>>433
そのくらい自分でがんばれよ

#include <stdio.h>
int main(void) {
    int h, m, s;
    printf("h: ");scanf("%d", &h);
    printf("m: ");scanf("%d", &m);
    printf("s: ");scanf("%d", &s);
    printf("%dh %dm %ds = %ds", h, m, s, (h * 60 + m) * 60 + s);
    return 0;
}

438 :デフォルトの名無しさん:2007/01/19(金) 00:07:26
>>433
printf("%u",h*60*60+m*60+s);
これだけでわかるだろ

439 :デフォルトの名無しさん:2007/01/19(金) 00:20:47
>>424です。
>>427-428さん本当にありがとうございました。

ただ、制限を書いていない問題のほうをアップしてしまっていて。。。
制限を修正したものが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3452.txt
こちらになります。
もし宜しければ再度よろしくお願いします。

440 :355 ◆ZKcfds8GQA :2007/01/19(金) 00:23:04
>>423
bcc5.5.1にバージョンアップして見ましたが、エラーが出てしまいます。
エラーの内容は、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3453.txt
です。
よろしくお願いします。

441 :デフォルトの名無しさん:2007/01/19(金) 00:23:59
>>402
ありがとうございます!!
あとはなんとかやってみます!!

442 :デフォルトの名無しさん:2007/01/19(金) 00:26:21
>>432
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3454.txt

443 :デフォルトの名無しさん:2007/01/19(金) 00:27:57
>>440
インクルードファイルのパスがおかしいんじゃね?

444 :デフォルトの名無しさん:2007/01/19(金) 00:36:23
>>442
442さんありがとうございます。
まだ習ってない物が一杯で正直意味不明ですが、デバックなしで開始して
教授に見せれば良いので、考えてどうしてもわからなかったら
これで乗り切らせていただきます。
本当にありがとうございました。

今からこちらを参考にして何とか習った範囲で自力で作ってみます!!


445 :デフォルトの名無しさん:2007/01/19(金) 00:44:15
>>391の課題なんですが
始めに何語で検索するかをscanfで得る→1語ならそのまま検索
                  →2語以上ならandまたはor検索をどちらか選択し検索
としたいのですが・・・説明不足ですみません。

446 :355 ◆ZKcfds8GQA :2007/01/19(金) 00:49:07
>>443
stdlib.hを入れなおして見ました。
stdlib.hに関するエラーは消えたと思います。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3456.txt
よろしくお願いします。

447 :デフォルトの名無しさん:2007/01/19(金) 00:49:30
>>445
とりあえずマルチはやめれ

448 :デフォルトの名無しさん:2007/01/19(金) 01:08:02
>>446
ちょっと確認だけど、borland5.5って、どこに入れたの?
>>440見ると、C:\BC5\INCLUDE\ってなってて
デフォルトのパスと違うみたいだけど、
これはこれであってるのかな?
あとbcc32.cfgの設定とかも大丈夫?

449 :デフォルトの名無しさん:2007/01/19(金) 01:22:02
[1] プログラミング
[2](1)キーボードから5個の整数を配列に入力し、それらの平均を求める
プログラムを作成せよ、ただし次の関数を作成し用いること。
void average(int *in double *result);
in 入力する整数の配列
result 合計結果
 戻り値   なし

(2)(1)のプログラムをメモリの動的確保を行うことでN個の整数を配列に
格納し平均を求めるプログラムに改良せよ。
[3.1]Windows
[3,2]bcc
[3.3]言語 C++
[4]1月19日15時まで

450 :355 ◆ZKcfds8GQA :2007/01/19(金) 01:24:01
>>448
borland5.5は、C:\BC5に入れました。
デフォルトと違うのは、旧バージョンのコンパイラがC:\BC5\だったので、アップデート用のbcc5.5を上書きしてみました。

bcc32.cfgは、
-IC:\BC5\INCLUDE
-LC:\BC5\LIB
となっています。


451 :デフォルトの名無しさん:2007/01/19(金) 02:02:40
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
1.整数値を受取り、戻り値として階乗を返す関数int factorial(int m)を作成しなさい

2.上記1の関数を利用して以下の式を計算し計算結果を表示するプログラムを完成させなさい
1+1/1!+1/2!・・・+1/10!
ここでk!はkの階乗を表す
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: study C
 [3.3] 言語: C
[4] 期限: 今日の7時まで
[5] その他の制限: 特になし

よろしくお願いします

452 :デフォルトの名無しさん:2007/01/19(金) 02:58:25
>>449
>>375とおんなじじゃねぇかよ
階乗の問題だけ抜けてるだけだし
なに?はやってんの?
俺が書いたソースは>>380
それより先にソースアップしたのが>>376さん
だからそれらのリンク先を見ろ


453 :452:2007/01/19(金) 03:01:10
>>451
おまえら何もんだよ。
また同じもんだいじゃねーの
はやってんの?
>>376
>>380
見ろ

454 :デフォルトの名無しさん:2007/01/19(金) 03:12:12
俺がより手短にしちゃる。
int factorial(int m) {
int x;
for(x=m; m>1; x*=(--m));
return x;}
>>380
int factorial(int n){
int i; if(n == 0 || n == 1) return 1;
呼び出される回数が少ないにしろ、不必要な判別までする必要はない。

455 :デフォルトの名無しさん:2007/01/19(金) 03:26:44
練習がてら作ったんだけど、>>449はこういう事じゃなかったのか…
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define EXPANDS_SIZE 32
void average(int *in, double *result)
{
int t = 0;
for(int i = 0; in[i] != NULL; ++i){ t += in[i];}
*result = (double)t / ((i > 0) ? (i) : (1));
}
int main(void)
{
int *p = (int*)malloc(sizeof(int) * (EXPANDS_SIZE + 1));
int elemsize = EXPANDS_SIZE, count = 0;
char buf[64];

while(fgets(buf, sizeof(buf), stdin)[0] != '\n'){
if(count >= elemsize){
p = (int*)realloc(p, sizeof(int) * (elemsize + EXPANDS_SIZE + 1));
elemsize += EXPANDS_SIZE;
}
p[count++] = atoi(buf);
}
p[count] = NULL;

double ave;
average(p, &ave);
printf("average: %lf\n", ave);
free(p);
return 0;
}

456 :451:2007/01/19(金) 03:56:04
>>453
study Cってわけのわからんコンパイラのせいで
>>376>>380じゃほとんど動かないんです・・・

457 :デフォルトの名無しさん:2007/01/19(金) 03:59:23
>study C
使わなきゃイイじゃん

458 :デフォルトの名無しさん:2007/01/19(金) 04:05:44
学校指定のやつだからそういうわけにも行かない・・・

459 :デフォルトの名無しさん:2007/01/19(金) 04:06:47
そんな学校やめちゃえ

460 :デフォルトの名無しさん:2007/01/19(金) 04:16:33
さらに無理だろw

461 :デフォルトの名無しさん:2007/01/19(金) 04:26:39
>>456
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。

462 :デフォルトの名無しさん:2007/01/19(金) 04:43:30
>>376はiostreamがないからムリだけど
>>380は動いたぞ

463 :デフォルトの名無しさん:2007/01/19(金) 05:05:53
>>462
>>380って色んなものくっついてない?
どれを削ればいいのかわからんから一から作ってるんだけど
プロトタイプ宣言なしに関数が開かれようとしてますとか関数の型が一致しませんって出る・・・

464 :404:2007/01/19(金) 07:08:46
>>407
これ全部組み立てたら完成しそうですね。
参考になるサイト教えてもらうって方法もあったんですね。
ありがとうございます

465 :デフォルトの名無しさん:2007/01/19(金) 07:33:33
>>456
それコンパイラやのうてインタプリタ

466 :デフォルトの名無しさん:2007/01/19(金) 07:40:06
>376ってさぁ
std使ってないし、CPPにする必要ないんじゃ・・・
素直に<std.io.h>と<stdlib.h>に変更して
//#include <iostream>
//using namespace std;

#include <stdio.h>
#include <stdlib.h>

for文のカウンタ( i )の宣言場所を変えればいいだけなんだが
//for( int i=・・・・
int i;
for( i=・・・・・

わざわざCPPにしてるのは?何か問題あるのか?

それと回答者側には今更言うまでも無い事だが
 using  を使う場合には
空間名を使用する直前で個々に付けるようにして欲しい
http://www.ksky.ne.jp/~seahorse/cpp/using.html
http://www.geocities.jp/bleis_tift/cpp/badstd.html

467 :376:2007/01/19(金) 07:54:04
>>466
> わざわざCPPにしてるのは?何か問題あるのか?

一切、ないです。間違えました。


468 :デフォルトの名無しさん:2007/01/19(金) 08:54:51
>>466
using を全体にかけるのが良くないというのはまともな開発での話し。
高々100行程度で、全体が容易に見通せるようなプログラムであれば
何の問題も発生しない。

実際あなたが紹介している二つ目のサイトには
>これの問題は、 超広大なstd名前空間がそのファイル内で
>グローバル(となんら変わらないもの) になってしまう点です。
と書いてあるが、ここの回答のプログラムはほとんど 1 ファイルで
完結するので、この問題点の指摘は該当しない。

469 :デフォルトの名無しさん:2007/01/19(金) 09:29:15
>>468
>グローバル(となんら変わらないもの) になってしまう点です。
この1点の意味を考えれば「1ファイル完結なら指摘は該当しない」とのレスは出来ないはず

C++でも他言語でも他オブジェクトから使う物は、
その根拠を個々に示すのが正しいし言語仕様で規制されてるものもある

なんといっても、ゆくゆくはバグ原因の排除に繋がる

470 :デフォルトの名無しさん:2007/01/19(金) 10:03:12
めんどくせー

こんなテストコードで名前空間汚染なんか関係ねー

471 :デフォルトの名無しさん:2007/01/19(金) 10:05:46
ちんぽ

472 :デフォルトの名無しさん:2007/01/19(金) 10:15:14
>>469
> ゆくゆくはバグ原因の排除に繋がる
たかが宿題の回答に「ゆくゆく」って、何言ってんだw

んなこと分かってるけど「ここで気にする必要は無い」から
タイプ量減らすために
using namespace std;
してるんだろ。
TPOを考えれ。


473 :デフォルトの名無しさん:2007/01/19(金) 10:19:47
まぁそういう細かいとこまでちゃんと行き届いてる回答者もいるし
つっこみどこ満載の回答もあるw
質問者は回答者を選べないしウンに任せるしかないがw

回答者側には、その程度のスキルはあるし判ってやってるのも理解できる
が、宿題の回答としては些細なモノでもマナーは守るべきではないかな
システム開発従事者であればなおさら・・・

474 :デフォルトの名無しさん:2007/01/19(金) 10:26:26
>>473
> つっこみどこ満載の回答もあるw
ここだけは同意。後は同意せんな。

> システム開発従事者であればなおさら・・・
なぜそう思うのか?あんたは休日にもスーツを着ているのか?

教育的であることが将来のマシな同業者の育成につながるかもしれないから、
と考えているなら一つだけ言っておく。

宿題を丸投げするような奴が「マシな同業者」になるとでも思ってるのか。
丸投げされた宿題に答えてやることが本人のためになるとでも思ってるのか。

良く考えるんだな。いかに自分がマヌケなことを言っているのかを。

475 :デフォルトの名無しさん:2007/01/19(金) 10:35:12
>>474
もちろん、休日にスーツを着る事もあるし平日の夜中にパジャマでコード直すこともあるorz
システムは止まらない!

まるなげ結構!質問して回答を得る、貰ったソースを実行してみる、
それだけでも学校行ってから丸写しする奴よか何倍もマシ

476 :デフォルトの名無しさん:2007/01/19(金) 10:35:18
>宿題の回答としては些細なモノでもマナーは守るべきではないかな

名前空間に気をつけるのは宿題程度のプログラムに要求されるマナーではない。

477 :デフォルトの名無しさん:2007/01/19(金) 10:40:16
>>476
>名前空間に気をつけるのは宿題程度のプログラムに要求されるマナーではない。
これは初耳ですw ソースキボンw

478 :デフォルトの名無しさん:2007/01/19(金) 10:41:54
>>477
常識ないッスかwww

479 :474:2007/01/19(金) 10:42:42
>>475
比喩を全く解していないようだな。
要するにあんたは頭が固いのだろう。だからどこでも「いつもの俺様のやり方」
を通そうとする。

Brian KernighanやBjarne Stroustrupはあんたほど頭が固くは無いから、
hello, worldの例のmainの宣言は
main()
だし、using namespace std だって平気で使う。それも教科書でだ。

480 :デフォルトの名無しさん:2007/01/19(金) 10:46:57
TPOが理解できない病気なんだよ

481 :デフォルトの名無しさん:2007/01/19(金) 10:47:12
toy programにはtoy programに適した流儀があるんだがな。
能無しSEにはTPOという単純な概念すら理解不能らしい。

482 :デフォルトの名無しさん:2007/01/19(金) 10:49:23
>>479
おれも頭固いかもしれんが、コンパイラはもっと頭かたいぞw
要は知っててやってる事なのか、より明示的に書いた方が親切なのかって事さ

動きゃイイってソースを何万回も読んでると
根源で絶てるものなら芽を摘んでおきたいw

483 :デフォルトの名無しさん:2007/01/19(金) 10:58:43
ああもうっ!質問者のためとかどうでもいいんですっ!
プログラムを作りたいっ暇つぶしのネタが欲しいっ!
ああんもっと!質問ください!プログラムを作りたい欲求を満足させてください!
もうダメっ!ああ!イク!イクーーーー^^^^^

484 :404:2007/01/19(金) 11:03:43
>>407のサイト読んでもぜんぜんわかりませんでした。
誰かこのサイト見て理解できる人俺に教えてください

485 :デフォルトの名無しさん:2007/01/19(金) 11:06:45
サイト見ないで理解できる人は?

486 :デフォルトの名無しさん:2007/01/19(金) 11:10:21
一から説明するのは構わんが、あのサイトがぜんぜん理解
できない人に文章で説明するのは時間と手間と場所がかかる。

できる人をとっ捕まえて小一時間説明してもらったほうが早い。

487 :404:2007/01/19(金) 11:23:25
>>486
やっぱり手間がかかりすぎますか・・・・。
もうぶっちゃけ僕の中で 
宿題完成>>>>>>理解>>>>>プライド
なので、宿題をお願いします。
15回の授業で理解できなかった実績があるので理解は春休みに回すことにします

488 :デフォルトの名無しさん:2007/01/19(金) 11:27:13
[1] 授業単元:
[2] 問題文(含コード&リンク):

三次元空間中の点の集合 a = [a_1, ..., a_n] が与えられる。
これらを全て含む最小の球(中心と半径)を効率よく求めよ。

#効率は入力としてランダムな 10000 個程度の点を与えたとき
#それほど長時間待たずに結果が出れば十分とする。

[3] 環境
 [3.1,3.2] OS, コンパイラ: 問わず
 [3.3] 言語: どちらでも可
[4] 期限: 1月21日程度
[5] その他の制限: 特になし

489 :デフォルトの名無しさん:2007/01/19(金) 12:16:21
>>488
点 包含 最小 球 - Google 検索

490 :デフォルトの名無しさん:2007/01/19(金) 12:37:02
ちょっとした質問です。
VS2005 VC++ MFCダイアログベースでちょっとしたアプリケーションを作ったんですが、ウィンドウやボタンが古い表示形式に
なっています。これをXP風のボタンやウィンドウにするにはどうしたらいいでしょうか?よろしくお願いします。

491 :デフォルトの名無しさん:2007/01/19(金) 12:41:01
>>490
黙れボケ

492 :デフォルトの名無しさん:2007/01/19(金) 13:04:05
>>490
スレ違い

493 :デフォルトの名無しさん:2007/01/19(金) 13:42:12
[1]授業単元:データ構造とアルゴリズム
[2]問題文(含コード&リンク): 1番からn番までの番号のついた点が
平面上に与えられているとする。座標データが配列などにしまわれて
いるが、その詳細は関係ないとする。これらの点のいくつかを頂点と
する凸多角形を、頂点番号を反時計回りに格納した配列p[]と、頂点
数を表す変数kにより表現することにするとにする。この方式により、
配列p1[]と変数k1により表現された凸多角形P1、および配列p2[]と変
数k2により表現された凸多角形P2が与えられたとする。ここで、P1は
完全にP2の左側にある、すなわちP1のどの頂点のx座標も、P2のどの
頂点のx座標よりも小さいものと仮定する。さらに、P1とP2の上側共
通接線が点p1[u1]と点p2[u2]を結ぶものであり、下側共通接線が
点p1[d1]と点p2[u2]を結ぶものであるとするとき、u1、u2、d1、d2の
値が既に求まっているものとする。

これらの仮定の下に、P1とP2の頂点集合をあわせた点集合の凸包を求め
て、配列p[]および変数kで表現するアルゴリズムをCの記法で記述せよ。
また、入力データは以下のものとする。
k1=6 p1の内容:5、7、3、8、9、1
k2=9 p2の内容:11、17、15、13、16、12、18、20、14
u1=2、u2=7、d1=5、d2=3

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限:2007年1月23日 正午まで
その他の制限:特になし

494 :デフォルトの名無しさん:2007/01/19(金) 13:44:46
読み辛いな

495 :デフォルトの名無しさん:2007/01/19(金) 13:54:18
[1] 授業単元:シェルソート
[2] 問題文(含コード&リンク) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3458.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:vs2003
 [3.3] 言語: C
[4] 期限:1.23
[5] その他の制限:特になし

496 :デフォルトの名無しさん:2007/01/19(金) 15:46:50
>>495
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3459.txt

題意では t = log2n - 1 となっているが、これを log(2n) - 1 と読むと
N = 10では間隔が 1 になってしまい、シェルソートの意味が無くなって
しまうので、勝手に log(2)(2n) - 1 と読み替えた。

497 :デフォルトの名無しさん:2007/01/19(金) 16:00:37
うわっごめん比較平均の最大と最小も出力になってるな。
じゃあちょっと改造する。

498 :デフォルトの名無しさん:2007/01/19(金) 16:09:30
ち、先を越されたか

>>495
まぁ別解
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3460.c

こっちはlog2 (n-1)でやってる
>>496の推察のほうが正しそうだが

499 :デフォルトの名無しさん:2007/01/19(金) 16:14:41
>>495
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3462.txt

作りかえた。
>>496のは間違えないように消去してあります。

500 :デフォルトの名無しさん:2007/01/19(金) 16:21:44
log(2)(2n) - 1ではなくてlog(2)(n) - 1かもしれん。
ちなみに後者の方法でやると交換回数が減る。一回目の間隔が
広すぎて無意味になるからだろう。

501 :496:2007/01/19(金) 16:32:39
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3464.txt
さらに修正。
Nが10固定なのに変動させていてしまったバグ(>>499で混入)を
修正。

502 :デフォルトの名無しさん:2007/01/19(金) 17:18:29
色々と面白いw

503 :デフォルトの名無しさん:2007/01/19(金) 18:07:55
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3455.txt

これの答え教えてもらえませんか?

504 :デフォルトの名無しさん:2007/01/19(金) 18:08:41
>>1

505 :503:2007/01/19(金) 18:26:26
>>504
誘導ありがとうございます。

では改めて
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3455.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:NoEditor Ver4.4.3
 [3.3] 言語: C
[4] 期限: 07/01/19 23:59
[5] その他の制限:特になし

今の今までこっちに貼ることに気づかず…こんな時期になってしまいました。
可能でありましたら、今日中に答えを教えていただきたいです。

長文&スレ汚し申し訳ないです。

506 :デフォルトの名無しさん:2007/01/19(金) 18:30:35
NoEditorとはどんなコンパイラ?

507 :デフォルトの名無しさん:2007/01/19(金) 18:30:47
NoEditorってコンパイラなんか?

508 :デフォルトの名無しさん:2007/01/19(金) 18:33:10
NoEditorってコンパイラじゃないの?

509 :デフォルトの名無しさん:2007/01/19(金) 18:36:48
NoEditor
タブ式エディタってでる

510 :デフォルトの名無しさん:2007/01/19(金) 18:37:31
これだね
ttp://www.yokkasoft.net/download/

511 :デフォルトの名無しさん:2007/01/19(金) 18:59:43
>>505#1

#include <stdio.h>
#define KEIO "慶応"
#define MEIJI "明治"
#define TAISHO "大正"
#define SHOWA "昭和"
#define HEISEI "平成"
#define output(g, y) (y == 1 ? printf("%s元年\n", (g)) : printf("%s%d年\n", (g), (y)))

int main(void) {
    int y;
    scanf("%d", &y);
    if(y < 1868 || 2006 < y) return 1;
    if(y == 1868) output(KEIO, 3), output(KEIO, 4), output(MEIJI, 1);
    else if(y <= 1872) output(MEIJI, y - 1868), output(MEIJI, y - 1867);
    // ここまで天保暦
    else if(y <= 1911) output(MEIJI, y - 1867);
    else if(y == 1912) output(MEIJI, 45), output(TAISHO, 1);
    else if(y <= 1925) output(TAISHO, y - 1911);
    else if(y == 1926) output(TAISHO, 15), output(SHOWA, 1);
    else if(y <= 1988) output(SHOWA, y - 1925);
    else if(y == 1989) output(SHOWA, 64), output(HEISEI, 1);
    else output(HEISEI, y - 1988);
    return 0;
}

512 :デフォルトの名無しさん:2007/01/19(金) 19:25:17
きたね

513 :デフォルトの名無しさん:2007/01/19(金) 19:45:19
>>505
#include <stdio.h>

int main()
{
int sei,wa;
char *wareki[4]={"明治","大正","昭和","平成"};

printf("1868〜2006年までの西暦を入力。 \n");
scanf("%d",&sei);

if(sei >= 1868 && 1912 > sei){
wa = sei - 1867;
printf("%s%d年\n",wareki[0],wa);}else if(sei == 1912){
wa = sei - 1867;
printf("%s%d年%s%d年\n",wareki[0],wa,wareki[1],1);}else if(sei > 1912 && 1926 > sei){
wa = sei - 1911;
printf("%s%d年\n",wareki[1],wa);}else if(sei == 1926){
wa = sei - 1911;
printf("%s%d年%s%d年\n",wareki[1],wa,wareki[2],1);}else if(sei > 1926 && 1989 > sei){
wa = sei - 1925;
printf("%s%d年\n",wareki[2],wa);}else if(sei == 1989){
wa = sei - 1925;
printf("%s%d年%s%d年\n",wareki[2],wa,wareki[3],1);}else if(sei > 1989 && 2007 > sei){
wa = sei - 1988;
printf("%s%d年\n",wareki[3],wa);}else{
printf("入力は1868〜2006年までです。");}
return 0;}

514 ::2007/01/19(金) 20:22:09
人口知能のプログラムを作る宿題がでました。
わからないので片付けてもらえませんか。
お願いします。

http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/4

515 :デフォルトの名無しさん:2007/01/19(金) 20:33:29
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3466.txt
] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1/22
[5] その他の制限: PADが無理ならヒントでいいです

516 :203.419:2007/01/19(金) 21:04:51
>>426
誰っすか?(´・ω・`)

>>429さんありがとうございます!

>>203の(U)の問題に追加なんですが、
最初に整数を18個入力してから積を求めるプログラムお願いします。

517 :デフォルトの名無しさん:2007/01/19(金) 21:13:25
>>515
#include <stdio.h>
#include <math.h>

double f(double x)
{
return pow(4.0 - x * x, 0.5);
}

int main(void)
{
int i, n, first = 1;
const double a = 0., b = 2.;
double h, s, x, res;

n = 200;
h = (b - a) / n;
for (i = 1, s = 0., x = a; i <= n - 1; i++) {
x += h;
s += f(x);
}
res = h * ((f(a) + f(b)) / 2. + s);

printf("∫[x = %e, %e] (4 - x^2)^(1/2)dx = %.10g\nin %d loops\n", a, b, res, n);

return 0;
}
PADはわからんゴメン

518 :デフォルトの名無しさん:2007/01/19(金) 21:28:27
>>517
それヒントに頑張ってみます

PADばっかり書かせる教授って普通ですか?
授業で大して触れなかったくせにレポートはPADばっかり

519 :505:2007/01/19(金) 21:33:16
>>511、513両氏

どうもありがとうございます。
出来れば続きもお願いします。

520 :516:2007/01/19(金) 21:55:20
自分で適当にやってみたらできました!

521 :433:2007/01/19(金) 22:30:09
ありがとございます。


522 :デフォルトの名無しさん:2007/01/19(金) 22:40:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3469.txt
[3] 環境
 [3.1] OS: TurboLinux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年01月23日12:00
[5] その他の制限: 特になし

お願いします。


523 :デフォルトの名無しさん:2007/01/19(金) 23:03:24
[1] 授業単元:プログラミング
[2] 2 次元平面上の点 (x,y) を, 原点を中心に半時計回りに r_degree 度だけ
回転させた点に変換する関数 void rotate(double* x, double* y, double r_degree) を作成せよ

[3] 環境
 [3.1] Windows
 [3.2] cygwin
 [3.3] C
[4] 期限: 2007年1月22日
[5] 小数点はinclude<math>の中に入ってる奴でおk。メインから呼び出すから関数だけでいいです
よろしくです

524 :355 ◆ZKcfds8GQA :2007/01/19(金) 23:03:42
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
  ・数独を完成させよ。
  ・マスが全て埋まったら、自動的に答え合わせを行う。
  ・間違っている箇所は、強調表示する。
  ・正解までの時間を表示すること。
  ・問題は、mondaiファイルを読み込ませる。
  ・mondaiファイルは、自分で作ること。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/22 12:00マデ
[5] その他の制限:以前作ったプログラムを元に完成させること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3438.zip
(↑このスレで作っていただきました。)
この時点でのエラーは、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3456.txt

よろしくお願いします。

525 :デフォルトの名無しさん:2007/01/19(金) 23:04:21
おうおう、だいぶ数値計算やら初歩的なものから
専門分野特有の課題になりつつあるねぇ〜w

526 :107:2007/01/19(金) 23:06:39
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク): 自動販売機のプログラム
http://rich-mania.com/newpage1.html
ここまではおかげさまで作れたけど、売り切れの時のランプ点灯・ボタン受付拒否
120円切ったときの取引可能のランプ消灯、お釣りの金種計算・払い出し(500円以上は500円玉が1枚、100円玉が何枚とか・・・)
がわからない・・・。間違えも多いと思いますし・・・まず120円以上のとき、がわかってないです・・・。

どなたか完成してもらえないでしょうか??
期限が迫ってきたので、大変恐縮ですがお願いします・・・
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:わかりません・・・
 [3.3] 言語: C
[4] 期限: 1月末まで
[5] その他の制限: ある程度までは制限していいらしいけど・・・

他力本願で申し訳ないですが、よろしくお願いします!

527 :デフォルトの名無しさん:2007/01/19(金) 23:09:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
テキストファイルを1ページ当たり15行で印刷するプログラムを作成せよ。
なお、各ページに作成者氏名、テキスト名、印刷日時、ページ番号等のヘッディングをつけ
各行には行番号を付けなさい。
処理するテキストファイル↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3470.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1-25
[5] その他の制限:特になし

1ページ当たり15行で印刷っていうのがどうやればいいか分かりません。
ご教授お願いします

528 :デフォルトの名無しさん:2007/01/19(金) 23:20:22
>>523
void rotate(double* x, double* y, double r_degree){
 double old_x, old_y, theta;

 old_x=*x;
 old_y=*y;
 theta=M_PI/180.0*r_degree;
 *x=old_x*cos(theta)-old_y*sin(theta);
 *y=old_x*sin(theta)+old_y*cos(theta);
}

529 :デフォルトの名無しさん:2007/01/19(金) 23:29:49
>>526
変数名が気に入らない
というよりネットで稼ぐが気になる

530 :デフォルトの名無しさん:2007/01/19(金) 23:44:41
>>522 ソートしない意味が分らんな
#include<string.h>
struct eisei{ char *name; /*衛星名*/ int kode; /*光度*/ double shuki; /*周期*/};
#define N 5
int main(){
static struct eisei jupitar [ ] = {{"Callisto", 6,16.6890},{"Europa", 6, 3.5512},{"Ganymede", 5, 7.1545},{"Io", 5, 1.7691},{ NULL, 0, 0.0 }};
struct eisei *pj;
int sort[N];
int a,b,c,d,tmp;
pj = &jupitar[0]; /*(pj=jupitar)*/
 for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;
for(c=0;c<a;++c) /*バブルソート*/
for(b=c;b<a;++b){
if(pj[b]->shuki>pj[b+1]->shuki){
tmp=sort[b]; sort[b]=sort[b+1]; sort[b+1]=tmp;
}
}
printf("(1)の解答\n");
for(d=0;d<=a;++d) printf("%10s%3d%8.4f\n", pj[sort[d]]->name, pj[sort[d]]->kode, pj[sort[d]]->shuki); /*(1)+/
/*(2)*/
 for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;
for(c=0;c<a;++c) /*バブルソート*/
for(b=0;b<a;++b){
if( strlen(pj[b]->name) > strlen(pj[b+1]->name) ){
tmp=sort[b]; sort[b]=sort[b+1]; sort[b+1]=tmp;
}
}
printf("(2)の解答\n");
for(d=0;d<=a;++d) printf("%10s%3d%8.4f\n", pj[sort[d]]->name, pj[sort[d]]->kode, pj[sort[d]]->shuki); /*(2)+/
return 0;
}

531 :デフォルトの名無しさん:2007/01/20(土) 00:04:35
>>530
動作はともかく実際現場でこういう書き方してるマがいるのはゾッっとする

532 :デフォルトの名無しさん:2007/01/20(土) 00:11:17
>>524
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
makeできなくても知りません。
問題&解答ファイルは自分で作ってください。

533 :デフォルトの名無しさん:2007/01/20(土) 00:33:01
>>530 やばくね?
pj = &jupitar[0]; /*(pj=jupitar)*/
 for(a=0;(pj->name) != NULL;++a) /*初期化*/ sort[a]=a;

534 :デフォルトの名無しさん:2007/01/20(土) 00:38:40
>>533
>>530 はおそらく動作確認をしてない
バブルソートの部分も…

535 :デフォルトの名無しさん:2007/01/20(土) 00:51:12
>>527
fp = popen("lpr", "w");
のようにlprへのパイプを開いて、後は普通に
fprintf()で行数を数えながら出力していけばよい。

536 :355 ◆ZKcfds8GQA :2007/01/20(土) 00:57:30
>>532
ありがとうございました。
makeはできませんでした。

[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。

よろしくお願いします。

537 ::2007/01/20(土) 01:02:52
すいません。テンプレを埋めるのを忘れていました。
よろしくお願いします。

[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/4
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか 基本的な文法 ポインタ等

538 :デフォルトの名無しさん:2007/01/20(土) 02:11:45
>>537
さて、リンク先に図がないわけだが。

539 :107:2007/01/20(土) 03:55:12
>>529
すまん、めんどくさかったから自分のホームページにアップしたんだよ・・・

稼ごうとしてるんじゃないから!
マジでわからんのよ・・・


変数が気に入らないとか言われても素人レベルの俺にはさっぱりだよ・・・

ここにいる人たちが最後の希望なんだよ・・・

540 :デフォルトの名無しさん:2007/01/20(土) 03:56:40
>>526
言語指定はCなのにソースがJavaで書かれてるのはいったい・・・
>>その他の制限: ある程度までは制限していいらしいけど・・・
イミフ

>>531
禿同

まぁ>>522のソースも相当ひどいけどな

541 :522:2007/01/20(土) 08:01:55
>>540
ソースは課題のプリントをそのまま書き写したのです。

結局、>>530は間違いなのですか?
他にも解法をお待ちしていますので。
よろしくお願いします。



542 :デフォルトの名無しさん:2007/01/20(土) 09:30:40
>>541
オレ的経験則
ポインタで宣言されたものを配列で扱ってるソースはアヤシイ、その逆もアヤシイ

動作はシラネ

543 :537:2007/01/20(土) 11:08:25
すいません。画像のリンクが切れていました
よろしくお願いします。

[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://syoukenhikaku.web.fc2.com/aaa.png
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか 基本的な文法 ポインタ等


544 :デフォルトの名無しさん:2007/01/20(土) 11:36:05
>>541
とりあえず自分はこんなかんじになった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3478.txt

>>542
そんな経験則を得るようなところには行きたくないもんだ。

545 :デフォルトの名無しさん:2007/01/20(土) 12:24:29
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 連結な無向グラフが一筆書き可能である、すなわち各枝をちょうど
               一回だけ通るような道が存在するための必要十分条件は、すべての
               節点が偶数次であるか、もしくは奇数次の節点がちょうど二つある
               ことである。連結な無向グラフが一筆書き可能かどうかを調べ、更
               に可能であるときには、その軌道を実際に見つけ出すプログラムを
               つくれ。
               
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:1月23日まで]
[5] その他の制限:制限はないです。どうかよろしくお願いします。

546 :デフォルトの名無しさん:2007/01/20(土) 12:45:18
>>544
//int JupiterSat_OrderPrint(char *Title, int (*OrderFunc)(SATELLITE_T *a, SATELLITE_T *b))
void JupiterSat_OrderPrint(char *Title, int (*OrderFunc)(SATELLITE_T *a, SATELLITE_T *b))

int main()
{
// JupiterSat_OrderPrint("(1) Cycle Order", JupiterSat_CycleOrder);
JupiterSat_OrderPrint("(1) Cycle Order", (int(*)())JupiterSat_CycleOrder);
printf("\n");
// JupiterSat_OrderPrint("(2) Name Length Order", JupiterSat_NameLengthOrder);
JupiterSat_OrderPrint("(2) Name Length Order", (int(*)())JupiterSat_NameLengthOrder);

return 0;
}

SEはPGを選べない、レビューしてるのか教育してるのかワカラン現実がある

547 :デフォルトの名無しさん:2007/01/20(土) 14:34:51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  次の構造体 dnode があります。

struct dnode {
char name[32];
int data;
struct dnode *next;
struct dnode *prev;
};
struct dnode *head, *tail; /* 変数 head/変数 tail */


これによって、引数のノードを双方向連結リストから外す関数 rem_node を作ってください

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語: (どちらでも可)
[4] 期限: 明日
[5] その他の制限:

548 :デフォルトの名無しさん:2007/01/20(土) 14:52:07
genetic programmingの和書でイイのないでしょうか
伊庭さんとかのしか見つからなくて

549 :デフォルトの名無しさん:2007/01/20(土) 14:55:57
スレ違い

550 :デフォルトの名無しさん:2007/01/20(土) 15:09:40
>>547
void rem_node(struct dnode *node) {
if(node == head && node == tail) {
head = tail = NULL;
} else if(node == head) {
head = node->next;
node->next->prev = NULL;
node->next = NULL;
} else if(node == tail) {
tail = node->prev;
node->prev->next = NULL;
node->prev = NULL;
} else {
node->prev->next = node->next;
node->next->prev = node->prev;
node->next = node->prev = NULL;
}
}

551 :デフォルトの名無しさん:2007/01/20(土) 15:09:42
>547
void rem_node(int n) {
struct dnode *p = head;
while(n>0) {
if(p==tail) return;
p = p->next;
n--;
}
p->prev->next = p->next;
p->next->prev = p->prev;
}

552 :デフォルトの名無しさん:2007/01/20(土) 15:42:17
>>547
void rem_node(struct dnode *head, struct dnode *tail, struct dnode *node)
{
    if ( head==node && end==node ) {
        head->next = tail;
        tail->prev = head;
    }
    else if ( head==node ) {
        head->next = node->next;
        node->next->prev = head;
    }
    else if ( tail==node ) {
        tail->prev = node->prev;
        node->prev->next = tail;
    }
    else {
        node->prev->next = node->next;
        node->next->prev = node->prev;
    }
}


553 :デフォルトの名無しさん:2007/01/20(土) 15:45:06
endって何だ?w

void rem_node(struct dnode *head, struct dnode *tail, struct dnode *node)
{
if ( head==node && tail==node ) {
head->next = tail;
tail->prev = head;
}
else if ( head==node ) {
head->next = node->next;
node->next->prev = head;
}
else if ( tail==node ) {
tail->prev = node->prev;
node->prev->next = tail;
}
else {
node->prev->next = node->next;
node->next->prev = node->prev;
}
}



554 :デフォルトの名無しさん:2007/01/20(土) 16:56:11
>>531
確かにループ乱用プログラムは見難いよな
変数名はまあ宿題なら多少は多めに見るけど

555 :デフォルトの名無しさん:2007/01/20(土) 17:42:03
[1] 授業単元: C++
[2] 問題文
プログラムの穴埋め問題です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3480.txt

[3] 環境 … Visual C++ (VC 6.0 だと思います)
[4] 期限 … 無し
[5] よろしくお願いします。

556 :デフォルトの名無しさん:2007/01/20(土) 21:33:08
[1] 授業単元: 情報実習U
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3481.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Borland
 [3.3] 言語: C
[4] 期限: 1月21日の23:00まで
[5] その他の制限: ポインタは習ってないので、できれば使わないでお願いします。

557 :デフォルトの名無しさん:2007/01/20(土) 21:40:48
どなたか>>404お願いします

558 :355 ◆ZKcfds8GQA :2007/01/20(土) 21:42:31
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。

よろしくお願いします。


559 :デフォルトの名無しさん:2007/01/20(土) 23:52:36
>>556
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3482.txt
入力のチェックと検算はしてないので間違ってても怒らないでね

560 :デフォルトの名無しさん:2007/01/20(土) 23:57:28
>>557
http://hp.vector.co.jp/authors/VA015468/platina/algo/

561 :デフォルトの名無しさん:2007/01/21(日) 00:07:39
リバーシ流行ってんのか?

562 :デフォルトの名無しさん:2007/01/21(日) 00:10:51
>>559の15行と20行はfor(i=0;i<(xn<yn?xn:yn)-1;i++)printf(" ");みたいにしないと
うまく空白を挿入してくれない・・・ orz いろんな人に怒られそうな書き方だな

563 :デフォルトの名無しさん:2007/01/21(日) 00:31:35
>>560が全然わからないので、誰かかわりに>>404作ってください

564 :デフォルトの名無しさん:2007/01/21(日) 00:35:41
>>563
誰かが作ったとしても、同じ事を書きこむだけだろ

「全然分からないので」ってのは釣りじゃないならやめてくれ

565 :デフォルトの名無しさん:2007/01/21(日) 00:36:42
分からないんじゃなくて分かろうとしないだけだろう

566 :デフォルトの名無しさん:2007/01/21(日) 00:38:16
よく読んだら>>404はレポートまで書かなきゃいけないのか
やめたやめた

567 :デフォルトの名無しさん:2007/01/21(日) 00:42:57
レポート付きは丸投げしても
文章書けないだろうから厳しいだろ

568 :537:2007/01/21(日) 01:05:08
今度は画像だけ貼り付けてしまいました。。
これで大丈夫だと思いますお願いします。

[1] 授業単元: 人工知能
[2] 問題文(含コード&リンク): http://jbbs.livedoor.jp/bbs/read.cgi/business/5385/1168697014/5
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年1月28日hh:mmまで
[5] その他の制限: どこまで習っているか Cの基本的な文法 ポインタ等

 (´Д`;) 何度もゴメンナサイ・・・
   ∨)
   ((

 (;´Д`)  ホントスミマセン
 (  八)
   〉 〉

 (´Д`;)、  コノトオリデス
   ノノZ乙

569 :デフォルトの名無しさん:2007/01/21(日) 01:06:35
1  画像の圧縮
2  拡張子YUVの画像を何かしらの方法を使い圧縮する
3.1 windowsXP
3.2 cygwin
3.3 C言語
4  1月22日正午
5  なし

お願いします。

570 :デフォルトの名無しさん:2007/01/21(日) 01:14:14
その画像形式のファイルフォーマットはどこで拾えるかね?

571 :デフォルトの名無しさん:2007/01/21(日) 01:46:36
>>404
http://radagast.se/othello/zebra.tar.gz
できたよー

572 :デフォルトの名無しさん:2007/01/21(日) 02:04:43
リバースなら簡単に出来るんだがな

573 :デフォルトの名無しさん:2007/01/21(日) 03:33:17
[1] プログラム演習
[2] 下の部分に手を加え、棒グラフに折れ線グラフを追加せよ

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3483.txt

http://bbs.freedeai.com/src/up0227.gif
の様に出力するようにする



[3] 環境
 [3.1] OS: MAC OS X
 [3.2] gcc
 [3.3] C
[4] 期限: 1月22日

どのように手を加えれば、画像のように折れ線が出力されるのかわかりません。
よろしくお願いいたします。

574 :デフォルトの名無しさん:2007/01/21(日) 03:51:08
>>573
多分、線を描く命令とか点を描く命令があると思うんだが、
最悪 G_RECTANGLE で点を打って線にしないといけない…

もっと情報キボン

575 :デフォルトの名無しさん:2007/01/21(日) 03:56:44
これかな?
ttp://www.img.is.ritsumei.ac.jp/~hachi/CG/graphic.html
g_line ( x1, y1, x2, y2, color) しか無いみたいだけど

576 :デフォルトの名無しさん:2007/01/21(日) 04:22:59
>>573
void draw_pixel(int x, int y, int color){
G_RECTANGLE(x, y, x, y, color, 1);
}
void draw_line(int x1, int y1, int x2, int y2, int color){
int x, y, dx, dy, d, sx, sy, cx, cy, i;

dx=x2-x1;dy=y2-y1;
sx=(dx>0)?1:(dx<0?-1:0);
sy=(dy>0)?1:(dy<0?-1:0);
dx*=sx;dy*=sy;
d=(dx>dy)?dx:dy;
cx=cy=d/2;
x=x1;y=y1;
for(i=0;i<=d;i++){
draw_pixel(x, y, color);
cx+=dx;cy+=dy;
if(cx>=d){cx-=d;x+=sx;}
if(cy>=d){cy-=d;y+=sy;}
}
}

int i,j;

int i,j,prev_x,prev_y;

G_RECTANGLE(ix0,iy1,ix2,iy2,col[i],1);

G_RECTANGLE(ix0,iy1,ix2,iy2,col[i],1);
if(i>0) draw_line(prev_x, prev_y, ix2, (iy1+iy2)/2, Blue);
prev_x=ix2;
prev_y=(iy1+iy2)/2;

577 :デフォルトの名無しさん:2007/01/21(日) 04:28:54
>>566
>>567
レポートはソースプログラムを出すので、説明はコメントがあればより高得点に
なるだけで別になくても問題はないです。
完成品さえあればこちらで適当に何段階かに分けます

578 :デフォルトの名無しさん:2007/01/21(日) 04:34:57
果たしてそんな態度でそんな面倒な宿題を丸投げされて答えてくれるような親切な奴があと3日で現れるかどうか

579 :デフォルトの名無しさん:2007/01/21(日) 04:47:09
教えてクン養成マニュアル

明日の「教えてクン」を目指す、若き戦士達に以下の文章を捧げる。
日々精進し、パソコンヲタクどもの親切を蹂躙してやれ。

1. 努力を放棄すること
いやしくも「教えてクン」たるもの、努力をしてはならない。
過去ログを読んだり、検索してはいけない。
「英語は苦手なので、分かりません。」は、高く評価できる。
辞書片手にマニュアルやReadMeを読むなど、決してしてはならない。
他力本願と言われようと、自分で調べたり試行錯誤したりせず、他人の努力の結果を搾取するのが、正しい「教えてクン」である。
また、「もう何が悪いのかサッパリ分かりません。」と言ってふてくされるのも有効である。
「サッパリ」という単語が「やる気の無さ」を効果的に表現している。
「原因を特定するには、何をすべきでしょうか?」と訊いてしまうと自己の積極性が現れてしまうので、「教えてクン」失格である。

2. 情報を開示しないこと
使用OSや、機器構成などの必須の情報を知らせてはならない。
マザーボード名やBIOSのバージョンも同様だ。
具体的なアプリ名やバージョンも隠蔽すべきだ。
「DVD再生ソフト」のように曖昧に表記しておけばよい。
反対に「前から欲しいと思っていた○○」とか「安売りされていた ○○」等の「どうでもいい情報」は、どんどん書いてやれ。
トラブルの場合は、状況を正確に記述してはならない。
「なんだかうまく動きません。」とか「エラーが出ます。」等と具体的なことは何も書かないことが重要である。
また、自分の試してみた事も具体的に書いてはいけない。
考えられる組合せのマトリックスを作成し、状況を整理するなどもってのほかである。
最悪の場合、それだけで問題が解決してしまうこともあるのだ。
「いろいろやってみたけど、動きません。」が理想的だ。

580 :デフォルトの名無しさん:2007/01/21(日) 04:47:41
3. 答える人間のことを考えないこと
「教えてクン」は、孤高の戦士である。
相手のことを考えるようでは教えてクン失格というものだ。
以下のような行動が、望ましい。
初心者であることを高らかに宣言し、初心者向けの丁寧で分かりやすい説明を強要する。
専門用語の使用を禁じておくとさらに効果的である。
簡潔な説明を禁じられたヲタクどもは、同じ内容を説明するのに、何倍もの労力を強いられる。
自分は努力せず、相手には多大な努力をさせることこそが「教えてクン」の真骨頂である。マルチポストも有効である。
そのBBSを信用していないことを明確に示せる。
「どうせ、お前らじゃ分からんだろう。」という意志表示として高く評価できる。
もちろんマルチポストの非礼をあらかじめ詫びてはならない。
それでは、単なる「急いでいる人」になってしまう。
それは、教えてクンではない。質問のタイトルは、「教えてください。」で良い。
タイトルを読んだだけでは「何に関する質問」か全く分からない。
そういう努力は、答える人間にさせれば良いのだ。
とにかく、答える人間が答えやすいように気を使って質問してはならない。
傲慢で不遜な態度が必須である。「聞きたいことがあります。」など、プロの仕事であろう。

最後に、言うまでも無いことだとは思うが、答えてくれた人達に礼の言葉を返すなど言語道断である。
せっかく「教えてクン」を貫いてきたのに、最後にお礼を言っているようでは、画竜点睛を欠いていると言わざるを得ない。
質問だけしておいて、後はシカトが基本である。
上級テクニックとして、「そんなことはもう試しました。」とか、「そこまで初心者じゃありません。」などと言って、回答者の神経を逆なでしておけば完璧である。

以上のことを踏まえて質問すれば、君も立派な「教えてクン」である。
ビバ!教えてクン! 教えてクンに栄光あれ!!

581 :デフォルトの名無しさん:2007/01/21(日) 05:25:39
別に普通に思えるけど>>577って態度悪い?

582 :デフォルトの名無しさん:2007/01/21(日) 06:03:08
もっと悪いものがあるじゃん。あた(ry

583 :デフォルトの名無しさん:2007/01/21(日) 06:45:46
>>404ってオセロの雑談スレで質問してたやつか?

584 :573:2007/01/21(日) 07:56:18
>>574失礼いたしました。


void G_INIT(void) グラフィックスを初期化する。以下のグラフィック関数を使う前に,必ずこの関数を呼び出す。

void G_CLS(void) 画面を消去する。呼び出すと画面が消えます。

void G_LINE(int ix,int iy,int jx,int jy) 始点(ix,iy)、終点(jx,jy)の2点間を直線で引く

void G_COLOR(int ic)
色番号icを指定する。この関数を呼び出した後に線や図形の関数呼び出しを行うことにより,
指定した色で描かれる。代表的な色番号は以下のようになる。
黒(15) 青(3) 赤(5) マゼンタ(7) 緑(9) シアン(11) 黄(13) 白(0)

void G_PSET(int ix, int iy, int ic)点(ix,iy)に色番号icの点を打つ。

int G_POINT(int ix, int iy, int ic)点(ix,iy)の色番号を得る。


void G_PAINT(int ix, int iy, int md, int ic, int icb)
開始点位置(ix,iy)から始めて,境界の色がicbである閉じた領域をicの色で塗りつぶす。
mdには任意の数値を入れる。

void G_PALLET(int ic, int red, int green,int blue)
色番号icの色を,red,green,blueで指定する。

585 :デフォルトの名無しさん:2007/01/21(日) 10:16:58
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
 以下のようなハッシュテーブルがあります。 このハッシュテーブルに登録されているすべてのノードのデータ(height)の平均を返す関数 average を完成させてください。 この関数はノードが 1 つも登録されていない場合は 0 を返します。

struct htnode {
char keyname[32]; /* キーとなる文字列(名前) */
int height; /* 関連するデータ(身長) */
struct htnode *next; /* 次のポインタ */
} *hashtable[HASH_TABLE_SIZE];

int average(void){

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名バージョン: (gcc 3.4)
 [3.3] 言語: (どちらでも可)
[4] 期限: 明日
[5] その他の制限:

586 :デフォルトの名無しさん:2007/01/21(日) 11:33:22
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク):
次のアルゴリズムを説明せよ
#include<stdio.h>
#include<stdlib.h>
//int main(int argc, char **argv){ //argvはコマンドライン引数のこと
int main(void){
int i,j,m,n,k1,k2;
int blank;
int hint[4];
int total;
FILE *data;
int initial[4][4];
if((data = fopen("prob4-1.txt", "r"))==NULL) {
printf("ファイルを開くことはできません\n");
exit(1);}
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:20071月23日まで
[5] その他の制限: なし

587 :586:2007/01/21(日) 11:35:10
for(i=0;i<4;i++){
for(j=0;j<4;j++){
fscanf(data,"%d",&initial[i][j]);}
blank=0; }
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n");} printf("\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(initial[i][j]==0)
blank++;} }
printf("initial\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%2d" ,initial[i][j]);}
printf("\n"); }
while(blank!=0){
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(initial[i][j]==0){
for(m=0;m<5;m++)
//printf("%d", m);
hint[m]=0;
for(n=0;n<4;n++){
if(initial[i][n]!=0)
hint[initial[i][n]]=1;}
for(n=0;n<4;n++){
if(initial[n][j]!=0)
hint[initial[n][j]]=1;}


588 :デフォルトの名無しさん:2007/01/21(日) 11:36:25
G_RECTANGLE(ix0,iy1,ix2,iy2,col[i],1);
}

for(i=0;i<5-1;i++){
G_LINE(seiseki[i].total,iy0+i*wid,seiseki[i+1].total,iy0+(i+1)*wid);
}

|彡 サッ

589 :586:2007/01/21(日) 11:36:53
k1=i/2;
k1*=2;
k2=j/2;
k2*=2;
for(m=k1;m<k1+2;m++)
for(n=k2;n<k2+2;n++){
if(initial[m][n]!=0)
hint[initial[m][n]]=1;}
total=(hint[1]+hint[2]+hint[3]+hint[4]);
for(m=1;m<5;m++)
if(total==3&&hint[m]==0){
initial[i][j]=m;
blank--; }}}

printf("result\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%4d",initial[i][j]);
printf("\n");}
書ききれないので追加しました。お願いします

590 :デフォルトの名無しさん:2007/01/21(日) 11:39:30
>>586-589
ここ使え
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


591 :デフォルトの名無しさん:2007/01/21(日) 11:39:57
>>587


592 :586:2007/01/21(日) 11:40:15
最後のほうを書き忘れてました。すみません
fclose(data);
return 0;
}


593 :デフォルトの名無しさん:2007/01/21(日) 11:41:06
ミスった。使い慣れてない専ブラはキツいな。
>>587
for(m=0;m<5;m++)
//printf("%d", m);
hint[m]=0;

このコメントアウトは何?物凄く不安になるんだけど。

594 :586:2007/01/21(日) 11:41:56
590さん
有難うございました

595 :デフォルトの名無しさん:2007/01/21(日) 12:03:53
>>585
int average(void){
int cnt, taotal=0;
struct htnode *p;
    for ( cnt=0,p=hashtable; cnt<HASH_TABLE_SIZE && NULL!=p; p = p->next,cnt++ )
        total += p->height;
    return ( total/cnt );
}


596 :デフォルトの名無しさん:2007/01/21(日) 12:14:55
>>585
int average(void){
  int i, cnt=0, total=0;
  struct htnode *p;
  for ( i=0; i<HASH_TABLE_SIZE; i++ ){
    p = hashtable[i];
    while( NULL != p ){
      total += p->height;
      cnt++;
      p = p->next;
    }
  }
  if( cnt==0 ) return 0;
  return ( total/cnt );
}

597 :デフォルトの名無しさん:2007/01/21(日) 12:25:45
ごめ >596さんが正しいm(_ _)m

598 :デフォルトの名無しさん:2007/01/21(日) 13:09:53
|彡 サッ

599 :355 ◆ZKcfds8GQA :2007/01/21(日) 13:11:00
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。

よろしくお願いします。


600 :デフォルトの名無しさん:2007/01/21(日) 14:09:06
http://search.yahoo.co.jp/search?p=%E6%95%B0%E7%8B%AC+C%E8%A8%80%E8%AA%9E&ei=UTF-8&fr=top_v2&x=wrt&meta=vc%3D
好きなのを使うが良い

601 :デフォルトの名無しさん:2007/01/21(日) 14:12:02
>>586
何やりたのかサーーパリw
すんげ〜読み辛い
つか、これファイルから読み込んだ数値によっては壊れんだろw

While文の中の"if(initial[i][j]==0)"が効いて0が無かったら動くが
0値が格納されてたらhintが4個しかエリアが無いにも拘らず
hint[initial[i][n]]でファイルから読込んだ値の位置に1を格納しようとしてる



602 :デフォルトの名無しさん:2007/01/21(日) 14:28:40
>>599
このスレの回答者が100問、問題作らなければいけない、
という時点でやる奴いねーだろw
てか、問題くらい自分で作れるだろうが。

603 :デフォルトの名無しさん:2007/01/21(日) 14:29:56
[1] 授業単元:プログラミング
[2] 問題文:
@myComplex setComplex(){ myComplex temp;
temp.real = x; temp.image = y; return temp;}
関数は、クラスのオブジェクトを返す(正確にはオブジェクトのコピーを返す)関数になっているが、無駄が多い。オブジェクトのポインタを返すように変えてみよう。

AmyComplex setComplex(){ myComplex temp;
temp.real = r*cos(theta); temp.image=r*sin(theta);
return temp; }
関数も、クラスのオブジェクトを返す(正確にはオブジェクトのコピーを返す)関数になっているが、無駄が多い。オブジェクトのポインタを返すように変えてみよう。

Bclass DeComplex:myComplex{・・・・・・・}
というクラスはmyComplexクラスの派生クラスとして定義されているが、基本クラスの性質を反映していない。定義を変えよう。

Cclass PoComplex:myComplex{・・・・・・・}
というクラスはmyComplexクラスの派生クラスとして定義されているが、基本クラスの性質を反映していない。定義を変えよう。

DmyComplex型オブジェクトを返す関数がsetComplex()であるが、一種のオブジェクト変換を示している。myComplex型オブジェクトからDeComplex型オブジェクトに変換する関数をつくる。
[3] 環境
 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc  [3.3] 言語:C++
[4] 期限:2007年1月21日19:00まで
[5] その他の制限:できるだけ初心者でもわかりやすい解答をお願いできたらと思います。よろしくお願いします!

604 :107:2007/01/21(日) 14:38:37
どなたか526をお願いします・・・期限が近いので・・・

605 :デフォルトの名無しさん:2007/01/21(日) 14:52:51
>>604
Cなのか?C++なのか?まずはそこからだ

606 :デフォルトの名無しさん:2007/01/21(日) 14:53:38
>>603
問題文が良く分からん
(1)と(2)のsetComplexはどっちも引数がsetComplex(double, double)だから
同時に実装できない

(3),(4)の
というクラスはmyComplexクラスの派生クラスとして定義されているが、
基本クラスの性質を反映していない。定義を変えよう。

てのは俺には何を言ってるのか分からん

問題文はこれで全てなのか?

607 :デフォルトの名無しさん:2007/01/21(日) 14:54:57
>>605

>>526を見るとJavaだなぁ

608 :603:2007/01/21(日) 14:58:40
>>606
問題文は他には無いですね・・。
おそらくアバウトな答えで良いんだと思います。

609 :デフォルトの名無しさん:2007/01/21(日) 15:08:36
>>607
そうなんだよw C++じゃね〜orz
CなのかJavaなのかと書こうとしたw

ま本人が気づくまで放置w

610 :603:2007/01/21(日) 15:14:06
http://f3.aaa.livedoor.jp/~ssmr/self/up/file033.pdf
のP.48〜51が問題でした;

611 :573:2007/01/21(日) 15:15:45
すみません。

>>573>>576でよろしいのでしょうか?

>>584に命令文を書いたのですが・・・・

度々すみません。

612 :デフォルトの名無しさん:2007/01/21(日) 15:19:46
>>603
よくわからんがこうかな?
#include <iostream>
#include <cmath>
using namespace std;
class DeComplex;class PoComplex;
class myComplex{
public:
int real;int image;
myComplex& setComplex(int, int);
myComplex& setComplex(int, double);
operator DeComplex();
};
myComplex& myComplex::setComplex(int real, int image){
this->real = real; this->image = image;
return *this;
}
myComplex& myComplex::setComplex(int r, double theta){
this->real = (int)(r * cos(theta));
this->image = (int)(r * sin(theta));
return *this;
}
class DeComplex : public myComplex{};
class PoComplex : public myComplex{};
myComplex::operator DeComplex(){
DeComplex tmp;
tmp.setComplex(this->real, this->image);
return tmp;
}


613 :デフォルトの名無しさん:2007/01/21(日) 15:22:02
>>610
ほらやっぱり

なめてんのか

614 :603:2007/01/21(日) 15:25:18
>>612
どもです♪
>>613
なめてました;
吊ってきます・・・

615 :デフォルトの名無しさん:2007/01/21(日) 15:27:28
追加情報か・・・

>>612はもうなんの役にもたたん・・・

616 :デフォルトの名無しさん:2007/01/21(日) 15:28:40
吊ってきます・・・


>>603はもうなんの役にもたたん・・・

617 :603:2007/01/21(日) 15:30:26
>>615
まじすか・・・

618 :デフォルトの名無しさん:2007/01/21(日) 15:33:04
数独とリバーシ以外で残ってる問題ある?

619 :デフォルトの名無しさん:2007/01/21(日) 15:39:06
CかJavaかよくわからない問題なら残ってるな

620 :デフォルトの名無しさん:2007/01/21(日) 15:41:46
610の問題も残ってんな

621 :デフォルトの名無しさん:2007/01/21(日) 16:58:38
オセロも数独も作れねえや

622 :430です。:2007/01/21(日) 17:07:56
自分の問いはスルーされているのでしょうか・・?

623 :デフォルトの名無しさん:2007/01/21(日) 17:11:03
>>622>430
読み込むって言うのは、コンソールから?それともファイルからなのか?

624 :430です。:2007/01/21(日) 17:16:37
コンソールで外部ファイルをリダイレクション機能を使って読み込みます。
例えば$ ./a.out < 読み込むデータファイル名
ちなみに読み込むデータは作ってあります。

625 :355 ◆ZKcfds8GQA :2007/01/21(日) 17:22:57
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑先ほど作って頂いたものでお願いします。

問題100問は、自分で作ります。
よろしくお願いします。

626 :デフォルトの名無しさん:2007/01/21(日) 17:26:02
>>624
その読み込むデータをうp

627 :デフォルトの名無しさん:2007/01/21(日) 17:26:18
問題文と授業名がほぼ同じなので僕も>>404と同じ大学だとおもうんですが、同じく作れないので
どなたかよろしくお願いします。

628 :デフォルトの名無しさん:2007/01/21(日) 17:27:42
>>624
そのファイル自体、もしくはそのファイルフォーマットを示せ。

629 :デフォルトの名無しさん:2007/01/21(日) 17:31:08
コメントの無いまったく同じプログラムがレポートとして提出されたら、
普通の先生なら両方とも単位落とすと思うんだけどどうかな

630 :デフォルトの名無しさん:2007/01/21(日) 17:31:15
[1] 授業単元:
[2] 問題文(含コード&リンク):
"in_file"という名前のファイルの中に多数の整数データ
が空白や改行コードで区切られて並んでいると仮定した上で、
この入力ファイルの中のデータを1行に5個ずつきれいに並べて
"out_file"という名前のファイルに出力するCプログラム
入力ファイル"in_file"の内容が
-2121 333 4444 5555 6 9 10 8 7 987654
のときは次のような内容を出力ファイル"out_file"に書き出す。
-2121 333 4444 5555 6
9 10 8 7 987654


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2007年1月22日 午前10時まで]



631 :630:2007/01/21(日) 17:33:25
単元はプログラミング演習です。
皆さんよろしくお願いします。


632 :627:2007/01/21(日) 17:36:29
>>629あああああああ、そうか・・・同じところ見てるってことはそういうことですね・・・
よし、>>404話し合おうじゃないか。学籍番号の下3桁教えてくれ

633 :630:2007/01/21(日) 17:36:33
ミスった正しくはこうなるようにしてください
-2121    333    4444    5555     6
  9     10     8      7  987654


634 :630:2007/01/21(日) 17:38:06
ごめんなさい。要するにきちんとそろえてください
ということです。

635 :デフォルトの名無しさん:2007/01/21(日) 17:39:56
ここのスレって逆に「これで宿題できてる?」ってきくのありですか?

636 :デフォルトの名無しさん:2007/01/21(日) 17:41:16
>>630
int main(void) {
    FILE *fin;
    int i, column = 0;
    if((fin = fopen("in_file", "r")) != NULL) {
        while(fscanf(fin, "%d", &i) > 0)
            printf("%12d%s", i, ++column % 5 ? " " : "\n");
        fclose(fin);
    }
}

637 :デフォルトの名無しさん:2007/01/21(日) 17:44:56
>>635
いいんじゃね?

638 :デフォルトの名無しさん:2007/01/21(日) 17:48:36
>>632
学科は言わなくていいよな?
034

639 :636:2007/01/21(日) 17:58:41
終了コード抜けてたな

int main(void) {
    FILE *fin;
    int i, column = 0;
    if((fin = fopen("in_file", "r")) != NULL) {
        while(fscanf(fin, "%d", &i) > 0)
            printf("%12d%s", i, ++column % 5 ? "" : "\n");
        fclose(fin);
    } else return 1;
    return 0;
}

640 :デフォルトの名無しさん:2007/01/21(日) 18:00:02
>>639
ファイルに出力してない

641 :デフォルトの名無しさん:2007/01/21(日) 18:10:51
すんませんでした

int main(void) {
    int i, column = 0;
    FILE *fin, *fout;
    if((fin = fopen("in_file", "r")) == NULL) return 1;
    if((fout = fopen("out_file", "w")) == NULL) return 1;
    while(fscanf(fin, "%d", &i) > 0)
        fprintf(fout, "%12d%s", i, ++column % 5 ? "" : "\n");
    fclose(fout);
    fclose(fin);
    return 0;
}

642 :627:2007/01/21(日) 18:16:01
>>404にメールして話つけました。
僕のほうは人対人までならできているのでそれをベースにしていきます。
改めてよろしくお願いします

643 :630:2007/01/21(日) 18:30:28
>>641
どうもありがとうございますです。
助かりました!!


644 :624:2007/01/21(日) 18:37:51
大学の中にデータが入ったFDがあり、現在所持していません。
>>628
ファイル形式(タイトルも含む)
seiseki.data

645 :デフォルトの名無しさん:2007/01/21(日) 18:46:11
>>644
ファイル形式とかじゃなくて、

====seiseki.data====
磯野カツオ,100,100
磯野ワカメ,70,70,70
磯野波平,80,80,80
==================

こんな感じの内容とかを知りたいということの予感。


646 :デフォルトの名無しさん:2007/01/21(日) 18:54:25
>>644
その情報から何をしろと

647 :624:2007/01/21(日) 19:12:54
>>645
前スレより引用、こんな感じで出力してください。
Id-No Eng Math Jap Total
----- --- ---- --- -----
G0342 44 65 51 160
G0343 83 100 84 267
G0344 58 30 57 145
.
.
.
G3621 85 80 90 255
G3622 74 100 65 239


648 :デフォルトの名無しさん:2007/01/21(日) 19:17:41
入力を訊いてんのじゃたわけ

649 :デフォルトの名無しさん:2007/01/21(日) 19:19:08
>>645
磯野カツオはそんなに頭よくない

650 :デフォルトの名無しさん:2007/01/21(日) 19:19:10
>>647
出力は判ってる!
リダイレクトするファイルはどうなんだ?w
エスパーで作れってか?

651 :デフォルトの名無しさん:2007/01/21(日) 19:19:14
>>647
留学生の方ですか?

652 :デフォルトの名無しさん:2007/01/21(日) 19:20:42
>>649
そこかー!!
しかし、俺の知人の磯野カツオはなかなか賢い

653 :デフォルトの名無しさん:2007/01/21(日) 19:23:36
この早さならなら言える
Modula-2がスキでした

654 :624:2007/01/21(日) 19:39:51
ええと・・こうゆう意味でしょうか?
./a.out < seiseki.data

入力データであるseiseki.data
はすでに、別な場所に保管しています。


655 :デフォルトの名無しさん:2007/01/21(日) 19:41:49
(:.´艸`:.)プププクク

656 :デフォルトの名無しさん:2007/01/21(日) 19:43:46
>>654
seiseki.dataの中身がどんなファイルだったかを聞いてるんだ
中身見てないの?

657 :デフォルトの名無しさん:2007/01/21(日) 19:48:39
ここまで来るとネタとしか思えない

658 :624:2007/01/21(日) 19:50:37
中身のことでしたか・・。
先日の講義のときに配布されましたが、
中身は見てません・・。

659 :デフォルトの名無しさん:2007/01/21(日) 19:54:44
見ろよw
やる気ねえな

660 :デフォルトの名無しさん:2007/01/21(日) 19:55:33
              ,:/:::::::::::::;;;;;: -――‐- :;;;;;;`ヽ、
         ,:'/:::::::::::::::::/u      ,  ,  ``-;ヽ
         ,:':/:::::::::::::::::/  '⌒`ー‐'| | |`ー-‐、u|::|
        ,:'/:::::::::::::::::/u /⌒ヽ     /⌒ヽ !::! ;
       ,' l--、:::::::/   l  O | lj  | O | '、l ,:
       /´,―、ヽ:/     ヽ、,r‐'-、:::::::::ゝ--く  l ;
     .;'/ /ニ_ノ |   ..::::::::{  r,、 ヽ / ,r-, ノ::.. '、;
     ; | l  '-,        / ヽ !},. ---'し'_,ヘ   :..ヽ':, 
       ':,!  `‐'   u ヽ  ,. -'"´_,. ----,、 ヽ、u  l ;
        ':,ヽ_ノ u   ノ'" ,. -''" ̄ ̄ ̄ ヽ. ヽ  |
        .,: | lj      /  /_,. ---、,. -----、|  |  / ;.,
    --―'ヽ     /  '-------―――‐''" ノ /``ー- 、_
        ヽ、u '`ljー-----―――

661 :デフォルトの名無しさん:2007/01/21(日) 19:59:52
やる気もやらせる気もないなぁ
もう放置でいいんじゃ

662 :624:2007/01/21(日) 20:01:25
明日、持ってきて中身見せます。


663 :107:2007/01/21(日) 20:02:51
>>607,609
javaですね・・・失礼しました・・・

664 :デフォルトの名無しさん:2007/01/21(日) 20:03:39
自分が何の言語を教わってるのかすらわからないってすごいよな

665 :デフォルトの名無しさん:2007/01/21(日) 20:05:21
意識することもなく喋り分けられるんじゃね?

666 :107:2007/01/21(日) 20:06:50
いや、Cでしようとして、色々教えてもらってたらいつのまにかjavaになってた。
正直、Cでもjavaでも、俺は素人に毛がはえた程度だから全然わからないよ・・・。


わがまま言えばCでしてもらいたい・・・
申し訳ない

667 :627:2007/01/21(日) 20:15:08
>>404お願いします。どれだけ説明見ても
一度答え見ないと理解できないんです。

668 :デフォルトの名無しさん:2007/01/21(日) 20:44:37
>>667
先生に言えよ

669 :デフォルトの名無しさん:2007/01/21(日) 20:49:45
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
画面より任意の整数を入力し、その整数の各桁を、数字の0から9を意味する英単語
(zerp,one.....nine)により表示するようなプログラムを作成しなさい。ただし、数字
の0から9を意味する英単語は、文字列定数の配列(char*number[10])として初期化・
宣言すること。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C
[4] 期限: 1月22日
[5] その他の制限:とくになし

よろしくお願いします

670 :627:2007/01/21(日) 20:51:09
>>668
言ったけどそれは無理って

671 :デフォルトの名無しさん:2007/01/21(日) 20:56:42
>>669
それ、
10 → ten
なのか?
10 → one zero
でいいのか?

672 :デフォルトの名無しさん:2007/01/21(日) 20:58:11
0から9

673 :デフォルトの名無しさん:2007/01/21(日) 21:07:26
672の方のいっている通り0〜9までで、10はいりません。

674 :デフォルトの名無しさん:2007/01/21(日) 21:13:02
>>669#include <stdio.h>
int main()
{
    static char *number[10] = { "zero", "one", "two", "three", "four",
        "five", "six", "seven", "eight", "nine" };
    int n;
    while (scanf("%1d", &n) == 1)
        printf("%s\n", number[n]);
    return 0;
}


675 :デフォルトの名無しさん:2007/01/21(日) 21:16:48
便乗>>669
#include<stdio.h>

int main(void)
{
char*number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
char str[256]={0};
int i=0;

printf("数字を入力:");
scanf("%s",&str);

while(str[i]!=0){
if(str[i]<'0'||str[i]>'9'){
printf("数字じゃない");
}else{
printf("%s\t",number[str[i]-'0']);
}
i++;
}

return 0;
}

676 :デフォルトの名無しさん:2007/01/21(日) 21:16:55
>>674
入力する整数は一桁じゃないと思うんだぜ

677 :デフォルトの名無しさん:2007/01/21(日) 21:18:57
>>669
#include<stdio.h>
int main(){
int c;
char* number[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
while((c=getchar()) != EOF){
if('0'<=c && c<='9') printf("%s ", number[c-'0']);
else break;
}
return 0;
}


678 :デフォルトの名無しさん:2007/01/21(日) 21:20:30
0zero/nought(英)
1one
2two
3three
4four
5five
6six
7seven
8eight
9nine

679 :669:2007/01/21(日) 21:22:33
みなさん多数のレスありがとうございます。
期限が明日に迫っていたので本当に助かりました。

680 :デフォルトの名無しさん:2007/01/21(日) 21:22:41
zerp って無いよな...

681 :デフォルトの名無しさん:2007/01/21(日) 21:24:06
>>676
別に何桁入力されても動くんだぜ

682 :デフォルトの名無しさん:2007/01/21(日) 21:34:32
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
 中心の要素は a[(left+right)/2] で求めることができます。
この要素を左側の要素と交換すれば、同じプログラムを利用できます。
 
クイックソートの軸として、中心の要素の値を使うことが一般的です。
quicksort 関数を変更してください。

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (明後日)
[5] その他の制限:

683 :デフォルトの名無しさん:2007/01/21(日) 21:39:07
>>682
元となるquicksort関数をうp

684 :224:2007/01/21(日) 21:42:43
>>224ですが、書き込んだ後も自分なりに考えてみたけどサッパリ分かりません;
どなたか答えてくれる方がいたら、お願いします。
明日の五時くらいまでに回答を頂けたら助かります。

あと、追加として、数独が書き込まれたファイルとプログラム実行ファイルは別でお願いします。



685 :デフォルトの名無しさん:2007/01/21(日) 21:53:24
>>224
>・4×4のマス目の数字をファイルから入力(数字の無いところは0を表示)。
上記の部分が意味分からん

686 :デフォルトの名無しさん:2007/01/21(日) 22:03:36
>>684
もしかして>586〜の見づらいソースと同じ人?


687 :デフォルトの名無しさん:2007/01/21(日) 22:26:13
どなたか >>568 わかるかたいませんか。、
おねがいします

688 :デフォルトの名無しさん:2007/01/21(日) 22:30:36
 (´Д`;) 
   ∨)
   ((

689 :556:2007/01/21(日) 22:59:55
>>559さんありがとうございます。

690 :デフォルトの名無しさん:2007/01/21(日) 23:21:05
お願いします
[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク): ある数nを考えたとき、nを除いた約数の和がnと等しくなる自然数のことを完全数と言う。
例えば、6=1+2+3 28=1+2+4+7+14などである。完全数を探索する最大値をmとしたとき、m以下の全ての完全数とその個数を出力するプログラムを作成せよ。ただしmはプログラムの実行時に読み込むものとする。
実行例
input m:50
6 is a perfect number
28 is a perfect number
the number of perfect numbers:2
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明日




691 :デフォルトの名無しさん:2007/01/21(日) 23:28:29
完全数ってさ、足してもかけても同じ数になるんものだと思ってた。
6=1+2+3=1*2*3、みたいな

692 :デフォルトの名無しさん:2007/01/21(日) 23:31:06
>>690
#include<stdio.h>
int main(){
int i,j,k=0,sum,m;
printf("input m:");
scanf("%d",&m);
for(i=2;i<=m;i++){
sum=0;
for(j=1;j<i;j++)if(i%j==0)sum+=j;
if(sum==i){
printf("%d is a perfect number\n",i);
k++;}}
printf("the number of perfect numbers:%d\n",k);
return 0;}

693 :デフォルトの名無しさん:2007/01/21(日) 23:35:16
>>691
それができるのは6だけ
ゆえに一番美しい数字は6
そして一番不安定な数字は3

694 :デフォルトの名無しさん:2007/01/21(日) 23:36:09
>>690 力任せで順番に計算して行くやり方だが、これでええんか?
入力する数値を10000までにしておいた方がええで。
これとは別にメルセンヌ素数を使ったやり方があるが、そっちの方が
明らかに求める上限を大きくしたときの処理時間が↓より短いが。

#include <iostream>
using namespace std;

int main() {
int i,j,m,c=0,sum;
cout << "input m : ";
cin >> m;

for(i=2; i<=m; i+=2) {
sum=0;
for(j=1; j<=i/2; j++) {
if(i%j==0) sum+=j;
}
if(sum==i) {
cout << i << " is a perfect number \n";
c++;
}
}
cout << "the number of perfect numbers : " << c << endl;
return 0;
}

695 :デフォルトの名無しさん:2007/01/21(日) 23:37:07
ぉぉ C++だったのか orz 見てなかった

696 :デフォルトの名無しさん:2007/01/21(日) 23:39:18
asm

697 :デフォルトの名無しさん:2007/01/21(日) 23:40:39
http://ja.wikipedia.org/wiki/%E5%AE%8C%E5%85%A8%E6%95%B0
ttp://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E7%B4%A0%E6%95%B0
ウィッキーさんより

698 :デフォルトの名無しさん:2007/01/22(月) 00:02:41
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3485.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年1月24日まで

不束者ですがよろしくお願いします。

699 :デフォルトの名無しさん:2007/01/22(月) 00:06:31
>>698
素数関連はWeb上にも過去ログにもほんとに腐るくらいあるから探しな

探すのめんどいから作ってくださいor替わりに探してきてください

ってのはなしだぜ

700 :デフォルトの名無しさん:2007/01/22(月) 00:12:39
>>698
#include<stdio.h>
int IsPrime(int n){
int i;
if(n<2) return 0;
else if(n==2) return 1;
if(n%2==0) return 0;
for(i=3;i*i<=n;i+=2) if(n%i==0) return 0;
return 1;}
int main(){
int i,j=0,n,prime[1000];
for(i=2;j<1000;i++)
if(IsPrime(i)){
prime[j]=i;
j++;}
scanf("%d",&n);
printf("%d\n",prime[n-1]);
return 0;}

701 :デフォルトの名無しさん:2007/01/22(月) 00:17:24
>>693なんで3が不安定なの??

702 :698:2007/01/22(月) 00:26:14
>>700
ありがとうございました!!感謝です。

703 :デフォルトの名無しさん:2007/01/22(月) 00:39:41
>>690
こんな方法も。
#include <cmath>
bool isPerfectNumber(int n) {
    int s1 = 0, s2 = 1;
    for (int i = 1; i < n - 1; ++i) s1 += i * (n / i);
    for (int i = 1; i < n; ++i) s2 += i * ((n - 1) / i);
    return s1 == s2;
}
#include <iostream>
int main(void) {
    int m, n = 0;
    std::cout << "input m:" << std::flush;
    std::cin >> m;
    for (int i = 1; i <= m; ++i)
        if (isPerfectNumber(i)) {
            std::cout << i << " is a perfect number" << std::endl;
            ++n;
        }
    std::cout << "the number of perfect numbers:" << n << std::endl;
    return 0;
}

704 :デフォルトの名無しさん:2007/01/22(月) 00:44:30
>>694
ありがとうございました!

705 :355 ◆ZKcfds8GQA :2007/01/22(月) 00:51:05
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑ココで作って頂いたものでお願いします。

問題100問は、自分で作ります。
よろしくお願いします。


706 :デフォルトの名無しさん:2007/01/22(月) 00:53:35
あのぅ付かぬ事お聞きしますが、
int main()となってるものが結構ありますが、
int main(void)じゃなくvoidを省略しても宜しいんでしょうか?

707 :デフォルトの名無しさん:2007/01/22(月) 01:01:51
>>706
C++なら完全に合法で、標準的なスタイル。
Cだとどうだっけ。規格に詳しい人よろしく。

708 :デフォルトの名無しさん:2007/01/22(月) 01:01:54
>>706
おkです

709 :708:2007/01/22(月) 01:02:50
>>707に対してじゃないよ
なんかそれっぽく見えるけど


710 :デフォルトの名無しさん:2007/01/22(月) 01:06:33
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):角度dgreeを入力し、この角度をラジアン角xに変換してsinxの近似式を出力するプログラムを作成せよ。sinxの近似式は以下の式で与えるとし、最後の項の絶対値が0.000001より大きい間は項を足し続けるものとする。
sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!・・・
実行例
input degree:45
sin(45)=0.707106
input degree:30
sin(30)=0.5
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:漸化式を利用することとし、数学関数powの使用は不可



711 :706:2007/01/22(月) 01:07:55
そうなんですか、勉強になります。
ありがとうございました。

712 :224:2007/01/22(月) 01:09:11
>>685
上で一緒に乗せている4×4の数独を、あらかじめ別のファイルに作成しておく。
その時点で、実際にプログラムを起動して数を入れるマスには0を記入する、と言う事です。
分かり辛くてスミマセンでした;

713 :デフォルトの名無しさん:2007/01/22(月) 01:32:05
>>710
#include <iostream>
double sin(double degree) {
    double x = degree * 3.1415926535897932384626433832795 / 180, d = x, n = 1, s = 0;
    while (d > 0.000001 || d < -0.000001) {
        s += d;
        d *= -x * x / (n + 1) / (n + 2);
        n += 2;
    }
    return s;
}
int main() {
    double d;
    for (; ; ) {
        std::cout << "input degree:" << std::flush;
        std::cin >> d;
        std::cout << "sin(" << d << ")=" << sin(d) << std::endl;
    }
}

714 :デフォルトの名無しさん:2007/01/22(月) 01:43:18
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926535
#define LOWER 1e-6
double degree_to_radian(int);
double sin(double);
double degree_to_radian(int degree)
{
return (degree * (2.0 * PI) / 360.0);
}
double sin(double x)
{
double lower;
double term;
double val;
double i;
term = x;
val = 0;
i = 2;
while(term > LOWER || term < -LOWER)
{
val += term;
term *= - (x * x) / (i * (i + 1));
i+=2;
}
return val;
}
int main()
{
printf("%g\n",sin(degree_to_radian(30)));
}


715 :573:2007/01/22(月) 01:43:35
>>573
>>584に命令文を書いたのですが・・・

(´・ω・`)よろしくです。。。

716 :デフォルトの名無しさん:2007/01/22(月) 01:44:40
>>713
可視性のためとはいっても全角スペースとか入れるとコピペが大変になるよ

717 :デフォルトの名無しさん:2007/01/22(月) 01:46:13
>>715
問題文を見るとインターフェースだけじゃなくて
実装も与えられてそうなんだが

ライブラリとか

718 :573:2007/01/22(月) 01:52:06
>>717
学校の仕様で、
windows用のコンパイラで動かすのを、
無理やりmacでコンパイラさせるために、

>GUCC互換のラッパー関数を介して、X11グラフィックスライブラリを呼び出す仕組みで実現している

らしいのです。
ですから、どうすれば、折れ線を上手い具合に画像のように
表示させられるのかについて助言をいただけるとありがたいのですが・・・・

複雑で申し訳ないです。

719 :デフォルトの名無しさん:2007/01/22(月) 01:57:08
>>718
G_LINEっていううってつけの関数があるんだから
それ使えばいいだろうが

720 :573:2007/01/22(月) 02:02:56
>>719
もちろんそれを使うのは分かるのですが、

ちょうど、ぼうグラフの最大値のを結ぶ線グラフが書けないのです・・・・

721 :713:2007/01/22(月) 02:05:37
>>716
全角スペースじゃないよ、コピペしてみたら分かるけど。

722 :573:2007/01/22(月) 02:12:17
>>720の追記;

一本目の棒グラフから、隣の棒グラフの最大値に、
折れ線を引くためにはG_LINE()のカッコのなかをどうおけばいいのか分からないのです。

色々と試したのですが、上手くいきませんでした。

723 :デフォルトの名無しさん:2007/01/22(月) 02:54:29
いったん落第しとけ

724 :デフォルトの名無しさん:2007/01/22(月) 03:43:24
・後から問題に付け足しするのはやめましょう

725 :デフォルトの名無しさん:2007/01/22(月) 05:32:44
1] 授業単元:応用プログラミング
[2] 問題文
1,各ノードがint型の値と次のノードへのリンクからなる連結リストを自己参照構造体を用いて
   実現したい。この連結リストに適した自己参照構造体を記せ。ただし、構造体名をnodeとすること。

2,1の問題で定義した自己参照構造体を用いて連結リストを実現したい。以下の問に答えなさい。
   (a)連結リストの先頭に新しいノードを追加する関数add_topを記述せよ。
【注意】いずれも、関数を記述する問題であるが、引数の数、引数の型、return値の型などを明確に
書いていない。これらを適切に設定することも問いの一部である。

(b)データ要素を検索する(整数nを仮引数の1つとして受け取ると、連結リストの中にnを保持する
ノードがあればそのポインタを、なければNULLを返す)関数searchを記述せよ。ただし、nを保持する
ノードが複数ある場合は、それらのいずれか1つのポインタを返す。
(c)連結リスト中の正のノードの個数を返す関数count_nodesを記述せよ。
(d)連結リストを指すポインタと、削除対象ノードの直前のノードへのポインタpが引数として与えられたとき
削除対象ノードを連結リストから除外したあと、そのノードへのポインタを戻り値として返す関数を作成せよ。
関数名を withdraw とする。
(e)正整数nを引数として受け取り、n個のノードからなる連結リストを構築して、その連結リスト
へのポインタ(ダミーノードへのポインタ)を返す関数を作成せよ。関数名を make_list とする。
(f)正整数nを仮引数の1つとして受け取ると、連結リストを先頭から見ていき、保持する値が最初に
n以下になるノードがあればそのポインタを、なければNULLを返す関数search_geを記述せよ。
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限:明後日


726 :デフォルトの名無しさん:2007/01/22(月) 08:25:18
>>725
正のノードの定義って?正の整数?ダミーノードじゃないってこと?

727 :デフォルトの名無しさん:2007/01/22(月) 09:33:29
>>725
一応それっぽいのは作ったけど、(d)の意義がよくわからない・・・誰か解説して・・・

728 :デフォルトの名無しさん:2007/01/22(月) 09:37:17
>>722
>>588

729 :デフォルトの名無しさん:2007/01/22(月) 09:55:43
>>573=>>722
>>576 >>588

730 :デフォルトの名無しさん:2007/01/22(月) 09:58:19
オセロ〜誰か作って〜〜〜

731 :573:2007/01/22(月) 10:21:36
>>728->>729
すみません(_ _)
ありがとうございました。

732 :355 ◆ZKcfds8GQA :2007/01/22(月) 10:22:08
[1] 授業単元:演習 其の3
[2] 問題文(含コード&リンク):
  ・数独を問題選択可能にする。
  ・起動時に、100問から自由に選べるようにする。
  ・解答チェックは、解放プログラムを組み込むこと。
  ・正解した時に、「正解です」と表示させる。
[3] 環境
 [3.1] OS:Windows Xp
 [3.2] コンパイラ名とバージョン:bcc5.5.1
 [3.3] 言語:C言語
[4] 期限:2007/01/23 12:00
[5] その他の制限:以前作ったモノを元に作ること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3472.zip
↑ココで作って頂いたものでお願いします。

問題100問は、自分で作ります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3487.txt
↑用意した問題

よろしくお願いします。

733 :624:2007/01/22(月) 10:32:49
昨日言っていたデータの中身の一部です。約50人分入っていました。
$ cut seiseki.data
T2001 77 55 10

T2002 64 45 23

T2003 53 31 99

T2104 56 55 80

T2105 91 67 58

T2106 41 55 33

T2207 78 71 85

T2208 21 51 37

T2210 85 54 18




734 :デフォルトの名無しさん:2007/01/22(月) 10:47:31
>>733
順番は国語数学英語か?
それとも英語数学国語か?

735 :デフォルトの名無しさん:2007/01/22(月) 11:22:35
>>430
>>733
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3488.txt
返事がないので英数国で処理した。ちなみにmath.hは使ってない。

736 :デフォルトの名無しさん:2007/01/22(月) 11:36:18
あれ、>>733ってもしかしてデータとデータの間に1つ空行があるのか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3489.txt
一応修正しておいた

737 :デフォルトの名無しさん:2007/01/22(月) 13:01:39
[1] 授業単元: prog4
[2] 問題文(含コード&リンク): http://sund1.sakura.ne.jp/uploader/source/up1417.pdfの48〜51ページ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: ([2007年1月23日10時まで]
[5] その他の制限:とくになし

738 :デフォルトの名無しさん:2007/01/22(月) 13:06:51
>>737
>>603
>>610

739 :デフォルトの名無しさん:2007/01/22(月) 13:13:34
[1] 授業単元: Programing Fundamental 1337
[2] 問題文(含コード&リンク):
Write a program that inputs three integers from the keyboard and prints the sum, average, product, smallest and largest of these numbers. The screen dialog should appear as follows:
Input three different integers: 13 27 14
Sum is 54
Average is 18
Product is 4914
Smallest is 13
Largest is 27
が、問題文ですが、数字三つをインプットして、その数字の和、平均、積、一番小さい、一番大きい数字の5を求めるのですが、
最後の一番小さい、大きい、数字の出し方で悩んでいます。初歩的ですが、補助お願いします。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Digitalmars, or Borland 5.5C++
 [3.3] 言語:C++
[4] 期限: ([2007年01月26日まで] または [無期限] のいずれか)
[5] その他の制限: なし

740 :デフォルトの名無しさん:2007/01/22(月) 13:18:01
>>733
#include <stdio.h>
#define STUDENT_MAX (100)
typedef struct{
    char id[6];
    int eng, math, jap, total;
}Student;

int main(){
    char buf[256];
    int cnt=0;
    Student *p,st[STUDENT_MAX];

    p=st;
    while ( NULL!=gets(buf) ) {
        if ( 4==sscanf( buf,"%s %d %d %d", p->id, &p->eng,&p->math,&p->jap) ) {
            p->total =  p->eng + p->math + p->jap;
            cnt++;
            if ( STUDENT_MAX == cnt )
                break;
            p++;
        }
    }
    printf("Id-No Eng Math Jap Total\n----- --- ---- --- -----\n");
    for(p=st;0<cnt;cnt--,p++)
        printf("%5s %3d  %3d %3d  %3d\n",p->id,p->jap,p->math,p->eng,p->total);
    return 0;
}

741 :デフォルトの名無しさん:2007/01/22(月) 13:24:20
>>739
#include<stdio.h>
int main(){
int a,b,c,m;
printf("Input three different integers:");
scanf("%d %d %d",&a,&b,&c);
printf("Sum is %d\n",a+b+c);
printf("Average is %d\n",(a+b+c)/3);
printf("Product is %d\n",a*b*c);
m = a;
if(m > b) m = b;
if(m > c) m = c;
printf("Smallest is %d\n",m);
m = a;
if(m < b) m = b;
if(m < c) m = c;
printf("Largest is %d\n",m);
return 0;
}

742 :デフォルトの名無しさん:2007/01/22(月) 14:15:45
>>730
#include<stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
ぐぐってたらオセロ見つけたぞ

743 :デフォルトの名無しさん:2007/01/22(月) 14:28:45
>>741
即答どうもです、しかし是はCをいただきました。課題はC++でした。とりあえず感謝です。

744 :デフォルトの名無しさん:2007/01/22(月) 14:37:44
>>739
>>743
#include<iostream>
using namespace std;
int main(){
int a,b,c,m;
cout<<"Input three different integers:";
cin>>a>>b>>c;
cout<<"Sum is "<<a+b+c<<endl;
cout<<"Average is "<<(a+b+c)/3<<endl;
cout<<"Product is "<<a*b*c<<endl;
m = a;
if(b < m) m = b;
if(c < m) m = c;
cout<<"Smallest is "<<m<<endl;;
m = a;
if(b > m) m = b;
if(c > m) m = c;
cout<<"Largest is "<<m<<endl;
return 0;
}
よく読まないでごめんなさい orz

745 :737:2007/01/22(月) 15:34:54
>>603
>>610
同じ学科のやつがいたんスね。
答え出てないみたいなんでお願いしますm(_ _)m

746 :デフォルトの名無しさん:2007/01/22(月) 15:43:26
どうでも良いが、imaginary part を image と略されるのはキモいな

747 :733:2007/01/22(月) 16:12:31
>>735 >>736 >>740
すいません!。順番は>>735の物で問題ありません。
遅れましたがありがとうございます。
早速試してみたいと思います。色々と迷惑かけてすみませんでした。


748 :224:2007/01/22(月) 16:21:42
>>685さん、そちらでも解けませんか?
やっぱり難しすぎるのかな、>>224

749 :デフォルトの名無しさん:2007/01/22(月) 16:25:36
>>745
>603を読んだが、酷い教材だな。

750 :デフォルトの名無しさん:2007/01/22(月) 16:26:48
>>748
説明が下手すぎて、どういう仕様の入力を与えてどういう出力が得られればいいか判らない。

751 :デフォルトの名無しさん:2007/01/22(月) 16:30:13
>>749
うるせーよバーカ

752 :デフォルトの名無しさん:2007/01/22(月) 16:37:17
>>748
簡単だが綺麗にコーディングしようと思うと難しい。
ちょっと待ってろ

753 :デフォルトの名無しさん:2007/01/22(月) 16:37:50
>>748
どれでも好きなの持ってお行き
数独 C言語 の検索結果 約 577 件中 1 - 10 件目 (0.14 秒)

754 :748:2007/01/22(月) 16:40:19
>>753
ありがとうございます。
よりどりみどりですね^^

755 :デフォルトの名無しさん:2007/01/22(月) 16:41:25
>>224
回答者のプライドをくすぐるとは、なかなか釣りが上手いな
まぁがんがれや( ´_ゝ`)

756 :224:2007/01/22(月) 16:42:53
それだけが取り柄ですから
頑張ります!!

757 :224:2007/01/22(月) 16:48:15
>>754>>756は偽物です。自分が本物;
>>752さん、ありがとうございます。
こっちでも頑張ってみます。

758 :デフォルトの名無しさん:2007/01/22(月) 16:48:31
>586-のソース見てるとプログラム以前に数独で何をやったらいいのか判っていないヨカン


759 :752:2007/01/22(月) 17:01:06
>>757
そっちで頑張るなら必要ないようだね

760 :デフォルトの名無しさん:2007/01/22(月) 17:02:57
>>759
ニセモノ気取るならせめて面白くなきゃな

761 :224:2007/01/22(月) 17:08:18
うわぁ〜要らんことゆってもうたワァ*・゜゚・*:.。..。.:*・゜(n’∀’)n゚・*:.。. .。.:*・゜゚・*!!!!!

762 :デフォルトの名無しさん:2007/01/22(月) 17:17:06
これがいわゆる「釣り師、釣りに溺れる」って奴だな

763 :デフォルトの名無しさん:2007/01/22(月) 17:31:49
224がいっぱい居る
>>762自演してないでそっちでも頑張れ


764 :224:2007/01/22(月) 17:38:24
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv)

int initial[4][4];

最初はやはりこの形式なのでしょうか。
別に、これ以外でも全然問題は無いのですが、この先が分かりません;

765 :737:2007/01/22(月) 18:07:03
心優しい方・・・
是非お願いします。

766 :デフォルトの名無しさん:2007/01/22(月) 18:27:54
心の優しい人は答えてくれないと思うぞ
ここで答えるのは人の将来なんてしらんという無責任な人たちだけだ

767 :デフォルトの名無しさん:2007/01/22(月) 18:35:13
>>766
誤 ここで答えるのは人の将来なんてしらんという無責任な人たちだけだ

    ↓

正 ここに依頼する奴は自分の将来なんか知らんというバカな人たちだけだ

768 :デフォルトの名無しさん:2007/01/22(月) 18:38:36
横着している奴が悪い、そんな当たり前のことも理解できんのか?w
別に質問した奴のことなんてどうでも良い、出された宿題が自分には解けるか?
腕試しする目的で見ている俺モイル

769 :デフォルトの名無しさん:2007/01/22(月) 18:54:48
[1] 授業単元:prog2
[2] 問題文(含コード&リンク):
2分木探索プログラムの改良
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3490.txt
(* ここに解答を書き加える *)の穴埋め
[3] 環境
 [3.1] OS: Windows2000
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 2007年01月26日まで
[5] その他の制限: なし

よろしくおねがいします

770 :デフォルトの名無しさん:2007/01/22(月) 19:05:59
>>765
問題文見てみたけど具体性に欠け意味不明。教科書持ってるか授業を受けてないと
分からないような書き方になってる希ガス。

771 :デフォルトの名無しさん:2007/01/22(月) 19:11:28
3490.txtはUFT-8だったのかorz

772 :769:2007/01/22(月) 19:17:05
あ、ごめんなさい
いつも使っているブログの事情でUTF-8で常時保存してるの忘れてました
Shift_JISで上げ直したほうがいいですかね?

それと、今の課題の状況なのですが
一つ目の穴には
return((BinNode *)calloc(500,sizeof(BinNode)));
二つ目の穴には
p->count++;
としてみて動かしてみたところ、実際より表示される累計数が1つが少ないので
初期化をどうやればいいのだろう、と構造体の復習をしているところです

773 :デフォルトの名無しさん:2007/01/22(月) 19:27:09
>>771
IEか?

774 :752:2007/01/22(月) 19:32:45
>>757
でけたよー。久々に頭使った

#include<stdio.h>
unsigned i,g[]={0x7C88,0xBC44,0xD322,0xE311,0xC788,0xCB44,0x3D22,0x3E11,0x887C
,0x44BC,0x22D3,0x11E3,0x88C7,0x44CB,0x223D,0x113E},b[16],m,p;int main(){for(;i
<16;i++)scanf("%1u",&b[i]),m=m<<1|b[i]!=0;for(;p<16;p++){if(m>>15-p&1)continue
;n:if(++b[p]>4){b[p]=0;do if(!p--)return fputs("no solution found.",stderr),1;
while(m>>15-p&1);p--;}else for(i=0;i<16;i++)if((g[p]>>15-i&1)&&b[i]==b[p])goto
n;}for(i=0;i<16;i++)printf("%d%s",b[i],i%4-3?"":"\n");return 0;}

775 :デフォルトの名無しさん:2007/01/22(月) 19:40:47
>>773
めんどいからDLしてEditreに任せたw
これでどや?

BinNode *AllocNode(void)
{
//(* ここに解答を書き加える *)

// 単元9の課題番号1では return((BinNode *)calloc(1,sizeof(BinNode))); の一行でした
    BinNode *p;
    if(NULL!=(BinNode)calloc(1,sizeof(BinNode))){
        p->count=1;
        p->left =NULL;
        p->right=NULL;
    }
    return( p );
}


776 :デフォルトの名無しさん:2007/01/22(月) 19:42:52
いつも思うんだけどcallocって存在する意味が薄いよな。
K&Rにはcallocが先だったらしいけど。

777 :デフォルトの名無しさん:2007/01/22(月) 19:42:54
ごめ 編集ミス

BinNode *AllocNode(void)
{
//(* ここに解答を書き加える *)

// 単元9の課題番号1では return((BinNode *)calloc(1,sizeof(BinNode))); の一行でした
    BinNode *p;
    if ( NULL!=(p=(BinNode*)calloc(1,sizeof(BinNode))) ){
        p->count=1;
        p->left =NULL;
        p->right=NULL;
    }
    return( p );
}


778 :デフォルトの名無しさん:2007/01/22(月) 19:43:52
>>776
オレもmallocばっかり使ってる

779 :デフォルトの名無しさん:2007/01/22(月) 19:47:52
>>776
callocはmallocと違ってゼロクリアされるから、
メンバの多い構造体を初期化するときに、
s->foo=0やs->bar=NULLを書かなくてすむようになる

780 :769:2007/01/22(月) 19:48:43
>>777
正解でした
ありがとうございました

プログラミングってむずかしい
先が思いやられる(´・д・`)

781 :224:2007/01/22(月) 19:49:25
>>752さん、早速試してみたんですが、これって直接数字入力するタイプですよね。
ファイルから入力って書いたはずだったんですけど、伝わらなかったのか;

#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv)
{
int initial[4][4];
int ;
int blank;
int hint[5];
int total;
FILE *fp;

if((fp=fopen(argv[1],"r"))==NULL)

多分、序盤の出だしはこれじゃないかと思うのですが・・・;
この先はどうすればよいですか?

782 :デフォルトの名無しさん:2007/01/22(月) 19:53:07
>>781
標準入力版でもファイルから入力はできるが。

783 :デフォルトの名無しさん:2007/01/22(月) 19:59:16
>>781
実行ファイルを ./a.out とした時、
./a.out < data.txt
とすればファイル data.txt から読み込む。

784 :224:2007/01/22(月) 19:59:44
分かりにくい説明ですみません。以下、できるだけ簡単に書き直します。

1000
0200
3001
0004
上記のような数を記したファイルを、前もって作成しておく。
プログラムは、このファイルの数値を読み込み、0の部分に1から4までの数を置き換えて数独を完成するもの。
各行、各列、2×2の小領域において、一回使った数字は再使用できない。

以上です。重ね重ねすみません;

785 :デフォルトの名無しさん:2007/01/22(月) 19:59:56
お願いします
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):あるファイルの中にデータとして多くの0と1が書き込まれており、最後の1文字だけがEであるとする。
このとき0と1の並びに着目し、データ圧縮することを考える。例えば1.datというファイルに11111110000000000000000000000001E
というように0と1がならんでいるとき、7 1 24 0 1 1
と圧縮できる。すなわちこれは7個の1、24個の0、1個の1を順に意味する。このとき圧縮結果には格数値間に空白を挟むことに注意する。
上記の圧縮方法に従って任意の0と1から成るデータを圧縮し、圧縮結果を表示するプログラムを作成せよ。ただしデータはリダイレクションによってchar型変数に1文字ずつ繰り返し読み込まれるものとする。
またEが読み込まれたときに「圧縮完了」というメッセージを出し、プログラムを終了させるものとする。
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明日


786 :224:2007/01/22(月) 20:00:47
>>783
わかりました。やってみます。

787 :デフォルトの名無しさん:2007/01/22(月) 20:01:27
>>786
アホすぎるぞ
面白いけど

788 :224:2007/01/22(月) 20:05:55
>>783
[j0603901@IMS228 2006531039_3]$ gcc -o a main.c
[j0603901@IMS228 2006531039_3]$ ./a < prob4-1.txt
1111
1211
3111
1114

やってみたんですが、こんな感じに;

789 :デフォルトの名無しさん:2007/01/22(月) 20:14:19
>>785
#include <stdio.h>
main()
{
    int c, c_, cnt;
    while ((c = getchar()) != EOF && c != 'E') {
        if (c == '0' || c == '1') {
            for (cnt = 1, c_ = c; (c = getchar()) != EOF && c == c_; ++cnt)
                ;
            ungetc(c, stdin);
            printf("%d %c ", cnt, c_);
        } else {
            printf("フォーマットエラー\n");
            exit(1);
        }
    }
    printf("\n圧縮完了\n");
}

790 :224:2007/01/22(月) 20:20:59
最初の数字しか読み込んでいないのか・・・。
0が全部1に置き換えられてます。

どうすりゃいいんだか・・・orz

791 :776:2007/01/22(月) 20:23:50
>>779
また規格厨かとか言われそうだけど
ゼロクリアされてもそれが即ヌルポインタ、文字列終端記号になるとは限らない。処理系による。
基本型にしても浮動小数点なら全てのビットが0ならイコール0.0とは限らない。
再現性の薄いバグを出さないという意味ではいいかもしれないけど
それにしてももっと分かりやすいデータ(0xEBとか)で埋めたほうがバグの検出がしやすいと思う。
そもそも引数二つとってそれを掛けた大きさをメモリ確保、っていう仕様も意味不明。

792 :デフォルトの名無しさん:2007/01/22(月) 20:25:31
>785

>>789難しくネ?
#include<stdio.h>

int main()
{
int ch,keep=0,cnt=0;
    while ( EOF!=(ch=getchar()) ) {
        if ( ch != keep ){
            printf("%d %c ", cnt, keep);
            keep=ch;
            cnt=1;
        }
        else
            cnt++;
    }
    return 0;
}


793 :デフォルトの名無しさん:2007/01/22(月) 20:26:10
calloc()の引数はどっちがどっちだっけといつまでも覚えられない俺が居る
同様にfwrite()やfread()は醜いと感じる

まぁ古いだけあってlibcのインタフェースは糞なのが多いわな

794 :デフォルトの名無しさん:2007/01/22(月) 20:27:51
>>792
Eで終わらして「圧縮完了」を忘れないでやってくれ

795 :デフォルトの名無しさん:2007/01/22(月) 20:29:14
>>794
失敬m(_ _)m


796 :デフォルトの名無しさん:2007/01/22(月) 20:30:18
>>785 の言語指定が C++ に見えるの私だけでしょうか?

797 :デフォルトの名無しさん:2007/01/22(月) 20:34:30
>>792
それだと最初に1を読み込んだ時に0 0が出力される気がしなくもない

798 :デフォルトの名無しさん:2007/01/22(月) 20:34:56
>>774だとエンディアンの影響をもろに受けるね。
g[0]&1あたりで判別して、バイトオーダを整えないと

799 :デフォルトの名無しさん:2007/01/22(月) 20:36:13
>>797
別にいいんじゃね?
無駄だけど…

800 :デフォルトの名無しさん:2007/01/22(月) 20:36:47
>>796
そりゃすまんかった
>>785
#include <iostream>
using namespace std;
int main()
{
    int c, c_, cnt;
    streambuf* sb = cin.rdbuf();
    while ((c = sb->sbumpc()) >= 0 && c != 'E') {
        if (c == '0' || c == '1') {
            for (cnt = 1, c_ = c; (c = sb->sbumpc()) >= 0 && c == c_; ++cnt)
                ;
            sb->sungetc();
            cout << cnt << static_cast<char>(c_);
        } else {
            cout << flush;
            cerr << "フォーマットエラー" << endl;
            exit(1);
        }
    }
    cout << "\n圧縮完了" << endl;
    return 0;
}

801 :デフォルトの名無しさん:2007/01/22(月) 20:36:51
>>797
うっ Cppでもないし 颯爽と退場orz

802 :800:2007/01/22(月) 20:39:18
すまんちと帝政。
- cout << cnt << static_cast<char>(c_);
+ cout << cnt << static_cast<char>(c_) << ' ';


803 :800:2007/01/22(月) 20:41:47
んがぁ
+ cout << cnt << ' ' << static_cast<char>(c_) << ' ';
だ。スマソ。

804 :デフォルトの名無しさん:2007/01/22(月) 21:33:27
1342
4213
3421
2134

805 :デフォルトの名無しさん:2007/01/22(月) 21:36:27
どなたか>>568を解いてくださるかたいませんか。
解いてくださったらわずかですが謝礼も払います。

806 :デフォルトの名無しさん:2007/01/22(月) 21:38:45
>謝礼も払います。

NGワード言っちゃいましたね( ̄ー ̄)ニヤリッ

807 :デフォルトの名無しさん:2007/01/22(月) 21:41:49
宿題のレポートがどうしても無限ループして終了しないのですが、
原因をここで聞くのはありですか?

808 :デフォルトの名無しさん:2007/01/22(月) 21:43:28
>>807
カモン

809 :デフォルトの名無しさん:2007/01/22(月) 21:46:47
>>805
必ず誰かが相談に乗ってくれる借金生活相談室24って・・・そんな相談乗ってくれるのか

810 :デフォルトの名無しさん:2007/01/22(月) 21:55:38
謝礼 借金生活相談室



811 :737:2007/01/22(月) 21:56:07
>>737
放置されてるんで是非お願いします!

812 :デフォルトの名無しさん:2007/01/22(月) 22:01:58
>>811
>>612でいいじゃん

813 :デフォルトの名無しさん:2007/01/22(月) 22:02:05
>>811
この辺嫁
>>749
>>770

814 :807:2007/01/22(月) 22:02:38
>>808
単語数を数えるレポートなのですが・・・アルファベットが出たらカウントを1増やして
アルファベットが続く限りファイルを進めるという風にしてるつもりが無限ループしてしまいます・・・

#include<stdio.h>
char fileName[]="abk.c";/*元のcプログラムファイル*/
int main(void)
{
FILE *input;
int c,count;
/*------------ファイルを開く------------*/
input=fopen(fileName,"r");
while(1){
c=fgetc(input);
if(c==EOF)break;
if(65<=c&&c<=90){
if(97<=c&&c<=122)count++;
while(65<=c&&c<=90){
if(97<=c&&c<=122)
c=fgetc(input);
}
}
}fclose(input);
printf("単語数:%d",count);return 0;
}

815 :807:2007/01/22(月) 22:04:58
ちなみに問題文は↓これです。コンパイラはBorlandC/C++5.5

ファイル中の単語数をカウントするプログラムを作成せよ。単語の切れ目はアルファベット以外の文字

816 :デフォルトの名無しさん:2007/01/22(月) 22:05:40
>>814
>while(65<=c&&c<=90){
>if(97<=c&&c<=122)
>c=fgetc(input);
>}

この部分で while に入ったが最後抜けられない

817 :デフォルトの名無しさん:2007/01/22(月) 22:07:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3491.txt
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:24日まで


818 :807:2007/01/22(月) 22:09:29
>>816 なるほど・・・どうしたら抜けられるでしょうか?
アルファベットである限りwhileの中をループさせたいのですが

819 :デフォルトの名無しさん:2007/01/22(月) 22:10:49
while(65<=c&&c<=90){
if(97<=c&&c<=122)
c=fgetc(input);
}

ここでcが97〜122の範囲に無かったら無限ループ。
というかこのif文の意図は何だ。アルファベットが続く間
fgetcを続けて入力を進めたいなら

while((65<=c&&c<=90)||(97<=c&&c<=122)){
c=fgetc(input);
}
ungetc(c,input);
だ。

820 :デフォルトの名無しさん:2007/01/22(月) 22:12:38
ミスった。アルファベット以外の文字を分離子にするなら
それは読み込んじゃっていいか。ラストのungetcは要らんな。

821 :デフォルトの名無しさん:2007/01/22(月) 22:17:23
[1] 授業単元:情報工学実験
[2] 問題文(含コード&リンク):ttp://www.geocities.jp/sweety_lemonade の「基地局プログラムの開発の進め方」にある1〜6の機能を持つプログラムの作成をお願いいたします。
[3] 環境
 [3.1] OS:redhat9 & fedoracore6
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:Cのみ
[4] 期限:2007/1/24(水)
[5] その他の制限: 特にありません。

必要な呼制御メッセージやその役割は「参考スライド」に書いてあります。

どうか、どうかよろしくお願いいたします。



822 :807:2007/01/22(月) 22:18:01
>>890 ありがとうございます、それでやってみます。
if文がおかしいのはその二つ同時に条件に入れるやり方がわからなかっただけですたorz


823 :デフォルトの名無しさん:2007/01/22(月) 22:21:51
>>807
isalpha 使うと楽だよ。(#include<ctype.h> 追加して)
使っちゃダメなのかもしれんが

824 :デフォルトの名無しさん:2007/01/22(月) 22:21:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3492.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007/01/25
[5] その他の制限:説明も加えてください

825 :807:2007/01/22(月) 22:22:32
出来ましたー!!ありがとうございます。ほんと感謝です

826 :807:2007/01/22(月) 22:24:41
>>823 isalphaというものの存在を知りませんでした・・・次からはそれを使うことにします。
何から何までありがとうございます

827 :デフォルトの名無しさん:2007/01/22(月) 22:28:37
>>807 count の初期化も必要

isalpha を使うとこんな感じ

#include<stdio.h>
#include<ctype.h>
char fileName[]="abk.c";
int main(void){
FILE *input;
int c,flag_prev_is_alphabet=0,count=0;
input=fopen(fileName,"r");
while(1){
c=fgetc(input);
if(c==EOF)break;
if(isalpha(c) && !flag_prev_is_alphabet)
count++;
flag_prev_is_alphabet=isalpha(c);
}
fclose(input);
printf("単語数:%d",count);return 0;
}

828 :807:2007/01/22(月) 22:35:13
>>827 初期化しなかったら値がdでもないことになりますね。
isalphaベンリそうなので覚えときます

829 :デフォルトの名無しさん:2007/01/22(月) 23:09:48
[1] 授業単元: プログラミング概論
[2] 問題文(含コード&リンク):相手にメールを送り、受け取った人がそれを開くと
              自動的にドレミファソラシドの音を繰り返すプログラムを作成せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C/C++どちらでも可
[4] 期限:2007/2/4
[5] その他の制限:音階は特に気にしなくていいです
         受信者側のパソコンで、メールを開くと音が出るようにします。


830 :デフォルトの名無しさん:2007/01/22(月) 23:12:14
メールを開いただけでサウンドデバイスを操作されるって、そりゃセキュリティホールだろ。

831 :デフォルトの名無しさん:2007/01/22(月) 23:12:51
HTMLメールを | mail で送れって事かも試練

832 :デフォルトの名無しさん:2007/01/22(月) 23:21:21
むかし同じ質問どっかで見たな

833 :デフォルトの名無しさん:2007/01/22(月) 23:24:50
とにかくそれらしいのができる人はがんがん書いてください
助けてください

834 :デフォルトの名無しさん:2007/01/22(月) 23:30:35
>>732
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3493.zip

835 :デフォルトの名無しさん:2007/01/22(月) 23:36:08
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
アカウント名とパスワードのデータ管理をするために、チェイン法を用いたハッシュ表をつくり、辞書操作(データ削除、検索、挿入)とリスト長のヒストグラム表示
[3] 環境
 [3.1] OS: Mac OSX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:今週中にお願いします。
[5] その他の制限:
アカウント名、1〜6文字で構成される英子文字
ハッシュ内でアカウント名の重複はダメ
パスワード、1〜10文字で構成される英数字


よろしくお願いします。

836 :デフォルトの名無しさん:2007/01/22(月) 23:36:49
>>829
この書き方だとメーラ(受信側)を作れとも聞こえる
メール受信→開く→メーラが音を出す(音で知らせる意味が無いけど)

メールにプログラムを添付?開いただけじゃ実行されないよね・・・
>>831の言うようにHTMLメールで?でもその場合C/C++は関係ないんじゃ・・・


837 :デフォルトの名無しさん:2007/01/22(月) 23:46:35
新着メールがあれば音を出せってプログラムなら納得いくんだけどね

838 :デフォルトの名無しさん:2007/01/23(火) 00:07:14
つまりセキュリティーホールを作ればいいのか?

839 :デフォルトの名無しさん:2007/01/23(火) 00:15:52
相手のOSもメーラも指定されてないのに不可能だろ

840 :デフォルトの名無しさん:2007/01/23(火) 00:18:30
>>824お願いします

841 :デフォルトの名無しさん:2007/01/23(火) 00:22:51
>>817 C言語で書いた。C++に直してね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3495.cpp

842 :デフォルトの名無しさん:2007/01/23(火) 00:45:25
>>821
これやる奴いるのかよw

843 :355 ◆ZKcfds8GQA :2007/01/23(火) 00:48:49
>>834
助かりました。
ありがとうございました。

844 :デフォルトの名無しさん:2007/01/23(火) 00:51:43
>>840
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3496.txt

845 :844:2007/01/23(火) 00:54:54
ああ、「絶対値が最大の」項か。
以下の箇所を直しといてくれ。

-if (term > max)
+if (fabs(term) > max)

846 :デフォルトの名無しさん:2007/01/23(火) 01:02:10
>>844
exp(-x)じゃねえの?

847 :844:2007/01/23(火) 01:06:47
>>846
./a.out -2.3
とか打ち込んでくれれば良い
指数が正でも負でも計算するから

848 :デフォルトの名無しさん:2007/01/23(火) 01:07:48
>>847
exp(x)のべき級数展開してない?

849 :デフォルトの名無しさん:2007/01/23(火) 01:09:39
ああ、ごめん。了解した。

850 :844:2007/01/23(火) 01:15:21
すまそ。大ポカ。
-int power(double base, int n)
+double power(double base, int n)
だな。

851 :デフォルトの名無しさん:2007/01/23(火) 01:15:26
>>829
>相手にメールを送り、受け取った人がそれを開くと自動的にドレミファソラシドの音を繰り返すプログラムを作成せよ
>受信者側のパソコンで、メールを開くと音が出るようにします

・作成したプログラム(メーラー)で開いたら、とりあえず音が出るだけという無意味なプログラム(メーラー)を作るのか
(Windowsでいうと開くというアクションにサウンドを割り当てるって感じだね)
・メール受信時、相手の指定した音が出るプログラム(メーラー)を作るのか(この場合送信側も必要になる)
・送受信されるメールそのものに細工を施すのか
以上のようにどういったものが作りたいのかが曖昧です

よって

   <結論>

          意味わかんないから無理です


852 :355 ◆ZKcfds8GQA :2007/01/23(火) 01:16:56
>>834
makeに失敗してしまいます。
どのようにコンパイルすればよいのでしょうか?

853 :デフォルトの名無しさん:2007/01/23(火) 01:18:08
>>851
日本語を普通に読み取れば、
>相手にメールを送り
と書いてあるある以上、送信側のプログラムを作るんだろ?
データ生成はこれが自由に行えるから、無論メールに細工をするのが
本質なわけだ。

まぁ、こんなことが出来たら、メールを開けたらディスクがフォーマットされる
ようなメールを送れそうだがな。

854 :デフォルトの名無しさん:2007/01/23(火) 01:19:00
>>852
cc exp.c -lm
数学関数を使う場合は、-lmを指定してlibm.aをリンクするのを忘れずに。

855 :デフォルトの名無しさん:2007/01/23(火) 01:20:24
>>824
#include<stdio.h>
#include<math.h>
intmain(void){
int n;
double ans=1.0, kou=1.0, t=0.0, x=10.0, e;
printf("%.10f %.10f\n", kou, ans);
for(n=1;n<40;n++){
kou*=-x/n;
if(fabs(t)<fabs(kou)) t=kou;
ans+=kou;
printf("%.10f %.10f\n", kou, ans);
}
printf("t=%.10f\n", t);
e=fabs(ans-exp(-x));
printf("exp(%.1f)=%.10f\n", -x, exp(-x));
printf("e=%.10f\n", e);
return 0;
}

856 :デフォルトの名無しさん:2007/01/23(火) 02:10:35
>>844
>>855
動きません
あとxはscanf使うんだと思います

857 :デフォルトの名無しさん:2007/01/23(火) 02:15:05
>>785
試しに俺も。
#include <iostream>
int main() {
    char oldc, newc;
    int counter = 0;
    for (; ; ) {
        for (; ; ) {
            std::cin >> newc;
            if (++counter == 1) oldc = newc;
            if (oldc != newc) break;
        }
        std::cout << --counter << ' ' << oldc << ' ';
        if (newc == 'E') break;
        counter = 1;
        oldc = newc;
    }
    std::cout << "圧縮完了" << std::endl;
    return 0;
}

858 :デフォルトの名無しさん:2007/01/23(火) 02:15:39
>>856
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。

859 :デフォルトの名無しさん:2007/01/23(火) 02:29:01
後出しするやつは無視するだけでいいよ

860 :デフォルトの名無しさん:2007/01/23(火) 02:30:48
>>824ものすごく適当に
#include<stdio.h>
#include<math.h>
float t=0,sum=0;
float Factrial(float n){
if(n<=0) return 1;
return n*Factrial(n-1);
}
float exp_Mac(float x,float n){
float Paragraph;
if(n<=0){
sum+=1;
printf("第 1項:1.0000000000\tここまでの合計:%10.10f\n",sum);
return 1;
}
Paragraph=pow(x,n)/Factrial(n);
sum+=Paragraph;
if(fabs(Paragraph)>t) t=fabs(Paragraph);
printf("第%3.f項:%10.10f\tここまでの合計:%10.10f\n",n+1,Paragraph,sum);
return Paragraph+exp_Mac(x,n-1);
}
int main(void){
float x,n,s,e;
printf("xを入力:");scanf("%f",&x); printf("nを入力:");scanf("%f",&n);
s=exp_Mac(x,n),e=s-exp(x);
printf("マクローリン展開の値:%10.10f\n",s);
printf("誤差:%10.10f\n",e);
printf("最大の絶対値:%10.10f",t);
return 0;
}

861 :デフォルトの名無しさん:2007/01/23(火) 03:02:13
[1] 授業単元:情報処理基礎
[2] 問題文(含コード&リンク):
先日行われたセンター試験、数学II/Bの第6問にある
「二分法を用いて5の3乗根の近似値を計算するプログラム」
をCでできるだけ簡潔に書き直せ。

ここから---------------------------------
100 LET A=0
110 LET B=2
120 INPUT N
130 FOR I=1 TO N
140 LET C=(A+B)/2
150 LET D=C*C*C-5
160 IF D<0 THEN LET A=C
170 IF D>=0 THEN LET B=C
180 NEXT I
190 PRINT A
200 PRINT B
210 END
---------------------------------ここまで

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:2006/01/30
[5] その他の制限:stdio.hとmath.hのみ使用可

オリジナルの問題はこちらにあります(p.15)
http://proxy.ymdb.yahoofs.jp/edu/center/quest_sugaku_2b.pdf?jeWyktFBTTcEVsIK
よろしくおねがいします。

862 :デフォルトの名無しさん:2007/01/23(火) 03:10:22
>>860
完璧です
ありがとうございます

863 :デフォルトの名無しさん:2007/01/23(火) 03:16:54
>>861
#include <stdio.h>
int main(){
int N;
double a=0,b=2,c;
scanf("%i",&N);
for(;N>0;N--)c=(a+b)/2,c*c*c-5<0?a=c:(b=c);
printf("%f\n%f\n",a,b);
return 0;
}

864 :デフォルトの名無しさん:2007/01/23(火) 03:20:50
>>861
int main(void) {
    int i,n;
    double a=0,b=2,c,d;
    scanf("%d",&n);
    for(i=1;i<=n;i++) {
        c=(a+b)/2;
        d=c*c*c-5;
        if(d<0) a=c;
        if(d>=0) b=c;
    }
    printf("%f\n",a);
    printf("%f\n",b);
    return 0;
}

865 :デフォルトの名無しさん:2007/01/23(火) 06:39:25
[1] 授業単元:応用数学
[2] 問題文(含コード&リンク):
(dy/dx)=2xyなる微分方程式がある.y(0)=1とすれば元の関数はy=exp(x^2)であることは明らかであるが,ホイン法を用いてこの近似解を求めるプログラムを作れ.
[3] 環境
 [3.1] OS:Windows XP pro SP2
 [3.2]Visual Studio .NET 2003(学生ライセンス版)
 [3.3] 言語: C
[4] 期限: 宿題ではないので各自考えてみなさい.故に無制限であると思います.オイラー法は講義で説明を受けました.
[5] その他の制限: 配列とポインタ(講義中にy[i]のような表記を使わなくてもとけると言う文言がありました.)
これに対して
#include <stdio.h>
#include <math.h>
double func( double x, double y){ return 2*x*y}
int main()
{
double x0=0.0,xend=1.0;
int i,n=50;/*ステップ*/
double y0=1.0;
double h,x,y,k1,k2;
h=fabs(xend-x0)/n;/*幅*/
y=y0;x=x0;

for(i=0;i<=n;i++){
k1=f(x,y);y=y+h*k1;
k2=func(x+h,y); y=y+(k1+k2)*h/2.0;
printf("%16.15f %16.15f %16.15f %16.15f\n",k1,k2,x,y);
x+=h;
}
return 0;
}
としたのですが誤差がどんどん大きくなってしまいオイラー法よりもあまりにひどい精度となってしまっています。ご助力等お願いします。

866 :デフォルトの名無しさん:2007/01/23(火) 07:03:01
[1] 授業単元: 知能工学
[2] 問題文(含コード&リンク): http://pc10.2ch.net/test/read.cgi/tech/1168663908/867
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2007年1月28日まで
[5] その他の制限: どこまで習っているか C文法一通り習ってます

867 :デフォルトの名無しさん:2007/01/23(火) 07:03:48
課題1 図1 (a)の初期状態のように3×3のマス目に1〜8の番号が付いたパネルが配置されている。
ここで、右下角は何も置けないようになっている。この状態から、次のルールに従ってパネルを移動して目標状態にする問題を考える。
●4つの隣接するパネルを時計回りに回転させることができる。
●4つの隣接するパネルの和が5の倍数のときには回転させることができない。
例えば、図1(b)の場合、移動前の状態から左上の4枚(5,8,2,3)を時計回りに回転させると、移動後の状態になる。
なお、移動前の状態では他に右上の4枚(8,1,3,7)も回転されることは可能であるが、右下の4枚(2,3,6,4)は合計が5の倍数になるので、回転させることはできない。

図1
http://cocoa.gazo-ch.net/bbs/18/img/200701/1198816.jpg


(1).問題を定式化せよ。
(2).(1)に基づいて、目標状態に至るまでの手順を縦型探索、横型探索、A*(エースター)アルゴリズムにより探索するプログラムを作成せよ。
ヒューリスティック値は各自でいろいろ設定してみて、最適なものを探してみること。
言語はCを用いること。また、状態を保持するリストは配列のように保持可能な要素数が固定されるものでなく、ポインタなどを利用して保持可能な要素数を動的に変更可能なものを使用すること。
各探索における結果や時間や記憶領域に関する計算量の実測値を比較したり、設定したヒューリスティックが有効であったかどうか、その理由も考察してみること。

ながいですがよろしくお願いします。だれか教えてください。

868 :821:2007/01/23(火) 08:16:30
>>821
お願いいたします。

869 :デフォルトの名無しさん:2007/01/23(火) 09:17:12
>>865
漸化式が違う気がする。

for(i=0;i<=n;i++){
y=y+(k1+k2)/2.0;
k1=h*func(x,y);
k2=h*func(x+h,y+k1);
printf("%16.15f %16.15f %16.15f %16.15f\n",k1,k2,x,y);
x+=h;
}

870 :デフォルトの名無しさん:2007/01/23(火) 09:50:25
[1] 授業単元: C言語
[2] 問題文(含コード&リンク) :問題 10人の名前,年齢,電話番号の入ったファイルを作り、それを読み出すプログラムを作れ。そのとき、ファイル名は画面上で自由に設定でき、ファイルの拡張子はdatとなるようにせよ。再度ファイル名の入力を要請できるようにせよ。
上のファイルに新たに1人のデータを追加するためのプログラムを作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C言語
[4] 期限:1月26日
[5] その他の制限: どこまで習っているか 一通り習いましたが、できるだけ簡単な文法でお願いします。

よろしくお願いします。

871 :デフォルトの名無しさん:2007/01/23(火) 09:50:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 距離の単位としてメートルとヤードがある。距離のメートルを入力するとヤードに、ヤードを入力するとメートルに変換するプログラムを作成せよ。
入力した単位はメートルならmを、ヤードならyを入力する。ただし距離を変換する部分は以下のような関数transを定義し、main関数で呼び出して使用すること。
関数名 trans
第1引数 char  距離の単位(mかy)
第2引数 double 距離の値
小数点以下の計算があるので返値はdouble型とする。
またメートルあるいはヤードの値はmain関数で距離の単位にEが読み込まれるまで繰り返し読み込み、メートルあるいはヤードに変換した距離の値をmain関数で出力すること。1ヤード=0.914メートルとすること。
実行例
meter or yard:m
input data:270.5
270.5 meter-->295.952 yard
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限:明日


872 :デフォルトの名無しさん:2007/01/23(火) 10:02:19
>>870
> 10人の名前,年齢,電話番号の入ったファイルを作り
ここまでは自分でやれ

873 :デフォルトの名無しさん:2007/01/23(火) 10:05:25
>>871
#include <iostream>
using namespace std;
void trans(char&c,double&d,double&d2){d2=c=='m'?d/0.914:d*0.914;}
int main(){
while(1){
char c;
double d,d2;
cout << "meter or yard:";cin >> c;
if(c=='E')break;
cout << "input data:";cin >> d;
trans(c,d,d2);
cout << d << (c=='m'?" meter-->":" yard-->") << d2 << (c=='y'?" meter":" yard") << endl;
}
return 0;
}

874 :デフォルトの名無しさん:2007/01/23(火) 11:00:29
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3497.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 1月27日まで]
[5] その他の制限:

875 :デフォルトの名無しさん:2007/01/23(火) 11:38:53
>>744
ウルトラどうもです。たすかります。

876 :デフォルトの名無しさん:2007/01/23(火) 12:46:38
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
入力される文字列を編集する
・先週の連続する空白を削除
・以降の連続する空白を1つにする

char bun[80];

gets(bun); 文字列を入力
:
: 空白削除処理
:
puts(bun); 編集後の文字列を出力

末尾にヌル文字が必要


処理前 [ This is C Program . ]

処理後 [This is C Program . ]
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語:C
[4] 期限:今日14時まで
[5] その他の制限:

877 :デフォルトの名無しさん:2007/01/23(火) 12:50:30
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
入力される整数を
カンマ編集した文字列に変換する

char edit[20];
int n;

scanf("%d", &n);
:
: カンマ編集処理
:
puts(edit);


入力 出力
123 123
1234 1,234
1234567890 1,234,567,890
0 0
-123 -123
-1234 -1,234
-1234567890 -1,234,567,890
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語:C
[4] 期限:今日14時まで
[5] その他の制限:

878 :デフォルトの名無しさん:2007/01/23(火) 12:51:26


急な課題で非常に申し訳ありませんが、
以上の二題、
一時間以内で、
できたらよろしくおねがいしますm(__)m

879 :865:2007/01/23(火) 13:10:40
>>869
そのままコンパイルしたらk1の定義がおかしいとコンパイラに怒られましたので
y=y+(k1+k2)/2.0;
k1=h*func(x,y);
k2=h*func(x+h,y+k1);
の部分を少しいじったらうまく行けそうです.有り難うございました.

880 :デフォルトの名無しさん:2007/01/23(火) 13:13:09
>>876
先週と・以降の意味がわからない

881 :デフォルトの名無しさん:2007/01/23(火) 13:14:56
>>877
scanf("%d", &n);
: カンマ編集処理
sprintf(edit, "%'d",n);
puts(edit);


882 :デフォルトの名無しさん:2007/01/23(火) 13:16:44
>>876
#include <stdio.h>
#include <string.h>
int main(void)
{
char bun[80];
if (NULL != fgets(bun, 79, stdin)){
while (1){
char* p = strstr(bun, " ");
if (NULL != p){
strcpy(p, p + 1);
}
else {
break;
}
}
if (' ' == bun[0]){
strcpy(bun, &bun[1]);
}
puts(bun);
}
return 0;
}

883 :デフォルトの名無しさん:2007/01/23(火) 13:17:33
>>877

#include <stdio.h>
#include <string.h>

int main(void)
{
int hasuu;
int num;
char bun[80];
if (NULL != fgets(bun, 79, stdin)){
if (1 == sscanf(bun, "%d", &num)){
sprintf(bun, "%d", num);
hasuu = strlen(bun) % 3;
for (int i = 0; i < strlen(bun); i++){
if (i % 3 == hasuu && i != 0){
putc(',', stdout);
}
putc(bun[i], stdout);
}
}
}
return 0;
}

884 :デフォルトの名無しさん:2007/01/23(火) 13:23:50
>>877
#include<stdio.h>
#include<stdlib.h>

void comma_format(int value, char *buf){
int value_abs, divide_value, len;

value_abs=abs(value);
for(divide_value=1;value_abs/divide_value>=1000;divide_value*=1000)
;

len=sprintf(buf, "%d", value/divide_value);
for(divide_value/=1000;divide_value>0;divide_value/=1000)
len+=sprintf(&buf[len], ",%03d", (value_abs/divide_value)%1000);
}

int main(void){
char edit[20];
int n;

scanf("%d", &n);
comma_format(n, edit);
puts(edit);
return 0;
}

885 :デフォルトの名無しさん:2007/01/23(火) 13:54:45
>>876
教官にgets()なんて使わせるなこのハゲとでも言っておけ。
理由は
ttp://www.kouno.jp/home/c_faq/c12.html#23
参照。

#include <stdio.h>
int main()
{
    int c, pc;
    for (pc = '\n'; (c = getchar()) != EOF; pc = c) {
        if (c == ' ') {
            if (pc != '\n' && pc != ' ')
                putchar(c);
        } else
            putchar(c);
    }
    return 0;
}

886 :876,877:2007/01/23(火) 13:58:37
>>880
先週→先頭でした・・・orz



>>881-884
習ってないコマンドがたくさん出てきてるようですが・・・・
とりあえずありがとうございます!!

887 :876,877:2007/01/23(火) 14:00:39
>>885
たしかに、こんな変なの使いたくないですよね・・・

どうもです、参考にします。

888 :835:2007/01/23(火) 14:15:58
私のもおねがいします。

889 :デフォルトの名無しさん:2007/01/23(火) 14:15:58
1時間以内って宿題じゃなくて授業中の課題だろ・・・

890 :737:2007/01/23(火) 14:40:54
>>612じゃできなかったので;
>>737わかる方お願いします。教科書等無くてもできるらしいのですが・・・

891 :デフォルトの名無しさん:2007/01/23(火) 15:02:25
1] 授業単元: C言語
[2] 問題文:
  1)1〜4999までの整数をローマ記法に変換するプログラムを作成せよ。 1,2,4,8,32,64,128,・・・・,4096を変換した結果を確認しなさい。

  2)1000までの素数をエラトステネスの方法で計算するプログラムを作成せよ。
    エラトステネスの方法とは 1000 までの奇数のうち 3 の倍数 6,9,12,・・・ を全て消す。
    次に残った数のうち最小の 5 の倍数 10,15,20,25,・・・・を消す。 これを 7,11,13,17,・・・・・と1000の平方根を越えるまで続ける(31まで)。
    これで 2 及び消されなかった数が素数である。

  3)直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,
    その点が物体の内部に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。

  4)ファイル中の文字数,単語数,行数をカウントするプログラムを作成せよ。単語の切れ目はアルファベット以外の文字、
    行の終わりは改行文字またはファイルの終端とします。この課題のソースファイルで動作確認をしてください。

  5)2進16桁の2の補数表示のデ−タと10進数を相互に変換するプログラム。

  6)HDD上の英文のテキストファイルを読んで、使用されている単語を抽出し、アルファベット順に整理して書き出すプログラム。

  7)30のファクトリアル(30!=1*2*3*4*5*6*7*8*9*10*...*28*29*30)を計算する。intやlong型で は桁数が不足する。double型では計算精度が足りない。 


[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: 1月27日
[5] その他の制限:

この中からいくつでもいいのでどうかよろしくお願いします

892 :デフォルトの名無しさん:2007/01/23(火) 15:14:45
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(1).ファイルの中身を16進数で表記したテキストファイルを作成する。
  入力はコマンドラインから引数で渡し1行目に格納する。出力ファイル名は拡張子をTXTに変えたものとする。
  ファイル名入力時に拡張子が"txt"の時は"txtファイルです"とメッセージを表示し終了する事。

hello.c
----------------------
#include <stdio.h>
main()
{printf("Hello World\n");}
------------------------
これを下記のようにする
hello.txt
-----------------------------------------
hello.c
23696E636C756465203C737464696F2E683E0D0A6D61696E28290D0A7B7072696E7466282248656C6C6F20576F726C645C6E22293B7D0D0A
-----------------------------------------

(2).上記(1)で作成したテキストファイルを元に戻すプロブラムを作成する。
  hello.txt ⇒ hello.c

[3] 環境
 [3.1] OS: WindowsXP Pro SP2
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1 for Win32
 [3.3] 言語: C
[4] 期限: 2007年01月24日
[5] その他の制限: 標準ライブラリ関数

宜しくお願い致します


893 :デフォルトの名無しさん:2007/01/23(火) 15:17:14
>>835
>>888
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3498.txt
入力時のエラーチェックを(面倒になって)していないのでよろしく

894 :デフォルトの名無しさん:2007/01/23(火) 15:22:09
>>891
鹿児島大学?

895 :デフォルトの名無しさん:2007/01/23(火) 15:25:07
>>892
>拡張子をTXT
とあるのに他ではtxtと書いてあるのだが、どっち?
#どっちでも同じように扱えるが、それとこれとは別問題。

896 :デフォルトの名無しさん:2007/01/23(火) 15:28:03
>>892
改行コードはODOAにするの?

897 :デフォルトの名無しさん:2007/01/23(火) 15:28:28
>>894
ローマ記法でググった?

898 :デフォルトの名無しさん:2007/01/23(火) 15:30:57
>>894
そこはあえて触れんどいてね。まじ留年かかってるんで教えてください。

899 :デフォルトの名無しさん:2007/01/23(火) 15:34:31
>>895
すいません 書込みの時に大文字にしてしまいました
例が正しく小文字です

900 :デフォルトの名無しさん:2007/01/23(火) 15:38:13
ズルがばれて>>898が留年したらかわいそうだし漏れは解くのをやめておこうかな・・・

901 :デフォルトの名無しさん:2007/01/23(火) 15:40:07
>>896
入力ファイル次第では?

902 :デフォルトの名無しさん:2007/01/23(火) 15:43:43
>>900
そこをなんとかm(__)m
ばれるばれないの前にこのままだと留年確実ですorz

903 :デフォルトの名無しさん:2007/01/23(火) 15:47:51
>891
1)
#include <stdio.h>
void to_roman(int n){
char roman[7] = {'M','D','C','L','X','V','I'};
int num[7] = {1000, 500, 100, 50, 10, 5, 1};
int i, j;
for(i=0; n; i++) {
if(i%2) {
if(n/num[i+1]==9) {
printf("%c%c", roman[i+1],roman[i-1]);
n -= 9 * num[i+1];}
else if(n/num[i+1]==4) {
printf("%c%c", roman[i+1],roman[i]);
n -= 4 * num[i+1];}}
for(j=0; j<n/num[i]; j++) putchar(roman[i]);
n %= num[i];}
putchar('\n');}

int main(void)
{
int i;
for(i=1; i<5000; i*=2) {
printf("%4d:", i);
to_roman(i);
}
return 0;
}


904 :デフォルトの名無しさん:2007/01/23(火) 15:52:41
>>903
ありがとうございます
気がむいたら他のもやっちゃってください

905 :デフォルトの名無しさん:2007/01/23(火) 16:18:45
>>891
2)
#include <stdio.h>
#include <string.h>
#include <math.h>
int buf[1001];
int main(void)
{
int ptr;
memset(buf, 0x0, sizeof(int) * 1001);
buf[0] = 1;
buf[1] = 1;
for (int i = 0; i < sqrt(1000); i++){
if (1 != buf[i]){
for (ptr = i + i; ptr <= 1000; ptr += i){
buf[ptr] = 1;
}
}
}
}

906 :デフォルトの名無しさん:2007/01/23(火) 16:24:05
>>905
お疲れ様です^ ^

907 :デフォルトの名無しさん:2007/01/23(火) 16:26:01
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
コマンドライン引数から、1つのファイル名を受け、
そのファイルの内容をすべて表示する。
(ただし、テキストファイルしか、引数にしないものとする。)
[3] 環境
[3.1] OS:windows XP

よろしくお願いします。
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C++
[4] 期限:1月23日
[5] その他の制限:

908 :デフォルトの名無しさん:2007/01/23(火) 16:27:19
>>891
7)
#include<stdio.h>
#define NITEM(array) (sizeof(array)/sizeof(array[0]))
#define DATA_UNIT_MAX 10000
void print_factrial(int n)
{
long data[30]={1}, carry;
int i, j;
for(i=1;i<=n;i++){
carry=0;
for(j=0;j<NITEM(data);j++){
data[j]=data[j]*i+carry;
carry=data[j]/DATA_UNIT_MAX;
data[j]%=DATA_UNIT_MAX;
}
}
for(i=NITEM(data)-1;data[i]<=0 && i>0;i--)
;
printf("%ld", data[i]);
for(i--;i>=0;i--) printf("%04ld", data[i]);
printf("\n");
}
int main(void){
print_factrial(30);
return 0;
}

909 :デフォルトの名無しさん:2007/01/23(火) 16:30:32
>>891
3)
#include <stdio.h>
#include <stdlib.h>
#define TIMES 100000
int main(void)
{
int i;
double cnt;
double x;
double y;
srand((int)time(NULL));
cnt = 0;
for (i = 0; i < TIMES; i++){
x = (double)(rand() % 1000) / 1000;
y = (double)(rand() % 1000) / 1000;
if ((x - 0.5) * (x - 0.5) + (y - 0.5) * (y - 0.5) <= 0.25){
cnt++;
}
}
printf("%f\n", cnt / TIMES);
return 0;
}

910 :デフォルトの名無しさん:2007/01/23(火) 16:32:15
>>892
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3499.txt
拡張子を変更するあたりの処理がマズイような気もするけど、キニシナイ

911 :デフォルトの名無しさん:2007/01/23(火) 16:44:10
>>891
4)
#include <stdio.h>
#include <string.h>
char* conv[] =
{
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111",
};
int main(void)
{
int num = 10;
char buf[256];
int i;
num = ~num;
sprintf(buf, "%x", num);
for (i = 0; i < strlen(buf); i++){
sscanf(&buf[i], "%1x", &num);
printf("%s", conv[num]);
}
return 0;
}

912 :デフォルトの名無しさん:2007/01/23(火) 16:44:47
ごめん。4)じゃなくて5)だった

913 :デフォルトの名無しさん:2007/01/23(火) 16:47:02
>>737
しつこいからだれかやってヤレ

914 :デフォルトの名無しさん:2007/01/23(火) 16:51:12
[1] 授業単元: PROGRAMING
[2] 問題文(含コード&リンク):
public:
float x,y ;
myComplex setComplex(){
myComplex temp;
temp.real = x ; temp.image = y ;
return temp;
}
DeComplex(){x = 0.0 ; y = 0.0 ; }
~DeComplex(){x = 0.0 ; y = 0.0 ; }
};
をポインタを使って値を返す。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc
 [3.3] 言語: (C++
[4] 期限: ([今日中まで]
[5] その他の制限:なし

915 :デフォルトの名無しさん:2007/01/23(火) 16:52:33
// >>891 (7) 行数の関係で反転処理は割愛(ぉぃ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COLUMN 310
void fact(int num, char * buf)
{
if (num > 1) {
int ic;
int len = strlen(buf);
char tmp[MAX_COLUMN + 1];
int carry = 0;
if (len == MAX_COLUMN) exit(EXIT_FAILURE);
strcpy(tmp, buf);
for (ic = 0; ic < len || carry; ++ic) {
if (ic < len) carry += (tmp[ic] - '0') * num;
buf[ic] = carry % 10 + '0';
carry /= 10;
}
buf[ic] = '\0';
fact(num - 1, buf);
}
}
void factrial(int num, char * buf) {buf[0] = '1'; buf[1] = '\0'; fact(num, buf);}
int main(int argc, char ** argv)
{
char buf[MAX_COLUMN + 1];
factrial(atoi(argv[1]), buf);
printf("%s\n", buf);
return 0;
}


916 :デフォルトの名無しさん:2007/01/23(火) 16:53:56
>>913
おまえがやってやれよ

917 :デフォルトの名無しさん:2007/01/23(火) 16:53:57
>982 (1)
#include    <stdio.h>
#include    <string.h>
void main(int argc, char *argv[])
{
char    *p,filename[256];
int    ch;
FILE    *rfp,*wfp;
    if (argc==2 && NULL!=(rfp=fopen( argv[1],"rb"))) {
        if( NULL==strstr(argv[1], ".txt") ){
            strcpy(filename,argv[1]);
            if ( NULL!=(p=strchr(filename,'.')) ) {
                *p='\0';
                strcat(filename,".txt");
            }
            if (NULL!=(wfp=fopen( filename,"wb"))) {
                fprintf(wfp,"%s\n",argv[1]);
                while ( EOF!=(ch=fgetc(rfp)) )
                    fprintf(wfp,"%02X", ch );
                fclose(wfp);
            }
        }
        else
            printf("txtです\n");
        fclose(rfp);
    }
}


918 :デフォルトの名無しさん:2007/01/23(火) 16:54:27
>982 (2)
#include    <stdio.h>
#include    <string.h>
int main(int argc, char *argv[])
{
char    *p,filename[256];
int    ch;
FILE    *rfp,*wfp;
    if ( argc==2 && NULL!=(rfp=fopen( argv[1],"rb"))) {
        if ( NULL!=strstr(argv[1], ".txt") ){
            if (NULL!=fgets(filename,sizeof(filename),rfp)) {
                for (p=filename;*p!=NULL;p++)
                    if(*p=='\n')*p=0;
                if ( NULL!=(wfp=fopen( filename,"wb"))) {
                    while( EOF!=fscanf(rfp,"%2x",&ch) )
                        fputc( ch,wfp );
                    fclose(wfp);
                }
            }
        }
        else
            printf("txtではありません\n");
        fclose(rfp);
    }
}


919 :デフォルトの名無しさん:2007/01/23(火) 16:56:45
レス番間違った
×982
○>892

920 :デフォルトの名無しさん:2007/01/23(火) 17:02:31
>>908>>909>>911
激しく乙です
感謝します

921 :デフォルトの名無しさん:2007/01/23(火) 17:03:45
>>891
6)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int word_cmp(const void *a, const void *b){
char **pa, **pb;
pa=a;pb=b;
return strcmp(*pa, *pb);
}
int main(int argc, char *argv[]){
FILE *fp;
char word_buf[1024], **word_list=NULL;
long i, ret, word_list_size=0, word_list_member=0;
fp=fopen(argv[1], "r");
if(fp==NULL) return 1;
while(!feof(fp)){
fscanf(fp, "%*[^A-Za-z]");
ret=fscanf(fp, "%1023[A-Za-z]", word_buf);
if(ret!=1) continue;
if(word_list_member>=word_list_size){
word_list_size+=1024;
word_list=realloc(word_list, sizeof(char *)*word_list_size);
}
word_list[word_list_member++]=strdup(word_buf);
}
fclose(fp);
qsort(word_list, word_list_member, sizeof(char*), word_cmp);
for(i=0;i<word_list_member;i++) printf("%s\n", word_list[i]);
return 0;
}

922 :デフォルトの名無しさん:2007/01/23(火) 17:09:43
>>910 >917-919
ありがとうございます


923 :感謝されない>915の代理w:2007/01/23(火) 17:10:54
>>915 ぱくったついでに反転処理つき
#define MAX_COLUMN 310
static void fact(int num, char * buf, char * tmp)
{
if (num > 1) {
int ic; int len = strlen(buf); int carry = 0;
if (len == MAX_COLUMN) exit(EXIT_FAILURE);
strcpy(tmp, buf);
for (ic = 0; ic < len || carry; ++ic) {
if (ic < len) carry += (tmp[ic] - '0') * num;
buf[ic] = carry % 10 + '0';
carry /= 10;
}
buf[ic] = '\0';
fact(num - 1, buf, tmp);
}
}
static void reverse(char * buf)
{
int ic; int len = strlen(buf);
for (ic = 0; ic < len / 2; ++ic) {char tmp = buf[ic]; buf[ic] = buf[len - 1 - ic]; buf[len - 1 - ic] = tmp;}
}
const char * factrial(int num)
{
static char buf[MAX_COLUMN + 1];
char tmp[MAX_COLUMN + 1];
buf[0] = '1'; buf[1] = '\0';
fact(num, buf, tmp);
reverse(buf);
return buf;
}
int main(int argc, char ** argv) { printf("%s\n", factrial(atoi(argv[1]))); return 0;}

924 :デフォルトの名無しさん:2007/01/23(火) 17:19:17
>>907
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fin;
int c;
if(argc != 2 || (fin = fopen(argv[1], "r")) == NULL) return 1;
while((c = getc(fin)) != EOF) putchar(c);
return 0;
}

925 :デフォルトの名無しさん:2007/01/23(火) 17:21:52
>>891
4)
#include <stdio.h>
#include <ctype.h>

int main()
{
    int c, pc, nc, nw, nl;
    for (pc = nc = nw = nl = 0; (c = getchar()) != EOF; pc = c) {
        ++nc;
        if (c == '\n')
            ++nl;
        else if (isalpha(c) && !isalpha(pc))
            ++nw;
    }
    if (pc != '\n')
        ++nl;
    printf("%d chars, %d words, %d lines\n", nc, nw, nl);
    return 0;
}

926 :デフォルトの名無しさん:2007/01/23(火) 17:21:58
>>915>>921>>923
ありがとうございます

927 :デフォルトの名無しさん:2007/01/23(火) 17:28:36
>>924
C++とあるぞ
>>907
#include <iostream>
#include <fstream>

int main(int argc, char **argv)
{
    if (argc == 1) {
        std::cerr << "filename is needed" << std::endl;
        return 1;
    }
    std::ifstream fin(argv[1]);
    if (!fin.is_open()) {
        std::cerr << "can't open " << argv[1] << std::endl;
        return 2;
    }
    std::cout << fin.rdbuf();
    return 0;
}

928 :デフォルトの名無しさん:2007/01/23(火) 17:54:15
>>853
そーだよな
でもそーいうプログラム作れという学校はどうなんだろう・・・
学校の宿題じゃないのかもしれない

929 :デフォルトの名無しさん:2007/01/23(火) 17:57:58
>>927
if (!fin.is_open()

としなくても

if (!fin)

だけでいいお。

930 :デフォルトの名無しさん:2007/01/23(火) 18:04:29
ごく一部の人による催促のレスの繰り返しにうんざりなんだけど。
次スレから催促禁止をテンプレに入れてもらいたい。

931 :デフォルトの名無しさん:2007/01/23(火) 18:05:58
スレの性格的にどうしようもない人らが集まるのは止むを得ないんだから、華麗にスルー汁

932 :デフォルトの名無しさん:2007/01/23(火) 18:06:28
>>930
たまに見逃してることもあるから、一律禁止は厳しすぎるかも
1日1回までとか。

933 :デフォルトの名無しさん:2007/01/23(火) 18:07:52
>>932
> 1日1回
それ十分ウザい

934 :デフォルトの名無しさん:2007/01/23(火) 18:08:34
催促されるほど答えたくなくなるのもまた人情

935 :デフォルトの名無しさん:2007/01/23(火) 18:09:37
催促と後で条件追加は二大地雷だな

936 :デフォルトの名無しさん:2007/01/23(火) 18:10:47
催促の代わりに、「全員分の」未完了の宿題のまとめ投稿ならOKにするというのは?

937 :デフォルトの名無しさん:2007/01/23(火) 18:13:18
>>936
それならアンカーだけでいいな。

938 :デフォルトの名無しさん:2007/01/23(火) 18:21:32
>>936
なかなかの名案だ。
未回答まとめるのは結構めんどい

939 :デフォルトの名無しさん:2007/01/23(火) 18:39:17
>>936
それいいな

940 :デフォルトの名無しさん:2007/01/23(火) 19:35:29
>>894
教官のサイトやメルアドでも教えてくれ

941 : ◆0VW04NxLf2 :2007/01/23(火) 19:48:43
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3501.txt

[3] 環境
 [3.1] OS: Mac OS X(gcc)
 [3.2] コンパイラ名とバージョン: gcc 4.0.1
 [3.3] 言語: C
[4] 期限: 2007年1月24日12:00まで
[5] その他の制限: ポインタを使う、構造体不可、文字取得はscanf()

よろしくお願いします。

942 :デフォルトの名無しさん:2007/01/23(火) 20:24:32
環境がMacだと東大生が質問しに来たかと思ってしまう

943 :デフォルトの名無しさん:2007/01/23(火) 20:26:37
東大じゃないけど糞Mac使ってる

944 :デフォルトの名無しさん:2007/01/23(火) 22:01:15
>>941
int push(int data, int *sp, int *STK){
if(*sp <= 0) return 0;
STK[--(*sp)] = data;
return 1;
}
int pop(int *dataP, int *sp, int *STK){
if(*sp >= N) return 0;
*dataP = STK[(*sp)++];
return 1;
}
void dsp_stack(int top, int *a){
while(top++ < N)
printf("%d: %d\n",top-1, a[top-1]);
}
「ここまでできています」を信じてたのに・・・ orz 一カ所間違ってるよ

945 :821:2007/01/23(火) 22:11:59
>>821
やはり無理ですか・・・

946 :デフォルトの名無しさん:2007/01/23(火) 22:13:11
>>944
&つけろ と言ってやれw

947 :デフォルトの名無しさん:2007/01/23(火) 22:18:54
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク): 一単語一行の入力テキストを、指定された桁数(70)以内で、
               できるだけ少ない行数に納まるように調整して出力する。
               ただし、単語の途中で改行してはいけない。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC++ 2005
 [3.3] 言語: C++
[4] 期限:1月25日
[5] その他の制限:特に指定されていません

よろしくお願いします

948 :デフォルトの名無しさん:2007/01/23(火) 22:23:21
>>945
>>936

949 :デフォルトの名無しさん:2007/01/23(火) 22:28:22
>>947
速攻でマルチか?
何考えてんだお前

950 :デフォルトの名無しさん:2007/01/23(火) 22:40:18
>>947
#include <iostream>
#include <string>
using namespace std;
const int maxcol = 70;
int main()
{
    string s;
    int ncol = 0;
    while (cin >> s) {
        if (s.size() > maxcol) {
            cout << flush;
            cerr << "Too long word: " << s << endl;
        } else if (ncol == 0) {
            cout << s;
            ncol += s.size();
        } else if (ncol + s.size() + 1 < maxcol) {
            cout << ' ' << s;
            ncol += s.size() + 1;
        } else {
            cout << '\n' << s;
            ncol = s.size();
        }
    }
    cout << endl;
    return 0;
}

951 :デフォルトの名無しさん:2007/01/23(火) 23:12:30
>>950
>>947の者です。答えてもらってありがとうございました。
すいません、950では、const, cerrをまだ習っていない(それ以外は使っても大丈夫なんですが)ので、それで提出するとマズイので、もうちょっと初心者っぽくお願いできないでしょうか?


952 :デフォルトの名無しさん:2007/01/23(火) 23:14:42
この場合、constは単純に取り除いて構わないはず。
cerrはcoutに置き換えてしまえばいい。

953 :デフォルトの名無しさん:2007/01/23(火) 23:25:44
>>952
ありがとうございます。
ちょっとお聞きしたい事があるんですが、教官が用意したテキストファイルをプログラム中で開いたものを読み込んで処理しないといけないことになってるんですが、どの辺でファイルを開いたらいいでしょうか?

954 :デフォルトの名無しさん:2007/01/23(火) 23:32:36
改行もできないクズは死ね

955 :デフォルトの名無しさん:2007/01/23(火) 23:35:33
[1] 授業単元:数値計算プログラミング
[2] 問題文(含コード&リンク):
    コンソール上で入力した数だけ、ファイルを読み込み、
  ファイル内に記された全ての数値の平均値を算出するプログラムを作成せよ。
  なお、読み込むファイル名もコンソール上から指定した任意の名前のもの
 (最低三種類)を読み込めるようにし、計算を行うこと。
    また、一つのファイルには3個の任意の数値を記すこと。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C言語
[4] 期限: 2007年01月26日まで
[5] その他の制限:無いです

例えば、printf,scanfを用いてコンソール上で「5」を入力した場合、
aa1.txt〜aa5.txt、bb1.txt〜bb5.txt及びcc1.txt〜cc5.txtを読み込み、
そのファイル(aa1.txt〜cc5.txt)に記された全ての数値を読み込んで平均値を計算する、というものです。
この時読み込むファイルの名称、aa□、bb□、cc□もコンソール上で入力した任意のものを
読み込む、といった形にしていただきたいです。拡張子は全て.txtです。
一つのファイル内には
10 20 30 といった3つの数値が並んでいます。

問題文も補足も分かりづらくてすみません。
この場合ファイルの入出力をどのように記述すればいいのか分からず困っています。
宜しくお願いします。

956 :デフォルトの名無しさん:2007/01/23(火) 23:38:04
>>953
>783

957 :デフォルトの名無しさん:2007/01/23(火) 23:38:07
何が言いたいのか和漢ね

958 :デフォルトの名無しさん:2007/01/23(火) 23:42:32
[1]授業単元:データ構造とアルゴリズム
[2]問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3504.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限:2007年1月24日午後11時まで
その他の制限:特になし

959 :デフォルトの名無しさん:2007/01/23(火) 23:45:50
>>958
>>954

960 :デフォルトの名無しさん:2007/01/23(火) 23:47:16
読む気が失せた

961 :デフォルトの名無しさん:2007/01/24(水) 00:05:56
>>958
# include <stdio.h>
# define SIZE 100

int part(int *out, const int *source, int begin, int end, int size) {
  int o = 0;
  int i = begin;
  while(i != end) {
    out[o++] = source[i];
    if(++i == size) i = 0;
  }
  out[o++] = source[i];
  return o;
}

int show(const int *a, int n) {
  while(n-- > 0) printf("%d ", *a++);
  printf("\n");
}

int main(void) {
  const int k1 = 6;
  const int p1[] = {5, 7, 3, 8, 9, 1};
  const int k2 = 9;
  const int p2[] = {11, 17, 15, 13, 16, 12, 18, 20, 14};
  const int u1 = 2, u2 = 7, d1 = 5, d2 = 3;
  int p[SIZE];
  int k = part(p, p1, u1, d1, k1);
  k += part(p + k, p2, d2, u2, k2);
  show(p, k);
  return 0;
}

962 :デフォルトの名無しさん:2007/01/24(水) 00:14:53
//test.c
#include <stdio.h>
int main()
{
const int set = 3;
const int alparamset = 6;
float x[set],y[set],x2[alparamset],y2[alparamset];
x[1] = 3.0; x[2] = 4.0;x[3] = 5.0;
y[1] = 2.0;y[2] = 7.0;y[3] = -3.0;
int counter,counter2,num,num2;
counter = 0;counter2 = 0;
num = 0;num2 = 0;
while(counter2 == alparamset){
if (num == set){
num = num2 + 1;
++num2; }
x2[counter2] = x[num2] + x[num];
y2[counter2] = y[num2] + y[num];
printf("%f %f\n",x2[counter2],y2[counter2]);
++num;
++counter2; }
return 0;}
よかったらお願いします。

963 :デフォルトの名無しさん:2007/01/24(水) 00:17:11
なにが?

964 :デフォルトの名無しさん:2007/01/24(水) 00:17:15
>>955
意味がわかんねけど こんなかんじ?
#include <stdio.h>
int main()
{
int ch,k,n,a,b,c,cnt=0;
char name[16],buf[256];
double total=0.0;
FILE *fp;
    printf("input number:");
    scanf("%d",&k);
    for(ch='a';ch<='c';ch++){
        for(n=1;n<=k;n++){
            sprintf( name,"%c%c%d.txt",ch,ch,n);
            if(NULL!=(fp=fopen(name,"r"))){
                while( NULL!=fgets(buf,sizeof(buf),fp)){
                    if( 3==sscanf( buf,"%d %d %d",&a,&b,&c) ){
                        total += ( a+b+c );
                        cnt +=3;
                    }
                }
                fclose( fp);
            }
        }
    }
    if( cnt !=0 )
        printf("ave:%.2f\n",total/cnt);
    return 0;
}


965 :デフォルトの名無しさん:2007/01/24(水) 00:22:20
>>962
バグがあるようなんでがすが正常にコンパイルされよるし
だけど結果が出力されてこんのですばい

966 :デフォルトの名無しさん:2007/01/24(水) 00:24:21
>>962
>>965
#include <stdio.h>
int main(){
const int set = 3;
const int alparamset = 6;
float x[set],y[set],x2[alparamset],y2[alparamset];
x[0] = 3.0; x[1] = 4.0; x[2] = 5.0;
y[0] = 2.0; y[1] = 7.0; y[2] = -3.0;
int counter,counter2,num,num2;
counter = 0;num = 0;num2 = 0;
while(counter < alparamset){
if(num < set){
num = num2 + 1;
++num2;}
x2[counter] = x[num2] + x[num];
y2[counter] = y[num2] + y[num];
printf("%f %f\n",x2[counter],y2[counter]);
++num;++counter;}
return 0;}
こんな感じか?
もし本当に教えて貰いたいという気があるなら>>1を読んでテンプレ埋めれ


967 :デフォルトの名無しさん:2007/01/24(水) 00:33:14
>>966
何をしたいプログラムかよくわからんが、
if (num == set){ はそのままでよかったっぽいな

968 :デフォルトの名無しさん:2007/01/24(水) 00:36:55
[1] 授業単元: なし
[2] 問題文(含コード&リンク):なし
[3] 環境
 [3.1] OS: Mac OS X 10.3
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: [2007年1月24日午前10:00]
[5] その他の制限: なし

969 :955:2007/01/24(水) 00:38:43
>>964
ありがとうございます。
大変参考になります。
分かりづらくてすみませんでした。

970 :デフォルトの名無しさん:2007/01/24(水) 00:41:19
これはベクトルを合成したときの値をすべて出すためのプログラムで
gnuplot で表示しようと思ってる。

971 :デフォルトの名無しさん:2007/01/24(水) 00:44:12
>>965
> while(counter2 == alparamset){
counter2 の初期値 0
alparamsetの初期値 6
while文一回も実行しないで終わる

972 :デフォルトの名無しさん:2007/01/24(水) 01:04:50
そうか、ではwhile( counter != alparamset)ってかき直せばよかったんですね。
ありがとうございました。

973 :デフォルトの名無しさん:2007/01/24(水) 01:07:56
>>972
いや
while( counter < alparamset)

こっち

974 :デフォルトの名無しさん:2007/01/24(水) 01:10:57
あれ、>>966>>967は無かったことにされてるのか orz

975 :デフォルトの名無しさん:2007/01/24(水) 01:14:44
>>974
そんなことは無い
キミのコードと自分のコードを比較してるが
違いを見つけられなかったんだ、きっと

976 :デフォルトの名無しさん:2007/01/24(水) 01:18:23
counter ! = alparamset とcounter < alparamset は同じことを示している訳では
ないのですか?

977 :デフォルトの名無しさん:2007/01/24(水) 01:25:19
>>976
!=はcounterとalparamsetが等しくない場合を、
<はcounterがalparamsetより小さい場合を指している

978 :デフォルトの名無しさん:2007/01/24(水) 01:25:29
お前は一体何を言っているんだ

979 :デフォルトの名無しさん:2007/01/24(水) 01:34:46
わろた

980 :デフォルトの名無しさん:2007/01/24(水) 01:39:24
counter =0;で++counter;してalparamaet = 6;だからcounter != alparamset
のときwhileはcounterは6の時にroopをやめるということはcounter < alparamset
とおなじではないのですか?

981 :デフォルトの名無しさん:2007/01/24(水) 01:45:13
この場合はたまたま同じになってるだけ。

982 :デフォルトの名無しさん:2007/01/24(水) 01:47:18
ではおなじなんですね。

983 :デフォルトの名無しさん:2007/01/24(水) 01:51:42
まぁ二度とこのスレに来ないことと、将来製品開発に携わらないことを約束してくれれば
同じってことでいいけど

984 :デフォルトの名無しさん:2007/01/24(水) 02:00:14
約束はしません

985 :デフォルトの名無しさん:2007/01/24(水) 02:01:05
でも、解釈としては同じだとおもいます。

986 :デフォルトの名無しさん:2007/01/24(水) 02:03:10
また基地外が沸いてるのか。

  ┌─────────┐
  │ 基地外警報!!!  |
  │   基地外警報!! |
  └―――──――――┘
       ヽ(´ー`)ノ
          (  へ)
           く

987 :デフォルトの名無しさん:2007/01/24(水) 02:22:45
>>984
わかった、二度と来ないことを約束するだけでいいよ

988 :デフォルトの名無しさん:2007/01/24(水) 02:26:45
次スレ
http://pc10.2ch.net/test/read.cgi/tech/1165718021/

989 :デフォルトの名無しさん:2007/01/24(水) 02:34:33
旧ぼるじょあスレが次スレって本気かい?

990 :デフォルトの名無しさん:2007/01/24(水) 03:03:29
じゃ、俺が立ててくるか。

991 :デフォルトの名無しさん:2007/01/24(水) 03:05:28
立てたぜ。

C/C++の宿題を片付けます 82代目
http://pc10.2ch.net/test/read.cgi/tech/1169575464/

992 :デフォルトの名無しさん:2007/01/24(水) 03:09:58
>>991


993 :958:2007/01/24(水) 05:10:08
>>961
ありがとうございます。
これでテスト乗り切れそうです。

994 :デフォルトの名無しさん:2007/01/24(水) 05:42:56
[1] 授業単元:スレ埋め立て
[2] 問題文(含コード&リンク):
<C/C++ソースコード整形ツール>
1.インデントができること
 中括弧のない if for なども、インデントをつけて文を次の行に出力すること(; だけでも)
 switch 文の case の深さは switch と同じか一段下げること
 インデントは タブ文字 or 2文字スペース or 4文字スペースのいずれかで統一すること
2.コメント部分は残し、なるべく変更しないこと
3.一行コメント // にも対応すること
4.関数と関数の間には空行を2ついれること
5.入力ファイルは標準入力(リダイレクト)から与えられるものとし、標準出力に出力すること
6.後は自分が見やすいと判断する基準でよろしく。(中括弧を行末にいれるか、次行に中括弧だけの行を作るか等)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc,g++
 [3.3] 言語: どちらでも可
[4] 期限: スレが埋まるまで
[5] その他の制限: ソースコードが1レスに収まること。(出来れば一行の文字数が100文字以内)

995 :デフォルトの名無しさん:2007/01/24(水) 06:23:16
>>991
おつ

996 :デフォルトの名無しさん:2007/01/24(水) 06:23:49
おっ新スレの季節か

997 :デフォルトの名無しさん:2007/01/24(水) 06:25:06
うめ

998 :デフォルトの名無しさん:2007/01/24(水) 06:26:39
うめ

999 :デフォルトの名無しさん:2007/01/24(水) 06:28:14
うめー

1000 :デフォルトの名無しさん:2007/01/24(水) 06:28:13
>>994
誰かやるの?
うちの庭の梅が咲いてる
埋め

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

368 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)