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

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

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

1 :デフォルトの名無しさん:2009/04/20(月) 20:23:19
あなたが解けない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++の宿題片付けます 124
http://pc12.2ch.net/test/read.cgi/tech/1235927586/


2 :デフォルトの名無しさん:2009/04/20(月) 21:09:04
>>1

前スレhttp://pc12.2ch.net/test/read.cgi/tech/1235927586/948
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9047.txt

3 :デフォルトの名無しさん:2009/04/20(月) 23:58:25
3ゲット
[1] 授業単元:ソフトウェア工学
[2] 問題文(含コード&リンク):• 別途配布するプログラムを,リンクせずにコンパ
イルのみする.(オブジェクトファイルを生成する)
- 手順を報告する
• コンパイラオプションにより,アセンブラコードを
生成させる.
- オブジェクトファイル毎に生成されたアセンブ
ラコードを報告する(処理を行っている部分の
み抜粋する).
[3] 環境
 [3.1] OS: XP
 [3.2] Visual Studio 2008
 [3.3] C
[4] 期限:4/22の朝八時

家に環境無いからお願いします。

4 :デフォルトの名無しさん:2009/04/21(火) 00:16:35
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9049.txt
[3] 環境
 [3.1] OS:ソラリス
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:4/24の9時

お願いします

5 :デフォルトの名無しさん:2009/04/21(火) 00:28:01
>>4
#include <stdio.h>

int main()
{
    int list[] = { 10000, 2000, 1000, 500, 100, 50, 10, 5, 1 }, money, i;

    printf("How much? > ");
    scanf("%d", &money);

    printf("========\n");
    for(i = 0; i < sizeof(list) / sizeof(int); i++){
        printf("%d->%d\n", list[i], money / list[i]);
        money %= list[i];
    }
    return 0;
}

6 :デフォルトの名無しさん:2009/04/21(火) 00:50:10
文字の規格でEUCってあるじゃん?
あれのコードマップ(補助漢字を除いた部分)をC言語のプログラムで生成する課題をやってるんだけど、
家のパソ(ウインドウズ)でVISUALC++上で作ったら、A1〜Fe(151〜225)の数字を文字列として出力しても全然違う文字が出てしまう。
それとはずらした範囲で同じことをやったら、今度は飛び飛びで出力されてしまう。
プログラムはFOR文で一ビットと二ビットの数字を特定の範囲で虱潰しにするだけのもので、
あってるはずなんだけど、何で出来ないのかわからない。
もしかしたらLINUX上でやらなきゃ駄目なのか?(本来はLINUXのコマンドプロンプトでやるように言われた課題なので)、
って思ったんだけど、やっぱそうなのかな?
ASKIIVerの課題もあるんだけど、そっちは普通に上手く行ってた。

7 :デフォルトの名無しさん:2009/04/21(火) 00:51:01
あ、何かテンプレとかあるんだ・・・。
プログラム自体は合ってると思うから、やっぱ他所で聞きます。すいません。

8 :デフォルトの名無しさん:2009/04/21(火) 00:54:09
見た目は大人、頭脳は子供、その名も名探偵↓

9 :デフォルトの名無しさん:2009/04/21(火) 01:09:06
[1] 授業単元: プログラミング 〜構造体〜
[2] 問題文(含コード&リンク): 3名の名前と性別、10桁の会員番号を入力し表示せよ
*会員番号は数字のみで入力し、2,6桁目の後に「-」を出力で表示せよ
入力(1234567890)→出力(12-3456-7890)
*入力された会員番号が10桁に満たない場合、
または大きい場合は再度入力する指示を入れること
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C言語
[4] 期限: 04/22 09:00
[5] その他の制限: 構造体名{ person_t }メンバ{ name,sei,mem }を使用しています
宜しくお願いします

10 :デフォルトの名無しさん:2009/04/21(火) 01:52:52
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9050.txt
[3] 環境
 [3.1] OS:指定なし
 [3.2] コンパイラ名とバージョン:GCC
 [3.3] 言語:C/C++どちらでも
[4] 期限: 2009年4月24日23:59まで
[5] その他の制限: 制約は特にないが(変数名などに関して)読みやすいプログラムを心がけること

うるう年や年越しがこんがらがってしまいました
宜しくお願いします

11 :デフォルトの名無しさん:2009/04/21(火) 01:53:33
3です。問題文張るの忘れてました。

#include <stdio.h>
int add(int a, int b) {
return a+b;
}v
oid main()
{
int a, b;
int s;
a = 10;
b = 20;
s = add(a, b);
printf("%d+%d=%d\n", a, b, s);
}

12 :デフォルトの名無しさん:2009/04/21(火) 02:02:00
>>10
丸投げする前にExcelで考えてみたら気が変わったかもな

13 :デフォルトの名無しさん:2009/04/21(火) 02:04:22
>>10
UTF-8だと?

14 :デフォルトの名無しさん:2009/04/21(火) 02:18:58
>>3
ttp://d.hatena.ne.jp/jitsu102/20070924/1190561951

プロジェクトの設定
「プロジェクト」->「プロパティ」を選択。
「構成プロパティ」「C/C++」「出力ファイル」を選択。(画面左ツリー)
「アセンブリの出力:アセンブリコード、コンピュータ語コード、ソースコード(/FAcs)」に設定し、「OK」をクリック。(画面右)

ビルド後にプロジェクトフォルダの「Debug」フォルダに「%プロジェクト名%.cod」という名前でアセンブリコードが生成される。

15 :デフォルトの名無しさん:2009/04/21(火) 03:29:39
>>10
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9052.c
こんなもんか。

もしかして、勝てるパターン(相手がミスる)があればいい?
Bが翌日を渡せば勝てるのに、翌月を渡して負ける(=Aが勝つ)とか有り?

16 :デフォルトの名無しさん:2009/04/21(火) 03:30:38
こういうのはお互い最善手をさすのを前提にするんじゃないの?

17 :デフォルトの名無しさん:2009/04/21(火) 03:38:11
だよね。なら15のままで多分いいはず(ミスがなければ)。

18 :デフォルトの名無しさん:2009/04/21(火) 11:22:55
>>9
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9054.txt

19 :デフォルトの名無しさん:2009/04/21(火) 16:11:41
[1] 授業単元: C演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9060.cpp
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 4月23日
[5] その他の制限:参考というか、この程度のレベルでということで授業で習ったサンプルを載せてます
            あと2日しかありませんが、よろしくお願いします

20 :デフォルトの名無しさん:2009/04/21(火) 16:25:27
>>19
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9061.txt

確保したメモリは解放してないが
プロセス終了時に解放されるはず

21 :デフォルトの名無しさん:2009/04/21(火) 17:35:18
[1]授業単元:数値シュミレーション演習
[2]問題文:逐次二分法を用いて、 f(x)=exp(x)-3xの根を求めよ。
x1=0,x2=1とおいて計算を始める。許容誤差は10^-5、
      反復回数は30回とする。
      ・#include "stdafx.h"
       #include <stdio.h>
       #include <math.h>)として始めること。
[3]環境
[3.1]OS:windous XP
[3.2]コンパイラ名とバージョン:Visual Studio.NET2003
[3.3]言語:C++
[4]期限:4月27日
[5]その他:プログラミングは全くの素人で、申し訳ありませんがよろしくお願いします。





22 :デフォルトの名無しさん:2009/04/21(火) 18:44:49
>>20
> プロセス終了時に解放されるはず
ttp://blog.livedoor.jp/aamatome/archives/448403.html

23 :デフォルトの名無しさん:2009/04/21(火) 18:46:59
またお前か

24 :デフォルトの名無しさん:2009/04/21(火) 18:48:04
あるぇ〜、どこぞの講師か教授でしたか?いつもご苦労様。
ここがお前の縄張りなの?せいぜい持論を展開していな、レベルの低い集団w

25 :デフォルトの名無しさん:2009/04/21(火) 18:52:36
>>22
いいたいことがあるなら具体的にコードで書かないと長文さんに怒られちゃうぞw

26 :デフォルトの名無しさん:2009/04/21(火) 18:58:24
ttp://e-words.jp/w/E38392E383BCE38397.html
> ガーベジコレクション機能がないプログラミング言語(の処理系)では

ttp://e-words.jp/w/E382ACE383BCE38399E382B8E382B3E383ACE382AFE382B7E383A7E383B3.html
> これが不完全なOSは次第に利用可能なメモリが減ってゆくため、

ttp://tech.sinby.com/wiki_ja/index.php?lex%20%A4%C8%20strdup%20%A4%F2%BB%C8%A4%A6
> strdup を使えばどこかで開放しなければならない。

分かりましたか、皆さん?言っておきながらこれでしょ?
こんなスレ、もとからレベルが低いって分かっていましたが
随分と安っぽいプライドで虚勢を張っているおバカちんがいることも。
どうせお山の大将なんでしょ、せーんせいw
指導した生徒のレベルはどんなもんかね?是非学校名、企業名を教えて下さい。
こちらとは縁がないでしょうけど、念のために回避したいので。

27 :デフォルトの名無しさん:2009/04/21(火) 18:59:38
>>25
あれ?日本語が通じなかった?お前の中ではそうなんでしょ?
コンピュータの中では知りませんけど、処理系によっては、ね。

28 :デフォルトの名無しさん:2009/04/21(火) 19:02:03
XPでプログラム終了してもメモリ開放されないことがあるとはねw

29 :デフォルトの名無しさん:2009/04/21(火) 19:05:50
ガベージコレクションとかメモリリークの意味がわかってないに1億Z$

30 :デフォルトの名無しさん:2009/04/21(火) 19:25:13
問題自体もアレだけどな
Cなら固定長でいいじゃん
可変長を使いたいならC++のstd::stringなりstr:vectorを使えよ

31 :デフォルトの名無しさん:2009/04/21(火) 19:32:43
#include <stdio.h>
#include <stdlib.h>

int main()
{
void* pv = malloc(50000000);
scanf("%*c");
return 0;
}

VC++6.0 SP6 の Debug Release それぞれでビルドして確認したが
プロセスが終了したらちゃんと解放されたぞ(XP Home SP3)

メモリリークが問題になるのはプロセスが残ってる場合だぞ
すぐ終わるプロセスでもきちんと解放するに越したことはないが

32 :デフォルトの名無しさん:2009/04/21(火) 19:35:07
このバカはいつも思い込みで他人をバカにするけど、間違ってるのはたいてい本人。
それを突っ込まれると常人には理解できない長文を連投して大暴れ。
何度大恥かいても一向に成長しないw

33 :デフォルトの名無しさん:2009/04/21(火) 19:41:36
少ない脳みそで自分が間違ってることがかろうじて理解できると、
後釣り宣言することもあるな。

34 :デフォルトの名無しさん:2009/04/21(火) 19:51:11
[1] 授業単元:プログラミング
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9064.txt
[3] 環境
 [3.1] OS: XP
 [3.2] Visual Studio 2008
 [3.3] C++
[4] 期限:4月中

2番の部分だけでもよろしくお願いいたします。

35 :デフォルトの名無しさん:2009/04/21(火) 20:04:54
4月中はおろか4宇宙年(約400億年)後でも真の解決は難しいかもw

36 :35:2009/04/21(火) 20:06:03
誤爆しました。すみません

37 :デフォルトの名無しさん:2009/04/21(火) 20:37:03
1宇宙年て2億年じゃなかったかな

38 :デフォルトの名無しさん:2009/04/21(火) 20:53:51
課題程度の話ならやっとかないと先生に怒られるからやっとけってレベル。

39 :デフォルトの名無しさん:2009/04/21(火) 21:32:52
>>21
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9065.txt
stdafx.hの中身がわからんので、空ファイルでおkなようにした

40 :デフォルトの名無しさん:2009/04/21(火) 21:44:31
[1] 授業単元: プログラミングB
[2] 問題文(含コード&リンク):入力された文字列を2進数の文字列として
              解釈し、10進数に変換し画面出力しなさい。
              入力にはライブラリ関数putcharを使用すること。
              Enterキーのみが押された場合、エラーを表示し、再入力する。
              0,1以外の文字が入力された場合、エラーを表示し、再入力する。  
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
 [3.3] 言語:C言語
[4] 期限: 2009/04/23

よろしくお願いします。


41 :デフォルトの名無しさん:2009/04/21(火) 21:46:31
にゅっ、入力に m9(^д^ )プッチャー を?

42 :デフォルトの名無しさん:2009/04/21(火) 21:46:36
入力にputchar?

43 :あさやん ◆Pgie40NoFo :2009/04/21(火) 21:48:06
getcharではなくて?

44 :デフォルトの名無しさん:2009/04/21(火) 21:50:56
すみません。

getcharでした!


45 :ぷるるるん:2009/04/21(火) 22:10:53
宿題というわけではないのですが、
なにかヒントをいただきたく、
書き込みます。

2バイト文字を、
24*24の二次元テーブルに代入する

ex)
"大"の場合、

000000000000000000000000
000000000011000000000000
000000000011000000000000
000000000011000000000000
000011111111111111100000
000011111111111111100000
000000000011000000000000
000000000111100000000000
000000001100110000000000
000000011000011000000000
000000110000001100000000
000001100000000110000000
(これは24*12ですが・・・)

のような処理をしたいのですが、
どのようにアプローチすればよいのか、
アドバイスご教授願います。

これは、
ドットビューという
点図ディスプレイに表示させるための
ものです。

46 :デフォルトの名無しさん:2009/04/21(火) 22:16:16
>>40
#include <stdio.h>

int main(void)
{
int ch, n;

while(1) {
n = 0;
ch = getchar();
if(ch!='\n') {
while(ch=='0' || ch == '1') {
n = n * 2 + ch - '0';
ch = getchar();
}
if(ch == '\n') break;
}
printf("error\n");
while(ch!='\n') ch = getchar();
}

printf("%d", n);

return 0;
}

47 :デフォルトの名無しさん:2009/04/21(火) 22:23:21
>>39
本当に助かりました!!有難うございました。

48 :デフォルトの名無しさん:2009/04/21(火) 22:25:27
>>34
Boost.Random使っていいの? それなら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9066.txt

49 :デフォルトの名無しさん:2009/04/21(火) 22:28:08
[1] 授業単元:c
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9067.txt
[3] 環境
 [3.1] win
 [3.2] gcc
 [3.3] c
[4] 期限: 今日中にお願いします
[5] よろしくおねがいします

50 :デフォルトの名無しさん:2009/04/21(火) 22:33:28
>>34
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9068.txt

>>48 レスまでかぶるとこだったww

51 :デフォルトの名無しさん:2009/04/21(火) 22:39:46
>>49
なんか2分法さっき書いた気がする
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9069.txt

52 :デフォルトの名無しさん:2009/04/21(火) 23:00:24
質問です

C++でゲームを作っています
画像ファイルを別にもっていて、例えばゲーム.exeを機動すると画像ファイルを読み込んで表示するようにしています
このときに同一フォルダに画像がないと実行しても表示されないと思うのですが

これらを一つにまとめた実行体?を作ることってできますか

53 :デフォルトの名無しさん:2009/04/21(火) 23:08:04
>>52
できます
リソースでググればおk

54 :デフォルトの名無しさん:2009/04/21(火) 23:10:28
[1] 情報処理
[2] 整数の平方根を開平法で求めるCのプログラムを作成せよ。結果は小数点第1位まで求めればよい
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 今日明日中にお願いします 。
[5]期限短いですが全然わからないのでよろしくおねがいします。




55 :デフォルトの名無しさん:2009/04/21(火) 23:10:42
ありがとうございます
しらべてみます

56 :デフォルトの名無しさん:2009/04/21(火) 23:25:06
>>18
ありがとうございました。
今取り組んでる課題にも参考にしたいと思います。

57 :デフォルトの名無しさん:2009/04/21(火) 23:42:25
[1] 授業単元: 簡易家計簿(C++応用)
[2] 問題文(含コード&リンク):以下の処理できること
               @画面より入力した文字列(支出明細)と数字(金額)をファイルに保存すること。
               Aファイル名は「記入年月日.txt」になること
               B日付変わった場合、新しいファイルで保存できること
               Cファイル内容は以下の形式で保存できること
                [記入年月日] [支出明細] [支出金額] [合計金額]
               D月が替わった場合、同じ月のファイル内の「合計金額」を「年月_total.txt」に以下の形式で保存できること
                [年月] EXPENDITURE [合計金額]
                ※「年月_total.txt」ファイルの[合計金額]は同じ月の「記入年月日.txt」ファイル内の「合計金額」を合計した数字となります

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
 [3.3] 言語:C++
[4] 期限: 2009/04/22 朝 06:30

日付の取得や取得した日付情報をファイル名にするとか、日付変わった時の判定と処理とかは良く分からないから、軽く説明もいただければ助かります。
宜しくお願いいたします。


58 :49:2009/04/22(水) 00:57:22
>>48
>>50
ありがとうございます!
またやってみて行き詰ったらおねがいします。

59 :34:2009/04/22(水) 00:58:12
間違えました。。
ありがとうございます!

60 :デフォルトの名無しさん:2009/04/22(水) 08:44:50
>>20
遅れましたが、ありがとうございます

61 :デフォルトの名無しさん:2009/04/22(水) 09:06:06
>>52
スレチ

62 :デフォルトの名無しさん:2009/04/22(水) 15:44:38
>>48
Boost.Random使わないやり方ってあるんですか?

63 :デフォルトの名無しさん:2009/04/22(水) 16:58:55
[1] 授業単元:中級C++
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org28097.zip.html
[3] 環境
 [3.1] Linux
 [3.2] g++
 [3.3] c++
[4] 期限: 23日12:00迄にお願いします
[5] 演算子のオーバーロードの問題ですが、全く意味がわからないままインターネットを参考にしたら
プログラムできちゃいました(と思う)。けれどコピーしただけで全く理解出来ていないので、(2)〜(4)が答えられません
宜しくお願いします

備考:
(2)→フレンドがついていないからメンバですか?そうだとするとなぜ僕はメンバ関数にしたのでしょうか?
(3)→フレンドがついているからグローバルですか?そうだとするとなぜ僕はグローバル関数にしたのでしょうか?
(4)→とりあえずやってみたらコンパイルは通りました。値はrだけ足し算されています。これは「動作している」と
言えるのでしょうか?もし言えるとするとなぜ動作するのでしょうか?
というわけでよろしくおねがいします

64 :デフォルトの名無しさん:2009/04/22(水) 17:11:16
>>63
(2)グローバル関数にするとfriendにしなければならなくなるから
(3)出力演算子<<はメンバ関数にする事はできない
(4)dの虚数部が0iだから。0i以外の値を入れて検証すればよい

65 :デフォルトの名無しさん:2009/04/22(水) 17:15:27
>>63
ごめん(4)が間違えていた

(4)クラスComplexのコンストラクタが Complex (double a = 0.0, double b = 0.0);
とデフォルト引数を持っており、虚数部が省略された事により0.0が
自動的に代入されたから動作している

66 :34:2009/04/22(水) 18:12:51
>>48
>>50
何度もすいません;
最大値,最小値 と 平均値,分散値 が指定できないです。。

67 :57:2009/04/22(水) 23:09:04
すみません〜
「取得した日付情報をファイル名にする」と「日付変わった時の判定と処理」
について、アドバイスいただけないでしょうか?^^;;

宜しくお願いします


68 :デフォルトの名無しさん:2009/04/22(水) 23:11:10
class foo {
template< class T > void bar( T );
template<> void bar( int );
};

上の二つ目の bar は特殊化か、それともオーバーロードか。
ちなみに下はオーバーロード。

class foo {
void bar( int );
template< class T > void bar( T );
};

69 :デフォルトの名無しさん:2009/04/23(木) 00:06:16
>>68
特殊化

70 :63:2009/04/23(木) 00:23:27
>>64
ありがとうございます
まだよくわからないのでもう少し詳細教えて下さい
(2)「+」のオーバーロードはフレンドでもメンバのどちらでもいけるということですが、なぜフレンドにするとよろしくないのでしょうか?
(4)デフォルト引数について勉強しました。例えばComplex x(3);とした場合、r=3.0, i=0.0の複素数が出来るのは理解しますが、そもそも
なぜ整数7が自動的にComplexとみなされるのでしょうか?(「+=」のオーバーロードの引数がComplex aだというのはわかりますが。。なぜ??)

71 :デフォルトの名無しさん:2009/04/23(木) 00:28:16
>>61
友達いないだろ

72 :デフォルトの名無しさん:2009/04/23(木) 00:29:45
>>70
(2)フレンドは別にいいけど折角クラスでprivateメンバにしている
変数が見えてしまいカプセル化の原則に反するから

(4)自動的に型変換が行われるから
これが嫌ならコンストラクタにexplicitを付けておけば = で呼び出す
形式は使えなくなる

73 :デフォルトの名無しさん:2009/04/23(木) 00:34:34
>>71
あなたは友達がいるんですね!?是非私とオホモダチになてークダサーイ

74 :デフォルトの名無しさん:2009/04/23(木) 01:18:36
>>67
1行入力するごとにファイル名を生成して追加モードで書き込めば3の処理は問題ない

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

int main()
{
struct tm *p;
time_t now;
char fname[_MAX_PATH];
FILE *pf;

time(&now);
p = localtime(&now);
sprintf(fname, "%.4d%.2d%.2d.txt", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);
pf = fopen(fname, "at");
fprintf(pf, "%.2d:%.2d:%.2d\n", p->tm_hour, p->tm_min, p->tm_sec);
fclose(pf);
return 0;
}


75 :63:2009/04/23(木) 03:25:14
>>72
おぉ!なんかわかりましたありがとう


ところでデフォルト引数ってC言語でやったらコンパイルエラーになったみたいですが
C++の新機能ですよね?Javaにもないすよね?
(Javaは基本型だと0で初期化することはできるけど)

76 :デフォルトの名無しさん:2009/04/23(木) 03:41:43
テンプレートをつくるとき、
template<typename T>
template<class T>
のどちらでもオッケーですが、この二つに違いがないという文章をC++ standard(英語)から探して来いと言われました。
C++ standardでぐぐるとなんかいっぱい出てくるのですが、どれかわかる人おしえてください
(文章まで見つけてくれるとなおおk)

77 :デフォルトの名無しさん:2009/04/23(木) 03:56:20
>>76
INTERNATIONAL STANDARD ISO/IEC 14882 Programming languages -- C++

買う気ないのでfinal draftから(差異があったらすまん)
14 - Templates
14.1 - Template parameters
-2-
There is no semantic difference between class and typename in a template-parameter. typename followed
by an unqualified-id names a template type parameter. typename followed by a qualified-name denotes
the type in a non-type
とある。

78 :76:2009/04/23(木) 04:03:33
>>77
あった〜有り難うございます!

79 :デフォルトの名無しさん:2009/04/23(木) 04:22:32
[1] 授業単元:プログラミング
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9070.txt
[3] 環境
 [3.1] OS: XP
 [3.2] Visual Studio 2008
 [3.3] C++

不備があったのでもう一度お願いします。申し訳ないです。

80 :デフォルトの名無しさん:2009/04/23(木) 05:22:54
>>45
ヒント:C言語なんかよりもそういう処理に特化した言語がある、あとはぐぐれ

81 :57:2009/04/23(木) 06:56:23
>>74

ありがとうございます!!

82 :デフォルトの名無しさん:2009/04/23(木) 09:39:40
[1] 授業単元:C++プログラミング
[2] 問題文:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9071.txt
[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] G++
 [3.3] C++
[4] 期限: 23日19時迄
[5] 問題の意味がわかりません。。(C)は特に。解決って。。何が問題なのでしょうか?
よろしくおねがいします

83 :デフォルトの名無しさん:2009/04/23(木) 11:09:03
自分で問題文へのリンクまではっておいて何が問題なのでしょうってww
プログラミング言語以前に日本語が不自由過ぎるぞ

84 :デフォルトの名無しさん:2009/04/23(木) 11:24:47
(c) はダイナミックキャストを使わないようにすれば解決したことになるのか、
それとも多重継承で不正とされるようなダウンキャストを
合法にする術を2つ見つけ出せというのか、どっちだろ。
後者ならわしもわからん*_*

85 :デフォルトの名無しさん:2009/04/23(木) 11:59:28
1.
 (a)
 (b)
2.
 (a)
 (b)

86 :82:2009/04/23(木) 12:31:57
>>83, 84
そうですよね。。分かる人が見ると分かるような問題かと思いましたが、さすがにこんなんじゃわかんないですよね。
こちらの問題は諦めます。とりあえず、(a)と(b)だけでも提出したいのですがお願いできますでしょうか?
こちらも意味不明になってますでしょうか?

87 :デフォルトの名無しさん:2009/04/23(木) 12:39:21
[1] 授業単元:上級C++
[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org30032.zip.html
[3] 環境
 [3.1] OS:UNIX
 [3.2] g++
 [3.3] C++
[4] 期限: 24日朝7:40迄にお願いします
[5] 備考:
covarianceって何でしょうか?g++でコンパイル実行すると普通に動作するのですが
何をどう修正すればよいのかサッパリなのでよろしくおねがいします

88 :デフォルトの名無しさん:2009/04/23(木) 13:03:18
>>86
提出期限が迫ってるみたいなんで、とりあえず解答作ってみた。
自分自身、問題の意図がつかめてない上に
厨くさいコードなんで使えんかもしれん・・・スマンw
誰か解いてあげて。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9072.zip

down_cast.cpp が (a)と(b)の解答、
down_cast2.cpp down_cast2a.cpp down_cast2b.cpp が(c)の解答ね。

89 :86:2009/04/23(木) 13:12:34
>>88
ありがとうございます!厨くさいなんてとんでもないです。
とりあえず、「明解C++」を購入したのでこれを片手にコードの理解に努めます!
有り難うございました★☆。.:*:・"゚★('-^v)Thanks(v^-')★。.:*:・"☆★

90 :デフォルトの名無しさん:2009/04/23(木) 14:20:00
>>87
covariance(共変性)。

class Base {
virtual Base* clone() {}
};
class Derived {
virtual Derived* clone() {}
};

一般に、仮想関数のオーバーライドはパラメータだけでなく、
戻り値も完全に一致している必要があるが、
戻り値が基底クラスへのポインタまたは参照のときは
それを派生クラスへのポインタまたは参照に置き換えてよい、というルール。

・・・はいいとして、問題難しすぎてまったくわかりません^^
dynamic_cast を使うか、template < class T > clone( T t )みたいな外部関数を用意するしか思いつかない…

91 :デフォルトの名無しさん:2009/04/23(木) 15:36:58
どうせ今年も、ソート、素数、組み合わせ、標準偏差、構造体、リスト、文字列検索など
お決まりのパターンの課題が出るだろうから、今から準備しておく。

92 :デフォルトの名無しさん:2009/04/23(木) 15:37:37
準備しなくてもいいだろ、そんなレベルの問題はw

93 :デフォルトの名無しさん:2009/04/23(木) 15:40:06
なぬっ!?麻呂のリストクソースが要らんとな?なら見せて進ぜよう
ここで質問される前に

94 :デフォルトの名無しさん:2009/04/23(木) 15:42:36
>>22
>>24
>>26

95 :デフォルトの名無しさん:2009/04/23(木) 15:52:46
>>94 それらの書き込みと話が合わないみたいだが・・・
とりあえず、ク素数を求めるコードを出すでおじゃるか?

96 :デフォルトの名無しさん:2009/04/23(木) 15:55:53
スレ違い。
オナニーショーがしたいならどっかよそでやって。

97 :デフォルトの名無しさん:2009/04/23(木) 16:04:00
>>95
http://www23.atwiki.jp/homework/pages/7.html


98 :デフォルトの名無しさん:2009/04/23(木) 16:05:38
麻呂のクソースが出される前に先に答えて自己アピールしたがっている
このスレを自分の縄張りだと思っている常駐引きこもり、あるいは
どこぞのランクの低い講師か大学の教授が我先にと必死だなw

99 :デフォルトの名無しさん:2009/04/23(木) 16:11:33
>>97
シンプソン積分とかルンゲ・クッタ法もよく出るんだがな

100 :デフォルトの名無しさん:2009/04/23(木) 16:18:08
>>98
>>22 >>24 >>26

101 :デフォルトの名無しさん:2009/04/23(木) 16:23:19
教本や教科書に載っているリスト構造のソースを丸写しして
ウハッwwww俺すげっwwwwwwこんなプログラムが作れたwwww
って思う程度の低い講師や教授は、もう少し多種様々な使用目的で
作られているソフトの仕組みにも目を向けた方が良い。
何も、お前らがそれらの基本を作ったわけじゃないだろ?うざいんだよ
講師のくせして、講師風情のくせして、生徒を見下す奴ってw

102 :デフォルトの名無しさん:2009/04/23(木) 16:23:49
>>98
問題出る前に貼ろうとするヤツ以上に必死なヤツなんていねーよw

103 :デフォルトの名無しさん:2009/04/23(木) 16:24:59
つまり先に貼られるのがくやしくてくやしくて仕方ないのがこの長文でおk?

104 :デフォルトの名無しさん:2009/04/23(木) 16:36:26
>>96 = >>94 = >>23 = >>25 = バカ講師w

105 :デフォルトの名無しさん:2009/04/23(木) 16:40:25
終了したプロセスでメモリリークが発生すると思ってた低脳乙w

106 :デフォルトの名無しさん:2009/04/23(木) 16:40:58
麻呂を目の敵にする負け犬、低ランク学校の講師か教授が必死涙目wwww
お前の書いたソースは所詮、教科書に載っていたもので、各企業で使われている
企業秘密として存在もしている、技術的にも高度なコード(駄洒落ではない)には
到底及ばないし金にもならないもんねぇ〜♪
自分でちと吹いた、高度なコードw

107 :デフォルトの名無しさん:2009/04/23(木) 16:47:01
>>105
黙ってればボロを出さなくてすむぜ

108 :デフォルトの名無しさん:2009/04/23(木) 17:19:47
お前がそう思うんならそうなんだろう
お前ん中ではな

109 :デフォルトの名無しさん:2009/04/23(木) 17:35:07
お前がトップならそうなんだろ
お前の学校ではな

110 :デフォルトの名無しさん:2009/04/23(木) 17:59:55
偽麻呂にここまで翻弄されるとは、やはりお前らそうとう気にしてるな・・・あの雑魚をw

111 :デフォルトの名無しさん:2009/04/23(木) 18:01:39
なんで偽ってわかるの?

112 :デフォルトの名無しさん:2009/04/23(木) 19:27:16
[1] 授業単元:
通信ネットワーク演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9073.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2009年5月10日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
資料が多すぎてややこしいかもですがよろしくお願いします。

113 :デフォルトの名無しさん:2009/04/23(木) 19:54:14
なんか死すアドクラスの問題キター・3・

114 :デフォルトの名無しさん:2009/04/23(木) 22:21:38
>>54
過去問の焼き直しです。
当方の環境は cygwin/Windows XP, 処理系は gcc 3.4.4 です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9074.txt
> の後に数字を入れるとその平方を小数点第一位まで表示します。

115 :87:2009/04/24(金) 01:07:25
どなたかcovarianceのやつお願い出来ないでしょうか?

116 :デフォルトの名無しさん:2009/04/24(金) 02:40:46
>>115
cocariance って聞いたことなかったので、ためしにやってみた
保証はしない

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

ようするにclose()を仮想にせずに同じ機能を実装すればいいんだろってことで単なる力技の実装
型チェックは本当は RTTI とか使うんだろうけどその辺も気にしてない
確認は VC2008
元のソースがエラーになるのを確認した上で、修正後、以下の出力結果になることを確認
私はBです。
私はDです。


117 :デフォルトの名無しさん:2009/04/24(金) 02:43:22
close()じゃなくてclone()でした


118 :115:2009/04/24(金) 02:44:00
>>116
ありがとうございます
どんなものでも助かります
これからソース解読します ほんとにありがとうございました

119 :デフォルトの名無しさん:2009/04/24(金) 03:02:09
116に刺激を受けてやってみた。あくまでvirtualを使ってみた。
class A {
public:
    A* clone() {return clone_impl();}
    virtual string identity() { return "私はAです"; }
protected:
    virtual A *clone_impl() { return new A(*this); }
};
class B : virtual public A {
public:
    B* clone() {return dynamic_cast<B*>(clone_impl());}
    virtual string identity() { return "私はBです"; }
protected:
    virtual A *clone_impl() { return new B(*this); }
};
class C : virtual public A {
public:
    C* clone() {return dynamic_cast<C*>(clone_impl());}
    virtual string identity() { return "私はCです"; }
protected:
    virtual A *clone_impl() { return new C(*this); }
};
class D : public B, public C {
public:
    D* clone() {return dynamic_cast<D*>(clone_impl());}
    virtual string identity() { return "私はDです"; }
protected:
    virtual A *clone_impl() { return new D(*this); }
};


120 :115:2009/04/24(金) 03:22:53
>>119
ありがとうございます
僕には全く理解出来ない領域ですがこれから勉強します
ありがとうございました


121 :54:2009/04/24(金) 06:36:27
>>114
ありがとうございます
ソース解読します
本当にありがとうございました

122 :デフォルトの名無しさん:2009/04/24(金) 09:03:55
【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
http://anchorage.2ch.net/test/read.cgi/bizplus/1240524654/

123 :デフォルトの名無しさん:2009/04/24(金) 09:39:38
[1] 授業単元:
情報処理
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9075.txt
[3] 環境
 [3.1] OS
WindowsXP
 [3.2] コンパイラ名とバージョン
gcc
 [3.3] 言語:
C/C++
[4] 期限
2009年4月24日 23:30
[5] その他の制限: 無し
無理強いできる立場でないことは百も承知ですが 全問やっていただければ本当にありがたいです。


124 :デフォルトの名無しさん:2009/04/24(金) 10:01:36
>>123 (3_1) 配列
#include<stdio.h>
int a[10][10]={
 {0,1,7,4,5,2,0,6,6,9},
 {3,5,8,0,0,5,6,0,3,0},
 {4,6,5,9,8,5,0,6,4,7},
 {9,7,2,0,7,3,6,7,9,3},
 {2,9,7,7,6,0,6,8,2,4},
 {7,4,2,2,3,1,4,8,9,0},
 {9,5,5,3,9,4,2,0,9,0},
 {5,3,2,9,5,4,9,0,7,7},
 {8,1,0,6,8,6,7,7,9,8},
 {2,3,3,5,5,8,4,8,2,4}};
int main(){
 int i=0,j=0,c=0;
 for(;i<10;++i)for(;j<10;++j)c+=a[i][j]%2;
 printf("%d\n",c);
}

125 :デフォルトの名無しさん:2009/04/24(金) 10:18:14
>>123 (3_2) 1. 隣り合う項の比
#include<stdio.h>
int fib(int n){return n<2?1:fib(n-1)+fib(n-2);}
int main(){
 int a[30],n=0;
 for(;n<30;++n)a[n]=fib(n+1);
 puts("隣り合う項の比");for(n=0;n<29;n++)printf("%f\n",(double)a[n+1]/a[n]);
}

126 :デフォルトの名無しさん:2009/04/24(金) 10:22:49
>>123 (3_2) 2.各項を 2 で割ったあまり
#include<stdio.h>
int fib(int n){return n<2?1:fib(n-1)+fib(n-2);}
int main(){
 int a[30],n=0;
 for(;n<30;++n)a[n]=fib(n+1);
 puts("各項を 2 で割ったあまり");for(n=0;n<30;n++)printf("%d\n",a[n]%2);
}

127 :123:2009/04/24(金) 11:15:49
迅速な対応ありがとうございます。
ただ、申し訳ないのですが
全てのプログラムに対して 2:error: parse error before '&' token
(3_1)には 13:error: parse error before '&' tokenが追加されてしまいます。


128 :デフォルトの名無しさん:2009/04/24(金) 11:23:43
まさかコピペしたソースに
 
が残ってるなんてことはないよね

129 :デフォルトの名無しさん:2009/04/24(金) 11:34:17
>>123 (3_3) 構造体
#include<stdio.h>
#include<math.h>
typedef struct{int x,y,r;}circle_t;
double dist(circle_t C1, circle_t C2){
 return sqrt(pow(C2.x-C1.x,2)+pow(C2.y-C1.y,2));//(問) 円 C1 と C2 の距離を計算
}
int main(){
 circle_t C1={3,-4,2},C2={2,1,1};
 double a = 0;
 printf("C1 の中心の (x,y) 座標: (%d,%d)\n", C1.x, C1.y);
 printf("C2 の中心の (x,y) 座標: (%d,%d)\n", C2.x, C2.y);
 //(問) 円 C1 の中心と C2 の中心の x 座標の差を表示
 printf("%d\n",C2.x-C1.x);
 //(問) 円 C1 の x 座標を +2, y 座標を +1 して, 座標を再表示
 printf("%d %d\n",C1.x+2,C1.y+1);
 //関数 dist を実行し結果を表示. 初めは 0 と表示される.
 a = dist(C1,C2);
 printf("Distsnce between C1 and C2 is %lf\n", a); // 距離を表示
 return 0;
}

130 :デフォルトの名無しさん:2009/04/24(金) 11:39:18
あああ…。
Firefoxだと" "が"&nbsp"になっちゃうのか。

>>127は置換するなり,IEでコピペしなおすなりしろ。

131 :デフォルトの名無しさん:2009/04/24(金) 11:50:57
>>130 君はエスパーか、しかし本当ならFirefoxにとってはひどい設定。
&nbsp;を&nbsp として空白表示になるとは。

132 :123:2009/04/24(金) 11:59:06
>>130 全くもって仰る通りでした…
IEで確認したところ、nbspは表示されておりませんでした。

(3_3)まで確認しましたが、(3_1)がどうも最初の行(0174520669)に対してしか奇数の数が求められておらず、./aのあとに4と表示されるだけとなっております…

133 :デフォルトの名無しさん:2009/04/24(金) 12:01:45
>>132
各行の奇数の数を出力するの?
俺が書いたのは全部(100個)の合計だよw
直すから少し待て。

134 :デフォルトの名無しさん:2009/04/24(金) 12:06:31
>>132 (3_1)修正版
#include<stdio.h>
int a[10][10]={
 {0,1,7,4,5,2,0,6,6,9},
 {3,5,8,0,0,5,6,0,3,0},
 {4,6,5,9,8,5,0,6,4,7},
 {9,7,2,0,7,3,6,7,9,3},
 {2,9,7,7,6,0,6,8,2,4},
 {7,4,2,2,3,1,4,8,9,0},
 {9,5,5,3,9,4,2,0,9,0},
 {5,3,2,9,5,4,9,0,7,7},
 {8,1,0,6,8,6,7,7,9,8},
 {2,3,3,5,5,8,4,8,2,4}};
int main(){
 int i=0,j,c;
 for(;i<10;++i,printf("%d\n",c))for(j=c=0;j<10;++j)c+=a[i][j]%2;
}

135 :123:2009/04/24(金) 12:07:39
>>133そういう課題のようです。
本当にありがとうございます。

136 :131:2009/04/24(金) 12:29:33
>>132 (3_1)修正版
#include<stdio.h>
int a[10][10]={
 {0,1,7,4,5,2,0,6,6,9},
 {3,5,8,0,0,5,6,0,3,0},
 {4,6,5,9,8,5,0,6,4,7},
 {9,7,2,0,7,3,6,7,9,3},
 {2,9,7,7,6,0,6,8,2,4},
 {7,4,2,2,3,1,4,8,9,0},
 {9,5,5,3,9,4,2,0,9,0},
 {5,3,2,9,5,4,9,0,7,7},
 {8,1,0,6,8,6,7,7,9,8},
 {2,3,3,5,5,8,4,8,2,4}};
int main(){
 int i=0,j,c;
 for(c=0;i<10;++i)for(j=0;j<10;++j)c+=a[i][j]%2;
 printf("%d\n",c);
}

137 :デフォルトの名無しさん:2009/04/24(金) 12:45:47
>>105
あ〜あ、参考資料を提示したのに、あれを理解できなかったとボロを出したよ、こいつwwww

138 :デフォルトの名無しさん:2009/04/24(金) 12:50:39
>>105
環境次第では、なんだが、そこを理解できなかったようで。これだから一部の環境でしか
通用しないクソコードを平気で書く、クソ麻呂未満の低レベル講師は・・・生徒だったら
まだやり直せるけど、お前がいい年こいたオッサンなら、人生無駄にしてきたと思え。

139 :デフォルトの名無しさん:2009/04/24(金) 12:52:46
>>111
麻呂ではない俺がおじゃるを付けて発言しただけだからw
クソースとおじゃるで麻呂になれるよ、あんたも?

140 :デフォルトの名無しさん:2009/04/24(金) 13:20:11
(´・ω・`)プロセスが異常終了したらメモリリークするような環境は基幹業務にゃ使えないよね

141 :デフォルトの名無しさん:2009/04/24(金) 13:26:26
>>137

>[3]環境
>[3.1]OS:windous XP
>[3.2]コンパイラ名とバージョン:Visual Studio.NET2003
>[3.3]言語:C++

>>19の環境に対して>>20の答えでプロセス終了時にメモリリークがおきると思ってた低脳乙

142 :デフォルトの名無しさん:2009/04/24(金) 14:35:09
元気な高校生がいると聞いてやってきましたが、
読むのがめんどくさい流れなので帰ります

143 :デフォルトの名無しさん:2009/04/24(金) 14:40:00
[1] 授業単元: C++
[2] 問題文(含コード&リンク): http://pc12.2ch.net/test/read.cgi/tech/1232627790/369

intersectionメソッドが返す整数の列は文字列であること。整数の間には、"2,3,5"のように必ず,で区切ることとし、文字列の先頭や末尾には余分な,を付けないこと。
intersectionメソッドが返す整数の列は必ず数値の小さい順に並べること
intersectionメソッドに与えられる引数は、第一引数、第二引数それぞれについて、配列内の要素はかならず小さい順に並んでおり、一つの配列の中に同じ値が2回出てくることはないものと仮定してよい
集合の要素としてはint型で扱えるあらゆる整数に対応すること。また集合の要素数も実用的に扱える範囲のさまざまな要素数に対応すること
積集合が空の場合は、""を返すこと。

class a_set {
public:
static char *intersection(int* a, int* b) {
// 結果を保存する文字列

// TODO: aとbの積集合を求めて、結果をresultに文字列として格納

// 結果を返す
return result;
}
}
int main() {
int a[] = {2, 3, 10, 35};
int b[] = {3, 5, 10, 18};
cout << a_set::intersection(a, b) << endl;
}

[3] 環境
 [3.1] OS: Windows 2000以降
 [3.2] コンパイラ名とバージョン: VC7以降 (/Za オプション)
 [3.3] 言語: C++

例題の答えは、3,10

144 :デフォルトの名無しさん:2009/04/24(金) 15:47:42
>>143
aとかbの要素数はどうやって intersection に教えたらいいの?

145 :143:2009/04/24(金) 15:58:51
>>144
static string intersection(vector<int> a, vector<int> b);
に修正お願いします。(.n.)

146 :デフォルトの名無しさん:2009/04/24(金) 16:02:19
じゃあresultもvectorに入れるべきだろ

147 :デフォルトの名無しさん:2009/04/24(金) 16:04:46
java の宿題を無理やり C++ に合うように改変したからわかってないんじゃなかい?
あと、C++ならSTLで一発だし。

148 :デフォルトの名無しさん:2009/04/24(金) 16:09:21
>>130
こんどからセミコロンもちゃんとつけろよ
Firefoxの動作が一般に正しい動作
IEは気を利かせすぎ


149 :130:2009/04/24(金) 16:25:22
>>148
らじゃ。正直すまんかった。
>>134では直してある。

にしてもJaneのプレビューはIEベースなのかねぇ…。

150 :デフォルトの名無しさん:2009/04/24(金) 16:27:55
フィボナッチで再帰使ったり、ループ処理おかしかったり、
わざと嫌がらせしてんの?

151 :デフォルトの名無しさん:2009/04/24(金) 16:31:58
再帰については効率の良さはともかく、その性質を知るのに使うことはあるだろ。
バブルソートなんて習う必要がないが、効率の悪いものから良いものへ、
そういうのを学ぶのも、現在発展途上の案件に対し、発展させる考えを
持たせるにはあっても良い授業だ。そもそも、時代の変化と共に、こういった技術は
どんどん進化している。今あるものが大昔からあるものから最近発見されたものまで
その歴史を知るが良い。

152 :デフォルトの名無しさん:2009/04/24(金) 17:05:56
10です (>>10)

>>15
ありがとうございました
!canwin()として再帰させているあたりが参考になりました

1600〜2009年が与えられますが
2004年くらいが与えられると再帰の回数が多くなって答えを出すのに時間がかかってしまいました
メモ化しようと思ったのですが先手後手をどう扱えばいいか分からずできませんでした

>>12
Excelは持っていないので>>15と紙を使って規則性を考えてみました
この問題は2009年4月24日を渡したら勝ちですが
渡す月+日の奇偶が重要らしく、ここでは4+24=28なので
与えられた日付がY年M月D日のとき、基本的にM+Dが奇数ならAの勝ち
例外で、4月30日と6月30日はAの勝ち、Y年がうるう年ならY年2月29日はAの負けとなるようでした
ちなみに渡す月日が奇数のとき、Aの勝ち負けが反転して
例外が2月29日と4月30日と6月30日ではなく、9月30日と11月30日になるようでした


153 :デフォルトの名無しさん:2009/04/24(金) 17:11:32
>>143
#include <vector>
#include <algorithm>
#include <string>
#include <iostream>
#include <sstream>
class a_set {
public:
static std::string intersection( const std::vector< int > &a, const std::vector< int > &b ) {
std::vector< int > v;
std::set_intersection( a.begin(), a.end(), b.begin(), b.end(), back_inserter( v ) );
if ( v.empty() ) {
return "";
} else {
std::string s; std::stringstream ss;
std::vector< int >::const_iterator iter = v.begin();
ss << *iter; ++iter;
for ( ; iter != v.end(); ++iter ) {
ss << "," << *iter;
}
s = ss.str();
return s;
}
}
};
int main() {
using namespace std;
int a[] = {2, 3, 10, 35}; int b[] = {3, 5, 10, 18};
vector< int > v1( &a[0], &a[3] ); vector< int > v2( &b[0], &b[3] );
cout << a_set::intersection( v1, v2 ) << endl;
}

154 :デフォルトの名無しさん:2009/04/24(金) 17:14:42
>>152です
ちょっと間違えました
うるう年じゃないときに2月28日が相手に渡ったら負けるだけで、
基本的にM+Dが奇数ならAの勝ち、例外で、4月30日と6月30日はAの勝ち
だけでした

155 :デフォルトの名無しさん:2009/04/24(金) 17:18:56
ジョン・フォン・ノイマンを知らないのは論外です、プログラミングだけでなく
PCを扱うに於いて

156 :デフォルトの名無しさん:2009/04/24(金) 17:19:32
>>153
std::string s; std::stringstream ss;
std::vector< int >::const_iterator iter = v.begin();
ss << *iter; ++iter;
for ( ; iter != v.end(); ++iter ) {
ss << "," << *iter;
}
s = ss.str();

の部分は

std::string s; std::stringstream ss;
copy( v.begin(), v.end(), std::ostream_iterator< int >( ss, "," ) );
s = ss.str();
s.resize( s.size() -1 );

と書いたほうがSTLっぽかったかな。

157 :123:2009/04/24(金) 17:44:43
>>123です。 アップローダーが落ちているようなので再うpします。
[1] 授業単元:
[2] 問題文 (3_4) 学生 A, B, C, D さんの logi, math, ecom の成績はそれぞれ以下のようになっている.
A B C D
logi 90 70 90 80
math 80 85 70 90
ecom 90 85 80 70

math, logi, ecom というメンバを持つ構造体 grade_t を作成せよ. grade_t オブジェクト A, B, C, D を定義して, 成績をそれぞれの変数に格納し, 以下の機能を実装せよ;
それぞれの学生の成績の合計点を計算
各科目の平均点を計算せよ。

(3_5) (3_4) で grade_t に name というメンバを加えて構造体の配列を用い, (3_4) と同様の動作をするプログラムを作成せよ。


[3] 環境
 [3.1] windows
 [3.2] gcc
 [3.3] C/C++
[4] 期限: 本日23:30
[5] その他の制限:なし


158 :デフォルトの名無しさん:2009/04/24(金) 17:55:07
Q3.printfとwriteの違いはなんでしょう?
おねがいします

159 :デフォルトの名無しさん:2009/04/24(金) 18:40:11
>>150
再帰の何が嫌がらせなのか分からん。
ループ処理はどこがおかしいのか分からん。
具体的に指摘してくれ。

160 :デフォルトの名無しさん:2009/04/24(金) 18:56:28
間違った答を書いて>>132って言われたのに>>133って返すとか、ダメなやつだなあとは思う。

161 :デフォルトの名無しさん:2009/04/24(金) 19:01:03
>>157
(3_4)
#include <stdio.h>
struct grade_t {int logi; int math;int ecom;};
struct grade_t A = {90, 80, 90};
struct grade_t B = {70, 85, 85};
struct grade_t C = {90, 70, 80};
struct grade_t D = {80, 80, 90};
int sum(struct grade_t *x)
{
return x->logi + x->math + x->ecom;
}
void ave(int num, struct grade_t *x[])
{
int i; double logi=0.0, math=0.0, ecom=0.0;
for (i = 0; i < num; i++) {
logi += x[i]->logi; math += x[i]->math; ecom += x[i]->ecom;
}
printf("average logi:%g, math:%g, ecom:%g\n",logi/num, math/num, ecom/num);
}
int main()
{
struct grade_t *p[4] = {&A, &B, &C, &D};

printf("%s sum:%d\n", "A", sum(&A));
printf("%s sum:%d\n", "B", sum(&B));
printf("%s sum:%d\n", "C", sum(&C));
printf("%s sum:%d\n", "D", sum(&D));
ave(4, p);
return 0;
}


162 :デフォルトの名無しさん:2009/04/24(金) 19:03:44
>>157
(3_5)
#include <stdio.h>
struct grade_t {char *name; int logi; int math; int ecom;};
struct grade_t array[4] = {
{"A", 90, 80, 90},{"B", 70, 85, 85},{"C", 90, 70, 80},{"D", 80, 80, 90}
};
int sum(struct grade_t *x)
{
return x->logi + x->math + x->ecom;
}
void ave(int num, struct grade_t x[])
{
int i; double logi=0.0, math=0.0, ecom=0.0;
for (i = 0; i < num; i++) {
logi += x[i].logi; math += x[i].math; ecom += x[i].ecom;
}
printf("average logi:%g, math:%g, ecom:%g\n",logi/num, math/num, ecom/num);
}
int main()
{
int i;
for (i = 0; i < 4; i++) {
printf("%s sum:%d\n", array[i].name, sum(&array[i]));
}
ave(4, array);
return 0;
}


163 :デフォルトの名無しさん:2009/04/24(金) 19:13:18
引数でint numが前だとなんか気持ち悪いなw

164 :デフォルトの名無しさん:2009/04/24(金) 19:23:49
>>162 全問やっていただき本当にありがとうございました。
お陰で期限に楽勝で間に合いました! 本当にありがとうございます!
 

165 :143:2009/04/24(金) 22:05:47
>>153
>>156
やっていただいて、有難う御座います。GCC でエラーが出ましたが、後はこちらで調べてみます。
http://ml.tietew.jp/cppll/cppll/thread_articles/12484
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
D:\>g++ 156.cpp
156.cpp: In static member function `static std::string a_set::intersection(const std::vector<int, std::allocator<int> >&, const std::vector<int, std::allocator<int> >&)':
156.cpp:16: error: `ostream_iterator' is not a member of `std'
156.cpp:16: error: expected primary-expression before "int"

166 :デフォルトの名無しさん:2009/04/24(金) 22:29:48
>>152
安直にメモ化してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9078.c

167 :デフォルトの名無しさん:2009/04/24(金) 23:09:17
>>165
ostream_iterator を使うには

#include <iterator>

が必要。あと、copy も std::copy にしないと多分エラー。

168 :デフォルトの名無しさん:2009/04/25(土) 00:39:05
C言語の基礎の基本的な問題と解答が載っているサイトを教えてください。
問題は、プログラムを書けといった問題や、プログラムを実行するとどのように表示されるかといった問題や、
プログラムの穴埋めなどの、プログラムに関する問題です。
内容は、具体的には、最初から、printf、scanf、if、for、while、do-while、
break、continue、switch-caseぐらいまでの内容です。
よろしくお願いします。


169 :デフォルトの名無しさん:2009/04/25(土) 01:11:02
>>168
本ならたくさんある

170 :デフォルトの名無しさん:2009/04/25(土) 02:11:09
[1] 情報処理:
[2] キーボードより整数型データを配列に入力し、大きさの順に並べ替えて結果を表示するプログラムを作成しなさい。
ただし、データの個数は15とし、下記に示すプログラムのポインタ変数poを利用し<プログラムの本体>を作成せよ:

[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C
[4] 4/27



171 :デフォルトの名無しさん:2009/04/25(土) 02:12:13
#include<stdio.h>
int main()
{
int x[25],i,j,temp;
int *po;
<プログラムの本体>
return 0;
}

172 :デフォルトの名無しさん:2009/04/25(土) 02:29:45
閏年、カレンダーを出力する質問マダー?

173 :デフォルトの名無しさん:2009/04/25(土) 02:33:26
素数、最小公倍数、最大公約数マダー?フィボナッチ数列マダー?

174 :デフォルトの名無しさん:2009/04/25(土) 02:48:12
[1] 授業単元:プログラミング
[2] 問題文:下の実行例のように、一行で入力された加算減算の式を計算して、
      その答えを求めるプログラムを作りなさい。
      ただし、式で入力する値は正の整数とし、演算は+とーのみとする。
      [実行例]
      式:3+21-15+1
      答え:10  
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:4月中

よろしくお願いします。


175 :デフォルトの名無しさん:2009/04/25(土) 02:58:08
>>174
適当
#include<stdio.h>
#include<stdlib.h>
int main()
{
    char s[80];
    printf("式:");
    fgets(s,sizeof s,stdin);
    int v = 0;
    char*p,*q=s;
    do v += strtol(p=q,&q,10);while(p!=q);
    printf("答え:%d\n",v);
}

176 :デフォルトの名無しさん:2009/04/25(土) 02:59:09
10分経過
あと数分で1つ出てくる筈
その後5分程度でもう一本
さすがにその後は出来てても揚げないみたいだけど

177 :デフォルトの名無しさん:2009/04/25(土) 03:00:43
>>176
C語通訳クンの競争は激しいねw
プロトコル位作りゃいいのに

178 :デフォルトの名無しさん:2009/04/25(土) 03:03:59
最大公約数=ユークリッドの互除法
最小公倍数=x×y÷(x,yの最大公約数)

179 :174:2009/04/25(土) 03:38:06
>>175
ありがとうございます。




180 :174:2009/04/25(土) 03:44:13
あとできれば、174のプログラムをポインタを使わずに作ってもらえるとありがたいです。

181 :デフォルトの名無しさん:2009/04/25(土) 04:12:51
↓のボイン太君が何とかしてくれるはず

182 :デフォルトの名無しさん:2009/04/25(土) 09:45:55
>>174 言ってるポインターって何や?
#include<stdio.h>
#define NUMBERS "0123456789" /* strspn(s, NUMBERS) 指定した文字群からなる部分文字列の長さを求めます。*/
int main()
{
  char s[80];
  int v, np, size;

  printf("式:");
  fgets(s, sizeof s, stdin);
  if(s[0] == '-' || s[0] == '+') {
    np = strspn(s+1, NUMBERS);
    np++;
  } else {
    np = strspn(s, NUMBERS);
  }
  v = atol(s);
  while(
    size = strspn(s+np+1, NUMBERS) ) {
    v += atol(s+np);
    np += size+1;
  } ;
  printf("答え:%d\n", v);
}

183 :デフォルトの名無しさん:2009/04/25(土) 10:27:26
>>174
#include <stdio.h>

int main(void)
{
int ch, sum = 0, temp = 0, flag = 1;

while(1) {
ch = getchar();
if('0'<=ch && ch <= '9') temp = temp * 10 + ch - '0';
else {
sum += flag * temp;
temp = 0;
if(ch == '\n' || ch == EOF) break;
if(ch == '+') flag = 1;
else if(ch == '-') flag = -1;
else return 1;
}}

printf("%d", sum);

return 0;
}

184 :デフォルトの名無しさん:2009/04/25(土) 14:27:59
>>98
むしろしばらくたっても誰も答えないような難易度の高い問題をさくっと解くほうがかっこいいですねえ。
>>54 とか

185 :デフォルトの名無しさん:2009/04/25(土) 16:10:02
[1] 授業単元:プログラミング
[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9079.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語:C++
[4] 期限:4月27日午前中
(1)は出来たのですが(2)が意味不明です。よろしくお願いします。

186 :185:2009/04/25(土) 16:13:44
自己レスです。一点書き忘れました。
(1)は構造体の定義の後、メイン関数の前に
helloworld x;
と実際に使う必要がありました。

187 :デフォルトの名無しさん:2009/04/25(土) 16:59:11
[1] 授業単元:C++
[2] 問題文:ttp://www.dotup.org/uploda/www.dotup.org35358.zip.html
[3] 環境
 [3.1] OS:リナックス
 [3.2] コンパイラ名とバージョン:G++
 [3.3] 言語:C++
[4] 期限:4月27日中
[5] よろしくおねがいします

188 :デフォルトの名無しさん:2009/04/25(土) 17:23:53
>>187
std::for_eachの第三引数は参照渡しではなく値渡しだから
ファンクタから戻るとファンクタが消滅する
正しい結果を得るには次のようにする

string::size_type maxlen2;

struct maxlenftn {
maxlenftn() : maxlen(0) {}
void operator()(string s) {
maxlen = maxlen2 = max(maxlen, s.size());
}
string::size_type maxlen;
};

int main() {
const char *na[] = {
"Orange", "Notebook", "XP", "UnitedKingdom"
};
vector<string> names(na, na + sizeof(na) / sizeof(const char *));
maxlenftn maxf;

for_each(names.begin(), names.end(), maxf);

cout << maxlen2 << endl;
}

189 :デフォルトの名無しさん:2009/04/25(土) 18:04:58
>>187
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9081.txt

・・・遅かった^^;

190 :デフォルトの名無しさん:2009/04/25(土) 18:35:40
>>185
#include <iostream>
using namespace std;
class helloworld {
 public:
  helloworld(int val) : a(val++), b(val++) {
    cout << "Test 2 "<<a<<b<<endl; }
  helloworld(int vala, int valb) : a(vala), b(valb) {
    cout << "Test 3 "<<a<<b<<endl; }
private:
  const int a, b; // a=2, b=3
// const int b, a; // b=2, a=3
};
//helloworld x();
helloworld y(2);
helloworld z(2,3);

int main(){
  return 0;
}

191 :174:2009/04/25(土) 23:32:09
>>182
>>183
ありがとうございます
助かりました

192 :デフォルトの名無しさん:2009/04/25(土) 23:36:48
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9082.txt

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5
 [3.3] 言語: C
[4] 期限: 一週間後
[5] なるべく簡単にお願いします。

193 :デフォルトの名無しさん:2009/04/25(土) 23:53:53
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9084.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9085.txt

[3] 環境
 [3.1] Windows vista
 [3.2] VC 2008
 [3.3] 言語: C
[4] 期限: 4/27 12:00

多少長いコードになってると思います。そして2つです。
リスト構造がまだ曖昧なため、参考にさせて頂くためにもよろしくお願いします。

194 :デフォルトの名無しさん:2009/04/26(日) 00:09:33
>>192
(a) i % 3 == 0 || 30 <= i && i <= 39 || (i % 10) == 3
(b) i % 5 == 0

195 :デフォルトの名無しさん:2009/04/26(日) 00:25:22
>>170
#include <stdlib.h>
int main()
{
  int x[25], i, j, temp;
  int *po;
  const int NUM = 15;
  /* 入力 */
  for(i=0; i<NUM; i++) {
    while(printf("%2d/%d:", i+1, NUM), scanf("%d", &x[i]) != 1)
      scanf("%*s");
  }
  /* バブルソート */
  for(i=0; i<NUM-1; i++) {
    for(j=NUM-1; j>i; j--) {
      po = &x[j-1];
      if(po[0] > po[1]) { /* 降順は>、昇順は< */
        temp = po[1], po[1] = po[0], po[0] = temp;
      }
    }
  }
  /* 出力 */
  for(i=0; i<NUM; i++)
    printf("%d ", x[i]);
  return 0;
}

196 :デフォルトの名無しさん:2009/04/26(日) 02:25:51
>>112
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9088.zip
・とりあえず動いてρ<1.0の時なら ̄Nが大体一致した。
・途中で飽きてコメントがいい加減になってる。
・シミュレータの正当性については理論値との誤差率を出すとかして自分で調べてくれ。
 (理論値の公式はググってみてもよくわからなかった。)

197 :デフォルトの名無しさん:2009/04/26(日) 09:10:18
[1] 授業単元: プログラミング言語Y
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9089.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9090.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9091.txt

[3] 環境
 [3.1] Windows xp
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 4/28 12:50

計3問です。いずれも長いソースコードとなっています。
どうかよろしくお願いいたします。


198 :デフォルトの名無しさん:2009/04/26(日) 09:44:00
世界のナベアツのパクリキターー!このスレは世界のアツナベが乗っ取った!
これから3の倍数と3の付く番号にレスをした奴はアホっぽくレスをせずとも
アホ決定!

199 :デフォルトの名無しさん:2009/04/26(日) 10:55:39
>>196
ありがとうございます!
すいません、
サーバの平均の処理時間を1で正規化して、これを基準とした相対的な時間を用いる仕様にして欲しいのですが、無理でしょうか?

200 :デフォルトの名無しさん:2009/04/26(日) 11:37:13

おまんこおーぷん
もしヌルヌルなら
おちんちん

201 :デフォルトの名無しさん:2009/04/26(日) 12:17:06
>>193
9084.txtだけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9092.txt

202 :187:2009/04/26(日) 13:13:49
>>188
>>189
ありがとうございました!おかげさまで助かりました

203 :デフォルトの名無しさん:2009/04/26(日) 13:26:37
>>199
よく言っている意味がわからないんだけど、
  arrivalRate /= serviceRate;
  serviceRate = 1.0;
じゃだめなの?

204 :デフォルトの名無しさん:2009/04/26(日) 15:36:40
>>203
シミュレーション時間の単位のことです。
実際の物理的な時間単位(sec等)でもよいが、>>199であるような仕様にしたほうがよいと書いてあるので・・

205 :デフォルトの名無しさん:2009/04/26(日) 16:52:50
>>194
30 <= i && i <= 39よりも、
( i / 10 ) == 3
がよさげ。

206 :デフォルトの名無しさん:2009/04/26(日) 16:55:17
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): h = 1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5
これを2重のfor文で解け。

[3] 環境
 [3.1] OS: windows vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 5月15日まで


207 :デフォルトの名無しさん:2009/04/26(日) 17:15:16
>>206
/* h = 1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5 */
#include <stdio.h>
int main() {
  int i, j, mul, sum = 0;
  for(i=1;i<=5;i++) {
    mul = 1;
    for(j=1;j<=i;j++) {
      mul *= j;
    }
    sum += mul;
  }
  printf("h = %d", sum);
}

208 :デフォルトの名無しさん:2009/04/26(日) 17:29:13
>>207
キチンと動きました。!!
本当にありがとうございます!!。

209 :デフォルトの名無しさん:2009/04/26(日) 17:54:50
[1] 授業単元: プログラミング言語
[2]  2重のfor文で下記のように表示しろ。
98765
87654
76543
65432
54321

[3] 環境
 [3.1] OS: windows vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: c
[4] 期限: 5月15日まで


210 :デフォルトの名無しさん:2009/04/26(日) 17:58:44
#include <stdio.h>

int main(void)
{
int i, j;

for(i=0; i<5; i++) {
for(j=0; j<5; j++) printf("%d", 9-i-j);
putchar('\n');
}

return 0;
}

211 :デフォルトの名無しさん:2009/04/26(日) 18:00:59
#include<stdio.h>
int main(){
    const char s[]=
    "98765\n"
    "87654\n"
    "76543\n"
    "65432\n"
    "54321\n";
    int i,j;
    for(i=0;i<1;++i)
        for(j=0;s[j]!='\0';++j)
            putchar(s[j]);
}

212 :デフォルトの名無しさん:2009/04/26(日) 18:01:41
>>209
#include <stdio.h>

int main()
{
int i, j;

for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
printf("%d", (9-i-j));
}
printf("\n");
}

return 0;
}


213 :デフォルトの名無しさん:2009/04/26(日) 18:40:17
>>210-212
どれもきちんと正常に動きました。
本当に皆さんありがとうございます。助かりました!!

214 :193:2009/04/26(日) 18:50:02
>>201
ありがとうございます。
正常に動作しました。
よろしければ引き続き2番目の方もどなたかお願いします。

215 :デフォルトの名無しさん:2009/04/26(日) 20:09:19
[1] 授業単元: プログラミング言語Y
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9089.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9090.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9091.txt

[3] 環境
 [3.1] Windows xp
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 4/28 12:50

計3問です。いずれも長いソースコードとなっています。
どうかよろしくお願いいたします。

216 :デフォルトの名無しさん:2009/04/26(日) 20:10:30
>>211 >>211 >>211 >>211 >>211 >>211
君は見事に世界のアツナベになったw

217 :デフォルトの名無しさん:2009/04/26(日) 21:45:56
テステス

218 :デフォルトの名無しさん:2009/04/26(日) 22:17:32
>>193
9085.txt
> append 関数を直接呼び出せば実装は容易である
ってあるけど、配列で実装して構わないんだよね?

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


219 :デフォルトの名無しさん:2009/04/26(日) 22:22:25
>>215
1-1 throw
1-2 try
1-3 catch
1-4 range_error
2-5 MyData&
2-6 a.str
2-7 free(str)
2-8 *this
2-9 vector<MyData>::const_iterator
2-10 *(it++)
3-1 getIP(s)
3-2 atoi(s)
3-3 >>=

220 :215:2009/04/26(日) 22:28:03
>>219
ありがとうございます。
助かりました!!!!


221 :193:2009/04/26(日) 22:44:47
>>218
すいません。説明が不十分でした。
リストのコードと配列のコードである
2つを別々に作るということでした。


222 :デフォルトの名無しさん:2009/04/27(月) 00:08:05
>>193
リストによる実装
>>201氏のロジックを借用している
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9094.txt


223 :デフォルトの名無しさん:2009/04/27(月) 00:21:15
>>193

MAXENTは3として欲しい。わざわざ4にした理由がわからん

#define MAXENT 4 /* 最大3個の要素が入る待ち行列*/
/* テストのためわざと小さい大きさにしている */
int x[MAXENT-1]; /* 待ち行列用の配列の宣言 */


224 :193:2009/04/27(月) 00:33:20
>>223
申し訳ありません。
ただ自分が作った問題ではないのでなんとも言えないのですが。

>>201 >>218 >>222 >223
皆さん大変ありがとうございました。
これからは自分で作れるように努力したいと思います。

225 :デフォルトの名無しさん:2009/04/27(月) 03:04:24
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
穴埋め問題2問です
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9095.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9096.txt

[3] 環境
 [3.1] OS:windows xp
 [3.3] 言語:C++
[4] 期限: 2009年4月28日23:59まで

どうかよろしくお願いします

226 :デフォルトの名無しさん:2009/04/27(月) 12:44:49
[1] 授業単元: 演習課題
[2] 問題文(含コード&リンク):
nCrを計算するプログラムを,(再帰的呼び出しを用いずに)作成せよ.但し,nは0以上5以下とする
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 早ければ早いほどいいが、無期限
[5] その他の制限: 初心者

227 :デフォルトの名無しさん:2009/04/27(月) 14:04:44
>>226
joyful/img/9097.c


・・・ここまで書いて、条件を満たしてないことに気づいた。
ま、まぁ、参考までに。


228 :デフォルトの名無しさん:2009/04/27(月) 14:07:43
>>226
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9098.c

229 :デフォルトの名無しさん:2009/04/27(月) 14:33:46
>>227 (・∀・)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9097.c

230 :226:2009/04/27(月) 15:00:39
>>227
>>228
ありがとうございます!
おかげで一つ謎が解けそうです。
あとは自分で作れるよう、このソースを解読してみます。

231 :デフォルトの名無しさん:2009/04/27(月) 15:13:29
>>225
問1 1 :: 2 : 3 バッファオーバーラン 4 strncpy 5 strncpy(this->phone, phone, MAXNAME-1);
・・・「ぜいじゃくせい」じゃないのかなぁ?

2-1 β 2-2 bool 2-3 x 2-4 y 2-5 "四角形の内側です\n"

232 :デフォルトの名無しさん:2009/04/27(月) 15:15:38
[1] 授業単元:プログラミング演習
[2]
実行例のように表示されるプログラムを作製せよ。
課題は2つあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9099.zip

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:5/1
[5] その他の制限:お手数かけますが宜しくお願いします。

233 :デフォルトの名無しさん:2009/04/27(月) 15:29:29
>>232はスタックを作れとは書いてないから
そのまま文字列表示しちゃってもいいのか?w

234 :デフォルトの名無しさん:2009/04/27(月) 16:51:09
課題1
#include <stdio.h>
int main()
{
char buf[32]; int a, b;
printf("A?"); fgets(buf, sizeof(buf), stdin); a = atoi(buf);
printf("B?"); fgets(buf, sizeof(buf), stdin); b = atoi(buf);
printf("\n");
printf("A+B = %d\n",(a+b)%10);
printf("A-B = %d\n",(a-b)%10);
printf("A*B = %d\n",(a*b)%10);
printf("A/B = %d\n",(a/b)%10);
printf("A%B = %d\n",(a%b)%10);
return 0;
}


235 :デフォルトの名無しさん:2009/04/27(月) 16:52:33
課題2
#include <stdio.h>
int main()
{
char buf[32]; int s;
printf("身長を入力してください?:"); fgets(buf, sizeof(buf), stdin);
s = atoi(buf);
printf("\n標準体重は %4.1fkg です.\n",((double)s - 100.0) * 0.9);
return 0;
}


236 :デフォルトの名無しさん :2009/04/27(月) 17:23:27
>>225
問2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9100.txt

237 :デフォルトの名無しさん :2009/04/27(月) 17:31:27
>>225
問1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9101.txt

238 :デフォルトの名無しさん:2009/04/27(月) 18:07:39
突然の質問ですいません
#include <stdio.h>

int main (){
int i;
double a;

a=0.0;
for(i=0;i<20;i++) {
a=a+0.1;
printf("a=%f\n",a);
if(a==1.0)
break;

}
printf(" a = %f \n", a );
return 0;
}

この答えが2になるのは何故でしょうか?

239 :デフォルトの名無しさん:2009/04/27(月) 18:16:31
if(a==1.0)が真にはならない

240 :デフォルトの名無しさん:2009/04/27(月) 18:20:37
こういうのって0.1ずつ足していくと
1.0にならずに0.9999999とかになるんじゃなかったっけ。

241 :デフォルトの名無しさん:2009/04/27(月) 18:43:39
>>238
2にならない。

242 :デフォルトの名無しさん:2009/04/27(月) 18:51:33
a=a+0.125;
とか1/2^nであらわせる数なら誤差は出ない

243 :デフォルトの名無しさん:2009/04/27(月) 18:54:27
printf("a=%.16f\n",a);
にすれば1.0じゃないのがわかる

244 :デフォルトの名無しさん :2009/04/27(月) 19:04:50
>>226
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9102.txt

245 :デフォルトの名無しさん:2009/04/27(月) 19:14:29
TEST

246 :デフォルトの名無しさん:2009/04/27(月) 19:19:23
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9086.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9087.txt
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5
 [3.3] 言語: C
[4] 期限: 一週間後
[5] 追加です。なるべく簡単にお願いします
  2問目は全く解らないので特に簡単にわかりやすくして下さい。



247 :デフォルトの名無しさん:2009/04/27(月) 19:34:47
>>242
それは実装系依存(FLT_RADIX依存?)。
238は環境を提示していないので、239以上のことは言えんと思う。

248 :デフォルトの名無しさん:2009/04/27(月) 19:45:28
>>226 nCrを計算するプログラムを,(再帰的呼び出しを用いずに)作成せよ.
但し,nは0以上5以下とする
>>227 >>228 >>244
n にC言語側で制限つける必要ある?

249 :デフォルトの名無しさん:2009/04/27(月) 21:25:35
>>246
9086.txt
#include <stdio.h>
int main()
{
int i = 1; double sum = 0.0;
while (1) {
sum += 1.0 / (i * (i + 2));
if (sum > 0.74)
break;
i++;
}
printf("%d %g\n", i,sum);
return 0;
}
9087.txt
(a) [now > 0]
(b) [max < prod]
(c) [max = prod]
(d) [prev = now]
(e) [scanf("%d", &now)]

250 :デフォルトの名無しさん:2009/04/27(月) 21:58:23
>>248 日本語でおk。論より証拠。ならばお主がソースで具体的に
自分が言いたかったことを示したら?コードでおk。

251 :デフォルトの名無しさん:2009/04/27(月) 22:01:11
>>248
> C言語側で制限つける
ユーザが0から5の間で入力すれば良いと言いたいのか?
それならそれで良いんだが。ただ、入力できる数は何も0から5の間に
限ったことではないんでね。

252 :デフォルトの名無しさん:2009/04/27(月) 22:13:03
>>248の書いたソースコードマダー?(チンチンAA略)

253 :デフォルトの名無しさん:2009/04/27(月) 22:15:37
>>248 (・∀・) (^Ω^) (^ω^ ) まだかお?

254 :デフォルトの名無しさん:2009/04/27(月) 22:24:10
>>248 ( ̄工 ̄) 子供だって美味いんだも〜ん、飲んだらこう言っちゃうよぉ〜

255 :デフォルトの名無しさん:2009/04/27(月) 22:26:53
>>251
オレは248じゃねぇが、問題文の「nは0以上5以下とする」は
「入力値は0〜5とする。それ以外の値が入力されることについては考えなくて良い」とも解釈できんだろ。
その視野狭窄は治しとかんといらん恥かくぞ。

256 :デフォルトの名無しさん:2009/04/27(月) 22:29:13
>>255
>解釈できんだろ
どっちにでもとれる表現は勘弁してくれw

257 :デフォルトの名無しさん:2009/04/27(月) 22:31:47
おぅ、わりぃ。「解釈できるだろ」ってことでひとつ。

226読み直したが、入力するとも書いてねぇな。
forでnとrを0〜5で回して一覧表示するってのでも、回答にはなりそうだべ。

258 :デフォルトの名無しさん:2009/04/27(月) 22:39:59
[1] C言語
[2] 比の計算
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9103.txt
少し文章がおかしいところがありますが正しくは
a,b,c,dはscanfで読み込みますです。
[3] 環境
 [3.1] MacOSX
 [3.2] gcc
 [3.3] C
[4] 期限: 明日2009/4/28の朝8:00頃まで
[5] その他の制限: 特にありませんができれば簡単な関数でお願いします
期限が短いのですがよろしくお願いします。

259 :デフォルトの名無しさん:2009/04/27(月) 22:46:10
>>258

printf("x=%d\n",&x);

 ↓

printf("x=%d\n",x);


260 :225:2009/04/27(月) 22:58:45
>>231>>236>>237
ありがとうございます。助かりました。

261 :デフォルトの名無しさん:2009/04/27(月) 23:50:02
[1] 授業単元: ソフトウェア演習V
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9104.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9105.txt

[3] 環境
 [3.1] Windows xp
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 4/28 23;59

いずれも選択問題です。
どうかよろしくお願いいたします。

262 :デフォルトの名無しさん:2009/04/28(火) 00:00:44
>>259
すみません、そこはタイプミスでしたorz
直したのですがうまくいきません;

263 :258:2009/04/28(火) 00:17:58
少し追記ですがx=(ad-bc)/(a-b-c+d)の式にa,b,c,dを代入して自分で計算した結果と
プログラムを実行して出た結果は同じだったのですが
式b-x:a-x=d-x:c-xに代入して計算すると違う答えになってしまいますorz

264 :デフォルトの名無しさん:2009/04/28(火) 00:26:15
>>263
どうやって代入したのかkwsk

265 :デフォルトの名無しさん:2009/04/28(火) 00:26:57
具体的に何を代入した?

266 :デフォルトの名無しさん :2009/04/28(火) 00:39:29
>>261
#include <string.h>
char *strsearch(const char *s1,const char *s2)
{
char *result = NULL;
int dlen = strlen(s2);

while (*s1){
if(strncmp(s1, s2, dlen) == 0){
result = (char *)s1;
break;
}
s1++;
}
return result;
}

267 :232:2009/04/28(火) 05:45:25
>>232です。
すみません、書き忘れていました。

前回がdouble型までの学習だったのでもう少しシンプルになりませんでしょうか?

268 :デフォルトの名無しさん:2009/04/28(火) 07:32:16
>>264-265
例えばa=1800、b=22000,c=450,d=2000とすると
a*b=39600000、b*c=9900000、a-b-c+d=-18650
a*b-b*c=29700000
((a*b)-(b*c))/(a-b-c+d)=-1592
プログラムの結果も1592となったのですがb-x:a-x=d-x:c-xに代入してやると
(22000-x):(1800-x)=(2000-x):(450-x)で内側と外側をかけて
3600000-1800x-2000x+x^2=9900000-22000x-450x+x^2
3600000-3800x=9900000-22450x
18650x=6300000
x=338となり結果が違うのですが計算方法が間違っているかもしれません;

269 :デフォルトの名無しさん:2009/04/28(火) 07:33:49
プログラムの結果は1592ではなく-1592に訂正を;

270 :デフォルトの名無しさん:2009/04/28(火) 07:59:58
>>268
>>258,259にそのパラメータ入れたら
x=337って出てくるけど。

271 :デフォルトの名無しさん:2009/04/28(火) 08:27:59
>>270
そうですか・・・処理系に依存するようなところはないと思うので誤字など
ないか確認してみます。
回答ありがとうございます<(_ _ )>

272 :デフォルトの名無しさん:2009/04/28(火) 08:32:10
>>268
x=(a*d-b*c)/(a-b-c+d)

x=337.80160857908847184986595174263
が正解じゃね?

>a*b=39600000
これがおかしい。a*dと間違えてる

273 :デフォルトの名無しさん:2009/04/28(火) 09:31:55
>>267
>[2] 実行例のように表示されるプログラムを作製せよ。
要求を満たしているので、これで良いのではないかな。

>もう少しシンプルになりませんでしょうか?
何を使えとか、何を使うなとか、要求を具体的に書いてみて。


274 :デフォルトの名無しさん:2009/04/28(火) 09:52:41
>>273

課題文をフルで書いてみます。
課題1
実行例のように、二つの整数を入力し、和・差・積・商・剰余の下一桁を表示するプログラムを作成しなさい。
ヒント:下一桁=10で割った余りです。

課題2
実行例のように、身長を整数値として入力し、標準体重を実数値で表示するプログラムを作成しなさい。標準体重は(身長-100)*0.9によって求め、その小数点以下は、一桁だけ表示すること。明示的な変換を使用すること。

恐らく1はprintf関数とscanf関数と剰余演算子です。

2はあまりよくわからないですが、変換指定に%fを使用するものだと思います。

275 :デフォルトの名無しさん:2009/04/28(火) 11:03:52
誤解を解くのも説明するのも面倒だからそのまま出しとけよ。
題意は満たしてるんだし。

276 :デフォルトの名無しさん:2009/04/28(火) 11:20:29
[1] 授業単元:プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9106.txt
[3] 環境
 [3.1] Linux
 [3.2] emule
 [3.3] C言語
[4] 4月29日の17:00まで
[5] ポインタの問題です。今回初めてポインタを習ったのでよくわかっていません
問題は原文そのままです

277 :デフォルトの名無しさん:2009/04/28(火) 11:55:39
>>274 BMIは同じ修正なので省略します。
#include <stdio.h>
int main()
{
  int a, b;

  printf("A?");
  for(;;) {
    if(scanf("%d", &a)) break;
    scanf("%*s");
  }
  printf("B?");
  for(;;) {
    if(scanf("%d", &b)) {
      if(!b) {
        printf("0で割りました");
        return 1;
      }
      break;
    }
    scanf("%*s");
  }
  printf("\n");
  printf("A+B = %d\n",(a+b)%10);
  printf("A-B = %d\n",(a-b)%10);
  printf("A*B = %d\n",(a*b)%10);
  printf("A/B = %d\n",(a/b)%10);
  printf("A%B = %d\n",(a%b)%10);
  return 0;
}

278 :デフォルトの名無しさん:2009/04/28(火) 12:48:32
>>244 さんのを借り
#include <stdio.h>
#include <stdlib.h>
int Factorial(int k)
{
  char ans=1,i,temp;

  if(k == 0)
    return 1;
  for(i=k;i>0;i--) {
    temp = ans;
    ans *= i;
    if(temp>ans) return 0;
  }
  return ans;
}
int comb(int n, int r)
{
  int a1, a2, a3;

  if(!(a1 = Factorial(n))) return 0;
  if(!(a2 = Factorial(r))) return 0;
  if(!(a3 = Factorial(n-r))) return 0;
  return a1/a2/a3;
}
int main()
{
  int j, ans;
  for(j=0; ans=comb(j, j/2); j++)
    printf("%dC%d=%d\n", j, j/2, ans);
}

279 :デフォルトの名無しさん:2009/04/28(火) 15:01:33
[1] 授業単元:プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9108.txt
[3] 環境
 [3.1] Mac OSX
 [3.2] Eclipse C++
 [3.3] C++言語
[4] 4月30日の17:00まで
[5] ハフマン符号化の問題です。なかなかうまくいきません。。。
  宜しくお願いします。

280 :デフォルトの名無しさん:2009/04/28(火) 15:10:11
>>226
> (再帰的呼び出しを用いずに)
日本語が読めない人がいるようです

281 :デフォルトの名無しさん:2009/04/28(火) 16:57:09
再帰呼び出し:関数の中でその関数を呼び出すこと。
(間接)再帰的呼び出し:関数がその関数を呼び出す関数を(場合によっては
間接的に)呼び出すこと

282 :デフォルトの名無しさん:2009/04/28(火) 19:34:37
>>279
解こうと思ったけど、リストが中途半端なのでやめた

283 :デフォルトの名無しさん:2009/04/28(火) 19:55:04
アメリカまで行ってなにやってんだか

284 :261:2009/04/28(火) 21:22:03
>>266
ありがとうがざいます。

どなたかこちらもお願いいたします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9105.txt

285 :デフォルトの名無しさん:2009/04/28(火) 21:49:10
>>261
int getUserIP(const char *s, char *user, char *ip)
{
  int result = 0;//結果を格納する変数1なら正常終了、0なら異常終了
  char *p;

  if((p = strstr(s, "Accepted password for ")) != NULL){
    p += 22;//22は"Accepted password for "の長さ これでpはユーザ名の先頭文字を指し示す
    while (*p != '\0'){
      if(/*1 カ*/isspace(*p)){//現在の文字(*p)がスペースならユーザ名の終了
        *user = '\0';//ターミネータを書き込む
        break;
      }
      /*2 オ*/*user++ = *p++;//*sから*userに文字をコピーする
    }
    if((p = strstr(s, "from ::ffff:")) != NULL){
      p += 12;//12は"from ::ffff:"の長さ これでpはIPアドレスの先頭文字を指し示す
      while(*s != '\0'){
        if(/*1 カ*/isspace(*p)){//現在の文字列(*p)がスペースならIPアドレスの終了
          *ip = '\0';//ターミネータを書き込む
          /*3 ク*/result = 1;//正常終了
          break;
        }
        /*4 イ*/*ip++ = *p++;//*sから*ipに文字をコピーする
      }
    }
  }
  return result;
}

286 :279です:2009/04/28(火) 22:32:13
ハフマン(279)のものです。
符号の例を記号をすべてとアルファベット大文字小文字(先頭と後尾)を付け加えました。
宜しくお願いします。

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


287 :あんたがたハフマン:2009/04/28(火) 22:43:05
282はなんか勘違いしてるんだと思うYo!

288 :デフォルトの名無しさん:2009/04/28(火) 23:11:09
さすが マーチンファウラーお気に入りのベストパートナー
世界に羽ばたく
Ruby on Railsオフショアアジャイル開発
http://www.tech-arts.co.jp/news-and-topics/press-releases/20090427.html


289 :デフォルトの名無しさん:2009/04/28(火) 23:38:54
>>279 二分ヒープまでしかできなかった
template<class T>
class heap{
std::vector<T> data;
public:
int push(T x){
data.push_back(x);
for(int n=data.size();n>1 && data[n/2-1]<data[n-1];n/=2){
std::swap(data[n/2-1], data[n-1]);
}
return 1;
}
int pop(T& x){
if(!data.size()) return 0;
x=data[0];
std::swap(data[0], data[data.size()-1]);
data.pop_back();
for(int n=0;n<data.size()/2;){
int idx=n;
if(data[n]<data[n*2+1]) idx=n*2+1;
if((n*2+2)<data.size() && data[idx]<data[n*2+2]) idx=n*2+2;
if(idx==n) break;

std::swap(data[n], data[idx]), n=idx;
}
return 1;
}
};

290 :デフォルトの名無しさん:2009/04/29(水) 00:11:45
[1] 授業単元:プログラミング
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9111.txt
[3] 環境
 [3.1] Windos VISTA
 [3.2] bcc32
 [3.3] C言語
[4] 5月12日
[5] 台形公式を使って、関数sin(x)を0から180までを数値積分する問題です。
どうしても、うまくコンパイルならないのでよろしくお願いします。



291 :デフォルトの名無しさん:2009/04/29(水) 00:17:24
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
入力された数値の回数分だけ乱数を使ってコイン投げを行い,
表裏が出る枚数をカウントして表示させるプログラム を作りなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語: C++
[4] 期限: 4月30日午後12時まで

お手上げ状態です。
よろしくお願いします・

292 :デフォルトの名無しさん:2009/04/29(水) 00:37:04
>>286
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9112.cpp

293 :デフォルトの名無しさん:2009/04/29(水) 00:37:31
>>290
ちょっと変えすぎたかも試練が、答えは出る。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9113.txt

294 :デフォルトの名無しさん:2009/04/29(水) 00:48:24
>>293
どうも有難うございます。


295 :デフォルトの名無しさん:2009/04/29(水) 00:52:45
>>291
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
    int i, n, h = 0;
    printf("n = "), scanf("%d", &n);
    srand((unsigned)time(NULL));
    for(i = 0; i < n; i++) h += rand() % 2;
    printf("head: %d\ntail: %d\n", h, n - h);
    return 0;
}

296 :デフォルトの名無しさん:2009/04/29(水) 01:05:01
>>295
すごいですね。
ありがとうございました。
もしよかったら下の部分を詳しく教えてください
h += rand() % 2;

297 :デフォルトの名無しさん:2009/04/29(水) 01:07:45
表と裏が出る確率が50%ずつとは限らないんじゃないだろうか? とか言ってみる。

#include <iostream>
#include <cstdio>
#include <ctime>

int main()
{
  using namespace std;
  const double PH = 0.49;
  const double PT = 0.49;
  srand(static_cast<unsigned>(time(0)));

  int n, h = 0, t = 0;
  cin >> n;
  for(int i = 0; i < n; ++i )
  {
    double p = static_cast<double>(rand())/(RAND_MAX);
    if(p <= PH) ++h;
    else if(p <= (PH+PT)) ++t;
  }
  cout << "Heads:" << h <<" Tailes:" <<t <<endl;

  return 0;
}

298 :デフォルトの名無しさん:2009/04/29(水) 01:33:09
[1] 授業単元: C言語U
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9114.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 5月15日
[5] その他の制限
実行結果は表示されるのですか、警告が出ます。
どうやっても警告が消えないので、よろしくお願いします。



299 :デフォルトの名無しさん:2009/04/29(水) 02:13:40
警告をコピペしてくれないから何とも言えないが、return 0 にかえれば警告は出なくなるんじゃない?
しかしそれ以前に a の確保のしかたが違う気がする

300 :デフォルトの名無しさん:2009/04/29(水) 02:14:24
>>298
変数aとbをNULLで初期化した後、それを参照すること無くmallocで得られた値を代入してるから意味ないじゃんっていう警告。
要するにコンパイラのお節介。
無視するか、この種類の警告を出さないオプション「-w-8004」を付けてコンパイルすれば良い。

301 :デフォルトの名無しさん:2009/04/29(水) 02:21:10
>>299
すみません;;
警告をコピーするの忘れてました。

警告 W8004 21-1.c 44: 'b' に代入した値は使われていない(関数 main )
警告 W8004 21-1.c 42: 'a' に代入した値は使われていない(関数 main )

です;;



302 :デフォルトの名無しさん:2009/04/29(水) 02:24:53
初期化しなきゃいいじゃん。

303 :デフォルトの名無しさん:2009/04/29(水) 02:27:34
なぁ…

* sizeof(char)って、必要か?

sizeof(char)ってのは、1バイトを示すもんだろ?

304 :デフォルトの名無しさん:2009/04/29(水) 02:29:12
>>303
こちらへどうぞ

sizeof(char)が必ず1でも、省略すべきではない
http://pc12.2ch.net/test/read.cgi/tech/1187521586/


305 :デフォルトの名無しさん:2009/04/29(水) 02:32:37
警告 W8004 21-1.c 44: 'b' に代入した0は使われていない(関数 main )
警告 W8004 21-1.c 42: 'a' に代入した0は使われていない(関数 main )

306 :デフォルトの名無しさん:2009/04/29(水) 02:34:14
>>298
これはまずいんじゃ?
× a = malloc(STR_LENGTH * STR_NUMBER * sizeof(char));
○ a = malloc(STR_LENGTH * STR_NAME * sizeof(char));


307 :デフォルトの名無しさん:2009/04/29(水) 02:39:46
>>304
途中まで読んだ、ありがと。
うーん…議論するつもりはさらさら無いから、ノーコメントでいいわ。

>>301
俺の>>303は蒸しれ。

308 :デフォルトの名無しさん:2009/04/29(水) 02:41:36
私なら、aはポインタのポインタ、strcpyはポインタへの代入にしたい。

309 :デフォルトの名無しさん:2009/04/29(水) 02:43:39
今のままだとメモリー破壊する

310 :デフォルトの名無しさん:2009/04/29(水) 02:56:49
VS2008でコンパイルしたら、エラーが出てる。

error C2440: '=' : 'void *' から 'char (*)[6]' に変換できません。 46
error C2440: '=' : 'void *' から 'student *' に変換できません。 47


311 :デフォルトの名無しさん:2009/04/29(水) 03:37:21
>>298
CodeGuard掛けたらエラー出たぞ。下のはその一例な

Error 00001. 0x130410 (スレッド 0x0AD4):
アクセス オーバーラン: アドレス 0x00D74324 から 6
バイトを参照しました。 これは 4
バイトの長さしか確保されていない ヒープブロック
0x00D74324 に当たります。
intr_strcpy(0x004020DE ["AICHI"], 0x00D74324)

| dai1.c line 62:
| }
|
|> strcpy(a[0],"AICHI");
| strcpy(a[1],"GIFU");
|
呼び出し履歴:
0x00401230(=dai1.exe:0x01:000230) dai1.c#62
0x329C41EA(=CC3290MT.DLL:0x01:0C31EA)

メモリブロック(0x00D74324) [長さ: 4 バイト] は malloc
によって確保されました。
| dai1.c line 46:
| struct student *b = NULL;//確・ウれる記憶域・?アドレスを格納す・・?\造・?・定義する
|
|> a = malloc(STR_LENGTH * STR_NUMBER * sizeof(char));
| b = malloc(2 * sizeof(struct student));
|
呼び出し履歴:
0x004011E8(=dai1.exe:0x01:0001E8) dai1.c#46
0x329C41EA(=CC3290MT.DLL:0x01:0C31EA)

312 :デフォルトの名無しさん:2009/04/29(水) 03:54:52
>>310
それはVSでコンパイルしてるからじゃなくて、C++としてコンパイルしてるから出てるエラーだ。

313 :261:2009/04/29(水) 06:10:46
>>285
ありがとうございます

314 :デフォルトの名無しさん:2009/04/29(水) 06:59:22

delete a,b;
delete[] c,d;
って間違いですか?


315 :112:2009/04/29(水) 09:13:24
>>199の仕様ににするのは無理でしょうか?それとできれば平均到着率は入力できるようにしてもらいたいのですが・・

316 :デフォルトの名無しさん:2009/04/29(水) 10:41:46
>>276 K&R に載ってたような。
今日が締め切りだけど、「英単語 カウント C」で検索すると沢山出る。

317 :デフォルトの名無しさん:2009/04/29(水) 11:19:30
>>279
>>282
難問ですね。それはともかく、私の環境ではブラウザでみると文字化けしてしまうのですが、ここにはなにがかいてあるのですか?

318 :デフォルトの名無しさん:2009/04/29(水) 11:39:37
>>276
落とし穴(ピリオドの後ろに必ずスペースが必要)があるが、
設問の課題データ例のパターンなら大丈夫と思う。
表示法例では0回の時どうするか分からないので全て表示にした。

(3)+(2)の(a)
#include <stdio.h>
#include <stdlib.h>

int count[16];
void wordcount(char word[16])
{
int i = 0;
for (i = 0; i < 16; i++) { if (word[i] == '.' || word[i] == 0) { break; } }
count[i]++;
}
int main()
{
char buf[16]; int i;
while (1) {
scanf("%15s%*c", buf);
if (buf[0]=='*' || buf[0] == 0) { break; }
wordcount(buf);
}
printf("文字数   出現回数\n");
for (i = 1; i < 16; i++) { printf("  %2d     %3d\n", i, count[i]);}
return 0;
}


319 :デフォルトの名無しさん:2009/04/29(水) 11:40:41
(3)+(2)の(b)
#include <stdio.h>
#include <stdlib.h>

int count[16];
void wordcount(char *word)
{
int i = 0;
for (i = 0; i < 16; i++) { if (*(word+i) == '.' || *(word+i) == 0) {
break; } }
count[i]++;
}
int main()
{
char buf[16]; int i;
while (1) {
scanf("%15s%*c", buf);
if (buf[0]=='*' || buf[0] == 0) { break; }
wordcount(buf);
}
printf("文字数   出現回数\n");
for (i = 1; i < 16; i++) {
printf("  %2d     %3d\n", i, count[i]);
}
return 0;
}



320 :デフォルトの名無しさん:2009/04/29(水) 12:02:59
>>317
文字コードがUTF-8みたい

321 :316:2009/04/29(水) 13:16:00
>>199 1で正規化→1固定と解釈
/* 処理中のサービスがなければ開始 */
// EventManager_addEvent(&mgr, EVENT_SERVICE_FINISH, e.time + (Time)(exp_random(serviceRate)*SECOND));
EventManager_addEvent(&mgr, EVENT_SERVICE_FINISH, e.time + (Time)( SECOND));

322 :デフォルトの名無しさん:2009/04/29(水) 21:33:36
誘導されて来たけどyacc、lex(C言語も含まれてる)の課題はここで聞いても大丈夫でしょうか?
聞いても良さそうなら質問テンプレ使ってもう一度書き込みます

一応向こうで書いた内容も貼っておきます。
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/26-
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/29-30
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/32

323 :276:2009/04/29(水) 22:27:31
>>316 >>318 >>319
ありがとうございました。
なんとか期限に間に合いました


324 :デフォルトの名無しさん:2009/04/29(水) 23:56:54
テンプレを使って再度書き込みします。
場違いなら指摘して頂けると嬉しいです。

【質問テンプレ】
[1] 授業単元:コンパイラ
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9116.txt
http://up2.viploader.net/upphp/src/vlphp248458.png
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc? バージョンはよく分かりません。すみません
 [3.3] 言語: C/lex/yacc
[4] 期限: 09/4/30
[5] その他の制限:特には無いと思います

325 :324:2009/04/29(水) 23:59:05
連レスすみません。>>324>>322です。
一度他スレに書き込んで誘導されて来ました。
http://takeshima.2ch.net/test/read.cgi/news4vip/1240983045/26-

326 :デフォルトの名無しさん:2009/04/30(木) 00:39:17
>>322 俺には、むり。Cじゃないし。 /unix/ yacc & lex
http://pc12.2ch.net/test/read.cgi/unix/1031801314/1

327 :デフォルトの名無しさん:2009/04/30(木) 01:15:15
>>326
レスと誘導ありがとう
やっぱりそうですよね…どうしようかな…

328 :デフォルトの名無しさん:2009/04/30(木) 07:16:51
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9117.txt
(1)上記の関数は抜ける前にcoutをフラッシュするつもりで書かれている。
このフラッシュは保証されているか?もし保証されていなければどのようにすれば修正出来るか。
※func2とfunc3の内容はわからないものとする。
(2)もし仮にstd::cout << func3()の箇所をstd::cout << func1();とした場合、
再帰的に自分自身を永遠に呼び出し続けるか、それとも関数呼び出しが終わる事が保証されているか。
理由も含めて答えよ。
[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] G++
 [3.3] 言語:C++
[4] 期限: 09/4/30中
[5] その他の制限:
特に無し

329 :デフォルトの名無しさん:2009/04/30(木) 14:19:24
なぜ「++Cでなく」C++と名付けられたのか、その理由を答えよ、というクイズ問題が出題されました。
グーグルを駆使しているのですが答えが見つかりません。どなたかわかった人は教えて下さい。よろしくおねがいします

330 :デフォルトの名無しさん:2009/04/30(木) 14:32:28
何かにCを加えるのではなく、Cを拡張したからこそ後に何かを足すといった
勝手に想像してみるテスト。そんなの、C++開発者の公式サイトを見た方が早い。

331 :デフォルトの名無しさん:2009/04/30(木) 14:33:57
ttp://ja.wikipedia.org/wiki/C%2B%2B
ストロヴストルップはC with Classesの開発を1979年に開始した。
1983年にはC with ClassesからC++に名称を変更した。

332 :デフォルトの名無しさん:2009/04/30(木) 15:07:38
>>329
C++Primerという本の、回答編(?)という本に載ってたはず。

333 :デフォルトの名無しさん:2009/04/30(木) 17:34:36
var=1, ans=++var; // ans = 2, var = 2
var=1, ans=var++; // ans = 1, var = 2

++Cを評価すると、C の値に1増加と為り、
C++を評価すると、C の内容と同じ値に為るから。
つまり、[                   ]
by 10点

334 :デフォルトの名無しさん:2009/04/30(木) 20:01:43
Cとの互換性があるよってことか

335 :デフォルトの名無しさん:2009/04/30(木) 20:52:49
Bjarne Stroustrup's FAQ の Where did the name "C++" come from?
http://public.research.att.com/~bs/bs_faq.html#name

参考文献となっている [Orwell,1949]
http://www.ministryoflies.com/1984.pdf

残念ながらどこが面白いのか私には分からなかった。

336 :329:2009/05/01(金) 00:49:46
Where did the name "C++" come from?にはむしろ「++Cの方がC++より優れていると考える目利きもいる」と書いてあり、
Orwell,1949には一切ネーミングについて++Cの話は出て来ませんでした。
>>333
の話がどこかに載っているといいのですがインターネット上にありますか?

337 :328:2009/05/01(金) 00:57:27
どなたかお願いできないでしょうか?

338 :デフォルトの名無しさん:2009/05/01(金) 04:45:23
>>337
あってるか知らないけど。

1.保証されない。
try{
// 略
} catch (...) {
std::cout << std::flush;
}
2.保証されない
再帰呼び出しを行ってスタックオーバーフローをおこし、プログラムが終了する

339 :328:2009/05/01(金) 05:10:39
>>338
(1)すみません よくわからないのですが全文かいていただけないでしょうか
(2)std::cout << "aiueo";の後とfunc2()の後でflushを付け加えたのですがそれでもスタックオーバーフローになります
flushすればバッファがたまっていかないのでメモリがいっぱいになることもなく、したがって永遠にループするかと思ったのですが。なぜスタックオーバーフローになるのでしょうか?

340 :286です。:2009/05/01(金) 06:23:11
みなさんご協力ありがとうございます。
お礼が遅れて申し訳ありませんでした。
292の方からご提供いただいた、ソースの二分木がうまく動きません。
例えばbだとしたら1111111・・・の連続で正しいコードが出てきません。
多分全部木のノードが右に付いていっているんだと思います。
どなたか直せる方いたら宜しくお願いします。
これに悩んで二日寝てません・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9118.txt

341 :デフォルトの名無しさん:2009/05/01(金) 06:47:34
>>328
(1)保証される。よって修正したソースは不要。
(2)再帰から抜ける条件が無いため、無限に再帰動作する。
(3)永久ループと無限再帰はメモリの消費が異なるため。

342 :デフォルトの名無しさん:2009/05/01(金) 13:35:07
>>340
雪印の社長みたいだな

343 ::2009/05/01(金) 13:57:16
これわかりますか?
キーボードから 3整数を読みこみ、これを三辺の長さとする三角形が成立するかどうかがわかる
プログラムを論理演算子を用いて作りなさい

わかったらお願いします!

344 :デフォルトの名無しさん:2009/05/01(金) 14:12:42
>>340
top->left = new binary_tree();
top->right = new binary_tree();
top->ch = 0;
(top->left)->left = (top->left)->right = NULL;
(top->right)->left = (top->right)->right = NULL;
(top->left)->ch = pq.top().ch, pq.pop();
(top->right)->ch = pq.top().ch, pq.pop();
length = 2;
以上を↓こうしてみたら?
top->left = new binary_tree();
top->right = new binary_tree();
top->ch = pq.top().ch, pq.pop();
length = 1;



345 :デフォルトの名無しさん:2009/05/01(金) 14:16:13
>>340
#include <iostream>
using std::cin;
using std::cout;
int main(void) {
  int a, b, c;
  cout <<"Input a b c length:";
  cin >> a >> b >> c;
  if(a+b <= c || a+c <= b || b+c <= a)
    cout << "三角形にはなりません\n";
  else
    cout << "三角形です\n";
}

346 :デフォルトの名無しさん:2009/05/01(金) 15:31:55
>>340
おやすみ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9120.txt

347 :デフォルトの名無しさん:2009/05/01(金) 16:17:54
[1]授業単元:データ構造
[2]問題文:素因数分解です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9119.txt
[3]環境
[3.1]OS:Windoxs
[3.2]gccだと。バージョンは覚えてないです
[3.3]言語:C
[4]期限:5月4日
[5]その他の制限:基本的なことは習いましたが2年前なのであやふやで
すいません。

348 :デフォルトの名無しさん:2009/05/01(金) 16:24:53
麿のクソースが発動できないでおじゃるっ!早くリストの問題を出すでおじゃる!

349 :デフォルトの名無しさん:2009/05/01(金) 17:03:37
>>347 問1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX_VAL 100000
#define REPEAT_NUM 1000
int count_prime(int max_val) {
int *a = calloc(max_val, sizeof(int)), i, j, count = 0;
for (i = 2; i <= max_val; i ++) {
if (a[i-1] == 0) {
count ++;
for (j = i * 2; j <= max_val; j += i) a[j-1] = 1;
}
}
free(a);
return count;
}
int main() {
clock_t start_time, end_time;
int num, i;
start_time = clock();
for (i = 0; i < REPEAT_NUM; i ++) num = count_prime(MAX_VAL);
end_time = clock();
printf("Number of primes=%d\n", num);
printf("Elapsed time=%gsec\n", (end_time - start_time) / (double)CLOCKS_PER_SEC / REPEAT_NUM);
return 0;
}

350 :デフォルトの名無しさん:2009/05/01(金) 17:10:58
347(1)解答45分ですた。

351 :デフォルトの名無しさん:2009/05/01(金) 17:20:50
>>347 問2
#include<stdio.h>
#include<stdlib.h>
#define MAX_VAL 100000
int *make_primes(int max_val, int *num) {
int *a = calloc(max_val, sizeof(int)), i, j, count = 0, *primes;
for (i = 2; i <= max_val; i ++)
if (a[i-1] == 0) { count ++; for (j = i * 2; j <= max_val; j += i) a[j-1] = 1; }
primes = malloc(count * sizeof(int));
for (i = 2, count = 0; i <= max_val; i ++) if (a[i-1] == 0) primes[count++] = i;
free(a); *num = count; return primes;
}
void factorize(int k, const int *primes, int prime_num) {
int i, r;
printf("入力整数=%dは", k);
for (i = 0; i < prime_num; i ++)
if (k % primes[i] == 0) {
for (r = 0; k % primes[i] == 0; r ++) k /= primes[i];
printf("\n %dの%d乗", primes[i], r);
}
printf("の積で表現される。\n");
}
int main() {
int prime_num, *primes = make_primes(MAX_VAL, &prime_num);
factorize(12345, primes, prime_num);
factorize(23456, primes, prime_num);
factorize(34567, primes, prime_num);
factorize(45678, primes, prime_num);
factorize(56789, primes, prime_num);
free(primes);
return 0;
}

352 :デフォルトの名無しさん:2009/05/01(金) 18:00:30
篩ならj=i*2じゃなくてj=i*iってしなよ

353 :デフォルトの名無しさん:2009/05/01(金) 21:00:21
おう、なるほどな。

354 :340です。:2009/05/01(金) 23:21:05
毎度ありがとうございます。
B&Rしてみましたが、残念ながらツリーがやはり正しくありません。
ご協力ありがとうございました!!もうちょい粘ってみます!!
2チャンネラーが神々しく見えてきた・・・

355 :デフォルトの名無しさん:2009/05/02(土) 00:16:57
>>352
j=i*i であるべきだけど max_val の値によってオーバーフローするから
プログラム的には i*2 が悪いわけではない

356 :デフォルトの名無しさん:2009/05/02(土) 00:33:41
for(i=2; i*i<=max_val; i++) {
if(a[i]==0) {
count++;
for(j=i*i; j<=max_val; j+=i) a[j] = 1;
}}
for(; i<=max_val; i++) if(a[i]) count++;
オーバーフロー気にするならわければいい。

357 :デフォルトの名無しさん:2009/05/02(土) 02:25:15
[1] 授業単元:Cプログラミング言語
[2] 問題文:
問題1
(平年の)1年は何時間か
を計算して表示するプログラムを
作ってみましょう。

[3] 環境
 [3.1] OS:Windows
 [3.2] めじろ
 [3.3] C言語?です
[4] 期限:明後日までです・・・・

よろしくおねがいします

358 :デフォルトの名無しさん:2009/05/02(土) 02:29:20
>>357
main(){printf("%d",365*24);}

359 :デフォルトの名無しさん:2009/05/02(土) 02:31:39
>>358

ありがとうございます。本当にありがとうございます。感謝です。

360 :デフォルトの名無しさん:2009/05/02(土) 02:37:37
[1] Cプログラミング言語
[2] キーボードから整数を読み込んで
(計算せずにそのまま)表示する
プログラムを作っりなさい。
[3.1] OS:Windows
[3.2] めじろ
[3.3] C言語です
[4] 期限:明後日までです・・・・

まだまだあります・・・。
ある程度は参考書みて頑張ります・・・。少しだけ助けてください・・・。
みなさんすごすぎです・・・・

361 :デフォルトの名無しさん:2009/05/02(土) 02:44:20
#include <stdio.h>

int main(void)
{
int n;

scanf("%d", &n);
printf("%d", n);

return 0;
}

362 :デフォルトの名無しさん:2009/05/02(土) 02:54:52
>>361

本当にありがとございます。
心から感謝しています。
これは初心者レベルなのでしょうか?
初心者レベルでわからない私は一体・・・・。

363 :デフォルトの名無しさん:2009/05/02(土) 02:59:54
[1] Cプログラミング言語
〔2〕
ツルの数とカメの数を読み込んで
足の数を計算するプログラムを作
ってみましょう

(平年の)1年は何週間と何日か
を計算して表示するプログラムを
作ってみましょう。

1億の1万倍がいくつになるかを
計算するプログラムを作り、実行
して、その結果を報告して下さい。

[3.1] OS:Windows
[3.2] めじろ
[3.3] C言語です
[4] 期限:明後日までです。これが最後です。お願いします。

364 :デフォルトの名無しさん:2009/05/02(土) 03:09:03
#include <stdio.h>

int main(void)
{
int c, t;

printf("鶴の数:");
scanf("%d", &c);
printf("亀の数:");
scanf("%d", &t);

printf("足の数:%d",c*2+t*4);

return 0;
}

365 :デフォルトの名無しさん:2009/05/02(土) 03:36:32
>.364様

本当にありがとうございます。
感謝です。 すごいですね、本当に。 私にはただの記号にしかみえません

366 :デフォルトの名無しさん:2009/05/02(土) 04:57:19
#include <stdio.h>

int main(void)
{
int d, w;

for(d = 365,w = 0; d >= 7; d -= 7) w++;

printf("一年は%d週と%d日\n", w, d);

return 0;
}

367 :デフォルトの名無しさん:2009/05/02(土) 05:30:46
>>366

本当にありがとうございます。
少しづつですが、なんとなくどのようなものかわかってきました。
 あたしの実力では一番最初のが限界ですがwww

本当にありがとうございます。

368 :デフォルトの名無しさん:2009/05/02(土) 11:08:10
[1] C言語実習
[2] Windowsに付属しているカードゲーム「フリーセル」を自動的に解くプログラム。
[3.1] Windows
[3.2] gcc
[3.3] C言語
[4] 期限:5月10日

enum SUIT { SPADE, HEART, DIAMOND, CLUB };
typedef struct tagCARD { char suit, number; } CARD;

369 :デフォルトの名無しさん:2009/05/02(土) 11:39:19
#include <stdio.h>

int main(void)
{
int n;
n = 100000000;
n *= 10000;
printf("%d\n", n);
return 0;
}

370 :デフォルトの名無しさん:2009/05/02(土) 11:41:18
オーバーフロー

371 :デフォルトの名無しさん:2009/05/02(土) 12:42:39
>>370
気合でなんとかしろ

372 :デフォルトの名無しさん:2009/05/02(土) 13:03:37
>>363_3 >>363 >>363.3
#include <stdio.h>
int main(){
  int yukiti=10000;float yukiko=(float)yukiti; double choo;
  choo=yukiko*yukiko*yukiko;
  printf("%.0f.\n", choo);

  choo/=10000.; /* 1万以下端数四捨五入 */
  if((int)choo%10000 == 0) {
    choo/=10000.;
    if((int)choo%10000 == 0) {
      printf("%.0f.兆\n", choo/10000.);
    } else
      printf("%.0f.億\n", choo);
  } else
    printf("%.0f.万\n", choo);
}

373 :デフォルトの名無しさん:2009/05/02(土) 13:12:48
main() { printf("%.0f\n", (double)100000000 * 10000); }


374 :デフォルトの名無しさん:2009/05/02(土) 13:57:36
代入すると精度が落ちるが、代入さえしなけければ(float)でもかまわない。
#include <stdio.h>
int main() { printf("%.0f\n", 100000000*10000.); }

375 :デフォルトの名無しさん:2009/05/02(土) 14:39:00
printf("%d億\n", 1*10000);

376 :デフォルトの名無しさん:2009/05/02(土) 18:02:24
>>368
TASでもやろうってのかい?

ttp://www.nicovideo.jp/watch/sm6240927

377 :デフォルトの名無しさん:2009/05/02(土) 19:09:16
>>356
for(i=2; i*i<=max_val; i++) {
if(a[i]==0) {
count++;
for(j=i*i; j<=max_val; j+=i) a[j] = 1;
}}
for(; i<=max_val; i++) if(a[i]==0) count++;

378 :デフォルトの名無しさん:2009/05/03(日) 00:12:06
>>376
その意味の「自動的に解く」ならあんなenumとか書かない気がする。

379 :デフォルトの名無しさん:2009/05/03(日) 01:17:36
>>378
enum って c++ からじゃないの?

画像認識とWinAPIでマウスを動かせば
できないことも無いと思うけど・・・

380 :デフォルトの名無しさん:2009/05/03(日) 01:50:58
>enum って c++ からじゃないの?
アホだw

381 :デフォルトの名無しさん:2009/05/03(日) 02:35:04
初期条件をどうするかな。
10日期限だと画像認識は無理だろう。
知らなかったかもしれないが、
enumはCからあるよ。

382 :デフォルトの名無しさん:2009/05/03(日) 08:44:55
画像認識だとAのスートが開始時に確定しないからちょっとめんどいな。

>>368
制限として明記されていないが、そのenumとstructは使えという指示?
それとも自分で定義したもので他の方法でできるなら使わなくて良い?


383 :382:2009/05/03(日) 09:03:28
> 画像認識だとAのスートが開始時に確定しないからちょっとめんどいな。
右クリックで出るのに今気づいたorz

384 :デフォルトの名無しさん:2009/05/03(日) 13:20:38
>>382
使えということです。

385 :デフォルトの名無しさん:2009/05/03(日) 15:59:26
C言語の課題で
「整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し、少数ならば「整数を入力してください」と表示するプログラムを作れ」という課題が出ました
最初の「整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し」のところは自力でできたのですがそのあとの「少数ならば」のところができません。
しかも授業で習った範囲でしか使ってはいけないのでelseなどは使ってはいけないと言われています。どなたか教えていただけないでしょうか?

これが途中までのプログラムです。
#include<stdio.h>
int main()
{
double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
if(1<=x){
if(9>=x){
printf("桁数は1ケタです\n");
}
}
if(10<=x){
if(99>=x){
printf("桁数は2ケタです\n");
}
}
(これが9ケタになるまで続く(長くなるから省略)
return(0);
}

386 :デフォルトの名無しさん:2009/05/03(日) 16:07:19
>>385
ですがテンプレ忘れていました。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 整数部分が9ケタ以内の正の数を入力させ、もしその数が整数ならばケタ数を表示し、少数ならば「整数を入力してください」と表示するプログラムを作れ
[3] 環境
 [3.1] Windows/vista
 [3.2] わからないです
 [3.3] C++
[4] 期限: ([2009年5月6日10:00まで]
[5] その他の制限:elseなどを使わない。(doubleやintなどを駆使してやるように言われました。



387 :デフォルトの名無しさん:2009/05/03(日) 16:08:50
少数→小数

388 :デフォルトの名無しさん:2009/05/03(日) 16:17:02
>>385
int xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}


389 :デフォルトの名無しさん:2009/05/03(日) 16:24:19
>>388
そのint xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
のプログラムは
intxx=x;をdouble x;の後ろに作り
if (x - xx > 0) {
printf("整数を入力してください\n");
return (0);
}
をif(100000000<=x){
if(999999999>=x){
printf("桁数は9ケタです\n");
}
}
の後ろに作るということでしょうか?


390 :デフォルトの名無しさん:2009/05/03(日) 16:32:01
>>389
scanfしている行の次に入れる。

391 :デフォルトの名無しさん:2009/05/03(日) 16:39:21
390>>
scanfしている行の次に入れる。ということは
#include<stdio.h>
int main()
{
double x;
int xx = x;

printf("九桁以内の正の数を入力しなさい\n"); scanf("%d",&x);
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}
ということですか・・・?エラーが出てしまうのですが・・たびたび質問してすいません。

392 :デフォルトの名無しさん:2009/05/03(日) 16:50:01
>>391
xxへはscanfした結果を代入。
この後に、桁数表示する処理を入れる。
エラーになるときは、その表示内容も書いてくれ。
コンパイラ名も。

393 :デフォルトの名無しさん:2009/05/03(日) 17:08:45
>>392 こんな感じですか・・?
#include<stdio.h>
int main()
{
double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
int xx = x;
if (x - xx > 0) {
printf("整数を入力してください\n");
return 0;
}

if(1<=x){
if(9>=x){
printf("桁数は1ケタです\n");
}
}
if(10<=x){
if(99>=x){
printf("桁数は2ケタです\n");
}
}
以下9桁まで省略
return(0)
} この状態でデバッグなしで開始すると このようなエラーが
「c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(6) : warning C4996: 'scanf': This function or variable may be unsafe.
Consider using scanf_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。
c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(7) : error C2143: 構文エラー : ';' が '型' の前にありません。
c:\users\niibori\documents\visual studio 2008\projects\課題3.c\課題3.c\課題3.c(8) : error C2065: 'xx' : 定義されていない識別子です。


394 :デフォルトの名無しさん:2009/05/03(日) 17:21:37
>>393
double x;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
int xx = x;
この箇所を

double x;
int xx;
printf("九桁以内の正の数を入力しなさい\n"); scanf("%lf",&x);
xx = x;
にして

395 :デフォルトの名無しさん:2009/05/03(日) 17:27:11
>>394
できました!
こうやって作るんですね。。
本当にありがとうございました!

396 :デフォルトの名無しさん:2009/05/03(日) 20:43:13
[1] 授業単元:
[2] 問題文(含コード&リンク):

int型の数値を文字列に変換する関数を自作せよ。(itoa関数の自作)

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

397 :デフォルトの名無しさん:2009/05/03(日) 20:46:41
麻呂回答禁止問題

398 :デフォルトの名無しさん:2009/05/03(日) 21:25:01
>>396

char *myitoa(int n)
{
int i, m, flag = 0;
char *p;

if(n==0) {
p = calloc(2,1);
p[0] = '0';
return p;
}
if(n < 0) {
flag = 1;
n *= -1;
}

for(i=0,m=n; m; i++, m/=10);

i += flag;

p = calloc(i+1,1);

while(n) {
p[--i] = n % 10 + '0';
n /= 10;
}

if(flag) p[0] = '-';

return p;
}

399 :デフォルトの名無しさん:2009/05/03(日) 23:35:02
>>397
必死でおじゃるなw

400 : ◆OJaRUZbRRo :2009/05/03(日) 23:52:46
なぜに禁止するでおじゃる?

401 :デフォルトの名無しさん:2009/05/04(月) 00:17:26
皆が皆クソースが好きとは限らない

402 :デフォルトの名無しさん:2009/05/04(月) 00:32:26
>>398がクソースではない根拠は?

403 :デフォルトの名無しさん:2009/05/04(月) 00:38:02
やはり麻呂を目の敵にする、劣等感を感じた低レベル講師の僻みかw

404 :デフォルトの名無しさん:2009/05/04(月) 00:45:32
ttp://www.usefullcode.net/2007/02/int2string.html
なぁ〜にぃ〜!やっちまったな!

405 :A欄既卒 ◆iD93.8lby6 :2009/05/04(月) 01:02:17
>>398
while() の範囲が
実に見事である。

90点

406 :デフォルトの名無しさん:2009/05/04(月) 01:20:28
大学名も書かずにA欄とか言われても、警察でもないのに
警察のコスチュームで警察を名乗っているのとなんら変わらないんだけど?w
手帳も偽造ですか?そういうのは国家が証明してくれるんで、お墨付きの
証明書を提示して名乗りなさい。もちろん、それが証明されているということは
実力もあるわけだから、こんな場所で油を売るなんて、普通はしませんよねぇ〜?w

407 :A欄既卒 ◆iD93.8lby6 :2009/05/04(月) 02:01:17
旧帝以外のレスでは
おれにダメージを与えられない (´・ω・`)

408 :デフォルトの名無しさん:2009/05/04(月) 02:05:01
ν速でやれ

409 :デフォルトの名無しさん:2009/05/04(月) 02:05:26
>>404
相変わらず引用元が理解できてないな

410 :デフォルトの名無しさん:2009/05/04(月) 02:19:26
>>398
#include <stdio.h>
char *myitoa(int n);
int main() {
puts(myitoa(0x80000000));
}
char *myitoa(int n)
{
  int i, m, flag = 0;
  char *p;
  if(n==0) {
    p = calloc(2,1);
    p[0] = '0';
    return p;
  }
  if(n < 0) flag = -1;

  for(i=0,m=n; m; i++, m/=10);
  i -= flag;
  flag += flag + 1;
  p = calloc(i+1,1);
  while (n) {
    p[--i] = flag*(n % 10) + '0';
    n /= 10;
  }
  if(flag == -1) p[0] = '-';
  return p;
}

411 :デフォルトの名無しさん:2009/05/04(月) 02:45:03
printf("%d", 0x80000000);

412 :デフォルトの名無しさん:2009/05/04(月) 05:25:43
>>396
char *myatoi(int n)
{
char buf[20+1]="", *p=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1;

*--p='0'+abs(n%10);

if(n<0) sign=-1,n=-(n/10);
else n/=10;

for(;n!=0;n/=10)
{
*--p='0'+n%10;
}
if(sign==-1) *--p='-';
return strdup(p);
}

413 :412:2009/05/04(月) 06:22:08
>>412 の修正
負数に対する除算の丸め方向が違っても大丈夫なように変更
// (-1)/10 の結果は (0 余り -1) もしくは (-1 余り 9) のいずれか
char *myatoi(int n)
{
char buf[20+1]="", *p=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1, m;

if(n<0) sign=-1;
m=(10+sign*(n%10))%10;

*--p='0'+m;

for(n=sign*(n-sign*m)/10;n!=0;n/=10)
{
*--p='0'+n%10;
}
if(sign==-1) *--p='-';
return strdup(p);
}

414 :デフォルトの名無しさん:2009/05/04(月) 10:18:58
char*を返すのはやめろ
>>398みたいなバカが使うとメモリリークするぞ

415 :デフォルトの名無しさん:2009/05/04(月) 10:58:45
>>413
例えば:-13/10=-1 あまり -3
    -9/10=0 あまり -9

416 :デフォルトの名無しさん:2009/05/04(月) 11:48:05
あのソースに90点評価をしてしまったA欄(笑)
お前はせいぜい学ラン止まりだろw

417 :デフォルトの名無しさん:2009/05/04(月) 16:12:45
ヽ(`Д´)ノ

418 :デフォルトの名無しさん:2009/05/04(月) 16:23:25
>>415
ほとんどのアーキテクチャでは
整数除算の商を 0 方向に丸めるっぽい

商を値の小さい方に丸めるアーキテクチャってのが
どういうところで使われているのか知りたいくらい

419 :デフォルトの名無しさん:2009/05/04(月) 16:49:41
質問です。

[1] 授業単元:コンピュータ基礎とプログラミング
[2] 問題文(含コード&リンク):URLもありますが、課題は紙で渡されました。
  http://ipl.sfc.keio.ac.jp/text/com-pro-2009-4/main_c3_s1.html#doc1_id900
[3] 環境
 [3.1] OS: (Windows/Linux/等々) MAC
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Emacs
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C++
[4] 期限:2009/05/06まで
[5] その他の制限:#include <iostream> から始めないといけないそうです

2のURLは授業でやったことで、宿題はそれをさらに発展させた形で出ました。
その課題の問題文なんですが
「3の倍数と3を含む数」を入力すると「アホ」と出るようなプログラムを作れ というものです。
if文の中にi % 3 == 0 || i % 10 == 3は入れて、3の倍数と1の位が3の時はアホと出るようには既になっているのですが
333334や5300といった、「3の倍数ではないけれども3が含まれる数」全てでアホと出るようにしたいです。
よろしくお願いします。

420 :デフォルトの名無しさん:2009/05/04(月) 16:56:26
>>418
対称性から考えたら、被除数と除数の符号がどうであっても
その両者が正であるときの「商と余り」と絶対値が等しいように商と余りを定める方が直感的だが

余りは常に非負とする、という考えもありえなくは無いな
アーキテクチャというか実装レベルでどちらを採用しているかなんかは知らない

421 :デフォルトの名無しさん:2009/05/04(月) 17:03:11
>>419
前スレにある >>144

見れないかもしれないのでログ
http://www.23ch.info/test/read.cgi/tech/1235927586/

422 :デフォルトの名無しさん:2009/05/04(月) 17:08:52
ttp://www5c.biglobe.ne.jp/~ecb/c/15_03.html
char* itoa( int n, char* p, int d );
文字列として格納するchar型の配列が必要なようだが?

423 :デフォルトの名無しさん:2009/05/04(月) 17:18:23
こんな感じか
char *myatoi(int n, char *p, int d)
{
static const char symbol[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buf[40+1]="", *q=&buf[sizeof(buf)/sizeof(buf[0])-1];
int sign=1, m;

if(d<2 || d>10+26 || p==NULL) return p;
if(n<0) sign=-1;
m=(d+sign*(n%d))%d;

*--q=symbol[m];

for(n=sign*(n-sign*m)/d;n!=0;n/=d)
{
*--q=symbol[n%d];
}
if(sign==-1) *--q='-';
return strcpy(p, q);
}

424 :デフォルトの名無しさん:2009/05/04(月) 17:20:29
>>423
if(d<2 || d>10+26 || p==NULL) return p;

if(d<2 || d>10+26 || p==NULL) return NULL;

425 :デフォルトの名無しさん:2009/05/04(月) 18:55:02
>>421
有難う御座います。参考にしてなんとか頑張ってみます

426 :デフォルトの名無しさん:2009/05/04(月) 20:46:12
[1] 情報工学演習
[2] 盤にあらかじめいくつかの数字が配置されている状態から
4*4の数独を解けるかどうかを判定する関数の作成。
解ける場合、いずれかの最終盤面を印字する。
コード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9122.c
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C++
[4] 5月8日
[5] main関数はこのまま使用しなければならない。

427 :デフォルトの名無しさん:2009/05/04(月) 20:49:43
麻呂以外回答禁止問題

428 :デフォルトの名無しさん:2009/05/04(月) 21:01:06
mallocを使わないソースを麻ー呂に書かせるなんて、何様のつもりでおじゃっ!?

429 :デフォルトの名無しさん:2009/05/04(月) 23:59:57
>>423
>>422を見てそのコードに書き直したのなら
いっぺん死んだ方がいい

430 :デフォルトの名無しさん:2009/05/05(火) 00:03:16
人をなじるのは面白いかい?

431 :デフォルトの名無しさん:2009/05/05(火) 00:18:12
指摘をするならともかく、いちいち罵詈雑言を投げかけるのはどうかと思うぞ、
人間として、人格形成に於いても。

432 :デフォルトの名無しさん:2009/05/05(火) 00:19:03
お前らいいやつだったんだな

433 :デフォルトの名無しさん:2009/05/05(火) 01:14:43
自分が手本を見せていないくせに、他人の粗探しをして
出来ない事、下手な事を指摘するだけで罵倒する様な人は
人格がおかしいんでしょうね。第三者から見ると気持ち悪い。
インターネットが普及して、直接対面せず、相手が直接自分を特定して
反撃してこないのを良いことに、やりたい放題やって来た奴は
最後は警察を挑発して、犯行予告あるいは紛らわしい言葉で
アウト、セーフなんて訳の分からない行動に出るが、そんなことを
している暇がある自分がこの世の中ではどういう存在か?
理解できなくなっているんでしょうね。

434 :デフォルトの名無しさん:2009/05/05(火) 01:27:04
そのゆとり思考どうにかならないの?
どんな奴が指定しても駄目な物は駄目だろ
絶対比較って奴だ
なんで相対比較で手本見せない奴よりマシとか、訳分らない思考してんのw

435 :デフォルトの名無しさん:2009/05/05(火) 01:47:13
>>434

絶対比較って奴なら、ちゃんと駄目な点を指摘してやれよ。
根拠も書かずになじるのもゆとり思考だと思うが?

436 :デフォルトの名無しさん:2009/05/05(火) 01:54:15
>>426

初期状態入力時に0なら数字なし、1〜4ならそこに数値が配置されている。
結果出力がアレだけど、適当に加工して。

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

437 :デフォルトの名無しさん:2009/05/05(火) 01:56:02
>>435
だから、なに?その超絶ゆとり思考w

駄目な点を指摘してなくとも、駄目な物は駄目
これが絶対比較

駄目な点を指摘するのが絶対比較?
ゆとりをブッチ切って、自分に都合が良い変換じゃんww

438 :デフォルトの名無しさん:2009/05/05(火) 02:22:46
>>437
比較である以上、何かと比べたんだろ?
その比較対象との差異を示さない/示せないお前も絶対比較で駄目じゃん。

439 :デフォルトの名無しさん:2009/05/05(火) 02:24:22
>>437
おまえはだめな奴
だめな点を指摘しようがしまいがだめには変わらない


440 :デフォルトの名無しさん:2009/05/05(火) 02:31:23
どんなに言葉遊びをしようが駄目な物は駄目
教えてクレクレ君なゆとりは、人にソース見せる前に勉強と経験をつめw

441 :デフォルトの名無しさん:2009/05/05(火) 02:37:51
ちゃんと動作するけど、オレが理解できないからダメ
難しすぎて分からないものなんて作るんじゃねーよ

分からなさ過ぎてどこを指摘すればいいのか分からん

そういうことだからダメw

442 :デフォルトの名無しさん:2009/05/05(火) 02:37:59
いや、ここは宿題を片付けるスレだから

443 :デフォルトの名無しさん:2009/05/05(火) 02:38:51
っていうか、itoa作れって言ってんのにatoi作って無駄に罵倒合戦ですかw

444 :デフォルトの名無しさん:2009/05/05(火) 02:39:42
関数名間違ってるってことかw

445 :デフォルトの名無しさん:2009/05/05(火) 02:50:37
あーあー、言っちゃった
黙ってればゆとり君がどんどんはまって、最後に恥辱のカタストロフィが訪れたのにw

446 :435:2009/05/05(火) 02:56:21
>>445
十分訪れたよ。
確かに駄目だわ。俺も含めてな。

447 :デフォルトの名無しさん:2009/05/05(火) 02:57:11
>>436
4隅もそれぞれ1234は縛り(ルール)ですか?

448 :436:2009/05/05(火) 03:05:09
>>447
4隅ってのは(0,0)(0,3)(3,0)(3,3)のこと?
そこの配置には何の縛りもないはずだけど。


449 :デフォルトの名無しさん:2009/05/05(火) 03:06:42
麻呂のクソースが発動するのはリストの問題の時でおじゃっ!

450 :447:2009/05/05(火) 03:08:49
いえ、(0,0)(0,1)(1,0)(1,1)です。しかし了解です。

451 :デフォルトの名無しさん:2009/05/05(火) 03:11:44
なるほどねw
自分では難解な問題をソースに落せた、他人は難解で分らないだろう、と思い込んで散々偉そうにして、
実は小学生以下の文章読解能力やアルファベット名称の問題が間違ってる、とは思いもしてなかったとw

指摘したら一発だから指摘なんかするかってのw
散々吠えてクレクレして、”俺も含めて”だってwwww

452 :436:2009/05/05(火) 03:12:07
>>450
そこには縛りがある。

453 :デフォルトの名無しさん:2009/05/05(火) 03:23:01
>>451
鬼の首を取ったかのように騒ぐあなたも同類です


454 :デフォルトの名無しさん:2009/05/05(火) 03:26:12
狙ってた通りの反応で…いや、それ以上の反応だったからw
特に>>441は傑作すぐるwww

455 :デフォルトの名無しさん:2009/05/05(火) 03:30:18
つーかもう寝ろ

456 :デフォルトの名無しさん:2009/05/05(火) 03:32:55
この人は何もかもが楽しいんだろうね
羨ましいわ

457 :デフォルトの名無しさん:2009/05/05(火) 03:36:01
そもそも>>429で、>>422と見比べろって書いてあるじゃんw
比較をよこせって書き込みまでは予測の範囲内だったが
自分のコードが難しくて読めてないんだろ的な書き込みがされた瞬間、ちょー噴いたw

458 :デフォルトの名無しさん:2009/05/05(火) 10:13:38
[1] 授業単元:
[2] 問題文(含コード&リンク):

2つの文字列を入力し、アナグラムかどうかを判定するプログラムを作れ

[3] 環境
 [3.1] OS: Win Vista
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:木曜まで
[5] その他の制限:
決められた関数を必ず使用すること。
詳細は以下にあります。(英文で申し訳ない)
http://www.filebox100.net/src/fb1002975.pdf


459 :デフォルトの名無しさん:2009/05/05(火) 10:24:41
>>458
リンク先が 404 not found だって
int is_anagram(const unsigned char *a, const unsigned char *b)
{
int count_a[256]={0}, count_b[256]={0}, i;

for(i=0;a[i];i++) count_a[a[i]]++;
for(i=0;b[i];i++) count_b[b[i]]++;
for(i=0;i<256;i++) if(count_a[i]!=count_b[i]) return 0;
return 1;
}

460 :458:2009/05/05(火) 10:32:37
http://www.filebox100.net/src/fb1002975.doc

すいません。リンク先はこっちです。

461 :デフォルトの名無しさん:2009/05/05(火) 11:46:34
>>458
コメント以外はドキュメントに沿って作ったつもり
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9126.c

462 :デフォルトの名無しさん:2009/05/05(火) 12:56:36
このスレって意外と勢いあるんだな

463 :デフォルトの名無しさん:2009/05/05(火) 13:16:30
(9124.txt)一瞬、なにやってるのかと
bx = x | ~1; // bx = x / 2 * 2;
by = y | ~1; // by = y / 2 * 2;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9125.txt

464 :デフォルトの名無しさん:2009/05/05(火) 13:49:37
>>458 アナロ熊ー

465 :デフォルトの名無しさん:2009/05/05(火) 17:34:34
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9127.zip
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 5月6日

期限が明日になりますが、よろしくお願いします。

466 :デフォルトの名無しさん:2009/05/05(火) 18:20:21
>>465
問3の最低限のところまで。

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

467 :デフォルトの名無しさん:2009/05/05(火) 19:11:46
>>465
俺も作ってみた。っていうか作ってる途中で投稿があってやるせないから投稿する。。。
自己満足でごめん。あと、動作は保障しない。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9129.txt

468 :デフォルトの名無しさん:2009/05/05(火) 21:07:00
#defineを使うよう指示する講師の言うことなんて聞かないほうがいい。程度が知れるから

469 :デフォルトの名無しさん:2009/05/05(火) 22:06:39
>>466>>467
.cだとエラーが出て焦ったのですが、cppだと問題ないんですね
説明不足かと思いましたがやっていただきありがとうございます

470 :デフォルトの名無しさん:2009/05/05(火) 22:29:25
bufの定義とlog.spへの代入の文を入れ替えたらcでも動くんじゃね?

471 :デフォルトの名無しさん:2009/05/05(火) 22:56:56
>>470
どのように変更したいいのでしょうか?良かったら教えてもらえないでしょうか

472 :デフォルトの名無しさん:2009/05/05(火) 23:08:25
>>471
char buff[256];
を1行上に持っていくだけ。

473 :デフォルトの名無しさん:2009/05/06(水) 00:15:24
>>472
ありがとうございます

474 :デフォルトの名無しさん:2009/05/06(水) 05:53:26
フリーセルの課題を解こうと思ったが難しい
自分がどうやって解いているのかすら分からないw

475 :デフォルトの名無しさん:2009/05/06(水) 09:43:40
MSのやつのルールなら52要素(要素はマークと数が保持できればよさそう。)の配列を用意して、
なるべく先頭が低い数字になるようにシャッフル。で、列をランダムにカード配ってけばよさそう。
余裕があったらコンピュータに一回解かせるのもいい。

476 :デフォルトの名無しさん:2009/05/06(水) 13:30:01
トラックバック方式で理論上とけるとこまではいったが、
盤面によってははまりパターンからなかなか抜け出せず時間がかかり過ぎる。
幅優先の方がいいかも知れん。
enumとstructの縛りも時間がかかる要員のひとつ。

>>475
初期配置の話? どんな配置でも(証明はされてないけど)解けるんじゃないの?

477 :デフォルトの名無しさん:2009/05/06(水) 14:13:35
>>476
ゲーム番号に -1 を入れると
解けない盤面になる

478 :デフォルトの名無しさん:2009/05/06(水) 14:17:37
>>476
昔アメリカの学生が研究して、解けない問題が4つ(だったかな?)あることを
示したよ。

479 :デフォルトの名無しさん:2009/05/06(水) 14:20:09
[1] 授業単元: C++
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9132.zip
[3] 環境
 [3.1] OS: ウィンドウズ
 [3.2] コンパイラ名とバージョン: ビジュアルC++
 [3.3] 言語: C++
[4] 期限: 5月7日朝まで
よろしくおねがいします

480 :479:2009/05/06(水) 14:23:00
一点書き忘れたので細くです。
問題17個のうち、8個は自分でやってみました。
なので答えがあっているかみてほしいです。9番からは何が何だか意味不明なのでよろしくおねがいします

481 :475:2009/05/06(水) 14:23:16
>>476
そう。初期配置の話。
実は、フリーセルは数えるほどしかやったこと無いから詳しくないんだ。すまない。

あー、やっとわかった。元々からAI作ってるのか。余計なこと言っちゃったな。

482 :デフォルトの名無しさん:2009/05/06(水) 14:25:12
int solve()
{
  if(/* すでに解けていたら */) return 1;

  /* 次に打てる手をリスト化する */

  for(/* 全ての手に対して */){
    /* その手を実行 */

    if(solve()){
      return 1;
    }

    /* この手では解けなかったので元に戻す */
  }

  /* 手詰まり */
  return 0;
}

483 :デフォルトの名無しさん:2009/05/06(水) 14:40:05
>>476
フリーセルの盤面パターンは1000000通り。
ランダムに並べるともっと多いよね。
F3キーで番号指定できる。
この時、表示は1〜1000000になるんだが、
-1と-2を受け付ける。これは絶対に解けない。
番号と配置パターンが解析できるなら、一番良いんだがね。

484 :デフォルトの名無しさん:2009/05/06(水) 14:44:58
>>482
尤もな方法ではあるけど
一度現れた形を除外するようにしないと無限ループする
深さ優先探索で記憶領域的に全部保持できるかどうかは不明

今から力任せ探索でやってみて、ダメなら枝狩りを考えるとしよう

485 :デフォルトの名無しさん:2009/05/06(水) 15:02:16
>>479
コンパイル通しただけだから動作は保障しない。
コンパイラはVC9EE。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9133.txt

パズルみたいで面白かった。要領さえつかめば簡単。

486 :デフォルトの名無しさん:2009/05/06(水) 16:30:19
さぁ、どんどんコードを書き込むのじゃ〜パクってやんよ?

487 :デフォルトの名無しさん:2009/05/06(水) 17:03:56
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文:http://h.pic.to/16ggp3
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C++)
[4] 期限: ([5月7日13:00まで]
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

お願いします

488 :デフォルトの名無しさん:2009/05/06(水) 17:11:13
>>487
問題文になってないぞ。
画像はあくまで例なので、
・合計は表示する必要ない
・平均は表示する必要ない
・総合判定もいらない
・科目名も家庭科とかでも良い
ってこと?
キーボードから得点読み込んで表示すればなんでも良さそうだな

489 :487:2009/05/06(水) 17:16:48
>>487です
>>488画像と全く同じようになるようなプログラムをつくれといわれました

490 :書き写したぞ:2009/05/06(水) 17:18:59
1.得点は整数型で定義、キーボードから読み込むこと
2.各科目は150満点
3.各科目について6割以上は合格
  合格は1、不合格は2
4.総合判定は3科目以上が合格
5.どんな得点を入力しても桁がそろうようにする


9 5月8日(金)13:00までに
実行例
----------------------------------------------
"c:\Cf-r4\Document\2008年度\講義
----------------------------------------------
国語=150
算数=0
理科=124
社会=89

合計[363],平均[ 90.75]
国語[150],[100.000%],[1]
算数[  0],[  0.000%],[0]
理科[124],[ 82.667%],[1]
社会[ 89],[ 59.333%],[0]
総合判定[0]
Press any key to continue□


----------------------------------------------
※ Press any key to contine

491 :デフォルトの名無しさん:2009/05/06(水) 17:20:59
>>489
各科目の最後の1と0は何?
合否は1と2だよね?

492 :487:2009/05/06(水) 17:25:19
>>487

>>489すいません。
合否判定は合格は1、不合格は0でした。

493 :デフォルトの名無しさん:2009/05/06(水) 17:26:24
>>492>>491へです

494 :書き写したぞ:2009/05/06(水) 18:44:50
struct seiseki {
  int sougou;
  int koku, san, rika, sha;
} seito;
int s_hantei() {
  if( seito.sougou >= 3 )
    return 1;
  return 0;
}
int hantei(int tokuten) {
  if( tokuten/150.*100 > 75 ) {
    seito.sougou++;
    return 1;
  }
  return 0;
}
int main(void) {
  seito.sougou = 0;
  cout<<"国語="; cin>>seito.koku;
  cout<<"算数="; cin>>seito.san;
  cout<<"理科="; cin>>seito.rika;
  cout<<"社会="; cin>>seito.sha;
  int goukei = seito.koku + seito.san + seito.rika + seito.sha;
  cout<<fixed<<setprecision(2)<<endl;
  cout<<"合計["<<setw(3)<<goukei<<"],平均["<<setw(6)<<goukei/4.<<"]"<<endl;
  cout<<fixed<<setprecision(3);
  cout<<"国語["<<setw(3)<<seito.koku<<"],["<<setw(7)<<seito.koku/150.*100<<"%],["<<hantei(seito.koku)<<"]"<<endl;
  cout<<"算数["<<setw(3)<<seito.san <<"],["<<setw(7)<<seito.san/150.*100 <<"%],["<<hantei(seito.san)<<"]"<<endl;
  cout<<"理科["<<setw(3)<<seito.rika<<"],["<<setw(7)<<seito.rika/150.*100<<"%],["<<hantei(seito.rika)<<"]"<<endl;
  cout<<"社会["<<setw(3)<<seito.sha <<"],["<<setw(7)<<seito.sha/150.*100 <<"%],["<<hantei(seito.sha)<<"]"<<endl;
  cout<<"総合判定["<<s_hantei()<<"]"<<flush;
}

495 :デフォルトの名無しさん:2009/05/06(水) 19:40:59
【質問テンプレ】
[1] 授業単元:確率統計学
[2] 問題文:
確率変数X、Yに関する実行地データについて、それぞれの平均、分散および
標準偏差の推定値と相関係数の推定値を求めるプログラムを作成せよ。
X=2.049,Y=1.764
X=4.987,Y=8.424
X=5.963,Y=9.989
X=6.378,Y=13.393
X=11.430,Y=18.958
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5月8日16:00まで
[5] その他の制限:

よろしくお願いします




496 :デフォルトの名無しさん:2009/05/06(水) 21:30:02
スレチだが
C++といえど>>494みたいな書き方よりはprintf使った方がいいんじゃないか

497 :デフォルトの名無しさん:2009/05/06(水) 21:38:52
なんか統一性が無いのは気のせい?

498 :デフォルトの名無しさん:2009/05/06(水) 21:42:08
C++ で printf 使うなんてイヤだ。

499 :デフォルトの名無しさん:2009/05/06(水) 21:43:34
6割以上が合格なのになんで
if( tokuten/150.*100 > 75 ) {
なんだ?

500 :書き写したぞ:2009/05/06(水) 22:03:05
#include <iostream>
#include <iomanip>
using namespace std;
struct seiseki {
  int koku, san, rika, sha, sougou;
} seito;
int s_hantei(int tanni) {
  if( tanni >= 3 ) return 1;
  return 0;
}
int hantei(int tokuten) {
  if( tokuten/150.*100 >= 60 ) {
    seito.sougou++;
    return 1;
  }
  return 0;
}
int main(void) {
  seito.sougou = 0;
  cout<<"国語="; cin>>seito.koku;
  cout<<"算数="; cin>>seito.san;
  cout<<"理科="; cin>>seito.rika;
  cout<<"社会="; cin>>seito.sha;
  int goukei = seito.koku + seito.san + seito.rika + seito.sha;
  cout<<fixed<<setprecision(2)<<endl;
  cout<<"合計["<<setw(3)<<goukei<<"],平均["<<setw(6)<<goukei/4.<<"]"<<endl<<setprecision(3);
  cout<<"国語["<<setw(3)<<seito.koku<<"],["<<setw(7)<<seito.koku/150.*100<<"%],["<<hantei(seito.koku)<<"]"<<endl;
  cout<<"算数["<<setw(3)<<seito.san <<"],["<<setw(7)<<seito.san /150.*100<<"%],["<<hantei(seito.san )<<"]"<<endl;
  cout<<"理科["<<setw(3)<<seito.rika<<"],["<<setw(7)<<seito.rika/150.*100<<"%],["<<hantei(seito.rika)<<"]"<<endl;
  cout<<"社会["<<setw(3)<<seito.sha <<"],["<<setw(7)<<seito.sha /150.*100<<"%],["<<hantei(seito.sha )<<"]"<<endl;
  cout<<"総合判定["<<s_hantei(seito.sougou)<<"]"<<endl;
}

501 :デフォルトの名無しさん:2009/05/06(水) 22:34:39
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):トランプカードの操作
配られた1枚のカードを手札に加え、手札を更新する関数updateHand()を作成し、カードデッキを初期化してシャッフルし、5枚のカードを配り、その結果を出力する
プログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 5月7日
[5] その他の制限:
用法: Card *updateHand(Card *hand,int num,Card deal);
処理内容: ポインタhandが指す配列のnum個の要素とdealを格納する配列を新たに確保し、その配列の先頭アドレスを返す
実装方法:
1.handが指す配列(動的に確保される)の要素数numより1つ大きい要素数をもつCard型配列をcalloc()により確保
2.handが指す配列の内容とdealを新たに確保した配列にコピー
3.handが指す配列の領域をfree()により消去
4.新しい配列へのポインタを返す

502 :デフォルトの名無しさん:2009/05/06(水) 22:41:16
シャッフルキター!

503 :デフォルトの名無しさん:2009/05/06(水) 22:53:47
麻呂のクソースを待っておれ。待たぬと言うでおじゃるか?

504 :デフォルトの名無しさん:2009/05/06(水) 23:37:36
>>503
もういいから死んでくれ

505 :デフォルトの名無しさん:2009/05/06(水) 23:38:39
>>501
一枚配るごとにcallocとfreeって正気か?

506 :デフォルトの名無しさん:2009/05/06(水) 23:52:27
realloc() を使わないのか?

507 :デフォルトの名無しさん:2009/05/06(水) 23:55:53
そういう問題じゃねーw
普通は手札の配列は最初に固定で確保だろ。

508 :デフォルトの名無しさん:2009/05/07(木) 00:08:47
手札が動的に伸長するんだよ、きっと。
例えばゲーム中にある条件がそろったらカードデッキを1セット新たに加えて手札にn毎ずつ配るとかさ。

509 :デフォルトの名無しさん:2009/05/07(木) 00:13:05
フリーセルの話。
深さ優先と幅優先の2つで組んでみたが、実行すると帰ってこん(簡単に解ける盤面ではテスト済)。
ヒューリスティックな優先順位付けがないと厳しいっぽい。
しかしオレはフリーセルが解けない人なので、ヒューリスティックなぞむりでぷ。

510 :GCCでreallocやってみた:2009/05/07(木) 00:16:26
#include <stdio.h>
#include <malloc.h>
#include <memory.h>
struct Card {
  int a, b;
};
struct Card *updateHand(struct Card *hand, int num, struct Card deal) {
  struct Card *temp;
#if 1
  temp = calloc(num + 1, sizeof(struct Card));
  if(temp == NULL) return NULL;
  memcpy(temp, hand, num * sizeof(struct Card));
  memcpy(&temp[num], &deal, sizeof(struct Card));
  free(hand);
  return temp;
#else
  temp = realloc(hand, (num + 1)*sizeof(struct Card));
  if(temp == NULL) return NULL;
  memcpy(&hand[num], &deal, sizeof(struct Card));
  return hand;
#endif
}
int main() {
  int i, size=5;
  struct Card *in, *out;
  struct Card n = {5,6};
  in = calloc(size, sizeof(struct Card));
  out = updateHand(in, size, n);
  if(out) for(i=0; i<size+1; i++)
    printf("%d,%d ", out[i].a, out[i].b);
  puts("");
}

511 :デフォルトの名無しさん:2009/05/07(木) 09:39:37
>>509
同じマスを何度も調べてしまうことが原因で無限ループになるんだったら、同じマスを調べないようにすればいいんじゃね?

512 :デフォルトの名無しさん:2009/05/07(木) 10:06:34
フリーセルって最大何手で解けるの?いや、最小じゃなく。

513 :デフォルトの名無しさん:2009/05/07(木) 10:21:16
>>512
15000 手以上のサンプル
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9136.lzh

ほとんどの場合計算時間が長すぎてストップさせてるから
最低でもこの10倍程度はいくと思う

---------------------------------------------------
none none none none // 一枚だけカードを置ける場所4ヶ所
H3 HJ S8 S4 CQ CA D3 // カードの並び 一番右のカードだけを動かせる x 8列
DJ HA D9 H7 S5 S0 H8
S9 SA S6 DK D8 H2 HK
H0 D0 S7 S2 H4 C5 D7
C3 C0 D5 C7 H9 SJ
SQ DQ C2 D6 H6 D4
C4 C6 C9 DA S3 D2
HQ H5 CJ SK CK C8
none none none none // 最終的にカードを積んでいく山 4ヶ所

514 :デフォルトの名無しさん:2009/05/07(木) 10:28:27
>>513 は深さ優先探索で一番最初に出てきた解だが無駄な動きが多い
「フリーセルで遊んでいるときに勝手にカードが山に積まれる機能」
と同じ機能を実装すれば手数は大幅減になると思う

515 :479:2009/05/07(木) 10:59:24
>>485
有難うございます。回答見せて頂きました。ただ、12以降の答えについて疑問があります。
(12)は、クラスAのメンバ変数(int)を指すポインタであって関数ポインタではないような気がするのですが、如何でしょうか。
また、13以降が全てvoidを返り値とする関数ポインタとなっているようですが、13〜16は返り値をintとする関数ポインタだと思うのですが、如何でしょうか。
ttp://publib.boulder.ibm.com:80/infocenter/lnxpcomp/v7v91/index.jsp?topic=/com.ibm.vacpp7l.doc/language/ref/clrc13cplr034.htm
のサイトを元にして12〜15をもう一度自分でやってみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9137.zip

・僕の答えが正しいかみて頂けないでしょうか。今度は定義だけでなく適当なデータを入れて出力までしました。
・14,15のコメントのところでそれぞれ何を表しているか日本語で埋めてもらえますか?
・16,17は出来れば定義だけでなく何らかの値を入れて画面出力までしてもらえるとたすかります
よろしくおねがいします

516 :485:2009/05/07(木) 12:14:42
>>515
えーっと、すまんな。俺の12は間違ってる。
パズル的に解いてたからちょっと思い込みがあったかも知れん。

多分以下のようになる。
int A::*p1 = &A::Value;//ValueはAでパブリックに設定されてるint型

細かいことだが、関数ポインタ系は戻り値の設定が無いからvoidにした。
あと、俺は初心者なので、あんまり鵜呑みにはしないでくれ。



517 :485:2009/05/07(木) 12:37:32
>>515
一応見てみた。俺が言語仕様を全部把握してるわけではないが一応動いていた。
逆に何でクラスの関数ポインタ呼び出すに変数が必要なのか逆にわからなかった。
やくにたてなくてすまないな。

518 :デフォルトの名無しさん:2009/05/07(木) 13:17:39
[1] 授業単元:Cプラプラ
[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9139.zip
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gプラスプラス
 [3.3] 言語: (Cプラプラ)
[4] 期限: ([5月8日朝まで]
[5] その他の制限:
まるで問題の意味がわかっていないのですがもし問題として成立してなければすみません。
マルチスレッドでロックしないようにとか言ってました。よろしくおねがいします

519 :デフォルトの名無しさん:2009/05/07(木) 13:36:40
>>518
OSの機能を使わないとほとんどむりだろ。
これだけのソースではList作るよりもそのベース作るほうが大変じゃないか?

520 :デフォルトの名無しさん:2009/05/07(木) 13:41:27
スカラ型の変数の読み書きと、関数compareAndExchangeの実行が
不可分に行われることを仮定して問題を解けということかな。
問題の前提条件が講義中で説明されていたんじゃない? >>518

521 :デフォルトの名無しさん:2009/05/07(木) 17:38:52
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9140.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC2005
 [3.3] 言語:C++
[4] 期限:5/8 1:00まで
[5] その他の制限:特にありません

それではよろしくお願いします。
授業まったくついていけないようなら履修削除したほうがいいのかな・・・


522 :デフォルトの名無しさん:2009/05/07(木) 18:18:53
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
架空のテストの点数をランダムに生成するプログラムを作成しなさい。
得点は0点〜100点とする。
生徒の数は手で入力orプログラム内で指定(100人程度)
出力した点数の平均点が、事前に指定したものとなるようにする。
例えば、生徒数3 平均点3点の場合
1 2 6
生徒数4 平均点50の場合
32 69 42 57 など

実行毎に毎回違う値を出力すること

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Borland C++ 5.5
 [3.3] 言語: C
[4] 期限: できるだけ早めでお願いします
[5] その他の制限: 難しい方法を使わず、初歩的な方法でお願いします

523 :デフォルトの名無しさん:2009/05/07(木) 20:59:56
>>521
問1とやらはコーディング基準を教えてくれないと答えようがないぞ。


524 :デフォルトの名無しさん:2009/05/07(木) 21:17:58
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int n, ave, sum, score;

scanf("%d%d", &n, &ave);

srand(time(NULL));

sum = n * ave;
while(--n) {
if(sum < 100) score = rand() % (sum + 1);
else if(sum > n * 100) score = 100 - rand() % ((n+1) * 100 - sum);
else score = rand() % 101;

printf("%d ", score);
sum -= score;
}
printf("%d\n", sum);

return 0;
}

525 :デフォルトの名無しさん:2009/05/07(木) 23:00:42
>>523
ごめんなさい
問1のほうは普通に考えればできました・・・。

問2のほうお願いできますでしょうか?

526 :デフォルトの名無しさん:2009/05/07(木) 23:19:13
>>511
無限ループはしてない。(一番最初にはまってデバッグ済みw)
深さ優先の場合、候補手について親に遡って盤面の同一性を判定し、同一なら棄ててる。
前に調べた子と重なるのは、保持してないので看過。
このため手順が前後するだけの同じ盤面を何度も探索してるのが敗因。

527 :デフォルトの名無しさん:2009/05/08(金) 01:25:25
>>525
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9142.c

528 :デフォルトの名無しさん:2009/05/08(金) 01:51:38
>>524
score = 100 - rand() % ((n+1) * 100 - sum);
じゃなくて
score = 100 - rand() % ((n+1) * 100 - sum + 1);

529 :デフォルトの名無しさん:2009/05/08(金) 02:07:23
>>526
思いつきですまんが、
「最終的にカードを積んでいく山(homecell)に積み上げる」を優先
「任意のhomecellへの積上げ完了」を1サイクルにする。
「積上げ」のための検索処理をバックトラックで実装する。
だとどうなるかな?

「積上げ」のための処理を、総当たりではない、効率的(高収益を得る方法?)
判定手順で検索するのは困難だろうかね。
>>526がどの様なロジックで考えているかよくわからないまま書いているから
突っ込みは勘弁w


530 :518:2009/05/08(金) 02:11:22
>>519
>>520
すみません。聞いたら「コンペア&エクスチェンジ関数はマシン語とか他のライブラリで実装されるだろうが
そこは想定で」というような感じのことを言っていたのですがそれだと意味通じますでしょうか?
全くわからないので。。よろしくおねがいします


531 :デフォルトの名無しさん:2009/05/08(金) 02:25:28
>>522 乱数の合計だけれども平均値は合うという問題
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
  int n=7, n2, ave=21, i, score, sum=0;
  int *data;
  printf("Enter number of students and average : ");
  scanf("%d %d", &n, &ave);
// printf("%d %d\n", n, ave);
  srand(time(NULL));
  data = calloc(n, sizeof(int));
  if(data==NULL) return 1;
  for(i=0; i<n; i++) data[i] = ave;
  n2 = n * 2 * 50; // 2の倍数回
  for(i=0; i<n2; i++) {
    score = (float)rand()/RAND_MAX * n;
    if(i%2) {
      if(data[score] == 100) i++;
      else data[score]++;
    } else {
      if(data[score] == 0) i++;
      else data[score]--;
    }
  }
  for(i=0; i<n; i++) {
    printf("%d ", data[i]);
    sum += data[i]; // 検算用
  }
  printf("\ntotal=%d, ave=%.0f", sum, (float)sum/n);
  free(data);
  return 0; }

532 :デフォルトの名無しさん:2009/05/08(金) 02:32:53
>>531 間違い
score = (float)rand()/RAND_MAX * n;
じゃなくて
score = (float)rand()/(RAND_MAX+1) * n;

533 :518:2009/05/08(金) 03:35:23
すみませんどんなものでも結構ですので朝までに出来ると大変たしかります


534 :デフォルトの名無しさん:2009/05/08(金) 08:02:11
先生、ひどいっす。

343 名前: 名無しさん@九周年 Mail: sage 投稿日: 2009/05/08(金) 07:54:27 ID: RsghHNeu0
2chやmixiの「宿題教えて」スレッドに微妙に嘘を混ぜて遊ぶことがある
けど、結構気づかずにそのまま使ってるね。答を書いてしまえば誰もわざ
わざチェックしないみたいだし。

実は自分が大学で出した課題も教えてスレッドに出ていたので、嘘の答を
書いておいたところ、それをそのまま写してきた学生が数人いた。当然×
にしたけどさ。

535 :デフォルトの名無しさん:2009/05/08(金) 08:59:12
最悪な教師だな。
でもプログラムなら嘘書いたらわかるだろ?

536 :デフォルトの名無しさん:2009/05/08(金) 09:11:21
俺が回答するときはほとんど意図的な嘘は書かないが、バグの出ない保障は無いので、
動作は保障しない。の一言をつけておくことが多い。

537 :デフォルトの名無しさん:2009/05/08(金) 09:29:23
[1] 授業単元:プログラミング演習第1
[2] 問題文(含コード&リンク):ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/05/index.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: PM.15:30まで
[5] その他の制限: 特にありませんが、できれば簡単なプログラムでお願いします。

急で申し訳ないです・・・

538 :デフォルトの名無しさん:2009/05/08(金) 09:43:20
>>537
K山先生にメールしておきました。

539 :デフォルトの名無しさん:2009/05/08(金) 09:47:30
また熊本か

540 :デフォルトの名無しさん:2009/05/08(金) 10:03:16
問1
(1)1; (2)fib(n-1) + fib(n-2);
問2
(1)n1 = n2; (2)n2 = sum;
問3
(1)(rval >= 0) (2)rval; (3)rval = fib(n-1) + fib(n-2); (4)fib_ary[n] = rval;
問4
(1)list_tのサイズ (2)list_t (3)list_tへのポインタ

541 :デフォルトの名無しさん:2009/05/08(金) 10:16:44
>>540
ありがとうございます!!
助かります

542 :デフォルトの名無しさん:2009/05/08(金) 10:23:16
>>537
問題5
再帰,もしくはリストを使った,あなただけの独創的なC言語の問題を
作りなさい.また,その解答も作成しなさい.

解答
再帰,もしくはリストを使った,あなただけの独創的なC言語の問題を
作りなさい.また,その解答も作成しなさい.


543 :デフォルトの名無しさん:2009/05/08(金) 10:39:16
>>542
不覚にもちょっと感心した

544 :デフォルトの名無しさん:2009/05/08(金) 10:41:42
自分の講義のレベルも考慮できない低脳講師がよく出すありふれた問題じゃんw

545 :デフォルトの名無しさん:2009/05/08(金) 11:11:26
>>542
問題文と同じなので独創的ではありません。0点

546 :デフォルトの名無しさん:2009/05/08(金) 11:14:18
>>537 の先生、修論とD論のタイトルが同じだ。
まあ、だから何だというわけではないけど。

547 :デフォルトの名無しさん:2009/05/08(金) 11:15:32
>>537
階乗じゃなくフィボナッチなのに!を使うって、死んだ方がいいんじゃね?

548 :デフォルトの名無しさん:2009/05/08(金) 11:23:20
こっちでやろうぜ。

大学のプログラミング演習の課題を添削するスレ
http://pc12.2ch.net/test/read.cgi/tech/1188501699/

と書いてから↑のスレをみたら同じ先生がネタになっていて吹いた。


549 :デフォルトの名無しさん:2009/05/08(金) 12:03:23
>>537 問5
問題:http://pc12.2ch.net/test/read.cgi/tech/1240022781/739
n個の数を入力してその中でm番目に大きい数を表示するプログラム
を、CまたはC99言語で再帰またはリストを用いて作成せよ。
nとmは一番最初に入力する。(n<m))
m−1番目に大きい数との重複はしない。

答え:
 問題を作って解答もって、ドラゴン桜で言ってた。教師に出す問題だよ、それ。

550 :デフォルトの名無しさん:2009/05/08(金) 14:46:05
>>537
意図的だと思うが、その出題のプログラムが間違ってるところないか??

4までのソースコード。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9143.zip

5を作ってたんだが、時間切れでタイムアップなのだよ。
迷路製作を再起で作ってたんだが、自分が罠にハマッタっていう。
昔はもっとサクッとできたんだが、間抜けすぎる。俺涙目。

あと、動作は保障しない。

551 :515:2009/05/08(金) 14:56:35
>>516
有り難うございました

552 :デフォルトの名無しさん:2009/05/08(金) 15:00:07
>>550
とりあえず問1だが、if(n == 0 || n == 1)って聞いてるのは、
if (n == 0) return 0;
if (n == 1) return 1;
こう書かずに return n しろっていいたいんだろ

553 :デフォルトの名無しさん:2009/05/08(金) 15:28:33
>>550
ソースコードありがとうございます!!
早速使わせていただきました

これで課題もなんとかなりそうです
ほんとありがとうございます!!

554 :デフォルトの名無しさん:2009/05/08(金) 15:37:04

537です

555 :デフォルトの名無しさん:2009/05/08(金) 16:03:28
どなたか>>495をお願いします。

556 :デフォルトの名無しさん:2009/05/08(金) 16:13:00
麿のクソースが発動できないでおじゃるっ!はよク素数、ヘヴォナッチ、
ファイル検索など、リストの課題を出すでおじゃっ!>学校の講師、教授


557 :550:2009/05/08(金) 16:14:16
>>552
あー、なるほど。それでもとけますねぇ。

>>553
俺が>>550で書いた最後の1行をお忘れなく。

558 :デフォルトの名無しさん:2009/05/08(金) 16:16:15
すぐ上にヘヴォナッツィオの問題が出てんじゃんw

559 :デフォルトの名無しさん:2009/05/08(金) 17:13:22
>>535
最悪か?むしろよく分ってる最高の教師だと思うが。
むしろ呼びつけて↓くらいは言ってもいい。
「これ、宿題片付けますスレのを丸写しにしたでしょ?あれ書いたの僕なんだけど。」
「講義でてればすぐわかる内容だし、ひたすら面倒くさいだけな意地悪な課題も出してないよ?」
「義務教育じゃないんだから、ついてこれなかったりやる気が無いんなら、いつでも大学辞めていいんだよ。」

560 :デフォルトの名無しさん:2009/05/08(金) 17:30:34
うちの先生はこことmixiの丸投げコミュはチェックしてるよと言ってた。

561 :デフォルトの名無しさん:2009/05/08(金) 22:38:21
>>559
「義務教育」の意味を間違えていますねえ。

562 :デフォルトの名無しさん:2009/05/08(金) 22:44:30
>>559
うちの大学では何も言わずに、採点対象外になる。

563 :デフォルトの名無しさん:2009/05/08(金) 23:29:47
担当教官のスレかとおもた。

564 :デフォルトの名無しさん:2009/05/08(金) 23:33:30
誰が書いても同じような答えにしかならないような問題が多いのにな。

565 :デフォルトの名無しさん:2009/05/08(金) 23:37:14
>>561
別に何も間違っちゃいないが?

566 :デフォルトの名無しさん:2009/05/08(金) 23:40:18
親の義務だとか言いたいんだろ

567 :デフォルトの名無しさん:2009/05/08(金) 23:55:12
愚かすぎるなそれは。

568 :デフォルトの名無しさん:2009/05/09(土) 00:27:42
>>561
日本の義務教育はどこまで?まさかあんた、高校、大学も
義務だと思っていたゆとり?

569 :デフォルトの名無しさん:2009/05/09(土) 00:34:34
>>559
なぜプログラミングが出来ないぐらいで大学を辞めなければいけないのかと
十分パワハラだよ

570 :デフォルトの名無しさん:2009/05/09(土) 00:35:58
課題の不正は十分退学事由になりえる。

571 :デフォルトの名無しさん:2009/05/09(土) 00:38:01
>>569
必修科目かどうかによる
必修科目ができない奴は卒業できてはいけない…はずだろ

572 :デフォルトの名無しさん:2009/05/09(土) 00:38:41
>>570
さすがにそれはないwww
実際、期末テストでカンニングしたって、そのセメの
単位全部落とされるだけで退学にはならんしな。

573 :デフォルトの名無しさん:2009/05/09(土) 01:30:39
>>495
二変数の相関係数を求めるんじゃなくて
X, Y は確率変数なのか?

確率が1を超えるとか訳分からんし
確率というなら分布も与えられてしかるべき
講義の内容聞いてないので判断のしようがない

と書いたところで期限切れなことに気がついた

574 :デフォルトの名無しさん:2009/05/09(土) 01:30:57
>>569
大学に来て勉強しない奴はいらないって言ってるだけだろ。
会社に来て働かない奴はいらないのと同じ。

575 :デフォルトの名無しさん:2009/05/09(土) 01:50:54
鼬だが、「大学は(狭義の)勉強するところ」としか考えられないやつは偏ってるよ。
大学教授になるようなやつは大半が偏ってるんだろうけどさ。

576 :デフォルトの名無しさん:2009/05/09(土) 01:51:47
>>574
違うぞ。金もらってないし、払ってるし。

577 :デフォルトの名無しさん:2009/05/09(土) 01:55:22
windowsのフリーセルのカード初期配置を再現する方法を教えてくだされ
ゲーム番号毎に対応したのを出したいのですがさっぱり分かりません

578 :デフォルトの名無しさん:2009/05/09(土) 02:20:07
ゲーム番号と初期盤面の作成方法は公開してないようだね。
関係ないけど、#11982は解答不能なんだそうだ。
他にもいくつかあるそうだ。

579 :デフォルトの名無しさん:2009/05/09(土) 02:20:10
>>575
その狭義の勉強するために大学に行っているんだよな?
それを除いた広義の勉強は大学じゃないとできないってことはないだろ。

>>576
いい歳して自分で選択した立場でやるべきことが分ってないって点に関して
同じだろ。

580 :デフォルトの名無しさん:2009/05/09(土) 02:42:41
>>576
その金は単位に対してではなく講義に対して払ってるんだろ。
その講義を聞いてないで単位を落とすのは自己責任。
逆に言えば、金をもらっている以上、教授はちゃんとやってる学生を区別して評価する義務もあるはず。

581 :デフォルトの名無しさん:2009/05/09(土) 02:47:46
学生側にも問題あるとは思うんだが、既に教育ってビジネスなんではないかね。
ちゃんとやってる学生は、教官にとっては実にありがたい存在かも。

582 :デフォルトの名無しさん:2009/05/09(土) 02:50:52
>>581
8年で除籍になる部分だけがいけないということだね!

583 :デフォルトの名無しさん:2009/05/09(土) 03:04:32
>>581
経営者にとってはビジネスかもしれんが、
教授にとっては雑務で、自分たちの研究が本分だよ。


584 :デフォルトの名無しさん:2009/05/09(土) 06:05:58
>>573
書いてある数字が計算対象なら、X(x)のxが書いてないのに
期待値の計算はありえない。実効値の書き間違いは、まあいいとして。
「確立変数X、Y」とか「推定値」とか書かなきゃ簡単な問題なのに。

585 :デフォルトの名無しさん:2009/05/09(土) 08:52:14
>>580
自分の講義の単位を認めないのは教官の自由だけど、「大学辞めたら?」ってのは必然性がないよね

鼬害だからもうやめておく

586 :デフォルトの名無しさん:2009/05/09(土) 14:08:15
>>585
身につかない講義に金を払うより、大学やめてリアル土方でもしてた方が経済的にも有意義だろって事だろw
大学としては留年して金落としてって貰えるのが一番得なんだから、むしろ親切だろw

587 :デフォルトの名無しさん:2009/05/09(土) 14:50:22
大学生じゃないとできん広義の勉強はあるよ。
費やせる時間が社会人とでは全然違うし、こもりニートにはない社会生活もある(重要)。

単位やるorやらないは講座主の恣意なんで勝手。しかし「大学辞めりん」は学生の人生に干渉し過ぎ。
指導教官でもそんなこせーへんし(←「指導教官」ってw、出身大学ばれるし)

588 :デフォルトの名無しさん:2009/05/09(土) 15:10:34
(ノ∀`) アチャー

589 :デフォルトの名無しさん:2009/05/09(土) 15:18:09
>>587
ん?
つまり費やせる時間が違うだけで同じことができるんだろ?
一体何ができないんだよ?

590 :デフォルトの名無しさん:2009/05/09(土) 15:38:18
#include <stdio.h>
#include <math.h>
int main(void) {
  int i, n;
  float (*data)[2], goukei, sa, kyoubunsan;
  float heikin_x, heikin_y, hensa_x, hensa_y;

  printf("相関係数を計算します。\n集団の個数nを入力して下さい:");
  fscanf(stdin,"%d", &n);
  data = calloc(n*2, sizeof(float));
  if(data == NULL) return 1;
  else puts("メモリー確保に成功しました");
  for(i=0; i<n; i++) { printf("xの%d番目のデータを入力して下さい:", i+1); fscanf(stdin,"%f%*c", &data[i][0]); }
  for(i=0; i<n; i++) { printf("yの%d番目のデータを入力して下さい:", i+1); fscanf(stdin,"%f%*c", &data[i][1]); }
  puts("データの入力が終了しました。");
  for(i=0, goukei=0; i<n; i++) goukei += data[i][0];
  heikin_x = goukei/n;
  for(i=0, goukei=0; i<n; i++) goukei += data[i][1];
  heikin_y = goukei/n;
  printf("xの平均は %f yの平均は %f\n", heikin_x, heikin_y);
  for(i=0, goukei=0; i<n; i++) { sa = data[i][0] - heikin_x; goukei += sa * sa; }
  hensa_x = sqrt(goukei/n);
  for(i=0, goukei=0; i<n; i++) { sa = data[i][1] - heikin_y; goukei += sa * sa; }
  hensa_y = sqrt(goukei/n);
  printf("xの分散は %f yの分散は %f\n", hensa_x*hensa_x, hensa_y*hensa_y);
  printf("xの標準偏差は %f yの標準偏差は %f\n", hensa_x, hensa_y);
  for(i=0, goukei=0; i<n; i++) goukei += (data[i][0] - heikin_x) * (data[i][1] - heikin_y);
  kyoubunsan = goukei/n;
  printf("xとyの共分散は %f\n", kyoubunsan);
  printf("xとyの相関係数は %f\n", kyoubunsan/hensa_x/hensa_y);
  free(data);
}

591 :デフォルトの名無しさん:2009/05/09(土) 15:53:41
>>590
アウトオブレンジしてないか?気のせいかな。

592 :デフォルトの名無しさん:2009/05/09(土) 16:32:08
> つまり費やせる時間が違うだけで同じことができるんだろ?
換言すると、どんだけ時間使っても結果は同じと。
ま、そんなヤツには関係なか。

593 :デフォルトの名無しさん:2009/05/09(土) 16:33:31
ネット上でくらい標準語を使ってほしい

594 :デフォルトの名無しさん:2009/05/09(土) 16:37:45
ん?アウトオブレンジはC++の範囲外書き込みの例外のことだぞ。
セキュリティてきに不味すぎる。

595 :デフォルトの名無しさん:2009/05/09(土) 16:38:36
「標準語」(藁藁

596 :デフォルトの名無しさん:2009/05/09(土) 17:23:19
>>592
大学生以上に自由時間を持つ立場にだってなれるだろうが。
だから何ができないかはっきりさせろよ。
定職持った社会人でも、フリーターでも家事手伝いでもなく、
大学生でしかできない広義の勉強って何だよ。

597 :デフォルトの名無しさん:2009/05/09(土) 18:08:24
>>368
なんとか6065,6778,16576を解けるくらいにはなったんでアップ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9144.txt

深さ優先。n手先の盤面の評価値で次手の優先順位付け。評価値の足切りあり。
足切りがあるので解けるものも解けない可能性があるが、足切りないと1分とか2分じゃ帰ってこないので一緒。

ソース中のFREE制限とは、フリーセルに動かしたあとは、その山がからまない山間移動を禁止。
HOME制限とは、ホームに動かしたあとはその山かホームがからまない移動は禁止。
HOME制限は手数が増えるのでアップしたソースではコメントアウトしてる。

細部調整は自分でよろ。評価関数(evaluate)は調整の余地多分にあり。
質問は今日中に(明日は見ない可能性あり)。
ポインタは使っちゃダメとか、callocはNGとかは勘弁な。

しかし世の中には10秒以内でとくやつもあるんだな。DLしたけど動かなかったんで試してはいないが。
そんな人から見たらオレのアルゴリズムなんて稚拙なんだろうなぁ。

598 :597:2009/05/09(土) 18:37:08
わりぃ。出力された解法で実際にプレイしてみたら無駄な手順が多かったんで修正。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9145.txt

599 :デフォルトの名無しさん:2009/05/09(土) 23:08:10
こーゆー問題は
解けるか解けないかを自動検出する(つまり途中のブランチのどれをとって
もいずれはループするか手詰まりになる)ことのほうが価格が高い。
解ける場合は解放は一通りじゃないだろうから。(暇婆の生き甲斐を
奪う嫌われるタイプ)

600 :デフォルトの名無しさん:2009/05/09(土) 23:39:00
解けない場合のことなんてほとんど考える必要もないぐらい例外的なのに、
なに言っちゃってんの?w

601 :597:2009/05/09(土) 23:48:54
解ける解けないを自動検出する方向に発展させてけるんで奪ってないんじゃないかねぇ。
解けない盤面になったのを実際に試すより少ないインストラクションで検知できるんなら、刈り込みにも便利だろうし。

ただ368の〆切が明日なんで、オレができるのはここまで。
評価関数をいくつか用意して、stackCountが10000くらいになったらあきらめて次ので掘っていくようにすると、結構早いかも。
1手先で10000くらいなら1〜数秒で到達するだろうし。

602 :デフォルトの名無しさん:2009/05/10(日) 00:13:06
課題が出たのですが途中まではおそらくできているのですが
最後までできません。
「生年月日を入力し、干支と星座が出るようにプログラムしろ」
という課題です。
途中までの課題がこれです
#include<stdio.h>

int main()
{
int x,y,z;
printf("生まれた年を入力してください:\n");scanf("%d",&x);
printf("生まれた月を入力してください:\n");scanf("%d",&y);
printf("生まれた日を入力してください:\n");scanf("%d",&z);
switch(x%12){
case 0: puts("あなたは申年です\n"); break;
case 1: puts("あなたは酉年です\n"); break;
case 2: puts("あなたは戌年です\n"); break;
case 3: puts("あなたは亥年です\n"); break;
case 4: puts("あなたは子年です\n"); break;
case 5: puts("あなたは丑年です\n"); break;
case 6: puts("あなたは寅年です\n"); break;
case 7: puts("あなたは卯年です\n"); break;
case 8: puts("あなたは辰年です\n");break;
case 9: puts("あなたは巳年です\n");break;
case 10: puts("あなたは午年です\n");break;
case 11: puts("あなたは未年です\n");break;
}
return(0);
}
で干支までは出るようにしました。星座を出すにはどうやってプログラムすればいいのでしょうか?
一応プログラムにはif文とswitch文を使うように言われました。

603 :デフォルトの名無しさん:2009/05/10(日) 00:13:56
課題が出たのですが途中まではおそらくできているのですが
最後までできません。
「生年月日を入力し、干支と星座が出るようにプログラムしろ」
という課題です。
途中までの課題がこれです
#include<stdio.h>

int main()
{
int x,y,z;
printf("生まれた年を入力してください:\n");scanf("%d",&x);
printf("生まれた月を入力してください:\n");scanf("%d",&y);
printf("生まれた日を入力してください:\n");scanf("%d",&z);
switch(x%12){
case 0: puts("あなたは申年です\n"); break;
case 1: puts("あなたは酉年です\n"); break;
case 2: puts("あなたは戌年です\n"); break;
case 3: puts("あなたは亥年です\n"); break;
case 4: puts("あなたは子年です\n"); break;
case 5: puts("あなたは丑年です\n"); break;
case 6: puts("あなたは寅年です\n"); break;
case 7: puts("あなたは卯年です\n"); break;
case 8: puts("あなたは辰年です\n");break;
case 9: puts("あなたは巳年です\n");break;
case 10: puts("あなたは午年です\n");break;
case 11: puts("あなたは未年です\n");break;
}
return(0);
}
で干支までは出るようにしました。星座を出すにはどうやってプログラムすればいいのでしょうか?
一応プログラムにはif文とswitch文を使うように言われました。

604 :デフォルトの名無しさん:2009/05/10(日) 00:15:00
すいません;;
間違えて2回入力されてしまいました

605 :デフォルトの名無しさん:2009/05/10(日) 00:21:07
すみませんついでに>>1見てテンプレに直すとなお良かったな。
星座は
switch(y){
case 1:
  if(z < (調べて)) printf("○○座);
  else printf("△△座");
ってな感じでとりあえず出ると思う。
具体的な数字は自分で調べてくれ。

606 :デフォルトの名無しさん:2009/05/10(日) 00:21:14
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 生年月日を入力し、干支と星座が出るようにプログラムしろ」

[3] 環境
 [3.1] OS: (Windows/vista)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語:C++
[4] 期限: ([2009年5月15日10:00まで]
[5] その他の制限: 今回でswitch文とif文を習いました。

すいません。テンプレを忘れていました;;



607 :デフォルトの名無しさん:2009/05/10(日) 00:35:37
いかにも初心者がやりました、ってな感じを出すならこんなのでいいんじゃないかな

if(y*100+z< 121)puts("山羊座")
else if(y*100+z< 220)puts("水瓶座")
else if(y*100+z< 321)puts("魚座")
else if(y*100+z< 421)puts("牡羊座")
else if(y*100+z< 522)puts("牡牛座")
else if(y*100+z< 622)puts("双子座")
else if(y*100+z< 723)puts("蟹座")
else if(y*100+z< 823)puts("獅子座")
else if(y*100+z< 923)puts("乙女座")
else if(y*100+z<1024)puts("天秤座")
else if(y*100+z<1123)puts("蠍座")
else if(y*100+z<1223)puts("射手座")
else puts("山羊座");


608 :デフォルトの名無しさん:2009/05/10(日) 00:41:43
すまない、各行末にセミコロンを忘れた

609 :デフォルトの名無しさん:2009/05/10(日) 00:48:09
>>607
y*100+zの値を変数に保持した方がら良くね?

610 :デフォルトの名無しさん:2009/05/10(日) 00:54:45
> いかにも初心者がやりました、ってな感じを出すなら
と書いてある以上わざとじゃ…?

611 :デフォルトの名無しさん:2009/05/10(日) 00:57:43
>>605
>>607
両方ともやってみます。
深夜なのに答えてくれてありがとうございました!

612 :デフォルトの名無しさん:2009/05/10(日) 01:34:27
>>577
参考URL:http://www.stack.nl/~dimitri/doxygen/index.html
GNU Generalライセンス下にあるようだ。
ちなみにFreecell, generateでぐぐったら出た。英語でもぐぐる癖をつけとくと良い。

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

int MicrosoftRandom(long* Seed){
  *Seed = ((*Seed) * 214013 + 2531011);
  return ((*Seed) >> 16) & 0x7fff;
}
void shuffle(char *deck, int seed){
  int i, j, pos = 0, temp[52], left = 52;
  for(i=0;i<13;i++) for(j=0;j<4;j++) temp[pos++] = i+j*13;
  for (i = 0; i < 52; i++){
    j = MicrosoftRandom((long*)&seed) % left;
    deck[i] = temp[j];
    temp[j] = temp[--left];
  }
}
main(int argc, char *argv[]){
  char deck[52], SUIT_LETTER[] = { 'C', 'D', 'H', 'S' };
  int i, seed;
  if(argc == 2) seed = atoi(argv[1]);
  if(seed == 0) return -1;
  shuffle(deck, seed);
  for(i = 0; i < 52; ++i) printf("%c%02d%c", SUIT_LETTER[deck[i]/13], deck[i]%13+1, i%8==7 ? '\n' : ' ');
}

613 :デフォルトの名無しさん:2009/05/10(日) 04:15:08
>>576
さすがにあんたの感覚を疑うわ。言っていることが支離滅裂。
目的が何なのか、だろ?学校に来て勉強しないって、学ぶ意志があるの?w
会社に来て働かないのは、金を払って社員にしてもらっているわけでもなく、
当然会社側は正当な理由で解雇できるがな。

614 :デフォルトの名無しさん:2009/05/10(日) 04:43:35
釣りだと思うが、宿題スレで議論するテーマではないよね?

615 :デフォルトの名無しさん:2009/05/10(日) 06:29:28
確かにマジで言ってるならキモイな

616 : ◆P.ckdTSWek :2009/05/10(日) 09:13:50
[1] 授業単元:コンピュータ演習
[2] 問題文(含コード&リンク):
ポテンシャルU(x)

U(x)=((50-x(dt))*(50-x(dt))*(50+x(dt))*(50+x(dt))/250000

中の質点の動きを調べよ。
ただし、初期位置はx=50とし、所速度はv=-5に変化させてみよう。
問:時間に対して、位置と速度を作図してみよう。

初期値 u(50)=0 v(0)=-5 x(0)=50

v(dt+1)=-(dt/dx)*( u(x(dt) + dx) - u(x(dt))) + v(dt)
x(dt+1)=v(dt) * dt + x(dt)

補足:
ポテンシャル中の質点のdt(正確には凾狽ナすが・・・)を1秒刻みで変移させたときの位置と速度を求めるプログラムです。
速度と位置の式はそれぞれ運動方程式のポテンシャル微分の式を差分化したもので、与えられているものです。
作図云々の前にまずプログラムが複雑で、自分の能力ではまったく手に負えませんでした。説明足りてるか微妙ですがお願いします。
[3] 環境
 [3.1] OS: (Windows/vista)
 [3.2] コンパイラ名とバージョン: Borland C++ Compiler
 [3.3] 言語:C
[4] 期限: ([2009年5月11日12:00まで]
[5] その他の制限:ポインタはよくわからないから、使わないで頂けるとありがたいです。。。

617 : ◆P.ckdTSWek :2009/05/10(日) 09:28:09
追記ですが、dx=1で固定です。

618 :デフォルトの名無しさん:2009/05/10(日) 09:39:44
dtじゃなくて?

619 :デフォルトの名無しさん:2009/05/10(日) 09:40:39
すまん寝ぼけてた

620 :デフォルトの名無しさん:2009/05/10(日) 09:50:32
[1] 授業単元:
[2] 問題文ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9146.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 2009年5月21日
[5] その他の制限: 特にないです。

助けてくださいorz


621 :デフォルトの名無しさん:2009/05/10(日) 10:03:51
>>620
問題文中の図ってなに?

622 :デフォルトの名無しさん:2009/05/10(日) 10:20:08
>>612
おおthx
宿題としては期限切れだけどやってみる

623 :620:2009/05/10(日) 10:20:24
アルゴリズムの図なんですけど、スキャナーとかなくてうpできません・・・
時間かかるけど手書きでうpしたほうがいいかのかな・・・?

624 :デフォルトの名無しさん:2009/05/10(日) 10:39:59
携帯で撮れない?

625 :620:2009/05/10(日) 11:17:26
>>621 >>624
遅くなりました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9147.zip

626 :デフォルトの名無しさん:2009/05/10(日) 12:11:48
>>616
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9148.c
工夫すれば、Uの計算回数は減らせる。

差分方程式は、x += vΔt, v += 〜 をひたすら繰り返すだけ。
それがわからんと意味不明だけど。

627 :デフォルトの名無しさん:2009/05/10(日) 12:23:25
>>625
後出しで悪いけど、これ問題文は?

628 :620:2009/05/10(日) 12:58:07
>>627

ttp://www.geocities.jp/babuuu321/main.html
うpロダにあげようと思ったのですが制限があったので早急にこちら作りました。
非常に見ずらいかと思うので右クリックで画像を保存してから見てもらえたら助かります

助けてもらう立場でありながら無駄な画像を保存してほしいとか頼みごとしてしまってすいませんorz

629 :デフォルトの名無しさん:2009/05/10(日) 14:15:09
>>620
N口先生にこのスレのリンクをメールしておきました。

630 :デフォルトの名無しさん:2009/05/10(日) 14:42:48
指数関数のマクローリンなんだけど、間違えてる箇所がわかりません
教えてください
[1] 授業単元:
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9149.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] C

631 :デフォルトの名無しさん:2009/05/10(日) 15:06:56
>>630
d:\my documents\cplus\part125_630\9149.c(26) : warning C4700: 値が割り当てられていないローカルな変数 'ii' に対して参照が行われました。

632 :デフォルトの名無しさん:2009/05/10(日) 15:41:19
初期化処理か・・・

633 :デフォルトの名無しさん:2009/05/10(日) 16:41:02
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
 次のf (x) = 0  f ( x ) = x^3 - x - 6  の実根をニュートン・ラフソン法で求めるC言語プログラムを作成せよ。
 なお,初期値や収束判定に必要な定数等は #define を使ってプログラム中で設定する。したがって,プログラム中
 に入力用関数 scanf 等を含めないこと。

 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 5月12日
[5] その他の制限:
よろしくお願いします

634 :デフォルトの名無しさん:2009/05/10(日) 16:59:10
>>620 N/M/1 イベント作成・登録
HOME PAGE 消えてたよ、画像も保存してるけど、こっちでいいでしょ。
http://www.nsl.ics.ritsumei.ac.jp/lecture/pdf/ComEx3.pdf

635 :デフォルトの名無しさん:2009/05/10(日) 17:13:09
>>633
#include<stdio.h>
#include<math.h>
#define F(x) ((x)*(x)*(x) - (x) - 6) // f(x)=x^3-x-6
#define F_(x) (3*(x)*(x) - 1) // f'(x)=3x^2-1
#define X0 0
#define EPS (1e-8)
int main() {
double x = X0, dx;
while (1) {
printf("%g\n", x);
dx = F(x) / F_(x);
if (fabs(dx) < EPS)
break;
x -= dx;
}
return 0;
}

636 :デフォルトの名無しさん:2009/05/10(日) 20:23:52
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9151.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9152.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9153.txt

[3] 環境
 [3.1] vista
 [3.2] VC 2008
 [3.3] 言語: C
[4] 期限: 5/11 13:00

分かる方いらしたらよろしくお願いします

637 :デフォルトの名無しさん:2009/05/10(日) 20:48:06
お願いします。C言語コンパイラgcc OSソラリス
台形の面積を求めるプログラム
キーボードより上底a下底b高さhの値を入力して台形の面積を計算するプログラムを作成せよ。

638 :デフォルトの名無しさん:2009/05/10(日) 21:06:36
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9154.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 5月12日14:00

分かるかた、是非よろしくお願いします。

639 :デフォルトの名無しさん:2009/05/10(日) 21:24:21
>>637

int main(void)
{
int johen, kahen, takasa;
printf("上辺 下辺 高さを入力してください\n")
scanf("%d %d %d", &johen, &kahen, &takasa);
printf("面積は %lf\n", (johen + kahen) * takasa / 2.0);
return 0;
}

640 :デフォルトの名無しさん:2009/05/10(日) 21:56:52
>>639さんありがとうございます。

641 :デフォルトの名無しさん:2009/05/10(日) 22:27:14
>>638
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9155.cpp


642 :デフォルトの名無しさん:2009/05/10(日) 22:37:47
>>641さん、
ありがとうございました。とても助かりました。

643 : ◆P.ckdTSWek :2009/05/10(日) 22:51:25
>>626さん、ありがとうございます。いただいたソースを元にファイル出力プログラムを作ってみたのですが、やっぱり力が及ばなく・・・
こちらも教えていただけないでしょうか。mainの中身を少しいじったものがこちらです。

int main(int argc, char** argv)
{
FILE *fout;
double x, v, dx;
int t = 0;

    (中略)

}

fout =fopen("diskfile", "w");
fprintf(stderr,"end %s.\n", "diskfile");

fprintf(fout, "t\tv\tx\n");
fprintf(fout, "%d\t%g\t%g\n", t, v, x);

for (; t < LOOP; ++t) {
scanf("%lf %lf %lf",&t ,&v ,&x);
fprintf(fout, "%d\t%g\t%g\n", t+1, v, x);
}

fclose(fout);
exit (0);

return 0;
}


644 :デフォルトの名無しさん:2009/05/11(月) 00:04:43
>>643
>>626さんではないけど、

forのブロックの中にscanfがあるけど
要らないように思う。
9148.cがしているように、
dxとvとxの計算を消さないで
そのまま行えば良いんじゃないの?

645 :デフォルトの名無しさん:2009/05/11(月) 01:09:54
>>626 >>644 さんではないけど、追加注文。
int main()
{
  FILE *fout;
  double x, v, dx;
  int t = 0;
  x = 50;
  v = -5;

  fout = fopen("diskfile.txt", "w");
  if(fout == NULL) {
    fprintf(stderr, "end %s.\n", "diskfile.txt");
    return 1;
  }

       printf("  t    v         x\n");
  fprintf(fout, "  t    v         x\n");
     printf("%3d %9.4f %9.4f\n", t, v, x);
  fprintf(fout, "%3d %9.4f %9.4f\n", t, v, x);

  for (; t < LOOP; ++t) {
    dx = dX(v);
    v += dV(x, dx);
    x += dx;
       printf("%3d %9.4f %9.4f\n", t+1, v, x);
    fprintf(fout, "%3d %9.4f %9.4f\n", t+1, v, x);
  }

  fclose(fout);
  return 0;
}

646 : ◆P.ckdTSWek :2009/05/11(月) 01:36:40
うおっすげぇ。。。
>>626 >>644 >>645
感謝します。ありがとうございます。

647 :デフォルトの名無しさん:2009/05/11(月) 01:51:11
>>636
一つだけだが、9151.txtをやったよ

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

単純照合の関数を呼び出す. 照合に成功した場合はposは正の数であり,失敗した場合は0
と書いてあるけど、実際に使用しているところでは

110 if (pos >= 0)
111 printf("Found at %d\n", pos);
112 else
113 printf("Not found\n");

だったので、一致を見つけた先頭位置と解釈した。

「KMP法のプログラムとかBM法のプログラムを作成せよ」だと、
あまりにも漠然としていて、何を作ればいいのかわからない。


648 :デフォルトの名無しさん:2009/05/11(月) 01:52:02
[1] 授業単元:C言語1
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9158.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:5/13 12時  お願いします。

649 :デフォルトの名無しさん:2009/05/11(月) 02:25:52
>>648
#include <stdio.h>
#include <limits.h>

int main()
{
int a;
int max = 0;
int min = INT_MAX;
int count = 0;
int sum = 0;
while(1) {
if (scanf("%d",&a)==0){
printf("不正な文字\n");
return 0;
}
if (a < 0) break;
sum += a;
count++;
if (max < a) max = a;
if (min > a) min = a;
}
printf("最大値:%d\n", max);
printf("最小値:%d\n", min);
printf("入力個数:%d\n", count);
printf("平均値:%d\n", sum/count);
return 0;
}


650 :デフォルトの名無しさん:2009/05/11(月) 02:54:03
[1] 授業: プログラミング

[2] 問題文
車の走行距離〔Km〕とガソリンの消費量〔l〕をキーボードから入力して燃費を計算するプログラムを作成せよ。 

[3.3] 言語: C++

[4] 期限: 5月11日 三限

初心者すぎてわかりません、分かる人いたらお願いします

ヒントが出てたんですが
・まずCinで走行距離をキーボードから読み取る
・次にCinでガソリンの消費量をキーボードから読み取る
・その二つのデータから燃費を計算する
・最後に走行距離、ガソリンの消費量、燃費を表示する。表示は次のように工夫されたい
・何Km走り方ましたか?
・ガソリンは何l使いましたか?
・この車の燃費はKm/lです。

という感じです

651 :デフォルトの名無しさん:2009/05/11(月) 03:02:28
>>658

#include <iostream>
using namespace std;

int main()
{
double dist, gas, expens;

cout << "車の走行距離[km]を入力して下さい: ";
cin >> dist;
cout << "ガソリンの消費量[l]を入力して下さい: ";
cin >> gas;

expens = dist / gas;

cout << "車は " << dist << "[km]走りました。" << endl;
cout << "ガソリンは " << gas << "[l]使いました。" << endl;
cout << "この車の燃費は " << expens << "[km/l]です。" << endl;
}

652 :デフォルトの名無しさん:2009/05/11(月) 03:27:16
三限,,,
できればGMTでたのむ。

653 :デフォルトの名無しさん:2009/05/11(月) 03:31:06
あっスマソ
>>651>>650の回答例です
>>658は間違いです

654 :デフォルトの名無しさん:2009/05/11(月) 04:43:50
[1] 授業:プログラミング
[2] 問題文:テキストファイルで10行以上のアルファベットの英文を作り
      そのテキストファイルに含まれている文字の数をカウントせよ。
      ただし、小文字大文字の区別はつけなくてよい。
[3] 環境
 [3.1] OS:win
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ ver.3.6(で合ってるんですかね
 [3.3] 言語: C
[4] 期限: 5/11 12:00
[5] その他の制限: 1)テキストの読み込みはプログラムないでは行わなず、コマンドプロンプト内で行うこと。
          2)文は1行ごとに読み込みその後1文字ずつ処理してください。

655 :デフォルトの名無しさん:2009/05/11(月) 05:02:50
>>654
「10行以上のアルファベットの英文」の意味が不明。
意味がある英文なのか、出鱈目なアルファベットの羅列でもいいのか。どっち?
行は単に改行すればいいの?
VCのバージョンは、思い切り違うと思うが、汎用的な解答はあるかも


656 :デフォルトの名無しさん:2009/05/11(月) 05:10:46
もしかしたら、テキストファイルはあらかじめ作っておいて、
作成したいプログラムはその処理だけすれば良いのかな?

657 :デフォルトの名無しさん:2009/05/11(月) 05:20:06
>>649 ありがとうございます!

658 :デフォルトの名無しさん:2009/05/11(月) 05:34:35
>>657
printf("平均値:%d\n", sum/count);
すまん、これは変だな。
printf("平均値:%g\n", (double)sum/count);
こうしてくれ。


659 :デフォルトの名無しさん:2009/05/11(月) 05:48:11
>>655
得に指定がなかったためでたらめで大丈夫だと思います。

660 :>>654:2009/05/11(月) 05:50:43
>>656
自分に当ててくれたものだったらそういうことになります。

661 :デフォルトの名無しさん:2009/05/11(月) 06:39:58
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
 1 + 1/2 + 1/3 + ... + 1/1000の計算をするプログラム
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5月11日
なるべく簡単でお願いします

662 :デフォルトの名無しさん:2009/05/11(月) 07:25:18
#include <stdio.h>

int main(void)
{
int i;
double sum = 0.0;

for(i=1; i<=1000; i++) sum += 1.0 / i;

printf("%f", sum);

return 0;
}

663 :デフォルトの名無しさん:2009/05/11(月) 07:33:06
どうも。参考になりやす

664 :デフォルトの名無しさん:2009/05/11(月) 07:38:00
>>654
ファイルは適当に作ってリダイレクトしてくれ

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

int main(void)
{
int i, cnt[26] = {0};
char buff[256];

while(fgets(buff, 256, stdin)) {
for(i=0; buff[i]; i++) if(isalpha(buff[i])) cnt[tolower(buff[i])-'a']++;
}

for(i=0; i<26; i++) printf("%c:%d\n", 'a'+i, cnt[i]);

return 0;
}

665 :デフォルトの名無しさん:2009/05/11(月) 08:00:50
>>662
浮動小数点には「積み残し」という特有な現象があるから
小さい方から順に足していった方が誤差が少ないよ

まあ今回そこまで考慮する必要があるのかどうかわからんけど

666 :デフォルトの名無しさん:2009/05/11(月) 11:17:08
>>647
遅くなりました
ありがとうございます

667 :デフォルトの名無しさん:2009/05/11(月) 12:36:36
>>664
遅れましたが無事提出できました。
ありがとうございます。

668 :620:2009/05/11(月) 16:00:05
>>634
報告ありがとうございます。復旧させました
あと参考資料の方使わせていただきました!カラフルでとても見やすいです

669 :デフォルトの名無しさん:2009/05/11(月) 17:24:33
>>651
本当にありがとうございます
助かりました

670 :デフォルトの名無しさん:2009/05/11(月) 18:52:20
[1]プログラミング
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9160.zip
[3]
[3.1]Windows XP pro
[3.2]Visual studio 2005
[3.3]C
[4]5/14 〜18:59

671 :670:2009/05/11(月) 18:55:50
↑の続きです。
[5]その他
ここまで自力でやりましたが、どこで誤ってるのか解らないので修正お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9161.txt

672 :デフォルトの名無しさん:2009/05/11(月) 18:56:06
質問テンプレ】
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク): ガウスの消去法で入力された3元連立方程式を解くプログラムを作成せよ。また、掛け算と割り算の回数も
表示すること。さらに途中の行列の式も逐一表示すること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: cc
 [3.3] 言語: C
[4] 期限: 5月13日
よろしくおねがいします。どうやらdoubleの配列、for文を繰り返して作る感じです。


673 :デフォルトの名無しさん:2009/05/11(月) 19:11:34
月面の重力は地球の約17%です。
自分の体重を入力すると月での実効体重を
計算し、表示するプログラムを作成してくだ
さい。

これ誰か組んでください↑
勉強してもまったく分りません
[1] 授業単元: C言語実習
[2] 問題文(含コード&リンク): 月面の重力は地球の約17%です。
自分の体重を入力すると月での実効体重を
計算し、表示するプログラムを作成してくだ
さい。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: ボーランド
[4] 期限: 5月12日
[

674 :デフォルトの名無しさん:2009/05/11(月) 19:17:47
>>670
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9162.txt

なるべく元の形を保つように修正した。

675 :デフォルトの名無しさん:2009/05/11(月) 19:17:56
>>673
#include <stdio.h>

int main()
{
    int w;
    printf("Earth: ");
    scanf("%d", &w);
    printf("Moon: %d\n", w * 17 / 100);
    return 0;
}

676 :デフォルトの名無しさん:2009/05/11(月) 19:25:18
[1] 授業単元:C言語
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9163.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名: bcc32
 [3.3] 言語: C
[4] 期限: 5/12 23:59まで

どうかよろしくお願いします

677 :デフォルトの名無しさん:2009/05/11(月) 19:25:47
>>673
>勉強してもまったく分りません

いさぎよく単位落としたら?

678 :デフォルトの名無しさん:2009/05/11(月) 19:52:56
[1] 授業単元: 実習
[2] 問題文(含コード&リンク): 四角形の面積を計算するプログラムを書い
て下さい。この時、辺の値はユーザーに入力して
もらうものとします。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: 今日迄

679 :デフォルトの名無しさん:2009/05/11(月) 20:03:43
>>678
#include <stdio.h>

int main(void) {
int x, y;
printf("辺の縦の長さ: ");
scanf("%d", &x);
printf("辺の横の長さ: ");
scanf("%d", &y);
printf("四角形の面積:%d\n", x*y);
return(0);
}


こんなんでいい?

680 :デフォルトの名無しさん:2009/05/11(月) 20:19:03
自分の名前、生年月日、年齢、住所を画面に表示するプログラムを作ってみてくれませんか?
まだやったばかりでcoutとか文字の出力法くらいしかやってないですが…

名前とか個人情報とかそういうのは全部てきとうで記号とかでいいです



681 :デフォルトの名無しさん:2009/05/11(月) 20:38:24
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9164.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 5月13日18:00

ぜひ、よろしくお願いします。

682 :デフォルトの名無しさん:2009/05/11(月) 20:42:29
>>680ですがすみません
[1] 授業単元: 実習
[2] 問題文(含コード&リンク):自分の名前、生年月日、年齢、住所を画面に表示するプログラムを作り、それぞれの行にコメントを入れよ
まだやったばかりでcoutとか文字の出力法くらいしかやってないですが…
名前とか個人情報とかそういうのは全部てきとうで記号とかでいいです


[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C++
[4] 期限: 今日

683 :デフォルトの名無しさん:2009/05/11(月) 20:58:54
>>682
coutができるなら答えることは何もないと思うが?

684 :デフォルトの名無しさん:2009/05/11(月) 21:13:23
>>676
#define N 5 /* 駅の数 */
int main(void)
{
COSTUNIT cost_list[] = { /* 上限距離と距離単位の金額 */
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N]={0,10,30,50,100}; /*各駅間の距離 */
int fare_table[N][N]; /* 運賃表 */

make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */

表示するならfor文2つ使って適当に

return 0;
}
ざっと見たので間違ってるかも

685 :デフォルトの名無しさん:2009/05/11(月) 21:17:40

>>683
coutってどこでどう使えばいいんですか?


686 :デフォルトの名無しさん:2009/05/11(月) 21:23:52
void main()
{
  // 名前を出力する
  cout << "私の名前は○○○○です" <<endl;
  // 生年月日を出力する
  cout << "生年月日は19xx年yy月zz日です" <<endl;
  (以下略)

あとは同様。

687 :デフォルトの名無しさん:2009/05/11(月) 21:44:07
>>680>>682
#include<iostream>//iostreamを#include
int main(){std::cout<<"俺の名前,2009年5月11日生まれ,0歳,〒000-0000"<<std::endl;}//自分の名前、生年月日、年齢、住所を画面に表示するプログラム

>>685
下らんことをここで訊くな。別のスレへ行け。

688 :デフォルトの名無しさん:2009/05/11(月) 21:45:15
>>684
コンパイルしたときに
make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */ の部分に
「問題のあるポインタの変換」って警告が出て、エラーで止まりました

689 :デフォルトの名無しさん:2009/05/11(月) 21:56:23
>>674
あぁ、なるほど!
論理演算子を用いるのですね。
勉強になりました!有難うございますm(_ _)m

690 :デフォルトの名無しさん:2009/05/11(月) 22:00:36
>>686
すみませんまだいますでしょうか
#include<iostream>
using namespace std;

int main(){


return 0;
}
は鉄板らしいんですよね。
肝心な中身はその書いてくれたのをこれに入れて通りますかね?


691 :デフォルトの名無しさん:2009/05/11(月) 22:08:31
>>690 俺をシカトすんなw

#include<iostream>//iostreamを#include
using namespace std;//std省略
int main(){//main関数の定義
 std::cout<<"俺の名前,2009年5月11日生まれ,0歳,〒000-0000"<<std::endl;//自分の名前、生年月日、年齢、住所を画面に表示
 return 0;//0を返す
}//main関数の終わり

692 :デフォルトの名無しさん:2009/05/11(月) 22:14:39
>>691
あ、すみません。
ありがとうございます。でも、コメントの部分iostreamを#include
そうしたなら、#include<include>になっちゃいませんか?もしかしてそのコメントは()内はiostreamとする
っていうのが言いたいんですか?
あと、std省略と書いてあるんですが、stdって文章に残ってますよね


693 :デフォルトの名無しさん:2009/05/11(月) 22:15:49
>>670 http://pc12.2ch.net/test/read.cgi/tech/1240022781/714
#include <stdio.h>
#define swap(a,b) tmp=a, a=b, b=tmp
int main()
{
  float n1, n2, n3, tmp;

  printf("実数Aを入力:"); scanf("%f", &n1);
  printf("実数Bを入力:"); scanf("%f", &n2);
  printf("実数Cを入力:"); scanf("%f", &n3);

  if(n1 < n2) swap(n1, n2);
  if(n2 < n3) swap(n2, n3);
  if(n1 < n2) swap(n1, n2);

  if(n1==n2) {
    if(n2==n3)
      printf("\n%.1f\n", n3);
    else
      printf("\n%.1f>%.1f\n", n2, n3);
  } else if(n2==n3)
    printf("\n%.1f>%.1f\n", n1, n2);
  else
    printf("\n%.1f>%.1f>%.1f\n", n1, n2, n3);
}

694 :デフォルトの名無しさん:2009/05/11(月) 22:27:05
>>688
失礼こんな感じでどうかな
#define N 5 /* 駅の数 */
int main(void)
{
COSTUNIT cost_list[] = { /* 上限距離と距離単位の金額 */
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N]={0,10,30,50,100}; /*各駅間の距離 */
int i;
int* fare_table[N]; /* 運賃表 */

for(i=0;i<N;i++)
fare_table[i] = (int*)malloc(sizeof(int)*N);

make_fare_table(N, dist_list, cost_list, fare_table); /* 一覧作成 */

表示するならfor文2つ使って適当に

for(i=0;i<N;i++)
free(fare_table[i]);

return 0;
}

695 :デフォルトの名無しさん:2009/05/11(月) 22:28:47
>>676
#define N 5
int main(void){

COSTUNIT cost_list[] = {
{20, 5, 100},
{100, 10, 180},
{500, 50, 850},
{0, 100, 1650},
};
double dist_list[N - 1] =
{10.1, 21.1, 32.1, 43.1};
int x, y;
int **p = (int **)malloc(N * sizeof(int *));
for (x = 0; x < 11; x++)
*(p + x) = (int*)malloc(N * sizeof(int));
make_fare_table(N,dist_list, cost_list, p);
for (x=0; x<N;x++) {
for (y=0; y<N;y++) {
printf("%4d ", *(*(p+y) +x));
}
printf("\n");
}
return 0;
}


696 :686:2009/05/11(月) 22:33:17
なんだ、釣りか。

697 :デフォルトの名無しさん:2009/05/11(月) 22:36:57
>>696
えどういうことですか

698 :695:2009/05/11(月) 22:38:58
解放忘れた。

699 :691:2009/05/11(月) 22:45:32
>>692
>でも、コメントの部分iostreamを#include
>そうしたなら、#include<include>になっちゃいませんか?もしかしてそのコメントは()内はiostreamとする
>っていうのが言いたいんですか?
すまんが,何を言っているのか分からん。
#include<iostream> は iostreamを#includeしている。いいだろ?
おまいの理解がおかしくないか?

>あと、std省略と書いてあるんですが、stdって文章に残ってますよね
揚げ足取り乙。
そう思うならstd::を消して提出しろよ。
俺のコードはコンパイル通るし正しいコードだ。

お前の美学にかなうことが宿題ならやるが。
丸投げスレでぐだぐだ言うんじゃねぇよw
だからつりって言われるんだろうに。

700 :デフォルトの名無しさん:2009/05/11(月) 22:50:44
>>672
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9165.txt

行列の表示は適当だと思う感じに作ったので
気になったら修正しといて下さい

701 :デフォルトの名無しさん:2009/05/11(月) 22:52:01
>>699
揚げ足取りなんかじゃないです。ただstd省略ってどこが省略されてるのかなと思いました

702 :デフォルトの名無しさん:2009/05/11(月) 22:59:37
>>694 >>695
malloc使えばよかったんですね
どうもありがとうございました。本当に助かりました。

703 :デフォルトの名無しさん:2009/05/11(月) 23:07:37
>>691
何とかわかりました
ありがとうございます

704 :デフォルトの名無しさん:2009/05/11(月) 23:12:57
>>681
1.
Point::Point(string pname, double px, double py){
name = pname; x = px; y = py;
}
double Point::distance(){
return sqrt(pow(x,2)+pow(y,2));
}
double Point::distance(const Point& p){
return sqrt(pow(p.x-x,2)+pow(p.y-y,2));
}
void Point::print(){
cout << "name=" << name << " x=" << x << " y=" << y << endl;
}


705 :デフォルトの名無しさん:2009/05/11(月) 23:14:34
>>681
2.
int main(){
Point* p[10];
int i;
double x,y;
double a = 0;
for (i=0;i<10;i++){
cout << "x y?";
cin >> x >> y;
p[i] = new Point("noname", x, y);
a += p[i]->distance();
}
a /= 10.0;
cout << "原点からの距離平均=" << a << endl;
cout << "平均以上の距離の点" << endl;
for (i=0;i<10;i++)
if ( p[i]->distance() >= a )
p[i]->print();
for(i=0;i<10;i++)
delete p[i];
}
きっと何か見落としてると思うが
math.hインクルードしないとだめかも
それがNGなら二乗のとこはpow使わないでかけ算して

706 :デフォルトの名無しさん:2009/05/12(火) 00:15:11
>>704-705さんありがとうございます。
なにも指定されてないのでpowは使って大丈夫だと思います。mathインクルードしてうまく動きました。

ちなみに2番の問題 >>705 のプログラムで
必ず10個のデータ入力ではなくて、最大10個のデータ入力(データ入力が5個だったり7個だったりもする)
という形にするにはどうすればよいのでしょうか?
自分でやってみたんですが実行するとセグメントエラーになってしまって・・・

707 :デフォルトの名無しさん:2009/05/12(火) 00:27:08
>>706
こんな感じでxに-1とか入れればokかな…
int main(){
Point* p[10];
int i,count;
double x,y;
double a = 0;

for (i=0;i<10;i++){
cout << "x y?";
cin >> x >> y;
if(x < 0)
break;
p[i] = new Point("noname", x, y);
a += p[i]->distance();
}
count=i;
if(count >= 1){
a /= count;
cout << "原点からの距離平均=" << a << endl;
cout << "平均以上の距離の点" << endl;
for (i=0;i<count;i++)
if ( p[i]->distance() >= a )
p[i]->print();
for(i=0;i<count;i++)
delete p[i];
}else
cout << "データがありません" << endl;
}

708 :自分の名前():2009/05/12(火) 06:57:32
//>>680
//出た!コメント埋め問題
//もしかして、鉄板はテンプレートかフライパンの聞き間違いか?

#include <iostream> // #includeの後は1個空白
using namespace std; // 以下はstd::を省略する
int main() { // ()内は(void)でもよい
string name, birthday, age, address; // 各変数の宣言
// 変数は使う直前に宣言しても良い string name など
name = "○□△"; // 名前を設定
birthday = "2002-01-30"; // 誕生日を設定
age = "9"; // 年齢を設定(年齢なので数値でも可能)
address = "Losangels USA, ZIP 1234"; // 住所を設定
// 設定した名前、誕生日、年齢、住所をここから表示
cout << "名前:" << name << endl // 名前の表示
<< "誕生日:" << birthday << endl // 誕生日の表示
<< "年齢:" << age << endl // 年齢の表示
<< "住所:" << address << endl; // 住所の表示
return 0;
}

709 :デフォルトの名無しさん:2009/05/12(火) 11:27:43
>>707
遅くなりましたが、うまく動きました。
とても助かりました。ありがとうございました。

710 :デフォルトの名無しさん:2009/05/12(火) 11:45:36
[1] 授業単元: ソフトウェア制作4
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9166.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] Visual Studio2005
 [3.3] C++
[4] 期限:今日の17:30までに

急ですいませんが、よろしくお願いします。

711 :デフォルトの名無しさん:2009/05/12(火) 13:29:08
>>710
あんまり凝ったデバッグしてないから動作の保障はしない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9167.zip

あと、俺は趣味グラマだから、あんまりオブジェクト指向はできない。仕様通りかもわからん。
さらにこのままだと怒られることうけあいなので、自分で整形してくれ。

712 :デフォルトの名無しさん:2009/05/12(火) 15:05:31
u,n,x,y,z,dは整数で
1000>u>1,1000>n>=3 x>0,y>0,z>0 d>=0 の条件下で

d=u^n-max{x^n+y^n+z^n}

このときdが最小となる(x,y,z)の組を求めよ
↓サンプルデータです
u n d x y z
2 3 5 1 1 1
6 3 0 3 4 5
7 4 224 4 5 6
98 3 8 2 48 94
76 4 733 17 47 73
54 5 103717 13 47 47
123 3 0 6 51 120
456 3 0 6 51 120
最低このくらいのu,nでのx,y,zの組合せは欲しいのです。

713 :712:2009/05/12(火) 15:10:51
[1]学校の課題orz
[2] 問題文
[3] 環境
 [3.1] linux? (どこまで習
 [3.2] なんかGNOMEってやつ
 [3.3] 言語:c
[4] 期限:来週の月曜日
[5] その他の制限:得ニナ氏

714 :デフォルトの名無しさん:2009/05/12(火) 15:39:05
1000の1000乗は無理w

715 :712:2009/05/12(火) 15:56:40
1000っていうのはとりあえず値です。
いちおう作ったけど、一桁の小さい値ですらもできないので・・・。
うちの学科は情報と電気系なんだけど、情報系にいくきはまったくないんだよね・・。
さっさと単位とっちまいたいのさ。お願いします

716 :デフォルトの名無しさん:2009/05/12(火) 15:57:15
それ以前にmax(x^n+y^n+z^n)の意味というか効果が無い
ことで釣りだと判断できない>>714のアフォさときたら...

717 :デフォルトの名無しさん:2009/05/12(火) 15:59:35
maxに意味がなくただの括弧だと思えばいいだけだろw

718 :712:2009/05/12(火) 16:00:58
はじめて書き込んだんだけど、うまくつたわってなかったようだ。
2chのやつらやっぱ冷たいな。自力でがんばるさ。

719 :デフォルトの名無しさん:2009/05/12(火) 16:01:42
>>712
#include <stdio.h>
#include <math.h>

int main(void)
{
int u, n, d, x, y, z, i, j, k, temp, un;

printf("u:");
scanf("%d", &u);
printf("n:");
scanf("%d", &n);

d = un = pow(u, n);

for(i=1; i<u; i++) {
for(j=i; j<u; j++) {
for(k=j; k<u; k++) {
temp = un - (pow(i,n)+pow(j,n)+pow(k,n));
if(temp < 0) break;
if(temp < d) x = i, y = j, z = k, d = temp;
}}}

printf("u:%d n:%d d:%d x:%d y:%d z:%d\n", u, n, d, x, y, z);

return 0;
}

数が大きいとエラーになるけど、例程度ならこんなんで十分

720 :デフォルトの名無しさん:2009/05/12(火) 16:30:44
ああmaxの意味はu^n以下でもっとも大きい値って事か
で初期に与えられるのはuとnだと

そう書いてくれないとエスパー以外わかりません…

721 :デフォルトの名無しさん:2009/05/12(火) 16:34:09
サンプル見りゃわかるけどな

722 :デフォルトの名無しさん:2009/05/12(火) 16:36:08
てっきり max{ x^n, y^n, z^n } の typo で x^n, y^n, z^n 中の最大の値かと思ってた

723 :デフォルトの名無しさん:2009/05/12(火) 16:52:57
>最低このくらいのu,nでのx,y,zの組合せは欲しいのです。
がきちんと読めて、サンプルデータを少し計算して見ればエスパー能力なんて必要ない。

相手の書き方を非難する前に、自分の読解力のなさをなんとかすべき。

724 :デフォルトの名無しさん:2009/05/12(火) 16:55:50
おまえ細かいな
もてないだろw

725 :デフォルトの名無しさん:2009/05/12(火) 17:16:08
問題を理解できない頭の悪さを棚にあげて釣り扱いする>>716のアフォさときたら……

726 :デフォルトの名無しさん:2009/05/12(火) 18:00:54
>>710
私もやってみた

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


727 :デフォルトの名無しさん:2009/05/12(火) 20:26:49
>>710に釣られたのかなぁ。反応無いと寂しい。(+o+

728 :デフォルトの名無しさん:2009/05/12(火) 20:31:44
>>700
672です。どうもありがとうございました。

729 :デフォルトの名無しさん:2009/05/12(火) 21:00:29
>>712 double で扱ってるけど有効桁数が15桁程度なので計算途中で誤差が出る
多倍長演算ライブラリを使ったほうがいい
#include<stdio.h>
#include<math.h>

int main(void){
int u, n, x, y, z, min_x, min_y, min_z, i;
double table[1000], d, min_d;

while(scanf("%d%d", &u, &n)==2){
if(u<=1 || 1000<=u) break;
if(n<3 || 1000<=n) break;
for(i=1;i<=u;i++) table[i]=pow(i, n);
min_d=table[u]-3;
min_x=min_y=min_z=1;
for(z=u-1;z>0;z--){
d=table[u]-table[z];
for(y=z;y>0 && table[y]>d;y--);
for(;y>0;y--){
d=table[u]-table[z]-table[y];
if(d>table[y+1]) break;
for(x=y;x>0 && table[x]>d;x--);
d-=table[x];
if(x>0 && d<min_d) min_d=d,min_x=x,min_y=y,min_z=z;
}
}
printf("%d %d %.0f %d %d %d\n", u, n, min_d, min_x, min_y, min_z);
}
return 0;
}

730 :デフォルトの名無しさん:2009/05/12(火) 23:45:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):F0=0、F1=1、F=Fn-1+Fn-2(n>=2)で定義される数列Fnを求めるプログラムを作成せよ
[3] 環境 [3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2009年5月13日7:00まで
[5] その他の制限:再帰的なもの、非再帰的なものの二種類作らないといけないらしいです。

どなたかCに詳しい方お願いしますm(__;)m


731 :デフォルトの名無しさん:2009/05/12(火) 23:47:36
またフィボナッチか

732 :デフォルトの名無しさん:2009/05/12(火) 23:57:58
再帰的な方法
int fibi (int n, int a, int b) {
if (n == 0)
return a;
else
return fibi(n - 1, b, a + b);
}

int fib (int n) {
return fibi(n, 0, 1);
}

非再帰的な方法
int fib (int n) {
int a = 0, b = 1;
for (int i = 0; i < n; i++) {
int t = a;
a = b;
b = t + b;
}
return a;
}


733 :デフォルトの名無しさん:2009/05/13(水) 00:02:10
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9169.txt
[3] 環境
 [3.1] OS: (Windows/vista)
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語:C
[4] 期限: [2009年5月12日0まで]
[5] その他の制限:

よろしくお願いします

734 :デフォルトの名無しさん:2009/05/13(水) 00:02:41
だからC99の記法はやめろとどれだけ言ったら…

735 :デフォルトの名無しさん:2009/05/13(水) 00:03:52
>>728
あーよく考えたらb[]を0.0で初期化するのを忘れてたわ
修正しといて
昨晩疲れた頭で考えたのでやっぱりバグ残ってるなあ

736 :デフォルトの名無しさん:2009/05/13(水) 00:04:53
>>732
はやいぃ―!!!
明日早めに家出ないといけなかったんで助かります。
いまからコンパイルしてみます!
ありがとうございました(._.)


フィボナッチ多いらしいのに...ありがとうございますm(__)m

737 :デフォルトの名無しさん:2009/05/13(水) 00:51:06
>>732
その再帰の発想はなかったw

738 :デフォルトの名無しさん:2009/05/13(水) 01:03:30
>>733
ベタに書いてみたけどどうじゃろ
int main(void)
{
 double a[N][N+1];
 int i, j, k;
 double t,pv;

 if(matrix_in(a) != 0){
  printf("Error in matrix_in().\n");
   return 1;
 }

 for(i=0;i<N;i++){
  pv=a[i][i];
  for(j=0;j<N+1;j++)
   a[i][j] /= pv;

  for(j=0;j<N;j++){
   if(j==i) continue;
   t=a[j][i];
   for(k=0;k<N+1;k++)
    a[j][k] -= t*a[i][k];
  }
 }
 printf("X=%lf Y=%lf Z=%lf", a[0][N], a[1][N], a[2][N]);
 return 0;
}

739 :デフォルトの名無しさん:2009/05/13(水) 01:22:26
マロクソースでおじゃるか?

740 :デフォルトの名無しさん:2009/05/13(水) 01:23:11
すいません...もうひとつ問題有りました...

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):F0=0、F1=1、F=Fn-1+Fn-2(n>=2)で定義される数列Fnを求めるプログラム
加算演算'+'の回数をTnとおく。T(0)=T(1)=0、Tn=n−1
加算演算の回数がTnであるような再帰的なプログラムを作成せよ。
[3] 環境 [3.1] OS: Linux[3.2] コンパイラ名とバージョン:gcc 3.4[3.3] 言語:C
[4] 期限:2009年5月13日7:00まで


なんか加算演算の条件つきらしい問題です...
お手数ですがお願いしますm(__;)m

741 :デフォルトの名無しさん:2009/05/13(水) 01:39:38
>>740
過去に求めた計算結果を配列にストアして
二度目以降はそちらを使うようにすればうまくいくな

742 :デフォルトの名無しさん:2009/05/13(水) 02:02:54
>>740
こんな感じで >>732 で書いた関数にちょっと足せばできあがり。
nが0,1のときの加算回数は0、2以上の場合はn-1になっているはず。

int fibi (int n, int a, int b) {
if (n == 0)
return a;
else if (n == 1)
return b;
else
return fibi(n - 1, b, a + b);
}

int fib (int n) {
return fibi(n, 0, 1);
}

わかってると思うけど、これはFnを計算する関数だけだから、
適当にmain関数を作っておかないと実行できないからね。

743 :デフォルトの名無しさん:2009/05/13(水) 02:22:43
再帰処理で目的と手段を取り違えることは大きな災いの元

744 :デフォルトの名無しさん:2009/05/13(水) 02:27:54
>>742
ん− main関数がうまくできません(__;)


745 :デフォルトの名無しさん:2009/05/13(水) 02:34:50
>>742
連続ですいません
mainいじったら上手くいきました!!
ホント夜遅くまで付き合ってくださってありがとうございます(__)

次からは自分でも出来るよう頑張ります。ありがとうございました!

746 :デフォルトの名無しさん:2009/05/13(水) 02:37:55
>>732
これは思いつかなかったわw やべっ、なんかわくわくしてきたぞw

747 :デフォルトの名無しさん:2009/05/13(水) 02:42:12
病人を見てわくわく

748 :デフォルトの名無しさん:2009/05/13(水) 08:46:14
宿題業界に新たな風を吹き込んだ>>732に敬礼

749 :デフォルトの名無しさん:2009/05/13(水) 08:54:12
>>732のどこが面白いの?
SICPとか読んだらすぐ頭のほうに出てくるはずだが。

750 :732:2009/05/13(水) 09:05:39
実は自分がとっている講義の配布資料に書いてある方法をパクっただけです。

751 :デフォルトの名無しさん:2009/05/13(水) 09:23:27
じゃあ同じO(n)でももっと変態な方法を

typedef struct { int a, b; } intx2;

intx2 fib2(int n) {
if (n == 0) {
return (intx2){ 0, 1 };
} else {
intx2 s = fib2(n - 1);
return (intx2){ s.b, s.a + s.b };
}
}

int fib(int n) {
return fib2(n).a;
}


752 :デフォルトの名無しさん:2009/05/13(水) 09:30:22
でたなC99厨め。ここでは複合リテラルは禁断の技だ。
しかも構造体をそのまま返値にするとはふとどきな。

753 :デフォルトの名無しさん:2009/05/13(水) 09:55:40
[1] 授業単元:
[2] 問題文(含コード&リンク):
生徒の情報が入っているデータファイル(Students.dat)を読み込み、
指定された7つの作業を実行するプログラムを作れ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9170.zip
[3] 環境
 [3.1] OS: Win Vista
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限:5/15まで
[5] その他の制限:

754 :デフォルトの名無しさん:2009/05/13(水) 10:17:39
C99厨はD厨と同じ位にマイナーで憐れよのう

755 :デフォルトの名無しさん:2009/05/13(水) 10:49:35
>>753
添付のデータファイルの形式が間違ってない?
4,5列目が何を示しているのか明記されていない気がする。

756 :デフォルトの名無しさん:2009/05/13(水) 11:12:13
>>755
固定長なんではないか?
7 1 9 16 11 2 5
ageとgpaは 2 4

757 :デフォルトの名無しさん:2009/05/13(水) 13:20:22
[1] 授業単元: c言語入門
[2] 問題文(含コード&リンク):
次のような数列を計算するプログラム(関数を使うこと)
Fn+2 = Fn + Fn+1
ただし,F0 = 0, F1 = 1 とする.入力されたn(n > 0)に対し,F0 からFn まで表示させること

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 5月15日まで

よろしくお願いします。

758 :デフォルトの名無しさん:2009/05/13(水) 13:42:57
またフィボナッチか

759 :デフォルトの名無しさん:2009/05/13(水) 13:47:27
同じ問題が何回でも出てくるな

760 :デフォルトの名無しさん:2009/05/13(水) 14:17:44
>>753
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9171.txt


761 :760:2009/05/13(水) 14:28:12
>>753
コマンドの引数で、Students.datのファイル指定をしてくれ。

762 :デフォルトの名無しさん :2009/05/13(水) 15:23:34
>>757
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9172.txt

763 :デフォルトの名無しさん:2009/05/13(水) 17:03:59
>>749
面白いというわけではなく、今まで再帰と言えば
return f(n) + f(n-1); といった形式だったもんで
あぁなるほどと思ったわけでw

764 :デフォルトの名無しさん:2009/05/13(水) 17:42:59
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):
入力された値(int 型)が正の整数ならば1 を,負の整数ならば−1 を,0 ならば0 を表
示するプログラム。ただし関数を使うこと

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC2005
 [3.3] 言語: C++
[4] 期限: 今日中

どうかよろしくお願いします。

765 :デフォルトの名無しさん:2009/05/13(水) 17:43:32
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
Javaで作られたプログラムをC言語に記述しなおすプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Cygwin
 [3.3] 言語: C
[4] 期限:5月14日
[5] その他の制限:基本的なことは履修しました

766 :デフォルトの名無しさん:2009/05/13(水) 17:51:53
>>764
#include <stdio.h>

int F(int N){
    if(N>0) return 1;
    if(N<0) return -1;
    return 0;
}

int main(){
    int i;
    puts("Input Number");
    scanf("%d",&i);
    printf("result %d -> [%d]\n",i,F(i));
    return 0;


767 :デフォルトの名無しさん:2009/05/13(水) 17:54:29
>>765
トランスコーダは宿題の範疇ではないと思うんだが、どうだろう。
っていうか、どこの宿題だ?

768 :デフォルトの名無しさん:2009/05/13(水) 17:57:29
>>765
1日でそれ作れって言うのか?
Googleのトップでも無理だと思う

769 :デフォルトの名無しさん:2009/05/13(水) 20:58:34
[1] 授業単元:情報処理
[2] 問題文: 10個の任意の数字を入力し、最大値、最小値を絶対値で求めるプログラムを作成せよ、また求めた値を標準化せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Cygwin
 [3.3] 言語: C
[4] 期限:5月14日
[5] その他の制限:最大値と最小値を絶対値で求める事はできました。以下のプログラムを改変してください。


770 :デフォルトの名無しさん:2009/05/13(水) 21:00:06
>>769続き
#include <stdio.h>
#include <math.h>
#define N 100
main()
{
int i,n;
float min,max;
float a[N+1];
printf("n=");
scanf("%d",&n);
if (n>N) exit(1);
for (i=1; i<=n; i=i+1)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
max=fabs(a[1]);
min=fabs(a[1]);
for (i=2; i<=n; i=i+1)
{
if(min>a[i]) min=fabs(a[i]);
else if(max<a[i]) max=fabs(a[i]);
}
printf("max %f \n",max);
printf("min %f \n",min);
}

771 :デフォルトの名無しさん:2009/05/13(水) 21:04:31
>>769
標準化基準は最大値?平均値?標準偏差?

772 :デフォルトの名無しさん:2009/05/13(水) 21:12:07
>>771
標準化基準は最大値だと思います。
例えば以下の出力結果だったら、maxとminを最大値で割ってやればいいと思います。
宜しくお願いします。
/*
n=10
a[1]=-90
a[2]=50
a[3]=-30
a[4]=35
a[5]=78
a[6]=0
a[7]=-27
a[8]=41
a[9]=3
a[10]=12
max 90.000000
min 3.000000
*/





773 :デフォルトの名無しさん:2009/05/13(水) 21:23:51
>>769 標準化が分からなかったので a[n]/max にしておいた
#include <stdio.h>
#include <math.h>
#define N 100
#define EPS (1e-10)
int main()
{
int i,n;
float min,max;
float a[N+1];
printf("n=");
scanf("%d",&n);
if (n>N) return 1;
for (i=1; i<=n; i=i+1)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
max=min=fabs(a[1]);
for (i=2; i<=n; i=i+1)
{
float t=fabs(a[i]);
if(min>t) min=t;
else if(max<t) max=t;
}
printf("max %f \n",max);
printf("min %f \n",min);
if(max>EPS){
for(i=1;i<=n;i++) printf("a[%d]=%f %.2f \n", i, a[i], a[i]/max);
}
return 0;
}

774 :デフォルトの名無しさん:2009/05/13(水) 23:43:44
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9173.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限:2009年5月15日17:00まで
[5] その他の制限

実行したところエラーは出なかったのですが動作が停止してしまいました。
よろしくおねがいします

775 :デフォルトの名無しさん:2009/05/13(水) 23:55:15
>>774
(char)h を %s で参照してるのがおかしい
%s を %c にすればおk

776 :デフォルトの名無しさん:2009/05/13(水) 23:58:48
>>774
char hの表示は、
%s ではなく %c に

777 :776:2009/05/14(木) 00:15:50
既に回答あったのねw

778 :712:2009/05/14(木) 00:34:23
ありがとう!>>719>>729
多分>>729のやつつかったら俺じゃないやつが作ったみたいなことになりそうだから
>>719を参考にしてもうちょいだけ高度化?したやつを作ってためそうかとおもうわ!
ifの中に||とかつけるのみたことないし。多分習ってないわ。 調べたらすぐわかったけど


779 :デフォルトの名無しさん :2009/05/14(木) 03:47:48
>>769
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9174.txt

780 :デフォルトの名無しさん:2009/05/14(木) 07:47:33
[1] 授業単元:上級C++(アルゴリズムとデータ構造)
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9177.txt
[3] 環境
[3.1] OS: ウィンドウズ
[3.2] コンパイラ名とバージョン:VisualStudio2008
[3.3] 言語:C++
[4] 期限:2009年5月15日朝8時00まで
[5] その他の制限
アニマルゲームのソース自体はぐぐれば出てきました。(↓下のサイトのguessanimal.cpp)
ttp://www.math.uaa.alaska.edu/~afkjm/cs331/c++samples/
しかし本件ではデザインパターンのステートとやらを使わなければならないので上記は×
よろしくおねがいします

781 :デフォルトの名無しさん:2009/05/14(木) 12:58:50
>>780ってパターンを認識させるって事かな?

782 :780:2009/05/14(木) 13:09:35
>>781
パターンを認識させるって?
ステートパターンをどう適用すればよいのかわからないのですが、
(1)状態を示す抽象的なステートクラス
(2)ステートクラスを継承するコンクリートクラス→これは回答ノードと質問ノードで使用させるメソッドを定義?
(3)ステートクラスをメンバ変数に持つコンテキストクラス
をどうにかして定義して使用すればよいものかと。

783 :デフォルトの名無しさん:2009/05/14(木) 16:28:36
>>780
ごめんね、C++やったことないんだ。
で、学校で習ったことあるなーっていうアルゴリズムっだったから、
聞いてみただけ。

784 :デフォルトの名無しさん:2009/05/14(木) 18:16:04
>>782
多分そういうことだろうけどこれをステートパターンにする意味がわからないね
アニマルゲームと言うのの仕様もよくわからん
最後に「それはブタですか?」にNoと答えたら次の質問ノードはその「ブタですか?」のNoにリンクされるの?

785 :780:2009/05/14(木) 18:42:05
>>784
確かに僕もステートパターンの意義は低いように思いました。
ただオブジェクト指向の勉強をしたところなので単にポリモーフィズムを理解させるために出題したものかと思われます。

最後に「豚ですか」にNoと答えるとNoにリンクされます。アニマルゲームの仕様は上記リンクの通りですが
実行するとわかります。曖昧なところは特にないと思ってます

786 :デフォルトの名無しさん:2009/05/14(木) 19:05:06
>>780 ではないけれど
始め「その動物はブタですか?」の質問にNoと答えると、答えに黒ブタが登録されて。
次からNoと答えると「その動物は黒ブタですか?」が出てくるんだ。
それでその質問にNoと答えると、答えに茶ブタが登録されて。
次からNoと答えると「その動物は茶ブタですか?」が出てくるんだ。

787 :デフォルトの名無しさん:2009/05/14(木) 19:21:17
>>786
違うと思うぞ

> 縞模様がありますか?
Y
> その動物はシマウマですか?
N
> 正しい答えを教えてください。
トラ
> その動物を特定する質問を入力してください。
白黒の縞模様ですか?
> 質問への答えを入力してください。
N

とすると、「縞模様がありますか?」のYesリンクに新しい「白黒の縞模様ですか?」ノードがリンクされ
そのNoリンクに新しい「その動物はトラですか?」ノードが、Yesリンクに既存の「その動物はシマウマですか?」ノードがリンクされる。

788 :787:2009/05/14(木) 19:36:56
787はサンプルの流れな。

んでStateパターンにするってことは

> 「縞模様がありますか?」のYesリンクに新しい「白黒の縞模様ですか?」ノードがリンクされ
> そのNoリンクに新しい「その動物はトラですか?」ノードが、Yesリンクに既存の「その動物はシマウマですか?」ノードがリンクされる。



既存の「その動物はシマウマですか?」ノード(回答)が「白黒の縞模様ですか?」ノード(質問)に状態遷移、
「その動物はシマウマですか?」ノード(回答)と「その動物はトラですか?」ノード(回答)を新しく作成し、
上の遷移したノードのYesリンクとNoリンクにそれぞれ紐付ける

となるんだと思う。コードは今から書きま。

789 :787:2009/05/14(木) 20:59:37
いちおーできまんた。

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

VC6なんで、細部は適当に直して。

790 :780:2009/05/14(木) 21:16:13
>>787
はや。。もう二日かけてるのですが。。(汗)
有難うございます。こちらも並行して必死でやってるのですがまだまだ動かない上に
もらったコードに比べるとめちゃソース量多くて複雑。。なんでこうなるんだろう。
これから中身解読します 有難うございました

791 :787:2009/05/14(木) 21:18:26
mainにある
> string input;
はゴミです。削除してくらはい。

792 :780:2009/05/14(木) 21:23:39
了解いたしやした。

793 :デフォルトの名無しさん:2009/05/14(木) 21:35:02
>>773 >>779 ありがとう御座います。
おかげで課題を提出することができました。
今度は提出したプログラムで以下の出力結果をmaxは、そのままでminを-50と出力するようなプログラムを、どなたか作ってくれませんか? 
プログラムは、>>773を改変してください。

n=10
a[1]=1
a[2]=2
a[3]=10
a[4]=50
a[5]=-50
a[6]=-100
a[7]=-25
a[8]=-10
a[9]=0
a[10]=40
max 100
min 0

794 :デフォルトの名無しさん:2009/05/14(木) 21:43:26
-100じゃないんだ

795 :デフォルトの名無しさん:2009/05/14(木) 21:46:53
>>794
教官が言うにはそうみたいです。
標準化は>>773でOKでした。

796 :デフォルトの名無しさん:2009/05/14(木) 21:55:06
>>793 絶対値を符号逆転に変更すればいいのかな?
max=min=fabs(a[1]);

max=min=-a[1];

float t=fabs(a[i]);

float t=-a[i];


797 :デフォルトの名無しさん:2009/05/14(木) 22:10:57
1.31ビットのM系列乱数を返す関数MRand()を作成しなさい(タップは任意)。
2.該当関数を使った下記の出力結果を提出しなさい。
  int main(void) {
    int i,x,y;
    int Count[5][5];
    memset(Count,0,sizeof(int)*5*5);
    for (i=0;i<100000;i++) {
      Count[MRand()][MRand()]++;
    }
    for (y=0;y<5;y++) {
    for (x=0;x<5;x++) {
      printf("%6d",Count[y][x]);
    } printf("\n");
    return 0;
  }
3.なぜそのような表示結果となったのか考察しなさい。

798 :デフォルトの名無しさん:2009/05/14(木) 22:15:50
>>796
今家に環境がないので、明日学校で試してみようと思います。
明日教官にもう少し詳しく聞いてみます。
わざわざ、すいません。

799 :797:2009/05/14(木) 22:20:03
2の真ん中あたり Count[MRand()][MRand()]++; を写し間違えました。
正しくは Count[MRand()%5][MRand()%5]++; です。

800 :デフォルトの名無しさん:2009/05/14(木) 22:23:50
>>797
写し間違えはそれだけ?
}が1個足りないようにも見えるけど。

801 :797:2009/05/14(木) 22:32:00
>>800
最後あたりこれでした。
    } printf("\n");}

802 :デフォルトの名無しさん:2009/05/15(金) 13:47:18
[1] 授業単元: 情報処理
[2] 問題文:次のガウスの消去法プログラムにピボット交換のプログラムを書き込め。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C
[4] 期限: 本日17:30まで
[5] その他の制限: math.hは使える。以下がガウス消去法プログラム
#include<stdio.h>
main()
{
double a[3][4];
double r;
int n,i,j,m;
n=3;
for(i=0;i<n;++i) /*係数の読み込み*/
for(j=0;j<n+1;++j)
scanf("%lf",&a[i][j]);
showmtx(a,n);
/*下三角を0にする*/
for(m=0;m<=n-2;++m)
{
for(i=m+1;i<=n-1;++i)
{
r=a[i][m]/a[m][m];
for(j=m;j<=n;++j) a[i][j]-=r*a[m][j];
}
}


803 :デフォルトの名無しさん:2009/05/15(金) 13:50:18
上の続きです。showmtx(a,n);
for(j=n-1;j>=0;--j) {
a[j][n]/=a[j][j]; a[j][j]=1;
for(i=0;i<j;++i) {
a[i][n]-=a[i][j]*a[j][n]; a[i][j]=0;
} }
showmtx(a,n); }
showmtx(a,n)
double a[3][4];
int n;
{ int i,j;
for(i=0;i<n;++i) {
for(j=0;j<=n;++j)
printf("%6.3f",a[i][j]);
printf("\n"); }
printf("\n"); }














804 :デフォルトの名無しさん:2009/05/15(金) 14:16:12
>>802>>803
showmtx(a,n);って何?
情報を小出しにするな

805 :デフォルトの名無しさん:2009/05/15(金) 14:25:14
[1] 授業単元:プログラミング演習第1
[2] 問題文(含コード&リンク):ttp://www.syst.cs.kumamoto-u.ac.jp/~masato/pe2/06/index.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: PM.15:30まで
[5] その他の制限: いま授業で考えています。まったく歯が立たないorz

後1時間しかない;;




806 :デフォルトの名無しさん:2009/05/15(金) 14:29:20
>>804
>>803の真ん中辺りから下
古い書き方だな

807 :デフォルトの名無しさん:2009/05/15(金) 14:30:40
C的には純正

808 :デフォルトの名無しさん:2009/05/15(金) 14:38:51
>>806
ありがと
勝手に書き換えさせてもらうわ

809 :デフォルトの名無しさん:2009/05/15(金) 14:44:35
またK山先生のところか。

810 :デフォルトの名無しさん:2009/05/15(金) 15:02:33
>>802
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9179.txt

ソースが読みにくいので勝手にC89規格に合致するよう書き換えさせてもらっている
これが問題となるようなら元に戻しといてくれ

811 :デフォルトの名無しさん:2009/05/15(金) 15:33:54
>>810
802です。書き換えありがとうございました。
なんとかなりそうです。


812 :デフォルトの名無しさん:2009/05/15(金) 15:39:47
>>805
時間過ぎたかな

問題1
(1) element->next = sp;
(2) sp = element;
問題2
(1) tmp = sp;
(2) sp = tmp->next;
問題3
(2) (double)(t->a.x + t->b.x + t->c.x)/3.0;
(3) (double)(t->a.y + t->b.y + t->c.y)/3.0;

問題4
(1) return 1;
(2) return (fact(cdr(head)) * car(head));
5は勘弁

813 :812:2009/05/15(金) 15:44:10
問題3で回答漏れ
(1)はprint_g(&t);

814 :デフォルトの名無しさん:2009/05/15(金) 15:46:10
1〜4ができない人に5をやれと言うのが一番酷な気がするw

815 :デフォルトの名無しさん:2009/05/15(金) 17:58:32
>>805
>>812
問題5
再帰とは、私が
検索エンジンを使って調べ、そのまま他人の文をコピペして作成しようとした文章の中に
意味の分からない単語が存在したとき、その単語の意味を検索エンジンを使って調べ、
そのまま他人の文をコピペすることを、意味の分からない単語が無くなるまで繰り返し、
文章を作成することです。

816 :デフォルトの名無しさん:2009/05/15(金) 18:22:16
再起とは螺旋階段である。
同じようなことを繰り返しているようだが、螺旋階段を歩くことで高低差を踏破するという仕事を完遂できるのである。

とか、今ひねり出した。

817 :デフォルトの名無しさん:2009/05/15(金) 18:31:05
再帰問題は、夢の中で当たった宝くじを現実世界に持ち帰る方法の考察から始まった。

818 :デフォルトの名無しさん:2009/05/15(金) 18:54:51
先の見えない世の中でも
一歩ずつしっかり歩けば
きっと目的地に辿り着く

大喜利やってんじゃねぇぞw

819 :デフォルトの名無しさん:2009/05/15(金) 19:18:48
GNUやPNGみたいに

再帰とは
 「さ」いきは
 「い」○○○
 「き」○○○
の略である。
とかで良いんじゃね

820 :デフォルトの名無しさん:2009/05/15(金) 19:28:14
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): はじめに人数を入力させる。次に人数分、交通費を入力、すると交通費を分配するためにはお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、五円、一円)に何枚用意する必要があるか、表示してくれるプログラムを作成せよ
[3] 環境
[3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語C++
[4] 期限: ([2009年5月21日15:00まで]
[5] その他の制限: 今日の授業でdo-while文 while文 for文を習いました
こんな感じなのかな・・と思ってやってみたのですが・・
#include<stdio.h>
int main(){
int x,y,z,kosu,i;
printf("人数を入力してください\n");
scanf("%d",&kosu);
i=1;
while(i<=kosu){
printf("1人目の交通費は\n");scanf("%d",&x);
i=i+1;
}
printf("10000円 %d\n",x/10000);
printf("5000円 %d\n",(x%10000)/5000);
printf("1000円 %d\n",(x%5000)/1000);
printf("500円 %d\n",(x%1000)/500);
printf("100円 %d\n",(x%500)/100);
printf("50円 %d\n",(x%100)/50);
printf("10円 %d\n",(x%50)/10);
printf("5円 %d\n",(x%10)/5);
printf("1円 %d\n",(x%5)/1);

return(0);
}

821 :デフォルトの名無しさん:2009/05/15(金) 19:31:38
環境書き忘れてました。
vistaです

822 :デフォルトの名無しさん:2009/05/15(金) 19:40:39
注意事項を書き忘れていました
・人数として負の数を入力された場合は「正しい人数を入力してください」と表示し
終了する
・枚数が0枚のときは硬貨の種類は表示されない


823 :デフォルトの名無しさん:2009/05/15(金) 19:43:42
>>820
配列は使ってもいいの?

824 :デフォルトの名無しさん:2009/05/15(金) 19:45:14
>>823
すいません。配列はまだ習っていません;;

825 :デフォルトの名無しさん:2009/05/15(金) 19:53:38
>>820
#include<stdio.h>
int main(void){
int x,kosu=-1,i;
int num10000=0,num5000=0,num1000=0,num500=0,num100=0,num50=0,num10=0,num5=0,num1=0;

printf("人数を入力してください\n");scanf("%d",&kosu);
if(kosu<0){ printf("正しい人数を入力してください\n");return 1; }
for(i=0;i<kosu;i++){
x=-1; printf("%d人目の交通費は\n",i+1);scanf("%d",&x);
if(x<0){ printf("正しい金額を入力してください\n");return 1; }
num10000+=x/10000;x%=10000;
num5000+=x/5000;x%=5000;
num1000+=x/1000;x%=1000;
num500+=x/500;x%=500;
num100+=x/100;x%=100;
num50+=x/50;x%=50;
num10+=x/10;x%=10;
num5+=x/5;x%=5;
num1+=x;
}
if(num10000) printf("10000円 %d\n",num10000);
if(num5000) printf("5000円 %d\n",num5000);
if(num1000) printf("1000円 %d\n",num1000);
if(num500) printf("500円 %d\n",num500);
if(num100) printf("100円 %d\n",num100);
if(num50) printf("50円 %d\n",num50);
if(num10) printf("10円 %d\n",num10);
if(num5) printf("5円 %d\n",num5);
if(num1) printf("1円 %d\n",num1);
return 0;
}

826 :デフォルトの名無しさん:2009/05/15(金) 19:54:37
>>825 (・∀・)ニヤニヤ

827 :デフォルトの名無しさん:2009/05/15(金) 19:56:23
>>823
すいません。。配列習ってました。
配列を使ってもいいそうです。。

828 :デフォルトの名無しさん:2009/05/15(金) 20:02:56
>>820
#include <stdio.h>
int main()
{
int i, x, y, kosu;
printf("人数を入力してください\n");
scanf("%d",&kosu);
if (kosu < 0) {
printf("正しい人数を入力してください\n");
return 0;
}
i=1;
while(i<=kosu){
printf("1人目の交通費は\n");scanf("%d",&x);

y = x / 10000; x -= y * 10000; if (y > 0) printf("10000円%d\n",y);
y = x / 5000; x -= y * 5000;  if (y > 0) printf("5000円 %d\n", y);
y = x / 1000; x -= y * 1000;  if (y > 0) printf("1000円 %d\n",y);
y = x / 500; x -= y * 500;  if (y > 0) printf("500円 %d\n",y);
y = x / 100; x -= y * 100; if (y > 0) printf("100円 %d\n",y);
y = x / 50; x -= y * 50;  if (y > 0) printf("50円 %d\n",y);
y = x / 10; x -= y * 10;  if (y > 0) printf("10円 %d\n", y);
y = x / 5; x -= y * 5; if (y > 0) printf("5円 %d\n",y);
if (x > 0) printf("1円 %d\n",x);
i=i+1;
}
return 0;
}


829 :デフォルトの名無しさん:2009/05/15(金) 20:03:28
>>820
#include<stdio.h>
int main(void){
int x,kosu=-1,i, j;
int face_values[]={10000,5000,1000,500,100,50,10,5,1,0};
int amount[sizeof(face_values)/sizeof(face_values[0])]={0};

printf("人数を入力してください\n");
scanf("%d",&kosu);
if(kosu<0){
printf("正しい人数を入力してください\n");
return 1;
}

for(i=0;i<kosu;i++){
x=-1;
printf("%d人目の交通費は\n",i+1);
scanf("%d",&x);
if(x<0){
printf("正しい金額を入力してください\n");
return 1;
}
for(j=0;face_values[j]>0;j++){
amount[j]+=x/face_values[j];
x%=face_values[j];
}
}
for(j=0;face_values[j]>0;j++){
if(amount[j]) printf("%d円 %d\n", face_values[j], amount[j]);
}
return 0;
}

830 :828:2009/05/15(金) 20:12:44
× printf("1人目の交通費は\n");scanf("%d",&x);
○ printf("%d人目の交通費は\n",i); scanf("%d",&x);
間違えてる

831 :デフォルトの名無しさん:2009/05/15(金) 20:14:15
>>825
numが習っていないので・・・でも作っていただきありがとうございます。
>>828
デバッグなしでしたらエラーしてしまいました。。

>>829
face valuesとかいう単語をまだ授業中で使っていないので・・・
作っていただきありがとうございます。


832 :デフォルトの名無しさん:2009/05/15(金) 20:18:35
[1] 授業単元: 実習
[2] 問題文(含コード&リンク): 血液型を聞いて、出力するプログラム
[3] 環境 ボーランド コンパイラ 5.5
 [3.1] OS: (Windows/Linux/等々) XP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語:C
[4] 期限: 明後日

833 :828:2009/05/15(金) 20:19:51
>>831
エラーになった箇所のifの前に全角スペースがある。取り除いてくれ

834 :デフォルトの名無しさん:2009/05/15(金) 20:23:01
>>832
#include<stdio.h>

int main(void)
{
char buf[100+1]="unknown";

printf("血液型を入力してください\n");
scanf("%100s", buf);
printf("\n血液型は %s です\n", buf);

return 0;
}

835 :デフォルトの名無しさん:2009/05/15(金) 20:30:58
>>828
できたのですが
これを金額を一人一人別々に表示するのではなくまとめて表示できるようにするには
どうしたらよいのでしょうか?

836 :デフォルトの名無しさん:2009/05/15(金) 20:35:37
>>835
そうするには10000万円の枚数、5000円の枚数、...を
それぞれ別の変数に覚えておかなければならない。
だから>>825

837 :デフォルトの名無しさん:2009/05/15(金) 20:44:21
numを使わないことはできますか?
今日の授業で↓をうまく組み合わせればできると言われたので・・
int c;
printf("10000円 %d\n",x/10000);
printf("5000円 %d\n",(x%10000)/5000);
printf("1000円 %d\n",(x%5000)/1000);
printf("500円 %d\n",(x%1000)/500);
printf("100円 %d\n",(x%500)/100);
printf("50円 %d\n",(x%100)/50);
printf("10円 %d\n",(x%50)/10);
printf("5円 %d\n",(x%10)/5);
printf("1円 %d\n",(x%5)/1);

int sum=0,x,i,kosu;
scanf(%d,&kosu);
i=1
while(i<=kosu){
scanf("%d",&x);
sum=sum+x;
i=i+1
}


838 :デフォルトの名無しさん:2009/05/15(金) 20:47:07
#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("血液型なに?\n");
srand(getchar());
printf("そうなんや。ちなみに俺は%s型。", &"A\0\0B\0\0O\0\0AB\0"[rand()%4*3]);

return 0;
}

聞いて、出力。あほですんません。

839 :デフォルトの名無しさん:2009/05/15(金) 20:49:52
int c;
scanf("%d",&c)
printf("10000円 %d\n",c/10000);
printf("5000円 %d\n",(c%10000)/5000);
printf("1000円 %d\n",(c%5000)/1000);
printf("500円 %d\n",(c%1000)/500);
printf("100円 %d\n",(c%500)/100);
printf("50円 %d\n",(c%100)/50);
printf("10円 %d\n",(c%50)/10);
printf("5円 %d\n",(c%10)/5);
printf("1円 %d\n",cx%5)/1);
x→c
scanf入れ忘れ

840 :デフォルトの名無しさん:2009/05/15(金) 20:56:58
>>832
これに数日掛けられる課題ってどこ行けば受けられるんだよ…

841 :デフォルトの名無しさん:2009/05/15(金) 21:22:04
>>837 こんな風で良いのか?
#include <stdio.h>
void print(int y[9])
{
if (y[0] > 0) printf("10000円 %d\n", y[0]); if (y[1] > 0) printf("5000円 %d\n", y[1]);
if (y[2] > 0) printf("1000円 %d\n", y[2]); if (y[3] > 0) printf("500円 %d\n", y[3]);
if (y[4] > 0) printf("100円 %d\n", y[4]); if (y[5] > 0) printf("50円 %d\n", y[5]);
if (y[6] > 0) printf("10円 %d\n", y[6]); if (y[7] > 0) printf("5円 %d\n", y[7]); if (y[8] > 0) printf("1円 %d\n", y[8]);
}
int main()
{
int i, j, x, kosu, y[9], kouka[9]; // 紙幣硬貨毎の枚数・累計枚数
for (j = 0; j < 9; j++) kouka[j] = 0;
printf("人数を入力してください\n"); scanf("%d",&kosu);
if (kosu < 0) {printf("正しい人数を入力してください\n"); return 0;}
i=1;
while(i<=kosu){
printf("%d人目の交通費は\n", i); scanf("%d",&x);
y[0] = x / 10000; x -= y[0] * 10000; y[1] = x / 5000; x -= y[1] * 5000;
y[2] = x / 1000; x -= y[2] * 1000; y[3] = x / 500; x -= y[3] * 500;
y[4] = x / 100; x -= y[4] * 100; y[5] = x / 50; x -= y[5] * 50;
y[6] = x / 10; x -= y[6] * 10; y[7] = x / 5; x -= y[7] * 5; y[8] = x;
print(y); // 個別を表示(これは必要無かったのか?)
for (j = 0; j < 9; j++) kouka[j] += y[j];// 紙幣硬貨ごとの枚数を集計
i++;
}
printf("累計\n"); print(kouka); //紙幣硬貨ごとの集計結果を表示
return 0;
}


842 :デフォルトの名無しさん:2009/05/15(金) 21:31:51
/* >>832 >>834 >>838 血液型を聞いて、出力するプログラム */
#include <stdio.h>
#include <string.h> /* for Borland */
int main() {
  char buf[10];

  while(1) {
    printf("あなたの血液型を A/B/O/AB で入力して下さい:");
    if(fgets(buf, 10, stdin) == 0) break; /* at Ctrl/D */
    buf[strlen(buf)-1] = '\0';
    if( strcmp(buf, "A") == 0 || strcmp(buf, "B") == 0 ||
      strcmp(buf, "O") == 0 || strcmp(buf, "AB") == 0 ) {
      printf("あなたの血液型は %s ですね?\n", buf);
    }
  }
  return 0; /* for Borland */
}

843 :デフォルトの名無しさん:2009/05/15(金) 21:32:09
お前ら宿題が少ない日は一つの課題に対してたくさんソースを書くのなw

844 :デフォルトの名無しさん:2009/05/15(金) 21:58:54
>>841
今やっとわかりました!ありがとうございました。

845 :デフォルトの名無しさん:2009/05/15(金) 22:46:19
>>797
作ってみた

#define MRAND_BITS 7
#define MRAND_BITS_Q (MRAND_BITS-3)

unsigned long MRand(void){
static char bits[MRAND_BITS];
static int is_first=1, index;
unsigned long ret=0;
int i;

if(is_first){
for(i=0;i<MRAND_BITS;i++) bits[i]=(rand()>>8)&1;
is_first=0;
}
for(i=0;i<31;i++){
ret=(ret<<1)|(bits[(index+i)%MRAND_BITS]^=bits[(index+i+MRAND_BITS_Q)%MRAND_BITS]);
}
index=(index+31)%MRAND_BITS;
return ret;
}

846 :デフォルトの名無しさん:2009/05/16(土) 10:04:07
#include <stdio.h>
#include <float.h>
void main() {
double e1, e2; //εを代入する変数
//e1は一つ前, e2は計算用の現在のε
unsigned int n;//forのカウント用
e1 = DBL_MIN; //εの初期値の代入

for(n=1; n<4294967295; n++) {
/*ここにe2(現在のε)の更新処理を入れる*/
//ε=DBL_MIN * 10n乗
if(1.0 != (1.0+e2)){
/*ここにεとnの出力処理を代入*/
}
/*ここにe1(一つ前のε)の更新処理を入れる*/
}

プログラミング言語の授業で初めての演習なんですが全く分からないのでお願いします
コメントに沿ってプログラムを作るらしいのですが手も足もでなくて…
結果がでた理由も添えてもらえると有り難いです

847 :デフォルトの名無しさん:2009/05/16(土) 11:31:07
>>846 テンプレは?
責めてコンパイラの種類だけでも。
それが不明ならコンパイルした後のエラーメッセージを。
締め切りも、書いてあると有り難い。

848 :デフォルトの名無しさん:2009/05/16(土) 11:45:10
コンパイラわよくわからないんですがvisual C++2008てのを使ってます
締め切りは来週の木曜日までですができるだけ速い方が有り難いです

849 :デフォルトの名無しさん:2009/05/16(土) 11:59:42
#include <stdio.h>
#include <float.h>
void main() {
double e1, e2;
unsigned int n;
e1 = DBL_MIN;

for(n=1; n<4294967295; n++) {
e2 = e1 * 10;
if(1.0 != (1.0+e2)) {
printf("%.20f %d\n", e2, n);
break;
}
e1 = e2;
}
}

850 :デフォルトの名無しさん:2009/05/16(土) 12:46:42
>>846
入門書なり入門サイトなりを最初の数ページ読めば分かることなのに、何故それをしないの?

851 :デフォルトの名無しさん:2009/05/16(土) 12:53:09
>>846
処理可能な最小数をさらに小さくする計算にどんな意味があるんだ?
演習の意図がよく分からんな。

852 :デフォルトの名無しさん:2009/05/16(土) 13:00:34
>>846
>>1にある質問テンプレを使って依頼を書き直して。
課題内容もそのまま書いてみれ。

853 :デフォルトの名無しさん:2009/05/16(土) 13:12:14
題名 精度の調査
有限精度の数値計算では1+εが1に等しいような正のεが存在する.そのようなεの中で最大のものを見いだせ
ただし ε=DBL_MIN*10n乗とする
DBL_MINはヘッダファイル<float.h>で定義されている
しようする変数の型はdoubleとし、printfの出力の書式は%eとする
条件を満たす時のnも出力する

て問題です

OSは vista
コンパイラはビジュアルスタジオ2008
言語C++


854 :デフォルトの名無しさん:2009/05/16(土) 13:15:39
>>853
課題の意図がやっと解ったよ。

855 :ぽるむ:2009/05/16(土) 13:50:21
[1] プログラミング応用
[2] 在庫管理システムを作れ
  条件:@商品がいくつあるかを[商品名と個数をメーカーごと]にエクセルに保存できる
     A日別・月別の在庫一覧を見れる
     B入庫・出庫は商品一覧から選択し処理をする
     Cコンパイラ等の使用したソフトを記載すること
     Dexeファイルで提出すること
[3] 環境
 [3.1] OS:WinXP SP3
 [3.2] コンパイラは自由
 [3.3] C
[4] 期限:無期限
[5] 制限なし

よろしくお願いします!

856 :デフォルトの名無しさん:2009/05/16(土) 14:10:44
[1]C言語演習
[2]生徒ID(8桁整数),国語得点(4桁整数)、
数学得点(4桁整数)、理科得点(4桁整数)、社会得点(4桁整数)、英語得点(4桁整数)
が書かれたタブ区切りファイルを標準入力から読み込み、次の32個の
タブ区切りファイル(yyyymmddhhmmss.xxx.txt)を作るプログラム
x=0の場合、入力行を生徒ID昇順にそのまま出力する
それ以外の場合x=y(0)+y(1)2+y(2)2^2+y(3)2^3+y(4)2^4 (y(0),y(1),y(2),y(3),y(4)は0か1)
とすると 量z=国語得点y(0)+数学得点y(1)+理科得点y(2)+社会得点y(3)+英語得点y(4)が定まる。
生徒ID z zに関する降順順位(同一順位繰り下げ方式)
を各行とするタブ区切りファイルとすること。
(同一順位繰り下げ方式:1位が3名居る場合はすべて3位)
yyyymmddhhmmssは処理開始をした時刻とする。(共通)
[3] linux/gcc
制限:入力タブ区切りファイルの行数サイズは無制限とするので、メモリに展開して記憶しては
ならない。無効行(すべての項目が揃っていないetcなどフォーマットエラーチェック)チェックは
今回は省略して良いが入れる余地を残すようにコーディングすること。
同じ生徒IDの行があった場合は異常終了すること(同時に作成したすべてのファイルを削除)
処理速度は問わない。処理中同時に開けるファイル数は5個以下とする。
プログラムコード上限500行以内(コメント含む)
[4]月曜日まで

857 :デフォルトの名無しさん:2009/05/16(土) 14:25:12
>>853
#include <stdio.h>
#include <float.h>
int main()
{
double e1 = DBL_MIN, e2;
int n = 0;
while (1) {
printf("%3d:%.15e\n", n, e1);
if (1.0 < 1.0 + e1)
break;
e2 = e1; e1 *= 10; n++;
}
printf("DBL_MIN=%.15e\n", DBL_MIN);
printf("n=%d\n", n);
printf("%.15e %s\n", e2, ((1.0 < 1.0 + e2)? "not same": "same"));
printf("%.15e %s\n", e1, ((1.0 < 1.0 + e1)? "not same": "same"));
return 0;
}


858 :デフォルトの名無しさん:2009/05/16(土) 15:00:15
>>849 e1とn-1
/*ここにεとnの出力処理を代入*/
printf("%.20f %d\n", e2, n);

859 :デフォルトの名無しさん:2009/05/16(土) 15:46:29
[1] 授業単元:プログラミング実習1
[2] 問題文(含コード&リンク):
長さ32の0と1の列を入力して、このビット列の表わす実数値を出力するプログラムを作成せよ。
実数表現の仕方はIEEE規格754に従うものとする。

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

860 :デフォルトの名無しさん:2009/05/16(土) 16:02:29
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
 1) フィボナッチ数列 X(n) = X(n-1) + X(n-2), X(1) = X(2) =1 の n = 1 から 100までの値を
一覧表にせよ.

(2) 次の (a), (b) いずれかの極限値を求めよ.

(a) 1 + 1/1! + 1/2! + 1/3! + ...... + 1/n! + .....

(b) sin(x)/x (x → 0)


[3] 環境
 [3.1] OS:Linux
 [3.2]gcc 恐らく最新
 [3.3] 言語: C
[4] 期限:月曜日の夕方五時まで
[5] その他の制限: ループのところのレポートなのでなんらかの形でループを使うのだと思います。
             配列は使わないとありがたいです。条件分岐は習ってます
             (2)はどちらでも構わないです、(1)だけとかでも十分ありがたいです
             よろしくお願いします

861 :デフォルトの名無しさん:2009/05/16(土) 16:03:01
>>858
>>846の段階じゃその条件はわかるわけねーだろw

862 :858:2009/05/16(土) 16:09:40
ありがと、間違ってなければ、良くなるだろう。woman

863 :デフォルトの名無しさん:2009/05/16(土) 16:19:19
>>859
#include <stdio.h>

main(){
int i, n = 0;
char c;
for(i = 0; i < 32; ++i){
scanf("%c", &c);
(n <<= 1) |= c == '1' ? 1 : 0;
}
printf("%g", *(float*)&n);
}

intとfloatが32bitで、gccのfloatがIEEE754準拠の前提。違ったらメンゴ。

864 :デフォルトの名無しさん:2009/05/16(土) 16:40:23
左辺値で計算できたっけ?gcc

865 :デフォルトの名無しさん:2009/05/16(土) 16:46:24
どれでもできねえよ

866 :デフォルトの名無しさん:2009/05/16(土) 16:58:33
左辺値で計算?
言ってる意味がよくわからんが863ならテスト済みだぞ?

867 :デフォルトの名無しさん:2009/05/16(土) 17:06:17
= や op= は左辺値を返すからね。>>863 はちゃんと動く。

868 :デフォルトの名無しさん:2009/05/16(土) 17:06:41
C++でコンパイルしてんじゃね?

869 :デフォルトの名無しさん:2009/05/16(土) 17:07:28
(複合)代入演算子の結果はCだと左辺値にならない(C++ならなるが)。
gccは独自拡張で可能なだけ。-std=c89や他のC89処理系だとエラーになる。

870 :デフォルトの名無しさん:2009/05/16(土) 17:13:45
>>863コンパイルできない

871 :デフォルトの名無しさん:2009/05/16(土) 17:16:50
なるほど。じゃあ適当に揉みしだいてくれ。

872 :デフォルトの名無しさん:2009/05/16(土) 17:23:50
>>869
そうだったのか。知らんかった。

873 :797:2009/05/16(土) 17:27:53
いまさらですが質問ルールに沿っていなかったようなので
-- 797の補足です --
[1] 授業単元: C言語応用
[2] 問題文(含コード&リンク): >>797 参照
[3] 環境
 [3.1] OS: Windows XP
 [3.2] gcc 3.4.5
 [3.3] 言語:C
[4] 期限 5/22(金)

>>845
ありがとうございます。
>>797の2のメイン関数につけて実行したところ下記になりました。
 3937 2362 2361 4724 4724
   0 4726 4723 3151 5512
 6297  788 2363 1576 2363
 2363 3937 2363 8660 6298
 5514 6298 1575 5511 7874

Count[y=1][x=0]のところの値が0になっています。
おそらくこれの考察が >>797の3 の意味だと思います。
猿でも分かる解説、もしくはリンク等どなたかご教授願いませんか?

874 :デフォルトの名無しさん:2009/05/16(土) 17:53:46
>>859
#include <stdio.h>
#include <memory.h>
main(){
  int i, n = 0;
  char c;
  float a = 2.5;
  memcpy((void*)&n, (void*)&a, 4);
  for(i = 0; i < 32; ++i){
    printf("%d", (n>>(31-i)) & 1);
  }
  puts("");
  n = 0;
  for(i = 0; i < 32; ++i){
    scanf("%c", &c);
    n |= (c == '1' ? 1 : 0) << (31-i);
//    (n <<= 1) |= c == '1' ? 1 : 0;
/*    n <<= 1,
 *    n |= (c == '1') ? 1 : 0;
 */  }
  printf("%g", *(float*)&n);
  puts("");
  for(i = 0; i < 32; ++i){
    printf("%d", (n>>(31-i)) & 1);
  }
}

875 :デフォルトの名無しさん:2009/05/16(土) 17:59:26
>>857
ビルドでエラーがでてしまう…

876 :デフォルトの名無しさん:2009/05/16(土) 18:04:15
もうフィボナッチはテンプレに入れるべき

877 :デフォルトの名無しさん:2009/05/16(土) 18:04:17
>>873
このくらいに変更してみて
#define MRAND_BITS 79
#define MRAND_BITS_Q (MRAND_BITS-31)

878 :デフォルトの名無しさん:2009/05/16(土) 18:10:31
>>875
どの辺でエラー?
一応vc2005とgccで確認したが。

879 :デフォルトの名無しさん:2009/05/16(土) 18:14:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
2つあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9182.zip
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2009/5/21
[5] その他の制限:

課題01は途中までやりました。
これに手を加えてできるのなら、これを修正していただきたいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9183.txt

お手数おかけしますが、宜しくお願いします。

880 :デフォルトの名無しさん:2009/05/16(土) 18:19:13
>>875
申し訳ない、作り直したらできました、ありがとうございます

881 :デフォルトの名無しさん:2009/05/16(土) 18:46:22
>>879
1.
#include <stdio.h>
int main(void)
{
int i, num, n;
printf("1桁の整数を入力:");
scanf("%d", &num);
for (i = 1; i <= 99; i++)
if(i%num==0||i/10==num||i%10==num)
printf(" %d", i);
return (0);
}


882 :デフォルトの名無しさん:2009/05/16(土) 18:47:08
>>879
2.
#include <stdio.h>
int mypow(int a, int b)
{
int i,r;
for(i=1,r=a;i<b;i++)
r *= a;
return r;
}
int main(void)
{
int i,j,a,b;
printf("a?");
scanf("%d", &a);
printf("b?");
scanf("%d", &b);
for (i = 1; i <= b; i++){
for(j=1;j<=a;j++)
printf(" %d",mypow(j,i));
printf("\n");
}
return (0);
}


883 :デフォルトの名無しさん:2009/05/16(土) 19:36:44
ところで>>859ってあれでいいの?
IEEE754を自力で解きほぐさなくて?

884 :797:2009/05/16(土) 19:56:46
>>877
返答ありがとうございます。
やってみたところ下記になりました。正しい乱数が発生されているようです。
 4034 4021 3930 4059 4090
 4029 3952 4051 3953 4057
 3948 4047 4016 3952 4037
 3988 3968 3870 3998 4044
 4030 3951 4036 3964 3975
考察としては、
 目的に応じた正しい"タップ?"を選ばないと意図した結果とならない。
ということでしょうか。
実は、797の質問の後返答を待つ間自分なりに作ってみてました。
下記の100番。 "9184.lzh 借ります。"です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=9048
作るに際して http://210.155.219.234/M-Seq.htm を参考にしました。
MRand1でM系列乱数として正しい関数だと確認したつもりです。
ところがMRand2で課題のmainで動作させたところ、私も0のCountが出ました。
タップを色々変えて試しましたが、状況は変わりませんでした。
自分の作ったMRand()は間違っているのでしょうか?

885 :879:2009/05/16(土) 23:04:47
>>882
回答有難うございます。
>>881は問題ないのですが、>>882は習っていないものがあるのでもう少し簡単に出来ませんでしょうか?
基本的にint main(void)は#includeの下に来ますし、2行目のint(int a, int b)という方法も習っていないので。

886 :デフォルトの名無しさん:2009/05/16(土) 23:14:02
>>885
#include <stdio.h>
int main(void)
{
int i, j, k, a, b;
printf("a?"); scanf("%d", &a);
printf("b?"); scanf("%d", &b);
for (i = 1; i <= b; i++) {
for (j = 1; j <= a; j++) {
int w = j; for (k = 1; k < i; k++) w *= j; printf("%d ", w);
}
printf("\n");
}
return 0;
}


887 :デフォルトの名無しさん:2009/05/16(土) 23:34:49
>>886
有難うございます。
これなら問題なさそうです!
助かりました。

888 :デフォルトの名無しさん:2009/05/17(日) 00:15:24
https://renandi.ss.senshu-u.ac.jp/renandi/materialcontents/104716/102892/algo%E5%9F%BA%E7%A4%8E2.pdf
にのっている課題4、5よろしくお願いします。
言語:c言語
os:xp
gcc


889 :デフォルトの名無しさん:2009/05/17(日) 00:23:11
>>888
「問題が発生しました」
見れない。

890 :デフォルトの名無しさん:2009/05/17(日) 00:27:23
>>888ってログインしなきゃ見れないんじゃね?httpsだし。
見れる場所にあげるか問題を転記しれ。

891 :デフォルトの名無しさん:2009/05/17(日) 02:27:23
>>860 (1) フィボナッチ(桁が大きくなると誤差が出てくる)
#include <stdio.h>
int main() {
  double i1, i2, i3;
  int j;
  i1 = 1.;
  i2 = 1.;
  printf(" 1:%21.0lf\n 2:%21.0lf\n", i1, i2);
  for(j=2; j<100; j++) {
    i3 = i1 + i2;
    printf("%3d:%21.0lf\n", j+1, i3);
    i1 = i2;
    i2 = i3;
  }
}

892 :デフォルトの名無しさん:2009/05/17(日) 03:08:22
[1] 授業単元:
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9187.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: C++
[4] 期限: 来週の月曜まで
[5] その他の制限:
プログラムの授業ではありません、SA(焼きなまし)法という手法を習った授業のレポートです
プログラムは制限等は無いと思います(問題文に沿っていれば)
授業も良く分らなかったのに、レポートがプログラムで凄く困ってます
よろしくお願いします


893 :デフォルトの名無しさん:2009/05/17(日) 10:23:06
>>860 (2) (a) 極限値 =e
#include <stdio.h>
double factorial(int i) {
  if(i == 1) return 1.0;
  return i * factorial(i-1);
}
int main() {
  double a=1.0, a1, fa;
  int i=1;

  do {
    fa = factorial(i);
    a += 1/fa;
    printf("%.20f %.0f\n", a, fa);
    if(a == a1) break;
    a1 = a;
  } while(i++);
}

894 :デフォルトの名無しさん:2009/05/17(日) 10:37:05
>>860 (2) (b) 極限値 =1.0
#include <stdio.h>
#include <math.h>
int main() {
  int i=1;
  double x = 3.14, a=0.0, a1=0.0;

  do {
    a = sin(x)/x;
    printf("%.20f %.20f\n", a, x);
    if(a1 == a) break;
    a1 = a;
    x /= 2.0;
  } while (i++);
}

895 :デフォルトの名無しさん:2009/05/17(日) 11:04:27
>>892
長方形の縦横の向きは固定?可変?

896 :デフォルトの名無しさん:2009/05/17(日) 13:05:07
>>893
factorial()が無駄すぎるw

897 :デフォルトの名無しさん:2009/05/17(日) 13:56:13
サンク
>>860 (2) (a) 極限値 =e
#include <stdio.h>
int main() {
  int i=1;
  double a=1.0, a1, fa=1.0;

  do {
    fa *= i;
    a += 1/fa;
    printf("%.20f %.0f\n", a, fa);
    if(a == a1) break;
    a1 = a;
  } while(i++);
}

898 :デフォルトの名無しさん:2009/05/17(日) 14:02:41
>>856 仕様を詳細に書き直してみた。
入力ファイル (','はタブを表す)
11111111,2222,3333,4444,5555,6666
1:生徒ID
2:国語点数
3:数学点数
4:理科点数
5:社会点数
6:英語点数

出力ファイル (','はタブを表す)(99999は合計点数)(8888は降順順位 10-9-9-7-6-6-4)
yyyymmddhhmmss.000.txt
11111111,2222,3333,4444,5555,6666 (生徒IDでソート)

yyyymmddhhmmss.001.txt 国語だけの点数
11111111,2222,8888 (国語点数でソート)

yyyymmddhhmmss.002.txt 数学だけの点数
11111111,3333,8888 (数学点数でソート)

yyyymmddhhmmss.003.txt 国語+数学の点数
11111111,99999,8888 (国語+数学点数でソート)

yyyymmddhhmmss.004.txt 理科だけの点数
11111111,4444,8888 (理科点数でソート)
 省略
yyyymmddhhmmss.031.txt 国語+数学+理科+社会+英語の点数
11111111,99999,8888 (国語+数学+理科+社会+英語点数でソート)

899 :デフォルトの名無しさん:2009/05/17(日) 14:36:22
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9189.txt

[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:2009/5/17
[5] その他の制限:


900 :892:2009/05/17(日) 14:52:13
>>895
矩形の向きは固定です

901 :デフォルトの名無しさん:2009/05/17(日) 15:07:33
>>899
void twos_complement(int *a, int *b)
{
int i;
for(i=7; i>=0; i--) if(b[i]=a[i]) break;
while(i--) b[i] = 1 ^ a[i];
}

void print_bin(char *s, int *p)
{
int i;
printf("%s", s);
for(i=0; i<8; i++) printf("%d", p[i]);
printf("%\n");
}

902 :デフォルトの名無しさん:2009/05/17(日) 16:03:28
>>901 0いれてみてくだ再
#define N 8
void twos_complement(int *a, int *b) {
  int i;
  for(i=0; i<N; i++)
    b[i] = !a[i];

  for(i=N-1; i>=0; i--) {
    if(b[i] == 0) {
      b[i] = 1;
      break;
    }
    b[i] = 0;
  }
}
void print_bin(char *s, int *a) {
  int i;
  printf("%s", s);
  for(i=0; i<N; i++)
    printf("%d", a[i]);
  puts("");
}

903 :デフォルトの名無しさん:2009/05/17(日) 17:17:15
>>856
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9190.txt



904 :デフォルトの名無しさん:2009/05/17(日) 17:27:07
文脈から見てfseek禁止だろ

905 :デフォルトの名無しさん:2009/05/17(日) 17:43:59
[1] 授業単元:
[2]問題:アルファベット、数字、空白からなる文字列を渡したとき、小文字を大文字にする関数 void to_upper(char s[]); を作成しなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 9日火曜日、午後1時
[5] その他の制限:

さっぱりわかりません。どなたかよろしくお願いします。

906 :デフォルトの名無しさん:2009/05/17(日) 18:02:58
#include <stdio.h>
#include <ctype.h>

void to_upper(char s[])
{
    char *p = s;
    do{
        if(islower(*p)) *p = toupper(*p);
    } while(*p++ != '\0');
    return;
}

int main()
{
    char s[256];
    scanf("%s", s);
    to_upper(s);
    puts(s);
    return 0;
}


907 :903:2009/05/17(日) 18:45:01
>>904
宿題なので、要求仕様はライブラリー関数で処理可能と考えた。
仮に1000万人以上のレコード処理を要求する宿題なら、
それなりの設問をするのでは?


908 :デフォルトの名無しさん:2009/05/17(日) 19:18:24
>>907
同意

データを標準入力から受け取り、メモリ上に展開してはならない以上
一時ファイルを作成しない限り解けない問題だと思う

ついでに整数8桁のIDに対して処理可能ということは
2GB/100M=20B
一時ファイル内の一つのレコードの大きさを 20Byte 以下に納めないと
fseek やらファイルシステムやらの制約を受け始めるという厄介な問題

909 :デフォルトの名無しさん:2009/05/17(日) 19:20:22
>>906
オマエのような鬼畜を探していた

910 :デフォルトの名無しさん:2009/05/17(日) 20:30:03
>>904
ファイルに対するランダムアクセスは不可能という前提でやれということ?

みたいだな。そう読める?どんなへんてこな仕様なんだw

911 :デフォルトの名無しさん:2009/05/17(日) 21:41:41
1] 授業単元:計算機システム構成原理T演習
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9192.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 5月19日まで
[5] その他の制限: とくになし
よろしくお願いします。

912 :デフォルトの名無しさん:2009/05/17(日) 21:52:32
>>911
dir指定を許す?
複数ファイル指定もあり?


913 :デフォルトの名無しさん:2009/05/17(日) 22:13:44
>>911
ただ単に1:1でコピーするだけのmycp.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9193.c

914 :デフォルトの名無しさん:2009/05/17(日) 22:14:20
http://www1.axfc.net/uploader/Sc/so/2232にあるファイルの課題4、5をお願い致します。
言語:c++
gcc
os:xp

915 :デフォルトの名無しさん:2009/05/17(日) 23:11:27
[1] 授業単元: 実習
[2] 問題文(含コード&リンク):

長さが32の0と1の列、
s e7 e6 … e1 e0 d1 d2 … d23
を入力して、このビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)
---------------------------------------------
(-1)^s * (1+M) * 2^E if -127 < E < 128
(-1)^s * M * 2^(E + 1) if E = -127
Inf(無限大) if E = 128, M = 0
NaN(非数) if E = 128, M ≠ 0

ここで、M = Σ(i = 1→23)di * 2^(-i),
E = Σ(i = 0→7) ei * 2^i - 127
---------------------------------------------
を出力するCプログラムを作成せよ。


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

2^E = 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)
= ((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2

となることは与えられているのですが、for文を使ってこの式をどう表すのかわかりません…。
お願いします。

916 :デフォルトの名無しさん:2009/05/17(日) 23:16:33
859にあるじゃん

917 :デフォルトの名無しさん:2009/05/17(日) 23:27:33
IDA Proでディスアセンブルしてちょこちょこいじったあとに
それを実行形式にできますか?

わしは素人じゃけん。

918 :デフォルトの名無しさん:2009/05/17(日) 23:34:47
>>915
>>916がいうとおり、同じ依頼がある。
>>874を見て

919 :デフォルトの名無しさん:2009/05/17(日) 23:51:37
http://www1.axfc.net/uploader/Sc/so/2232にあるファイルの課題4、5をお願い致します。
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし




920 :>>915:2009/05/17(日) 23:57:12
float a = 2.5とは、何を宣言しているのですか?
本当にプログラミングが苦手で…;

921 :>>915:2009/05/18(月) 00:16:35
それと出力した際に、
01000000001000000000000000000000
と表示されるのですが、これは何ですか・・?

922 :892:2009/05/18(月) 00:19:00
>>892
どなたか出来ませんでしょうか?
やはり無理でしょうか…

923 :デフォルトの名無しさん:2009/05/18(月) 00:48:34
>>915 ちょっとこれ説明してみて。J

2^E = 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)
= ((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2

924 :デフォルトの名無しさん:2009/05/18(月) 00:52:19
>>922
SA(焼きなまし)法というのを色々調べてみました。
シミュレーションを行い、最適解を求める手法のようですが、
この問題文からはそのイメージが湧いてきません。
(辺の長さから正方形を敷き詰めるような組み合わせ問題なら
想定はできます)。
提示されていない何らかの制約事項、初期条件や評価関数が
あるのではないですか?

勘違いしているかも知れません。その時はご容赦


925 :892:2009/05/18(月) 01:05:09
>>924
任意の矩形が、任意の数だけ与えられた時に、その矩形を正方形に敷き詰めるようにして
且つ、その正方形は小さければ小さいほど良いという、組み合わせ最適化の問題です。

関数は自身が用意した矩形サンプルで作るのですが、評価は教授が容易した矩形サンプルが使われます。
よって特定の矩形群だけに効くアルゴリズムではなく汎用的なもが求められます。

これ以外に知りたい事がありますでしょうか?

926 :デフォルトの名無しさん:2009/05/18(月) 01:06:38
http://www1.axfc.net/uploader/Sc/so/2232にあるファイルの課題4、5をお願い致します。
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし


927 :892:2009/05/18(月) 01:13:04
もしかすると、正方形に敷き詰めると言う部分が分り辛いのでしょうか

正方形の形にピッタリと敷き詰めると言う意味ではなく
敷き詰めた全矩形を内包する形が正方形で、更に小さければ小さい程良いと言う事です。

928 :デフォルトの名無しさん:2009/05/18(月) 01:14:47
>>925
矩形の縦横の寸法と個数が予め与えられる問題だと、
わざわざシミュレーションするまでもなく解が求まりませんか?
何か勘違いしてるかな?

929 :デフォルトの名無しさん:2009/05/18(月) 01:17:34
>>924
いい加減な方法でよければ

1.最初に矩形を横一列に並べる
2.1.の長辺を一辺とする正方形を用意する
3.正方形の外周の右端または下端に接する矩形を正方形内の任意の位置(右端、下端を除く)に移動させてみる
4.正方形を小さくできるなら小さくする
5.3〜4繰り返し

移動に乱数を使うとか、できる限り左上に置くとか方法はありそうです
直感的にこの方法だと中身がスカスカになりますが、題意は満たします

930 :856:2009/05/18(月) 01:19:41
>>903
実はサンプルデータのほうが用意されておりそれと比較しましたが、若干動作が違ったようです。
yyyymmddhhmmss.xxx.txt (xxx!=0)の場合、生徒IDの行順序は変えてはいけないみたいです。
生徒ID 得点の和 順位
33243 3435 19
34359 4298 12
34385 1957 39
12689 3848 14
.....
こんな感じで出なければいけなかったようでした。
あと、C言語演習という講座名でしたがC++と余り区別しない講座らしく、
C++で書いたほうが良かったみたいです。
今日中に頂いたコードを修正して何とかしてみます。ありがとうございました。
>>904
>>908-910
バイナリファイルを使っちゃいけないとは問題文に書いていないので多分大丈夫だと
思ってますが、もしダメというのであれば今回はあきらめます。

931 :デフォルトの名無しさん:2009/05/18(月) 01:20:22
>>928
出来るかは知らんが、教授の意図としては焼きなまし法を使うことに意味があるのでは。
プログラムの講義ではないみたいだし。
いきなり複雑なものをやらすのは厳しいだろうし、単純でもよく例に挙げられるのでは
それをコピーされてしまう。

932 :デフォルトの名無しさん:2009/05/18(月) 01:20:55
http://www1.axfc.net/uploader/Sc/so/2232にあるファイルの課題4、5をお願い致します。
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし
どうかよろしくお願いいたします。

933 :デフォルトの名無しさん:2009/05/18(月) 01:23:19
[1] 授業単元: C
[2] 問題文(含コード&リンク): (終了済)問3http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9194.txt
                   (お願いしたい方)問4http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9195.txt 
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: Emule
 [3.3] 言語:C
[4] 期限: 今週水曜17:00まで
[5] その他の制限: 2問繋がってて、前問で出力されたファイルがないとできない問題です。問3で作ったプログラムを元に問4のプログラムを
書いたんですが、最高点/最低点/学生番号の出力の仕方がよくわからなくて・・・仕上げ的な感じでお願いします。

934 :デフォルトの名無しさん:2009/05/18(月) 01:29:18
>>930
それなら問題が簡単になる
バイナリファイルに保存しながらバケットソートをする
バケットソートの結果を見ながらバイナリファイルを読み出し順位を決定

バケットソートに必要な領域は
long backet[32][50000] ≒ 6.4MB

でも xxx==0 があるから、結局は面倒な方法を取らないといけないのか

935 :892:2009/05/18(月) 01:33:58
>>928
レポートがプログラムになったのは、人間が考えるのでは無く
SA法によってアルゴリズムで解く為です。
矩形の形と個数が分ると、プログラムだとSA法などを使わなくとも、最適配置が解けるのでしょうか?

>>929
それだとSA法ではなく、総当り法と同じ様なアルゴリズムです。
しかも局所解に陥りやすく、多分再提出になると思います…

>>931
人間の頭で考えて良いなら、SA法の勉強にならないとの事です。
プログラム等のアルゴリズムで、オートで解くのが主眼だそうです。

授業もろくに理解してなく提示出来る手助けが少なくて申し訳無いのですが、宜しくお願いします。

936 :デフォルトの名無しさん:2009/05/18(月) 01:36:55
>>928
そりゃ最適解は一意に求まるが、最適性の判定はNP困難。
だからSA法のような近似アルゴリズムを用いる。

937 :デフォルトの名無しさん:2009/05/18(月) 01:41:59
授業をろくに理解していないのなら理解する努力をするかいさぎよく単位を落とせばいいのに。

938 :928:2009/05/18(月) 01:46:37
勘違いしてた。矩形は1枚毎に違っているのか。
すまない。


939 :デフォルトの名無しさん:2009/05/18(月) 01:46:39
>>933
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9196.c

940 :892:2009/05/18(月) 01:48:16
プログラムの授業と平行していて、私はプログラムが苦手なのですが
今回のSA法の授業は、プログラムの難しい授業と同じ感じでチンプンカンプンでして…

確かにC++のレポートですが、
内容がプログラム言語仕様を使うレベル以上だと欲張りなお願いなんでしょうか?

…困ってます…

941 :デフォルトの名無しさん:2009/05/18(月) 01:51:21
>>939
さすがにお早い。ありがとうございます!

942 :デフォルトの名無しさん:2009/05/18(月) 01:52:04
>>940
書いてはみるが、正直めんどい
なんで前日まで放置してたんだよ…

943 :デフォルトの名無しさん:2009/05/18(月) 01:58:40
C/C++言語だけをとっても、*自在に*使えるようになるだけでも、相当に専門的。
更に言えば離散最適化問題とかは数学を相当学んで自在に使える水準の人でなきゃ無理。
要するに完全に学部学生向けじゃない講義だということ。

944 :デフォルトの名無しさん:2009/05/18(月) 01:59:53
いや、この程度ならB3ぐらいでできてくれないと困る。

945 :892:2009/05/18(月) 02:00:02
>>942
マジですか?是非、よろしくお願いします。
他のレポートや用事と重なって、今超しんどくて藁にもすがる思いでココを頼りました。
2ちゃんって使わないのですが…良い方が居て感動してます。

月曜の日付の間に提出フォルダに入れれば良いので、
恐らく夜中の24時でも平気かな、と思っています。



946 :デフォルトの名無しさん:2009/05/18(月) 02:02:43
>>944
住む星を間違えたようだなw
M87星雲にでも池
ここは地球だ

947 :デフォルトの名無しさん:2009/05/18(月) 02:07:51
パッキング問題とは。
このスレにとっては難しすぎじゃないのかw

948 :デフォルトの名無しさん:2009/05/18(月) 02:12:34
結構前に出てた最小費用流問題?も分からなかったし
お手上げですわ

>>929 の手順ならできるけど局所探索になるんだよね
全体最適化ってどうするんだ?

949 :デフォルトの名無しさん:2009/05/18(月) 03:48:45
>>925
ぽいプログラムでいいなら、
1.ランダムで1個の矩形を配置。
2.ランダムで1つの矩形を選択して、その矩形に接するように配置
3.以下、できあがった多角形に対して常にどこかに接するように配置
4.全て配置した後全体の正方形の1辺の長さを測定して、現在のものよりも小さければ
  現在のものを捨てて新しい配置を採用。
5.以下何度も時間が許す限り繰り返す。

かな?
充分大きな正方形内に、ランダムに配置するとよりそれっぽいけど、
最初からランダム配置の範囲が決まってると正方形が縮まないし。

950 :デフォルトの名無しさん:2009/05/18(月) 03:55:13
>>949
なお、あらかじめ与えられた矩形がソートできるならもっと精度が上がる。
2の配置で接する位置をランダムに決めるとき、その時点でもっとも矩形が
小さくなる位置を探すのがSAっぽくていいんじゃないかな。

951 :デフォルトの名無しさん:2009/05/18(月) 04:18:31
>>930
更新したやつを9197,txtに置いておいた。

952 :デフォルトの名無しさん:2009/05/18(月) 08:43:03
>>949
ランダム配置→微動(適当回数)→最小正方形保存
ランダム配置→微動(適当回数)→最小正方形比較
   :
   :
を適当回数
って事じゃないのかな?

953 :デフォルトの名無しさん:2009/05/18(月) 09:13:46
>>952
SAの枠組みはその通りだけど、その「微動」の部分をどうするかが
性能に直結するよね。949は、ある矩形を、すでにおかれているものに
接する位置に配置するというルールを設けた上で、その位置をランダムに
選択することで、所定時間内に最も小さくなった正方形を選択するように
なってる。もっといいヒューリスティックはもちろんあるだろうけれど、
どんなものを想定しているのか是非聞いてみたい。

954 :856:2009/05/18(月) 09:32:37
>>951
ありがとうございます

955 :デフォルトの名無しさん:2009/05/18(月) 10:20:11
>>953
952じゃないけどSequence pairとか.
矩形の配置を,矩形のIDの列と対応づけられるから微動はうまく表現できる.

956 :デフォルトの名無しさん:2009/05/18(月) 14:15:04
http://www1.axfc.net/uploader/Sc/so/2232にあるファイルの課題4、5をお願い致します。
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 19日火曜日、22時
[5] その他の制限: 特になし


957 :デフォルトの名無しさん:2009/05/18(月) 14:23:20
>>956
PDFは今やめとけ
GENOウィルスの亜種が増殖中だから皆警戒してるぞ

958 :デフォルトの名無しさん:2009/05/18(月) 16:24:54
>>956 そうなんですか。わかりました。
pdfを形式変えてアップするにはどういった手段をとればいいですか?



959 :デフォルトの名無しさん:2009/05/18(月) 16:46:51
>>956
追記ですが、自分がアップしたpdfファイルは大学の掲示板から落としたものなので大丈夫だと思います。
pdfファイルをword文書やメモ帳に貼り付けてみたりいろいろ試行錯誤してみたのですがうまくいきませんでした。
期限が迫っているので信用して課題を見ていただけると嬉しく思います。


960 :デフォルトの名無しさん:2009/05/18(月) 18:03:38
>>859
教授名や大学名(調べればすぐ判る)を曝しているんだけども。
大学の掲示板とは言っても部外からは見えないんだろ?
公開するのに承認とかは要らないのか?

961 :デフォルトの名無しさん:2009/05/18(月) 18:25:49
いまさらw

962 :デフォルトの名無しさん:2009/05/18(月) 18:28:45
最近は教員やTAもここ見てるからなあ。

963 :デフォルトの名無しさん:2009/05/18(月) 19:00:18
>>957
ちゃんとアップデートしとけば被害でないぞ。
お前PDFを駆逐したいM$の手先かなんかか?

964 :デフォルトの名無しさん:2009/05/18(月) 19:28:15
[1] 授業単元: プログラミング言語1
[2] 問題文(含コード&リンク): int型の配列に値を読み込み、読み込んだ順番と逆順に出力するプログラムを作りなさい。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual C++ 2008
 [3.3] 言語:C
[4] 期限: 今週火曜18:00まで
[5] その他の制限:配列の大きさは5でおねがいします。

965 :デフォルトの名無しさん:2009/05/18(月) 19:40:56
>964 関数作ってもいいの?

966 :デフォルトの名無しさん:2009/05/18(月) 19:49:59
>>965
はい、作ってもかまわないです。


967 :デフォルトの名無しさん:2009/05/18(月) 20:54:25
>>964
#include<stdio.h>
int main()
{
int i, a[5];
for(i=0;i<5;i++) scanf("%d", a+i);
for(i=4;i>=0;i--) printf("%d\n", a[i]);
}

968 :デフォルトの名無しさん:2009/05/18(月) 21:04:12
>>952
その1行分でSA法としては充分じゃない?

969 :デフォルトの名無しさん:2009/05/18(月) 21:47:18
>>967
ありがとうございます。

970 :デフォルトの名無しさん:2009/05/18(月) 22:37:42
>>956
PDFがどうとかよりも、ボタンでダウンロードってのが躊躇するなぁ。

971 :デフォルトの名無しさん:2009/05/18(月) 23:07:15
次スレ立てました
C/C++の宿題片付けます 126代目
http://pc12.2ch.net/test/read.cgi/tech/1242655611/

972 :デフォルトの名無しさん:2009/05/18(月) 23:16:49
おつれか

973 :デフォルトの名無しさん:2009/05/18(月) 23:25:13
>>971お疲れさまです。
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9198.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C/C++
[4] 期限:明日5月19日 23:30
[5] その他の制限:特に無いです。
問題が多いですがどうかよろしくお願いいたします。


974 :デフォルトの名無しさん:2009/05/19(火) 00:08:03
>>973
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9199.c
一度も実行してないからミスあるかも

975 :デフォルトの名無しさん:2009/05/19(火) 00:51:52
事情がありまして、以下のような課題を至急仕上げなければなりません。
知恵袋の使い方と合致していないとは思いますが、どうかご協力お願いします。

Q、C言語を使用したH8マイコンのLED制御に関する。

(1)SOSのモースル信号を発しなさい。
(2)加速を含めたイルミネーションを発しなさい。


♯include<3048.h>
main()
{
p1.ddr=0xff;
p1.dr.byte=0xff
}

お恥ずかしい質問ですが、よろしくお願いします。
補足
ffを2進数に11111111、でLED全8個がひかります。
longなどをつかってお願いします。

            (1)高額基礎実験   (3)WIN        (4)あと四時間

976 :デフォルトの名無しさん:2009/05/19(火) 01:37:08
授業単元ソフトウェア製作実習。
osソラリス
コンパイラ gcc
台形の面積を求めるプログラム
キーボードより上底a下底b高さhの値を入力して台形の面積を計算するプログラムを作成せよ。
表示形式
上底a=6
下底b=15
高さh=3
面積=31.5
小数点以下一桁まで
よろしくお願いします。


977 :デフォルトの名無しさん:2009/05/19(火) 03:01:18
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
  
   正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示す
ると共に、それらnの倍数の和を表示するプログラムを作成せよ。

 例えば25を入力したら,その倍数である25, 50, 75, 100とそれらの和で
ある250が表示されることになる。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2009年5月22日0:00まで
[5] その他の制限: ほぼ完全な素人です。do/whileの中に何を打てばいいかわかりません、よろしくお願いします。


978 :デフォルトの名無しさん:2009/05/19(火) 03:24:04
>>976
#include <stdio.h>
int main(void)
{
double a, b, h;

printf("上底a=");
scanf("%lf", &a);
printf("下底b=");
scanf("%lf", &b);
printf("高さh=");
scanf("%lf", &h);

printf("面積=%.1f", (a+b)*h/2);

return 0;
}

979 :デフォルトの名無しさん:2009/05/19(火) 03:37:14
>>977
#include <iostream>

int main()
{
int n, sum = 0;

std::cin >> n;

for(int i = n; i<=100; i+=n) std::cout << i << ' ', sum += i;
std::cout << std::endl << sum;
}

980 :デフォルトの名無しさん:2009/05/19(火) 06:29:36
>>978さんありがとうございます。

981 :973:2009/05/19(火) 07:37:05
>>974 お疲れ様です!
最後の問題の後半部がkeyの宣言がなされていなかったため
少しエラーが出ましたが、その他は問題無かったです。
本当にありがとうございました!


982 :ぽるむ:2009/05/19(火) 10:33:55
>>855は無理でしょうか…?

983 :デフォルトの名無しさん:2009/05/19(火) 10:58:58
>>982
excelを操作するのか?

984 :デフォルトの名無しさん:2009/05/19(火) 11:37:42
なんのためのECMA-376なのかと

985 :デフォルトの名無しさん:2009/05/19(火) 12:04:23
>>982
@はcsv出力とかでいいのか?
A〜Bはプログラム自身で行う?
D? ソースが要らないのか。


986 :デフォルトの名無しさん:2009/05/19(火) 15:13:38
>>915 最終の4行目違ってないか?
2^E =
2^((Σ(i = 0→7)ei * 2^i) - 127) =
2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1) =
((…(((1/2^(1 - e7))^2 * 2^e6)^2 * 2^e5)^2 …)^2 * 2^e1)^2 * 2^e0 * 2
解答
2^E =
2^(e7*2^7 + e6*2^6 + e5*2^5 + e4*2^4 + e3*2^3 + e2*2^2 + e1*2^1 + e0*2^0 - 127) =
2^((e7-1)*128 + e6*64 + e5*32 + e4*16 + e3*8 + e2*4 + e1*2 + e0 + 1) =
2^((((((((e7-1)*2 + e6)*2 + e5)*2 + e4)*2 + e3)*2 + e2)*2 + e1)*2 + e0 + 1) =
(((((((2^(e7-1))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2

(((((((2^(e7 + (-1)))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
(((((((2^e7 * 2^(-1))^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2
(((((((2^e7 * 1/2)^2 * 2^e6)^2 * 2^e5)^2 * 2^e4)^2 * 2^e3)^2 * 2^e2)^2 * 2^e1)^2 * 2^e0 * 2

987 :デフォルトの名無しさん:2009/05/19(火) 17:10:21
> となることは与えられているのですが、for文を使ってこの式をどう表すのかわかりません…。お願いします。
2^E
= 2^Σ(i = 0→7)ei * 2^i - 127
= 2^((e7 - 1) * 2^7 + Σ(i = 0→6)ei * 2^i + 1)

#include <stdio.h>
#include <math.h>
int main() {
int e[][8] = {
0, 0, 0, 0, 0, 0, 0, 0, /* 2^-127 */
0, 0, 0, 0, 0, 0, 0, 1, /* 2^-126 */
0, 0, 0, 0, 0, 0, 1, 0, /* 2^-125 */
0, 1, 1, 1, 1, 1, 1, 0, /* 2^-2 */
0, 1, 1, 1, 1, 1, 1, 1, /* 2^-1 */
1, 0, 0, 0, 0, 0, 0, 0, /* 2^0 */
1, 0, 0, 0, 0, 0, 0, 1, /* 2^1 */
1, 1, 1, 1, 1, 1, 0, 1, /* 2^126 */
1, 1, 1, 1, 1, 1, 1, 0, /* 2^127 */
}, i;

for(i=0;i<sizeof(e)/sizeof(e[0]); i++)
printf("%.9g\n", pow(2.,((e[i][7-7]-1)*128 + e[i][7-6]*64 + e[i][7-5]*32 +
e[i][7-4]*16 + e[i][7-3]*8 + e[i][7-2]*4 + e[i][7-1]*2 + e[i][7-0] + 1)));
}

988 :デフォルトの名無しさん:2009/05/19(火) 18:41:21
>>856
期限過ぎてコメントも無し
>>934 のアルゴリズム使用
使用するヒープ領域はデータ数に関わらず 20MB 程度
10万件のデータで処理時間 10秒弱 (PenM1.7GHz機にて)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9202.c

989 :デフォルトの名無しさん:2009/05/19(火) 18:59:58
>>988
バケットソートなので処理時間 O(n) オーダ
でも、20MB あれば 125万件までメモリに乗せられるwww

990 :デフォルトの名無しさん:2009/05/19(火) 22:34:49
>>956
これで良いか自信はない。誰も回答してないようなので、使えるかどうかは判断してくれ。
問題からこういうファイルを作り、標準出力で入力してくれ。

4.0 2.0 6.0 3200.0
4.0 4.0 4.0 3600.0
6.0 4.0 8.0 5000.0

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



991 :デフォルトの名無しさん:2009/05/19(火) 23:00:37
855は途中までやったけどDB劣化版を作ってるのが空しくなってやめた
劣化版じゃないのを作れってのは無理ww

992 :デフォルトの名無しさん:2009/05/19(火) 23:05:31
>>855は宿題のレベルじゃないな

993 :デフォルトの名無しさん:2009/05/20(水) 00:36:08
>>956

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

994 :デフォルトの名無しさん:2009/05/20(水) 01:04:17
[1] 授業単元:計算機システム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9207.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:5月22日まで
[5] その他の制限: とくになし
ところどころ間違っていたらすいません。よろしくお願いします。

995 :デフォルトの名無しさん:2009/05/20(水) 02:47:09
>>991
exeファイルでいいんだから、Vectorあたりから適当な在庫管理ソフトをダウンロードしちゃえばいいんじゃね?w

996 :デフォルトの名無しさん:2009/05/20(水) 06:00:07
囲碁の指し手なんですがあと一手で囲んで取れるっていうのを
低コストで見つけるにはどうすればいいですか?
人間だとすぐにわかるのですが。

997 :デフォルトの名無しさん:2009/05/20(水) 07:03:23
次スレ >>971

C/C++の宿題片付けます 126代目
http://pc12.2ch.net/test/read.cgi/tech/1242655611/

998 :デフォルトの名無しさん:2009/05/20(水) 14:40:07
>>994
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9210.txt

課題2 だけ、lslike.c を手直しして作った。
要求は一通り満たしていると思う(複数ファイル指定も可)。

>どちらの課題も必ずプログラムの説明を書いてください。

これは書いていないのでよろしく。


999 :994:2009/05/20(水) 14:55:44
>これは書いていないのでよろしく。

なんで書かないんだカス

1000 :デフォルトの名無しさん:2009/05/20(水) 14:57:05
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

344 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)