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

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

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

1 :デフォルトの名無しさん:2006/03/03(金) 14:28:38
あなたが解けない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

【前スレ】
C/C++の宿題を片付ケます 60代目
http://pc8.2ch.net/test/read.cgi/tech/1139053955/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
次スレが立たない時の避難所
http://pc8.2ch.net/test/read.cgi/tech/1122705615/

2 :デフォルトの名無しさん:2006/03/03(金) 14:31:49
[>>1からついでに色々。]
・同じ講義を受けている人が既に同じ宿題を依頼してるかもしれなせん。
 まずはスレを少しさかのぼって探してみてください。
 それさえ出来ないシメジ野郎はバター焼きにして食っちまうぞ
・解答者は答える義務もないし、答えてもそれが正しいかどうかは保証しません。
 もちろん、出題者先生の意図なんぞ知ったことではありません。
 At your own riskで。
・態度が余りに悪いとすーぱーはかーがあなたの先生にチクるかもしれません。
>>1の前スレってとこ丸々コピペだから60代目のまんまだった、スマソ
 正しくはこっち
 【http://pc8.2ch.net/test/read.cgi/tech/1140039002/

3 :デフォルトの名無しさん:2006/03/03(金) 14:34:56
お金払いますので童貞を捨てられるプログラムをC言語でお願いします

4 :デフォルトの名無しさん:2006/03/03(金) 14:35:03
>>1
Z

5 :デフォルトの名無しさん:2006/03/03(金) 14:42:29
避難所を立てた 後悔はしていない

C/C++の宿題を片付ケます@避難所
ttp://pc7.2ch.net/test/read.cgi/pc2nanmin/1141364482/


6 :デフォルトの名無しさん:2006/03/03(金) 14:45:42
>>前スレ995
英語版では正しく使われている。日本語訳が糞なだけ。

7 :デフォルトの名無しさん:2006/03/03(金) 14:47:37
スルー用テンプレ

  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

8 :デフォルトの名無しさん:2006/03/03(金) 14:49:43
それ全然面白くないから
センスも感じられない

9 :デフォルトの名無しさん:2006/03/03(金) 15:05:15
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

10 :デフォルトの名無しさん:2006/03/03(金) 18:10:16
==、,-、  、ヽ、 \>   ,,  '''\ _
メ゙ヽ、\ ̄""" ̄--‐   、 \  /ゝ、\
=─‐\\‐  /─'''''ニ二\''' |レレゝゝ、\
 ̄く<<く >, ゙、/<三三二\ ̄\ゝゝゝゝゝゞ''ヽ、       / ̄ ̄ ̄ ̄ ̄
<<<<〈__入 ゙、く彡三三三二ヽくゝ\メメメゝ、_ゝ、\     | さあ問題を言え
くく<<<<<< ゙、 ゙、ミ三三二ニ─ゝゝゝゝゝ,,,,,,,、 '( ゙''ヽ、ヽ、   < どんな問題も
くくくくくく彡‐ヽ ゙、ミ三三二ニ'''くくゝゝ_ゝゝ、\\_,>」ノ,    | 1つだけスルーしてやろう・・・
く く く く く 彡゙、゙、三三二ニ‐くゝ、/ ,,,,,,,,メメゝヽ''''"ゝゞ丶、  \_____
二─二二彡彡、゙、三三二==くメゝ/   ゙'ヽ、メゝゝゝゝゝゝゞ''ヽ-、,,,,,,_
‐'''" ̄ \彡彡ミ、゙、三二=''"く<メ/::      \''-、メメゝゝゝ_ゝ 、 ,,、ヽヽ
、  ,,,,- ゙彡//ヾ、三二= くゝ/:::....      \>∠レ-,-‐ニ二メヽ''ヽ ノ
 ゙ヽ、,,,-‐//_///,,、゙、三二=  ゙、 ""'''      ヽ>//レレヽ,,___  /
-,,,,,,-‐'''"""/////,,ヽ ゙、三二─ ゙ヽ.         //-ヘヘ,、 レレレレノ
''"      ,l|"////ノ,、\彡'''''‐-ニ,、 ::::::::::,,,,,,,,//    ゙ヽフ/|/| レ'
      /ゝ、/ヽ|ヽレ,,゙ヽ、゙''ヽ、,,,,,,_ヽ''ニ='',,-'"、─-,,,,,_   ̄"'ノ
     /メ / レ/,''"へへべ''─---- ̄-メヽ"ゝゞゝヽ、  >---''"
    /ヘヘ、|//ヘヘヘヘヘヘヘヘ,,-イ ̄ | ̄"'''-ニニニ二-''"
   /ヘヘ∧/./フヘヘヘヘヘヘヘ,/イ  /  /   /    ゙ノ\、\
   /ゝゝ| / /メヘヘヘヘヘヘ/'" |  /  /  /    /  \\
  /ゝ /|‐/ /フヘへヘヘヘ/∧  /-'"-'''"__,,-''"    /     /、\
 //|_| /./へへへヘヘ、// |/      \_,,,,-‐'"    /  ゙、.゙、
'"/ヽ"/'"へへヘヘヘヘ//  ノ          \    ,,,,-‐'"    ゙、゙、
.ノ //へへヘヘヘヘ//ヽ ./            ゙、''""      ,,/、゙、
/-"へへヘヘヘヘヘ//  |‐"              \_,,,,,,,,-‐'''"   | |
へへへへヘヘヘヘ//ヽ ノ                ゙,         | |

11 :デフォルトの名無しさん:2006/03/03(金) 19:21:27
>>3
アメリカの刑務所ではきっとヤポン人は大人気だぉ
あっ、でも童貞は捨てられんか。後ろの処女は捨てれても。

12 : ◆aDhNsJNKcw :2006/03/03(金) 19:51:07
[1] 授業単元:プログラミング C++
[2] 問題文:
8×8のマス目において+と−をランダムに置き、+で囲まれた領域と数を求める
−++++−+−       −++++−+−
+−−−−+−−       + 1 1 1 1 +−−
+−−−−+−−       + 1 1 1 1 +−−
−++++−−−       −++++−−−
−+−−+−−−       −+ 2 2 +−−−
++−−+−−−       ++ 2 2 +−−−
−+++++−−       −+++++−−
−+−−−+−−       −+−−−+−−
これから→              これを表示
データは配列の初期値として与えてください
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2006年3月6日17:00まで
[5] その他の制限:関数・配列まで
お願いします。

13 :デフォルトの名無しさん:2006/03/03(金) 20:10:45
俺がC言語で引き受けた。

14 :デフォルトの名無しさん:2006/03/03(金) 21:55:21
C++の授業なのにクラス習ってないのか・・・?

15 :デフォルトの名無しさん:2006/03/03(金) 22:03:51
これをクラス化すると…って展開もあるじゃん……って、この時期にか>自分

16 :デフォルトの名無しさん:2006/03/03(金) 22:06:55
>>12がC++を理解できてないんじゃないの?
万が一ソースコードの説明を求められたら答えられないから。

17 :デフォルトの名無しさん:2006/03/03(金) 22:50:49
ならクラスで作ろうか

18 :デフォルトの名無しさん:2006/03/03(金) 22:51:04
この前報酬つきで解いた人って本当にもらったの?

19 :デフォルトの名無しさん:2006/03/03(金) 22:53:09
黙れ乞食

20 : ◆aDhNsJNKcw :2006/03/03(金) 23:22:07
クラスはまだ習ってないです。
>>15 春休みの課題です。
一応頑張ったんですがどうしても解けないんで…
良ければお願いします。

21 :16:2006/03/03(金) 23:27:57
>>20
ごめんなさい

22 :デフォルトの名無しさん:2006/03/03(金) 23:29:40
とゆうかこの時期でクラスやってないって
何のためにC++やってるんだ?

23 : ◆aDhNsJNKcw :2006/03/03(金) 23:36:15
>>21
いえいえ、気にしないでください
>>22
2年前期からクラスやるみたいです。@→Aと続くんで。

24 :デフォルトの名無しさん:2006/03/03(金) 23:43:15
C++っぽいの
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1677.txt

25 :デフォルトの名無しさん:2006/03/03(金) 23:45:48
charがunsignedの環境ではうまく動かんね

26 : ◆aDhNsJNKcw :2006/03/03(金) 23:53:17
>>24
わざわざありがとうございます。
実行してみたら重大なエラーってでましたorz


27 :デフォルトの名無しさん:2006/03/03(金) 23:54:17
そんなのシラネ

28 :デフォルトの名無しさん:2006/03/03(金) 23:54:23
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。

メシ喰ってくる!

29 : ◆aDhNsJNKcw :2006/03/03(金) 23:58:04
>>28
すいません。
kai.cpp: In function `void solve(char (*)[8], char (*)[8])':
kai.cpp:85: warning: implicit declaration of function `int copy(...)'
未定義の 最初に参照している
シンボル ファイル
copy /var/tmp/cckKaaHE1.o
ld: 重大なエラー: シンボル参照エラー。kai に書き込まれる出力はありません。

30 :デフォルトの名無しさん:2006/03/04(土) 00:31:09
#include <algorithm>

31 : ◆aDhNsJNKcw :2006/03/04(土) 00:54:59
すげー!動きました。
どうもありがとうございます。

32 :デフォルトの名無しさん:2006/03/04(土) 02:01:56
この前報酬つきで解いた人って本当にもらったの?

33 :デフォルトの名無しさん:2006/03/04(土) 03:54:30
推測なんだが。

口止め料込みで結構もらってるのか、
あるいは、あんまり簡単だったので解答側が報酬を断ったか・・・
だと思っている。

打ち込み作業がある程度あったようなので、
マジで金のやり取りがあったと思われる。

34 :デフォルトの名無しさん:2006/03/04(土) 07:53:37
>>31
おいおい、授業でなに習ってたんだ?

35 :デフォルトの名無しさん:2006/03/04(土) 07:56:42
STLって授業で習ってない技術だと思うんだがなぁ。

36 :デフォルトの名無しさん:2006/03/04(土) 10:52:10
クラスすらやってないのにSTLはまだだろw
とゆうかそもそも授業でするのかすら怪しいが>STL

37 :デフォルトの名無しさん:2006/03/04(土) 11:46:24
このスレでC++の解答者はSTL使いたがるからなぁ。
相手の力量にあわせて、自分の技術を抑える訓練をするべし。

38 :デフォルトの名無しさん:2006/03/04(土) 11:51:09
C ばかりで欲求不満なんですお

39 :デフォルトの名無しさん:2006/03/04(土) 12:03:03
>>33
なんかメール来てたけど暇つぶし貰っただけだから無視した。

40 :デフォルトの名無しさん:2006/03/04(土) 12:21:36
>>37
というか、明らかに嫌がらせだと思うが

41 :デフォルトの名無しさん:2006/03/04(土) 12:25:12
相手の力量にあわせたコードを書く位なら相手が自力で書けるようになるまで親切に教える!!!!

42 :デフォルトの名無しさん:2006/03/04(土) 12:28:43
>>41様が、自力で書けるようになるまで親切に教えてくれるらしいぞ。
おまいら今のうちに頼んどけ!頼んどけ!

43 :デフォルトの名無しさん:2006/03/04(土) 12:42:28
>41 おせーて。

テストコードの書き方とか。
設計の仕方とか。
ドキュメントの書き方とか。
英語とか。

ぷりーづ・てぃーち・みー。

44 :デフォルトの名無しさん:2006/03/04(土) 13:00:12
>>12
#include <iostream>

bool fill_area(char * square, int value, int x, int y, int size)
{
  if (x < 0 || x >= size || y < 0 || y >= size) return false;
  if (square[x + size * y] != '-') return true;
  square[x + size * y] = '0' + value;
  int dir[] = {0, 1, 0, -1, 0};
  for (int i = 0; i < 4; ++i)
    if (!fill_area(square, value, x + dir[i], y + dir[i+1], size))
      { square[x + size * y] = '-'; return false; }
  return true;
}

int main()
{
  char cells_square[] = ("-++++-+-" "+----+--" "+----+--" "-++++---"
"-+--+---" "++--+---" "-+++++--" "-+---+--");
  int   value = 1;
  for (int i = 0; i < 64; ++i)
    if (cells_square[i] == '-'
&& fill_area(cells_square, value, i % 8, i / 8, 8)) ++value;
  for (int i = 0; i < 8; ++i) {
    for (int j = 0; j < 8; ++j)
      std::cout << ' ' << cells_square[8 * i + j];
    std::cout << std::endl;
  }
}

45 :デフォルトの名無しさん:2006/03/04(土) 13:04:41
>>44
それだとエリア数が10以上になった時点でぶっぴんなんだね〜

46 :デフォルトの名無しさん:2006/03/04(土) 13:34:23
え〜〜〜〜? 81まで大丈夫だよ〜〜〜

47 :41:2006/03/04(土) 13:42:28
>>43
俺の力量にあわせて、質問レベルを抑える訓練をするべし

48 :デフォルトの名無しさん:2006/03/04(土) 14:02:40
ゾーンなら2300万まで対応可能

49 :デフォルトの名無しさん:2006/03/04(土) 14:10:57
>>47
あのね、ぷろぐらむがね、ただしくね、うごいているかね、しらべるほうほうをね、おしえてね。

50 :デフォルトの名無しさん:2006/03/04(土) 14:15:22
変換も知らない馬鹿がいるな。
>>47に質問するなら最低でも変換くらいしろよ低能。

51 :デフォルトの名無しさん:2006/03/04(土) 14:23:36
>>49 ひねり過ぎ。ソースコードにならん質問はアウト
>>50 ひねり無さ過ぎ。マターリしるっ

52 :何人釣れるかな?:2006/03/04(土) 14:26:10
4月よりインターネットは免許制になりまつ

53 :デフォルトの名無しさん:2006/03/04(土) 14:33:11
>>49
プログラムが正しく動かない状況なんてめったにないぞ。
CPUやメモリなどのハードウェア障害か、さもなくば宇宙線などの不慮の事態かだ。

54 :デフォルトの名無しさん:2006/03/04(土) 16:16:12
>>52
その方がいいと思うよ

55 :デフォルトの名無しさん:2006/03/04(土) 16:19:18
>>52
俺の聞いた話ではPSEマークのないプロバイダは
サービス停止だということだが、それとは違うのか?


56 :デフォルトの名無しさん:2006/03/04(土) 17:23:31
真面目に>>52でいいと思うがな
例えば経産省がやってる情報処理技術者資格のどれかが必須とか

57 :デフォルトの名無しさん:2006/03/04(土) 18:29:26
まぁ、そんなことした瞬間IT産業は終わるわけだが

58 :sage:2006/03/04(土) 19:40:20
[2]些細な質問でスミマセン・・・。

下のA.txtをインプットすると、B.txtがアウトプットされるC++プログラムを作ります。
while{ }を使うことも条件ですが、なかなかうまくイキマセン・・・。
while{ }で文字カウントする方法を中心に教えてください。

A.txt の内容--------- B.txt の内容-----------------
ll chA chI 母音の数、行数、文字数
ll chU chE Number of a's: 1
ll chO jyo       ⇒⇒ Number of e's: 2
ll shi shu ⇒⇒ Number of i's: 3
ll she sho l Number of o's: 4
nyi nyu nyo Number of u's: 3
---------------------- Number of lines: 5
Number of characters: 68
-------------------------------


59 :デフォルトの名無しさん:2006/03/04(土) 19:42:01
>>58
日本語でおk

60 :58:2006/03/04(土) 19:42:07
もうしわけございません。行が崩れました。

些細な質問でスミマセン・・・。

下のA.txtをインプットすると、B.txtがアウトプットされるC++プログラムを作りたいです。
while{ }を使うことも条件ですが、なかなかうまくイキマセン・・・。
while{ }で文字カウントする方法を中心に教えてください。


A.txt の内容-------------------
ll chA chI
ll chU chE
ll chO jyo
ll shi shu
ll she sho l
nyi nyu nyo
-------------------------------

↓↓
↓↓

B.txt の内容-------------------
母音の数、行数、文字数。

Number of a's: 1
Number of e's: 2
Number of i's: 3
Number of o's: 4
Number of u's: 3
Number of lines: 5
Number of characters: 68
-----------------------------------

61 :デフォルトの名無しさん:2006/03/04(土) 19:43:07
マルチは消えろよ

62 :デフォルトの名無しさん:2006/03/04(土) 23:43:50
>>60

ネタかとおそれつつマジレスすると、無難なところでこんな感じか。

#include <iostream>
#include <vector>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
int main()
{
using namespace std;
using namespace boost::lambda;

// 「while {}で文字カウント」する部分
vector<int> count(256); // int count[256];みたいなもの。文字コード0から255(==256-1)について、それぞれのカウントを格納する
int ch;
while ((ch = cin.get()) != EOF) { // 標準入力から1文字読み込み。end-of-fileが見つかるまで繰り返し
++count[ch]; // 読み込んだ文字のカウントをインクリメントする
}

// 後は何とでも
char chars[] = "aeiou";
for (int i = 0; (ch = chars[i]) != '\0'; ++i)
cout << "Number of " << ch << "'s: " << count[ch] << endl;
cout << "Number of lines: " << count['\n'] << endl;
int total = 0;
for_each(count.begin(), count.end(), (var(total) += _1));
cout << "Number of characters: " << total << endl;

return 0;
}


63 :デフォルトの名無しさん:2006/03/04(土) 23:59:01
>>62
countをvectorにする意義が見出せない。boost::arrayで十分。
結果を出力するループで改行文字を弾けよ。
最後にboost::lambdaなんて使わなくても<numeric>のstd::accumulateがあるだろ。

64 :デフォルトの名無しさん:2006/03/05(日) 00:16:38
>>63

>countをvectorにする意義が見出せない。boost::arrayで十分。
速度にこだわるなら、確かに。

>結果を出力するループで改行文字を弾けよ。
出力のフォーマットが違うからうっとうしい。やってみて?

>最後にboost::lambdaなんて使わなくても<numeric>のstd::accumulateがあるだろ。
あちゃー、使ったことないし、知らなかったよ。こんな感じ?
+#include <numeric>
-#include <boost/lambda/lambda.hpp>
+cout << "Number of characters: " << accumulate(count.begin(), count.end(), 0) << endl;
-int total = 0;
-for_each(count.begin(), count.end(), (var(total) += _1));
-cout << "Number of characters: " << total << endl;


65 :デフォルトの名無しさん:2006/03/05(日) 00:27:39
chはcharにキャストせんとうまくいかんよ。
あとは仕様通りだが、そもそも>>60の行数が5なのが奇妙な話だ。

66 :63:2006/03/05(日) 00:32:40
>>64
> 結果を出力するループで改行文字を弾けよ。
すまん。これ俺の勘違い。忘れてくれ。

67 :デフォルトの名無しさん:2006/03/05(日) 00:34:47
飢えてるなぁ。

68 :デフォルトの名無しさん:2006/03/05(日) 00:36:10
宿題を解くとダメ出ししてもらえることがあるのが好きだ

69 :デフォルトの名無しさん:2006/03/05(日) 00:37:04
>>63,65,66
添削さんくすです。

後は、>>60が理解できることを祈るばかり。

70 :デフォルトの名無しさん:2006/03/05(日) 00:58:33
>>69
理解する前に、「boostが入っていなくてコンパイルできない」に
1000点。

71 :デフォルトの名無しさん:2006/03/05(日) 04:12:15
正直 boost は避けてるなあ。使わせてくれない現場多いし。

72 :58:2006/03/05(日) 04:22:27
58です。62-72さん、ありがとうございます。
先月、C++をさわりだした私にとって、難しいです。
正直、62>>内の #include <iostream> using namespace std; しか分かりませんでした。
私のレベル↓を最所に書かなかった事を謝ります。

----------- C++ ----------
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <cmath>

using namespace std;

int main()
{
ifstream inFile;
ifstream outFile;
string outputFile;
string inputFile;
double n, m;
char a;
string L;

cout << endl;
cout << "Enter the name of the input file: ";
cin >> inputFile;
cout << endl << inputFile << endl;
inFile.open(inputFile.c_str()); // open the input file

73 :58:2006/03/05(日) 04:28:36
>>72 続き
if (! inFile)
{cout << "Error opening input file named: " << inputFile << endl;
cout << "Terminating program now..." << endl << endl;
exit(1);}
cout << "Enter the name of the output file: ";
cin >> outputFile;
cout << endl << outputFile << endl;
outFile.open(outputFile.c_str());
inFile.ignore(200,'\n');

// 以下からよく分かりません。
// n = 0;
// while (inFile)
// {
// getline(inFile, L);
// if(inFile.get(a))
// {n= n + 1;}
// ↑こうすると、何故か行数が出る。

// m = 0;
// while (inFile.get(a))
// {m = m + 1;}
// ↑こうすると、何故か総文字数が出る。

outFile.close();
inFile.close();
return 0;
}

74 :58:2006/03/05(日) 04:31:45
あと、大文字、小文字共にカウントします。
例: A と a 両方カウントします。

よろしくお願いします。

75 :デフォルトの名無しさん:2006/03/05(日) 05:44:17
if(ch='a' || ch='A') countA++; みたいにすりゃいいんじゃね('A`)

76 :デフォルトの名無しさん:2006/03/05(日) 05:55:10
>>58
ググって適当にコピペ、を何度か繰り返したような感じのコードだなあ。
「//以下からよくわかりません」の前も滅茶滅茶。

CとかC++とか言う前に、ずっと基本的なこと、たとえば
文字はどうやって表現されているのか、とか、
テキストがファイルにどのように格納されているのか、
等々を理解しないと、前に進めそうにない罠。

とりあえず↓当たってみたら。
推薦図書/必読書のためのスレッド PART29
ttp://pc8.2ch.net/test/read.cgi/tech/1138179810/l50



77 :デフォルトの名無しさん:2006/03/05(日) 06:27:04
>>72心配すんな >>41先生が手取り足取り教えてくれる。

78 :デフォルトの名無しさん:2006/03/05(日) 09:48:15
愚直にやるならこんなかんじじゃないかね
面倒なんで直接レス書き込み欄から書くのでバグだらけだと思うのでそのまま信用はするなよ?

int ch, nA=0, nE=0, nI=0, nO=0, nU=0, nLine=0, nChars=0;
File *f;
fp = fopen("A.txt", "r");

while((ch=fgetc(f)) != EOF) {
switch(ch) {
case 'A' || 'a': nA++; break;
(中略)
case '\n': nLine++; break;
}
nChars++;
}

79 :デフォルトの名無しさん:2006/03/05(日) 09:57:51
int count[256] = {0};
int length = 0;
int c;
while ((c = fgetc(fp)) != EOF) {
count[c]++;
length++;
}
printf("A: %d\n", count['a'] + count['A']); /* ここはサブルーチンとかテーブル化できるね */
printf("%d lines\n", count['\n']);
printf("%d charctors\n", length);



80 :デフォルトの名無しさん:2006/03/05(日) 15:39:39
Winだと行数は厳密には\r\nの連続をカウントしなきゃいかん気がする。
\rの単独は知らないが、\nの単独はExcel形式のCSVで出てくるし。

81 :デフォルトの名無しさん:2006/03/05(日) 16:41:05
うわ
自分語り始まったw
きもw


82 :デフォルトの名無しさん:2006/03/05(日) 17:21:33
>>80
テキストモードで開いているから、\r\nは\nに変換されますが。

83 :デフォルトの名無しさん:2006/03/05(日) 18:02:42
誰か神様!! >>12の問題を発展させたやつで、
16×16マス目で、+とーはランダムじゃなく
配列の初期値としてユーザーが打ち込む。っていうプログラムを、
クラスもSTLも使わないでC++で作ってください…お願いします。


84 :デフォルトの名無しさん:2006/03/05(日) 18:05:26
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

85 :デフォルトの名無しさん:2006/03/05(日) 18:12:24
つまりクラス・STLだけと言わず、Boostなどをふんだんに使用しろという事だな

86 :デフォルトの名無しさん:2006/03/05(日) 18:12:41
>>83
・・・・・・・・・・・・>>44を書き換えればいいだけじゃないか・・・・・・・・・・・

87 :デフォルトの名無しさん:2006/03/05(日) 18:30:15
C言語が全くわからないから、細かい修正から全部やってくれ、ってことだろう

88 :デフォルトの名無しさん:2006/03/05(日) 18:33:33
>>84
神龍…そんなこと言わずに…
>>85
違いますね
>>86
44は+と−が最初から決められてるんで、
使う人が+−を打ち込む形にしてほしいんですよ…

89 :デフォルトの名無しさん:2006/03/05(日) 18:37:49
fgetsでもgetsでもscanfでもgetcharでも・・・・

90 :デフォルトの名無しさん:2006/03/05(日) 18:43:39
今気づいたけど、>>44
char cells_square[] = ("-++++-+-" "+----+--" "+----+--" "-++++---"
"-+--+---" "++--+---" "-+++++--" "-+---+--");
はBCCだとコンパイル通らないな
括弧を外すか、char*にすると通る

変すぎ

91 :デフォルトの名無しさん:2006/03/05(日) 18:44:52
確かに変だな
2次元配列にでもすりゃいいのに

92 :デフォルトの名無しさん:2006/03/05(日) 19:03:23
>>90
たしかにコンパイル通るようになっちゃうかもしれんが
char*にするのはダメ

93 :デフォルトの名無しさん:2006/03/05(日) 19:18:40
char str[]でも
char *strでも
同じ

94 :デフォルトの名無しさん:2006/03/05(日) 19:27:49
俺も同じだと思うけど違うって言う人居るんだよな
何が違うのか未だわからない

95 :デフォルトの名無しさん:2006/03/05(日) 19:28:54
char *str = "abcde";
str[2] = 'X'; //oops!!

96 :デフォルトの名無しさん:2006/03/05(日) 19:30:05
char str[] = "abcde";
str[2] = 'X'; //OK

97 :デフォルトの名無しさん:2006/03/05(日) 19:31:03

  ( ´д)ヒソ(´д`)ヒソ(д` )

98 :デフォルトの名無しさん:2006/03/05(日) 19:37:25
>>95>>96
何が言いたいんだおまいら

99 :デフォルトの名無しさん:2006/03/05(日) 19:54:53
[1] 授業単元:プログラム
[2] 問題文:最初に文字列を入力し、次に検索する文字を入力して、検索文字が最初何番目にあるか表示させるプログラム。
[3] 環境 windows、C言語
[4] 期限 3/5
[5] その他の制限:初めて3日なのでほとんど分かっていません。

100 :デフォルトの名無しさん:2006/03/05(日) 19:56:55
strstr

101 :デフォルトの名無しさん:2006/03/05(日) 19:57:23
>>98
書いてある通りだ

102 :デフォルトの名無しさん:2006/03/05(日) 19:57:26
>>99
検索方法の指定は?

103 :デフォルトの名無しさん:2006/03/05(日) 19:58:37
>>99
とりあえず何を習ったか書けお
じゃないと>>100にあるようにstrstr使うぞ

104 :デフォルトの名無しさん:2006/03/05(日) 20:00:33
釣り

105 :デフォルトの名無しさん:2006/03/05(日) 20:03:10
すみません、99です。strstrはまだ習っていません。forとifを使って作ろうと試していましたがうまくいきません。
>>102さん
検索方法というのは?

106 :デフォルトの名無しさん:2006/03/05(日) 20:04:34
コピペ乙

107 :デフォルトの名無しさん:2006/03/05(日) 20:07:09
99です入力方法はgets()しか習っていません

108 :デフォルトの名無しさん:2006/03/05(日) 20:07:25
>>105
入力方法言え

109 :デフォルトの名無しさん:2006/03/05(日) 20:07:31
>>95のコードはSegmentation faultになる重大な間違いだと言いたいだろう

やたらと低レベルなのが混じってるな

110 :デフォルトの名無しさん:2006/03/05(日) 20:08:07
scanfは?

111 :デフォルトの名無しさん:2006/03/05(日) 20:09:13
>>110さん
まだ習っていません。

112 :デフォルトの名無しさん:2006/03/05(日) 20:11:23
gets(str);
gets(c);
while(str[i]!=c[0]){
i++;
}
printf("%d 番目\n",i+1);

113 :デフォルトの名無しさん:2006/03/05(日) 20:22:26
>>99
break習ってないならボツ

int main(void)
{
int i;
char str1[256],str2[1];
printf("Input:");
gets(str1);
printf("Input:");
gets(str2);
for (i=0;str1[i]!='\0';i++){
if (str1[i]==str2[0]){
printf("%d番目\n",i+1);
break;
}
}
return 0;
}

114 :デフォルトの名無しさん:2006/03/05(日) 20:24:14
>>113
文字列の'\0'が考慮されてない

115 :デフォルトの名無しさん:2006/03/05(日) 20:25:44
別に習って無くても少しぐらいよくないか?

「工夫は加点します」とかっていわれたら
習ってないことでもひょいひょい使っちゃうだろ?

さすがにC言語の授業でC++は使わないが

116 :デフォルトの名無しさん:2006/03/05(日) 20:31:34
WinAPIを使ってくる

117 :デフォルトの名無しさん:2006/03/05(日) 20:31:40
つまり文字列は領域を動的確保しながら読み込み
検索文字は2文字以上もしくは文字でないと判断するものは完全にはじくものを
作れということですね

118 :デフォルトの名無しさん:2006/03/05(日) 20:36:13
ホントC言語の文字列は地獄だぜ
フゥハハハーハァー


119 :デフォルトの名無しさん:2006/03/05(日) 20:37:02
検索結果をご丁寧にファイル出力するものをつくれということですね?

120 :デフォルトの名無しさん:2006/03/05(日) 20:40:36
そうやって、ゆとりクンを量産し、努力者を蹴落としていくのですね。

121 :デフォルトの名無しさん:2006/03/05(日) 20:40:50
みなさんご教授ありがとうございます。99ですが、先ほど>>113さんに教えてもらった、プログラムをコピーしてみましたが、なぜがうまくいきません…。こちらの問題なのでしょうか?

122 :デフォルトの名無しさん:2006/03/05(日) 20:42:22
まんまるコピペしてるからじゃね?

123 :デフォルトの名無しさん:2006/03/05(日) 20:43:58
これがゆとり教育の弊害か

124 :デフォルトの名無しさん:2006/03/05(日) 20:45:58
#include <stdio.h>
入れた?

125 :デフォルトの名無しさん:2006/03/05(日) 20:50:31
まんまコピーしました。
#include <stdio.h>も入れて、「input」が出てきて入力しましたがpress any key 〜と出るだけで…

126 :デフォルトの名無しさん:2006/03/05(日) 20:55:25
>>82
その時点で題意をみたせずってこった

127 :デフォルトの名無しさん:2006/03/05(日) 20:55:28
とりあえずCPad使ってることはわかった

128 :デフォルトの名無しさん:2006/03/05(日) 20:56:50
俺はBCC Developer使ってる

129 :デフォルトの名無しさん:2006/03/05(日) 20:58:04
>>127さん
Cpad使っています。

130 :デフォルトの名無しさん:2006/03/05(日) 21:00:27
とりあえず初期化して動くか調べてみろよ
それで動かないならプログラムがおかしいってことだろう

アレ別にあってると思うけどね

131 :デフォルトの名無しさん:2006/03/05(日) 21:11:21
・・・もしかして、2回目のinputの時に、最初の文字列に含まれていない文字を入れてる、
なんてことないよな・・・まさかな。

132 :デフォルトの名無しさん:2006/03/05(日) 21:14:57
99です。何故か、forの中の"\0"をstr2に書き換えたら、うまくいきました。みなさんありがとうございます。
低レベルな質問で時間を頂きましてありがとうございます。

133 :デフォルトの名無しさん:2006/03/05(日) 21:15:39
returnの前にprintf("検索終了\n")を入れてみ

134 :デフォルトの名無しさん:2006/03/05(日) 21:18:10
こいつは何を暴走しているんだ?

135 :デフォルトの名無しさん:2006/03/05(日) 21:21:48
>>133さん
おおっ!!
かっこよくなりましたね。


136 :デフォルトの名無しさん:2006/03/05(日) 21:22:13
何このヘタレ

137 :デフォルトの名無しさん:2006/03/05(日) 21:39:19
CPadとBCC Developerでは>>113の実行結果が違ってるのかな?
それとも試食版つかってるとか

138 :デフォルトの名無しさん:2006/03/05(日) 21:41:07
>>132
forの中の"\0"は書き換えないで、最初の宣言のstr2[1]をstr[2]に変えてごらん。
そっちが正しい対応の仕方だろう。

139 :デフォルトの名無しさん:2006/03/05(日) 21:42:05
訂正:
×str2[1]をstr[2]
○str2[1]をstr2[2]


140 :補数:2006/03/05(日) 22:55:56
[1] 授業単元: c言語
[2] 問題文:後ほど記載いたします
 [3.1] OS:xp
 [3.2] gcc 3.4
 [3.3]C言語のみ
[4] 期限:
[5] その他の制限: ほとんど初歩です^^;
宜しくお願いします。




141 :補数:2006/03/05(日) 22:59:35
#include <stdio.h>
#include <math.h>

#define N 4

int bin_sum(char bin1[N], char bin2[N], int sign);

int main(int argc, char* argv[])
{
char bin1[N] = {'0', '1', '0', '1'};
char bin2[N] = {'1', '0', '1', '0'};
int result;

//正の2進数として加算
result = bin_sum(bin1, bin2, 0);

printf("5(0101)+10(1010)=%d\n", result);

//負の2進数(2の補数)として加算
result = bin_sum(bin1, bin2, 1);

printf("5(0101)+(-6)(1010)=%d\n", result);

return 0;
}


142 :補数:2006/03/05(日) 23:00:05

int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = 0, result = 0, i;

if (sign == 0) {//正の2進数を加算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
//dec2 = dec2 + 1 * 2^(i-1);
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
result = dec1 + dec2;
} else if (sign == 1) {//2の補数を計算
////////////////////////////////////////////////////////
    2の補数を計算するプログラム
////////////////////////////////////////////////////////////

}

return result;
}



143 :補数:2006/03/05(日) 23:01:08
の「2の補数」を計算するプログラムがわかりません^^:
もし宜しければ教えてください^^;


144 :デフォルトの名無しさん:2006/03/05(日) 23:02:51
2の補数とは1と0をひっくり返して1加算した数のことである。

145 :デフォルトの名無しさん:2006/03/05(日) 23:03:55
2の補数とは1減算して1と0をひっくり返した数のことである。 

146 :デフォルトの名無しさん:2006/03/05(日) 23:06:00
2の補数は都市伝説である

147 :補数:2006/03/05(日) 23:06:11
有難う御座います^^
ちょっとプログラム上でどんな感じになるのか分からなくて^^;
何か参考にしたらいいサイトとかありますかね??^^;

148 :デフォルトの名無しさん:2006/03/05(日) 23:07:47
スルー

149 :デフォルトの名無しさん:2006/03/05(日) 23:09:17
~ビットごとの反転(1 の補数)

ビット演算を調べるんだ!

150 :デフォルトの名無しさん:2006/03/05(日) 23:11:18
>>149
有難う御座います^^

151 :デフォルトの名無しさん:2006/03/05(日) 23:11:54
>>147
とりあえずひっくりかえせ
文字列なんだからなんてこたないだろう?
整数で扱うなら1111との排他的論理和を取る

152 :デフォルトの名無しさん:2006/03/05(日) 23:17:40
>>151さん
この途中までのプログラム自体私が作ったものではないので^^;
ほんと全然分からない状況なんです^^;

153 :デフォルトの名無しさん:2006/03/05(日) 23:20:02
>>142
コメントはちゃんとコメントアウトしとけよ

154 :デフォルトの名無しさん:2006/03/05(日) 23:20:47
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   税込み1500円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

155 :デフォルトの名無しさん:2006/03/05(日) 23:21:03
>>152 ぐぐれ

156 :デフォルトの名無しさん:2006/03/05(日) 23:22:30
>>152
俺が引き受けたしばしまたれよ

157 :デフォルトの名無しさん:2006/03/05(日) 23:23:12
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   手数料2000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

158 :デフォルトの名無しさん:2006/03/05(日) 23:23:25
>>154
つまり税抜き1429円だな。


159 :補数:2006/03/05(日) 23:24:26
>>142さん
すいません^^;

>>155さん
結構探したんですけど、分かりやすいのが見つからなくて^^;

160 :デフォルトの名無しさん:2006/03/05(日) 23:25:57
シェンロンが途中で値段を上げるw

161 :デフォルトの名無しさん:2006/03/05(日) 23:27:39
>>140
#include <stdio.h>
#include <math.h>

#define N 4

int bin_sum(char bin1[N], char bin2[N], int sign);

int main(int argc, char* argv[])
{
    char bin1[N] = {'0', '1', '0', '1'};
    char bin2[N] = {'1', '0', '1', '0'};
    int result;

    //正の2進数として加算
    result = bin_sum(bin1, bin2, 0);

    printf("5(0101)+10(1010)=%d\n", result);

    //負の2進数(2の補数)として加算
    result = bin_sum(bin1, bin2, 1);

    printf("5(0101)+(-6)(1010)=%d\n", result);

    return 0;
}



162 :デフォルトの名無しさん:2006/03/05(日) 23:28:10
>>161続き
int bin_sum(char bin1[N], char bin2[N], int sign)
{
    int dec1= 0, dec2 = 0, result = 0, i;

    if (sign == 0) {//正の2進数を加算
        for (i = N; i > 0; i--) {
            //bin1の2進数を10進数に変換
            if (bin1[N-i] == '1')
                dec1 = dec1 + (int)pow(2.0, (double)(i-1));

            //bin2の2進数を10進数に変換
            if (bin2[N-i] == '1')
                //dec2 = dec2 + 1 * 2^(i-1);
                dec2 = dec2 + (int)pow(2.0, (double)(i-1));
        }
        result = dec1 + dec2;
    } else if (sign == 1) {//2の補数を計算
    ////////////////////////////////////////////////////////
    //    2の補数を計算するプログラム
    ////////////////////////////////////////////////////////////
        for (i = N; i > 0; i--) {
            //bin1の2進数を10進数に変換
            if (bin1[N-i] == '1')
                dec1 = dec1 + (int)pow(2.0, (double)(i-1));



163 :デフォルトの名無しさん:2006/03/05(日) 23:29:10
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   続きは手数料3000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

164 :デフォルトの名無しさん:2006/03/05(日) 23:29:53
            //bin2の2進数を10進数に変換
            if (bin2[N-i] == '1')
                dec2 = dec2 + (int)pow(2.0, (double)(i-1));
        }
        dec2 = ~dec2 + 1;
        result = dec1 + dec2;
    }

    return result;
}

165 :デフォルトの名無しさん:2006/03/05(日) 23:31:48
200までいじりたかったのに・・・・

166 :デフォルトの名無しさん:2006/03/05(日) 23:33:24
int bin_sum(char bin1[N], char bin2[N], int sign)
{
    int dec1= 0, dec2 = -sign,result = 0, i;
    for (i = 0; i < N; ++i) {
        dec1=dec1<<1|bin1[i]-'0';
        dec2=dec2<<1|bin2[i]-'0';
    }
    result = dec1 + dec2;
    return result;
}


167 :補数:2006/03/05(日) 23:35:13
161〜166さん
有難う御座います^^
早速実行してみますね^^

168 :デフォルトの名無しさん:2006/03/05(日) 23:47:22
符号拡張ミスってたorz
int bin_sum(char bin1[N], char bin2[N], int sign)
{
    int dec1= 0, dec2 = -(bin2[0]&sign),i;
    for (i = 0; i < N; ++i) {
        dec1=dec1<<1|bin1[i]-'0'; 
        dec2=dec2<<1|bin2[i]-'0'; 
    }
    return dec1 + dec2;
}

169 :デフォルトの名無しさん:2006/03/06(月) 00:11:08
^^ ウザイ
(^^) 山崎渉を思い出す
NullPointerException氏ね


170 :デフォルトの名無しさん:2006/03/06(月) 00:13:39
>>162
Cなんだから//コメントとかやめようぜ
C99とは限らんだろう

171 :デフォルトの名無しさん:2006/03/06(月) 00:19:15
Cのみのコンパイラはほぼないからおk

172 :デフォルトの名無しさん:2006/03/06(月) 00:24:36
>>171
商用UNIXについてるオマケコンパイラとかは
ANSI Cすら非対応だったりするんだが。無論、わざと。

173 :デフォルトの名無しさん:2006/03/06(月) 00:25:26
ΩΩΩ ナ、ナンダッテー

174 :補数:2006/03/06(月) 00:26:45
すいません^^;
実行はできたのですが、コマンド画面でどういうコマンドを打ったらいいんですかね??^^;
ちょっとよく分からなくて…

175 :デフォルトの名無しさん:2006/03/06(月) 00:27:03
このプログラミングの宿題を助けて下さい。
CとC++でお願いします。

【質問テンプレ】
[1] 授業単元:プログラミング言語 
[2] 問題文(含コード&リンク):
問題
1)プログラムは演算式”A+B*Cが記されたテキストファイルを読み取ります。
2)LR分析表を参照し、LR分析アルゴリズムを使ってテキストを分析し、
”id + id * id $”と表示しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
c 、.cpp ファイルならどのコンパイラーを使っても良い。
 [3.3] 言語: (CとC++)
[4] 期限: 3月10日18:00まで

どなたかお願いします。


176 :175:2006/03/06(月) 00:27:54
LR 分析アルゴリズム(LR Parsing Algorithm)

以下がReduceしていく演算式の文法 です。
1)E → E + T
2)E → T
3)T → T * F
4) T → F
5) F → ( E )
6)F → id




177 :デフォルトの名無しさん:2006/03/06(月) 00:29:13
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   手数料30000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

178 :デフォルトの名無しさん:2006/03/06(月) 00:32:04
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   なんと手数料28000円でやります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

179 :175:2006/03/06(月) 00:32:24
演算式の文法のLR 分析表です。
(S5はShift 5を意味し、スタックにインプットします。
R2はReduce2を意味し、2) E → T式を使うということを示します。)

 Action|Goto
------------------------------------------------------------------------------
State |id | + | * | ( | ) | $ | E | T | F
------------------------------------------------------------------------------
0S5S41 2 3
1S6Accept
2R2S7R2R2
3R4R4R4R4
4S5S48 2 3
5R6R6R6R6
6S5S493
7S5S410
8S6S11
9R1S7R1R1
10R3R3R3R3
11R5R5R5R5




180 :デフォルトの名無しさん:2006/03/06(月) 00:32:36
意味不明('A`)

181 :175:2006/03/06(月) 00:33:31
上手く表示されていないので、また打ち直します。

182 :デフォルトの名無しさん:2006/03/06(月) 00:35:03
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   意味不明なのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|


183 :デフォルトの名無しさん:2006/03/06(月) 00:35:50
神龍はなんてセコイんだ

184 :デフォルトの名無しさん:2006/03/06(月) 00:37:12
わざわざ7つボールを集めさせて、しかも一つしか願い事聞いてくれないくらいだからw

185 :デフォルトの名無しさん:2006/03/06(月) 00:39:02
プラス有償になったしな

186 :デフォルトの名無しさん:2006/03/06(月) 00:39:09
神龍よりポルンガの方が気前がいいや

187 :デフォルトの名無しさん:2006/03/06(月) 00:39:38
つまり、3.5人の童貞がメイド喫茶に行けばパンツを見せてくれるのですね?

188 :デフォルトの名無しさん:2006/03/06(月) 00:39:58
タッカラプト ポッポルンガ プピリットパロ

189 :デフォルトの名無しさん:2006/03/06(月) 00:40:41
LR解析は一時期ぱっと解答を出す人がいた。
・・・興味のある人は過去ログか、ぐぐらばあるだろ。
俺は手で書くなら下向き再帰解析だけど。

190 :デフォルトの名無しさん:2006/03/06(月) 00:42:01
>>187
意味がわからないが

191 :デフォルトの名無しさん:2006/03/06(月) 00:43:56
だから童貞なんだよ

192 :デフォルトの名無しさん:2006/03/06(月) 01:02:32
ここで質問していいのものなのか、ちょっと解らないですが聞いてください。

今ちょっと、プラグイン機能を持つアプリケーションを作成しようとしています。
プラグイン機能は後から、lib.soやdllを追加する事で機能拡張な形にしたいと思っています
このアプリケーションを起動時に特定のディレクトリに存在するdll等を読み込み機能を
実行できるようにしたいと思っています。

このような設計や簡単なサンプルなどを扱っている資料などありませんでしょうか。


193 :デフォルトの名無しさん:2006/03/06(月) 01:05:00
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   手数料90000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

194 :デフォルトの名無しさん:2006/03/06(月) 01:05:16
>>192
>>1

195 :デフォルトの名無しさん:2006/03/06(月) 01:05:25
手数料がやばくなってきた件について

196 :デフォルトの名無しさん:2006/03/06(月) 01:06:57
当時の90000円は今の900000リラ

197 :175:2006/03/06(月) 01:10:36
State | Action (id| +| * |( | ) | $) | GOTO (E | T | F)
=================================================================================
State | id | + | * | ( | ) | $ | E | T | F
-----------------------------------------------------------------------------
0 | S5 | # | # | S4 | # | # | 1 | 2 | 3
------------------------------------------------------------------------------
1 | # | S6 | # | # | # |Accept | # | # | #
-----------------------------------------------------------------------------
2 | # | R2 | S7 | # | R2 | R2 | # | # | #
-----------------------------------------------------------------------------
3 | # | R4 | R4 | # | R4 | R4 | # | # | #
------------------------------------------------------------------------------
4 | S5 | # | # | S4 | # | # | 8 | 2 | 3
-----------------------------------------------------------------------------
5 | # | R6 | R6 | # | R6 | R6 | # | # | #
------------------------------------------------------------------------------


198 :175:2006/03/06(月) 01:12:22
6 | S5 | # | # | S4 | # | # | # | 9 | 3
------------------------------------------------------------------------------
7 | S5 | # | # | S4 | # | # | # | | 10
------------------------------------------------------------------------------
8 | # | S6 | # | # | S11 | # | # | # | #
------------------------------------------------------------------------------
9 | # | R1 | S7 | # | R1 | R1 | # | # | #
-----------------------------------------------------------------------------
10 | # | R3 | R3 | # | R3 | R3 | # | # | #
------------------------------------------------------------------------------
11 | # | R5 | R5 | # | R5 | R5 | # | # | #
------------------------------------------------------------------------------


199 :175:2006/03/06(月) 01:13:20
演算式の文法のLR 分析表です。
(S5はShift 5を意味し、スタックにインプットします。
R2はReduce2を意味し、2) E → T式を使うということを示します。)


200 :デフォルトの名無しさん:2006/03/06(月) 01:14:10
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   手数料900円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

201 :175:2006/03/06(月) 01:14:41
以下は、id + id * id を分析した場合の手順です。

StackInputAction
0id + id * id $Shift 5
0id5+ id * id $Reduce 6 (use GOTO[0, F])
0F3+ id * id $Reduce 4 (use GOTO[0, T])
0T2+ id * id $Reduce 2 (use GOTO[0, E])
0E1+ id * id $Shift 6
0E1+6id * id $Shift 5
0E1+6id5* id $Reduce 6 (use GOTO[6, F])
0E1+6F3* id $Reduce 4 (use GOTO[6, T])
0E1+6T9* id $Shift 7
0E1+6T9*7id $Shift 5
0E1+6T9*7id5$Reduce 6 (use GOTO[7, F])
0E1+6T9*7F10$Reduce 3 (use GOTO[6, T])
0E1+6T9$Reduce 1 (use GOTO[0, E])
0E1$Accept


202 :デフォルトの名無しさん:2006/03/06(月) 01:15:44
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   おやすみ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

203 :175:2006/03/06(月) 01:16:26
教授に聞くと、
1)ファイルを開く。
2)ファイルからCharを読む
3)CharをTokenに変える (CharはA-Z、+、*、(、)です。)
4)LR分析表を作る
5)Reduceする演算式を使う
の手順で作成するようにと言われました。

締め切りは、3月10日です。
どなたかお願いします。


204 :デフォルトの名無しさん:2006/03/06(月) 01:17:02
つーか、いいかげんシェンロンウザイ

205 :デフォルトの名無しさん:2006/03/06(月) 01:18:09
ヒント:みんなとっくにあぼーんしてる

206 :デフォルトの名無しさん:2006/03/06(月) 01:18:13
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_   技術手数料59,800円+諸経費39,800で
三.ヽ= (⌒ヽ;:;:;,.二) 99,600円になります
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

207 :デフォルトの名無しさん:2006/03/06(月) 01:24:38
>>192 機種依存ネタだとおもうが、linuxとかWindowsでそれぞれ違う。

208 :デフォルトの名無しさん:2006/03/06(月) 01:34:21
とりあえず、トリップつけろよ。
必ず荒れるんだから。

なんか、トリップ無し=荒らしのような気がしてならない。

209 :デフォルトの名無しさん:2006/03/06(月) 01:36:43
はい。荒らしでーす。どーせ4月中旬まで、ネタスレだしー。

210 :デフォルトの名無しさん:2006/03/06(月) 01:50:06
http://www.uploda.org/uporg328542.jpg
ここの3,4,5を作らなきゃならないんだが
さっぱりワカラナス
授業さぼりすぎた


211 :デフォルトの名無しさん:2006/03/06(月) 01:56:12
>>210
報酬は?

212 :デフォルトの名無しさん:2006/03/06(月) 02:06:10
>>210
授業さぼったレベルの話じゃすまされないと思うんだがw?
3.3

i=15
max = i + 10;
a = 0;
for(; i < max; i++){
a = 2 + (3 * i);
fprintf(stderr, "%x\r\n", a);
}
3.4

i = 4
factorial = 1;
while(i > 1){
factorial *= i;
i--;
}
fprintf(stdout, "%x\n", factorial);

3.5

i = 4
factorial = 1;
do{
factorial *= i;
i--;
}while(i > 1);
fprintf(stdout, "%x\n", factorial);
よっぱらってるからあってるかよくわからねぇw
しかしなんだこんなもん解らないんだったら、やばいと思うよ

213 :デフォルトの名無しさん:2006/03/06(月) 02:06:33
>>211
さすがにこれで報酬とっちゃだめだろw

214 :デフォルトの名無しさん:2006/03/06(月) 02:06:35
貴様!これから報酬の話をしようと言うときに!

215 :デフォルトの名無しさん:2006/03/06(月) 02:09:03
>>213
今画像見た
C言語つかプログラミング止めればいいのにと思った

216 :デフォルトの名無しさん:2006/03/06(月) 02:12:58
わかんねえけど単位のためなんだろきっとwww


それよりも3.6で配列使うなってのがよくわからん

217 :デフォルトの名無しさん:2006/03/06(月) 02:16:50
分からないなら単位を落とせばいいのにと思った。自主的にサボったんならなおさら。

218 :デフォルトの名無しさん:2006/03/06(月) 02:16:54
なんで?使わなくてよくね?

219 :デフォルトの名無しさん:2006/03/06(月) 02:17:51
ポインタ使えばいいんじゃね
それとも前方向リンクリストとか
スタックとかキューでも自作しろって
ことじゃね?

220 :216:2006/03/06(月) 02:19:59
ああ、やっと意図わかった
(xn-u)^2出すには配列に入れんとだめだから2の公式使えってことか

221 :デフォルトの名無しさん:2006/03/06(月) 02:20:31
>>210
うはwwwww難しいことやってんだなwwwwwwww

222 :デフォルトの名無しさん:2006/03/06(月) 02:21:27
>>212の回答に悪意を感じるのは俺だけか?w

223 :デフォルトの名無しさん:2006/03/06(月) 02:24:01
>>21
3つとも書いてくれてありがとう
>>216
まあそんな感じだ

224 :デフォルトの名無しさん:2006/03/06(月) 02:28:07
配列を使わない、1パスで済ます方法は、C言語によるアルゴリズム事典に載ってる。


・・・はず。

225 :デフォルトの名無しさん:2006/03/06(月) 02:36:06
デバッグ名目の報酬交渉マダー?(・∀・/)/凵⌒☆チンチン

226 :デフォルトの名無しさん:2006/03/06(月) 02:39:20
>>222
殺意すら感じる
出題者の単位への

227 :デフォルトの名無しさん:2006/03/06(月) 06:25:41
[1] 授業単元:C言語演習
[2] 問題文:
読み込んだ文字列に含まれる任意の文字の個数を表示せよ。

例:文字列を入力せよ:aBbccdb
検索する文字を入力せよ:b
文字列aBbccdbの中にはbが2個あります。

(ヒント:char型のポインタを仮引数とする関数を作る。)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 2006年3月7日(火)
[5] その他の制限:ポインタや構造体まで習いました。よろしくお願いします。

228 :デフォルトの名無しさん:2006/03/06(月) 06:36:58
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    文字のカウントとかもう飽きたのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

229 :デフォルトの名無しさん:2006/03/06(月) 06:44:18
>>227
#include <stdio.h>

int CountChar(char *Src, char Word)
{
    int Count=0;

    while (*Src!='\0')
    {
        if (*Src==Word)
        {
            Count++;
        }
        Src++;
    }
    return Count;
}

int main()
{
    char *Src="aBbccdb";
    char Word='b';
    int Count;

    Count=CountChar(Src, Word);
    printf("%d\n", Count);

    return 0;
}

230 :デフォルトの名無しさん:2006/03/06(月) 06:51:02
>>229
例をよく見ろ
入力はコマンドラインからだろ

231 :デフォルトの名無しさん:2006/03/06(月) 06:58:12
そこでこの簡単な問題をすかさず俺が華麗に割り込みゲットするわけです
コンパイル通るかしらんがまあ十分っしょ

#include <stdio.h>
int search(char* str, char ch){
int count=0, i;
for(i=0; str[i]; ++i){
count += str[i] == ch;
}
return count;
}
int main(){
char str[256];
char ch[16];
printf("文字列を入力せよ:");
gets(str);
printf("検索する文字を入力せよ:");
gets(ch);
printf("%sの中には%cが%d個あります。\n", str, ch[0], search(str, ch[0]));
return 0;
}

232 :デフォルトの名無しさん:2006/03/06(月) 07:01:55
>>216 こういうことだろ
#include <stdio.h> 
double f(int n, int m, double *E, double *var, double *min, double *max) {
  if (m < n) {
    double a;
    scanf("%lf", &a);
    *E += a;
    if (*min > a) *min = a;
    if (*max < a) *max = a;
    f(n, m+1, E, var, min, max);
    *var += (a-*E)*(a-*E);
  } else {
    *E /= n;
  }
}
int main() {
  int n;
  scanf("%d", &n);
  double E = 0, var = 0, min = 100000, max = -100000;
  f(n, 0, &E, &var, &min, &max);
  printf("%lf %lf %lf %lf\n", E, var, min, max);
}

233 :デフォルトの名無しさん:2006/03/06(月) 07:13:09
しばらく書き込みないからもう誰もいないかと思ってたが
けっこういるな

234 :デフォルトの名無しさん:2006/03/06(月) 07:15:31
http://acm.pku.edu.cn/JudgeOnline/
宿題解くのよりこういうの競ってるほうが楽しくない?

235 :デフォルトの名無しさん:2006/03/06(月) 07:37:41
探索は嫌いなんだ。

236 :デフォルトの名無しさん:2006/03/06(月) 07:43:28
>>234
「UVA,PKUなどのオンラインジャッジスレ」でも立ててくれ

237 :216:2006/03/06(月) 08:12:27
>>232
ガーン(゚д゚;) たしかに言われてみればそうだorz
1式だと各値を配列に記憶させないと(xi-u)^2が求められないから2式使いましょうって意図かと思った
つうか教授の意図はそれっぽい気もするんだがこの解答提出したらどういう反応示すのだろうか

238 :58:2006/03/06(月) 10:22:32
>>58 又は >>60 の者です。皆様、ありがとうございました。
一応、組んでみました。
ただ、number of characters の if が数字を読んでいないようです。(inputのtxtに数字が混ざっていた場合)
何か改良方法は有りますか?(これが直れば、意図通りです)

double na, ne, ni, no, nu, L, n;// main numbers in "while"
char a, c;
inFile.ignore(200,'\n');// ignore the 1st line
na = 0;// initial number of a and A
ne = 0;// initial number of e and E
ni = 0;// initial number of i and I
no = 0;// initial number of o and O
nu = 0;// initial number of u and U
L = 0;// initial number of line
n = 1;// initial number of characters
inFile.get(a);
while (inFile.get(c))// loop for counting the number
{
if(c=='a' || c=='A'){na++;}// for a and A (vowels)
if(c=='e' || c=='E'){ne++;}// for e and E (vowels)
if(c=='i' || c=='I'){ni++;}// for i and I (vowels)
if(c=='o' || c=='O'){no++;}// for o and O (vowels)
if(c=='u' || c=='U'){nu++;}// for u and U (vowels)
if(c=='\n'){L++;}// for line (without 1st line)
if(c==c){n++;}// for characters
}// end of loop for counting the number

239 :デフォルトの名無しさん:2006/03/06(月) 10:38:38
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

240 :デフォルトの名無しさん:2006/03/06(月) 20:07:29
>>238をみてこめんとをかくこともよしあしだなとおもいました。

241 :デフォルトの名無しさん:2006/03/06(月) 20:43:50
>>240 こんな感じ?w
/* >>238, 58
とりあえず、コメントを書くときは「わかりやすく意味を伝えることをメインに書いた方がいいよ。
「number of charactersのifが数字を読んでいない」って書いてあるけど、その場所が */ #include <iostream>
/*パッと見てどこだかわからないんじゃ、コメントの意味があんまりないでしょ?
たぶん、今の場合は
if(c==c){n++;}// for characters
のことを言っているんじゃないかと思うんだけど、ここは*/ int main(void){
/* ifの中身が( c==c )と全然意味がないことをやっているんじゃないかい?*/ cout <<
"ここはただ単に、 n++だけでいいんじゃないかと思うよ。ifにする必要なんじゃないか?" << endl;
/* とりあえず、nの内容が文字数を数えるだけなら、それで目的は達成できると思うから。*/return 0;}



242 :デフォルトの名無しさん:2006/03/06(月) 20:57:28
やべーnamespaceつけ忘れた。コンパイルして、要点を確認したい人は、
cout →std::cout
endl →std::endl
に置換しておくれ

243 :デフォルトの名無しさん:2006/03/07(火) 01:49:53
>>175です。
>>201を打ち直しました。
どなたかお願いします。

Stack Input Action
0 id + id * id $ Shift 5
0id5 + id * id $ Reduce 6 (use GOTO[0, F])
0F3 + id * id $ Reduce 4 (use GOTO[0, T])
0T2 + id * id $ Reduce 2 (use GOTO[0, E])
0E1 + id * id $ Shift 6
0E1+6 id * id $ Shift 5
0E1+6id5 * id $ Reduce 6 (use GOTO[6, F])
0E1+6F3 * id $ Reduce 4 (use GOTO[6, T])
0E1+6T9 * id $ Shift 7
0E1+6T9*7 id $ Shift 5
0E1+6T9*7id5 $ Reduce 6 (use GOTO[7, F])
0E1+6T9*7F10 $ Reduce 3 (use GOTO[6, T])
0E1+6T9$ Reduce 1 (use GOTO[0, E])
0E1$ Accept

244 :デフォルトの名無しさん:2006/03/07(火) 01:55:07
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

245 :デフォルトの名無しさん:2006/03/07(火) 21:22:52
以下のようにデータが保存されたdata.txt ファイルがある

A 9 B 2 C 4 D 8 E 6 F 3

stract data {char name [10]; int val;} da[10];
と宣言された構造体を用いて
このファイルからこれらの整数値データを読み込み
その平均値を求めるプログラムを作成しなさい

この問題が分かりません誰でもいいので教えてください!

246 :デフォルトの名無しさん:2006/03/07(火) 21:31:29
#define stract struct

247 :デフォルトの名無しさん:2006/03/07(火) 21:31:57
>>245
テンプレ読むべし>>1

248 :デフォルトの名無しさん:2006/03/07(火) 21:35:30
>>245

cin >> setbase(16);
int n = 0;
while (cin >> da[i].val)
++n;
int total = 0;
for (int i = 0; i < n; ++i)
total += da[i].val;
cout << setbase(16) << (total / n) << endl;

249 :デフォルトの名無しさん:2006/03/07(火) 21:40:08
>>245
#include <iostream>
#include <algorithm>
#include <iterator>
#include <numeric>
#include <fstream>

using namespace std;

struct data {char name [10]; int val;} da[10];

data operator+ (const data& lhs, const data& rhs)
{ data result; result.val = lhs.val, result.val += rhs.val; return result; }
istream& operator>>(istream& is, data& d) { is >> d.name >> d.val; return is; }

int main()
{
  ifstream fin("data.txt");
  data *p = copy(istream_iterator<data>(fin), istream_iterator<data>(), da);
  data d = {0};
  cout << (double)accumulate(da, p, d).val / (p - da) << endl;
}

250 :デフォルトの名無しさん:2006/03/07(火) 21:45:09
>>249
このほうが良くね?
int operator+(int val,const data&d){return val+d.val;}

251 :補数:2006/03/07(火) 21:53:49
1] 授業単元: c言語
[2] 問題文:後ほど記載いたします
 [3.1] OS:xp
 [3.2] gcc 3.4
 [3.3]C言語のみ
[4] 期限:
[5] その他の制限: ほとんど初歩です^^;
宜しくお願いします。

252 :デフォルトの名無しさん:2006/03/07(火) 21:54:28
>>246から>>250の方本当にありがとうございます
ただ、本当に申し訳ないのですが
ポインタと構造体とファイルの基礎の基礎しか習ってないので
(#include<stdio.h>から始めるのしか習っていません…)
出来ればそれをふまえてお願いできませんでしょうか?
わがままなやつで本当に申し訳ありません。

253 :補数:2006/03/07(火) 21:55:01
#include <stdio.h>
#include <math.h>

#define N 4

int bin_sum(char bin1[N], char bin2[N], int sign);

int main(int argc, char* argv[])
{
char bin1[N] = {'0', '1', '0', '1'};
char bin2[N] = {'1', '0', '1', '0'};
int result;

//正の2進数として加算
result = bin_sum(bin1, bin2, 0);

printf("5(0101)+10(1010)=%d\n", result);

//負の2進数(2の補数)として加算
result = bin_sum(bin1, bin2, 1);

printf("5(0101)+(-6)(1010)=%d\n", result);

return 0;
}


254 :補数:2006/03/07(火) 21:56:07

int bin_sum(char bin1[N], char bin2[N], int sign)
{
int dec1= 0, dec2 = 0, result = 0, i;

if (sign == 0) {//正の2進数を加算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
//dec2 = dec2 + 1 * 2^(i-1);
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
result = dec1 + dec2;
} else if (sign == 1) {//2の補数を計算
for (i = N; i > 0; i--) {
//bin1の2進数を10進数に変換
if (bin1[N-i] == '1')
dec1 = dec1 + (int)pow(2.0, (double)(i-1));
//bin2の2進数を10進数に変換
if (bin2[N-i] == '1')
dec2 = dec2 + (int)pow(2.0, (double)(i-1));
}
dec2 = ~dec2 + 1;
result = dec1 + dec2;
}

return result;
}

255 :デフォルトの名無しさん:2006/03/07(火) 21:56:46
1] 授業単元: c言語
[2] 問題文:>>245
 [3.1] OS:xp
 [3.2]
 [3.3]C言語のみ
[4] 期限:明日8時までに回答いただければ
[5] その他の制限:基礎中の基礎しか習っていません

256 :補数:2006/03/07(火) 22:00:48
実行すると
("5(0101)+(-6)(1010)= の値が-1にならないといけないのですが
なりません^^;
もしよろしければ正しく修正して頂けないでしょうか??

257 :デフォルトの名無しさん:2006/03/07(火) 22:08:39
>>256
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int bin_sum(const char*bin1,const char*bin2, int sign);

int main(int argc, char* argv[]) 
{
    const char*bin1 = "0101";
    const char*bin2 = "1010";
    int result;
    result = bin_sum(bin1, bin2, 0);
    printf("5(0101)+10(1010)=%d\n", result);
    result = bin_sum(bin1, bin2, 1);
    printf("5(0101)+(-6)(1010)=%d\n", result);
    return 0;
}
int bin_sum(const char*bin1,const char*bin2, int sign){
    return strtol(bin1,NULL,2)+strtol(bin2,NULL,2)+(-(sign&*bin2)<<strlen(bin2));
}

258 :デフォルトの名無しさん:2006/03/07(火) 22:08:47
uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

259 :デフォルトの名無しさん:2006/03/07(火) 22:08:53
>>256
printf("5(0101)+(-6)(1010)=%d\n", result);
ここをこうする

printf("5(0101)+(-6)(1010)=%d\n", -1);

260 :補数:2006/03/07(火) 22:14:36
>>257さん
有難うございます^^ スイマセン、余り文をいじらずに作らなきゃいけないんですよ^^;

>>259さん
それは反則ですよ^^;

261 :デフォルトの名無しさん:2006/03/07(火) 22:45:05
int bin_sum(char bin1[], char bin2[], int sign)
{
int dec1 = 0, dec2 = 0;
char *p;

for( p = bin1 ; *p ; p++, dec1 *= 2 ) if( *p == '1' ) dec1++;
for( p = bin2 ; *p ; p++, dec2 *= 2 ) if( *p == '1' ) dec2++;
return dec1 + dec2 - (sign == 1)?(1<<N):0;
}

262 :デフォルトの名無しさん:2006/03/07(火) 23:05:11
>>260
反則というなら規則を示せ。
情報を小出しにするな。

263 :補数:2006/03/07(火) 23:30:04
>>すいません^^;
確かにそうですね。
ほとんどプログラムは完成に近いと思いますので、
なるべく状態を維持したままお願いします^^;


264 :デフォルトの名無しさん :2006/03/08(水) 00:45:30
>>245
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100

struct data{
char name [10];
int val;
}da[10];

int main(void)
{
FILE *in;
char *delim = " \n";/*区切り文字*/
char *p ;/*その時点での文字列*/
int nummber;/*入力用*/
int i;/*for文用*/
int num = 0;/*合計*/
double aver;/*平均*/
char buf[MAX];


if((in = fopen("data.txt","r")) == NULL ){
fprintf(stderr,"cant open file");
exit(1);
}


265 :デフォルトの名無しさん :2006/03/08(水) 00:46:03
続き
while((fgets(buf,sizeof(buf),in)) != NULL){
p = strtok(buf,delim);
for(i = 0; i<=9; i++){
strcpy(da[i].name, p);
p = strtok(NULL,delim);
nummber = atoi(p);
da[i].val = nummber;
printf("%d\n",da[i].val);
if(NULL == strtok(NULL,delim))
break;
}
}
for(i = 0; i<=9; i++){
num +=da[i].val;
}

aver = num/10.0;

printf("平均値%f\n",aver);

return 0;
}

266 :デフォルトの名無しさん:2006/03/08(水) 13:17:00
[1] 授業単元:C応用
[2] 問題文(含コード&リンク):多いですがよろしくお願いします。<(__)>

1.コマンドラインから四角形の辺の長さを入力すると、以下のように表示する。
実行例は以下のとおり。
#########
# #
# #
#########

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


267 :デフォルトの名無しさん:2006/03/08(水) 13:18:00
上の問題シャープがずれてます。。

後2問はこれです。

2.コマンドラインから指定した任意個数の引数の最大値、最小値、平均値を求める。
実行例は以下のとおり。
./a.out 23 5 17 11 13 7 19 2 3
(表示↓)
23 2 11.1

3.10000円未満の支払い金額をコマンドラインから入力すると、10000円札で
支払った場合のお釣りを金種別に表示する。実行例は以下のとおり。
./a.out 2816
(表示↓)
5000 1
1000 2
500 0
100 1
50 1
10 3
5 0
1 4

268 :デフォルトの名無しさん:2006/03/08(水) 13:19:13
よくばりさん






















  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

269 :デフォルトの名無しさん:2006/03/08(水) 13:19:37
スルー

270 :デフォルトの名無しさん:2006/03/08(水) 13:30:02
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    3000円になります
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

271 :デフォルトの名無しさん:2006/03/08(水) 13:33:25
>>266
#include <stdio.h>
#define xx int
#define xxx xxxx(scan)
#define xxxx(x) x##f
#define xxxxx xxxx(print)
#define xyx(x) for (i=0;i<x;++i)
#define xyz(x, z) x-z
#define xxy ;
int main(void){xx cx, cy, i xxy xxx("%d %d",\
&cx, &cy) xxy xyx(cx) xxxxx("#") xxy xxxxx("\n") xxy
while (cy-->2) {xxxxx("#");xyx(xyz(cx,2)) xxxxx(" ");
xxxxx("#\n") xxy}xyx(cx) xxxxx("#") xxy
xxxxx("\n") xxy return 0;}


272 :デフォルトの名無しさん:2006/03/08(水) 13:38:57
>>266
(1)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
int w = atoi(v[1]),h = atoi(v[2]),d;
    for(c=w;c--;)putchar('#');putchar('\n');
    for(c=h-2;c--;putchar('#'),putchar('\n'))
    for(d=w-2,putchar('#');d--;)putchar(' ');
    for(c=w;c--;)putchar('#');putchar('\n');
    return 0;
}
(2)
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
int main(int c,char**v){
    int d=0,w,ma=INT_MIN,mi=INT_MAX;
    while(*++v)d += w=atoi(*v),ma=w>ma?w:ma,mi=mi>w?w:mi;
    printf("%d %d %.1f\n",ma,mi,1.*d/--c);
    return 0;
}
(3)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
    int n=(c=5000)*2-atoi(v[1]);
    while(c)printf("%d %d\n",c,n/c),n%=c,c/=5,printf("%d %d\n",c,n/c),n%=c,c/=2;
    return 0;
}


273 :デフォルトの名無しさん:2006/03/08(水) 13:44:06
同一人物か。
テクを使っているのは理解するが、もうちょっと、分りやすく書け。


274 :デフォルトの名無しさん:2006/03/08(水) 13:45:59
どうして?

275 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:00:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):

#include<stdio.h>
int bitcount(unsigned char n){
n -= n>1&85;
n = (n&51)+(n>2&51);
return n+(n>4) & 15;
}
int main(){
char c;
scanf(" %c",&c);
printf("%cのbitが1の数は%dです。\n",c,bitcount(c));
}

上のコードを入力された複数文字(文字列)のすべての文字コードに含まれる1ビット数の
合計を出力できるようにしなさい

276 :デフォルトの名無しさん:2006/03/08(水) 14:00:35
>>271
バロス

277 :デフォルトの名無しさん:2006/03/08(水) 14:00:35
266 です。助かります<( )> 17時までに仕上げないとダメなんで焦ってます。
あと3問でおわりです。贅沢ですがお願いします。

4.コマンドラインからテキストファイル名、結果を記録するファイル名を入力
すると、テキストファイルの内容を読み出して奇数行目だけを抜き出して
結果を記録するファイルに書き込む。実行例は以下のとおり。
./a.out sample.txt result.txt

5.コマンドラインからバイナリデータファイルの名前とデータの個数を入力
するとファイルの先頭からfloatの値を指定した個数読み出してその和を表示する。
実行例は以下のとおり。
./a.out sample.bin 12

6.コマンドラインから整数を指定すると、その値の2乗、3乗、4乗、5乗を求める。
ただし、計算は関数 void f156(int a, int *p2, int *p3, int*p4, int *p5)
で行うこと。f156には入力された数をaとしてあたえ、2乗から5乗をp2 -- p5に代入
する、結果の表示はmain()中で行うこと。実行例は以下のとおり。
./a.out 10
(表示↓)
100 1000 10000 100000

278 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:01:10
#include<stdio.h>
int main(){
char buf[21],*p=gets(buf);
int n=0; lsloe
for(;*p;++p)n+=*p-'0';
printf("%d\n",n);

}

上のコードを、数字の前にマイナス記号(―)がある場合は
直後の数字を負の数として計算するようにしなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] VC 6.0
 [3.3] 言語:cのみ
[4] 期限: 追試中なので今すぐお願いしたいです。
[5] その他の制限:ないです

279 :デフォルトの名無しさん:2006/03/08(水) 14:02:12
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

280 :デフォルトの名無しさん:2006/03/08(水) 14:03:36
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

281 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:04:56
本当にお願いします

282 :デフォルトの名無しさん:2006/03/08(水) 14:06:06
追試中とか必死だな

283 :デフォルトの名無しさん:2006/03/08(水) 14:07:12
272さんは素晴しいテクニシャンですね。

284 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:07:22
あと20分しかないんです。

後でなら私に出来ることなんでもしますんでお願いします


285 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:11:39
神龍様私の願いを・・・
冗談抜きにやばい;;

286 :デフォルトの名無しさん:2006/03/08(水) 14:13:07
  そだ必  |------、`⌒ー--、
  れが死  |ハ{{ }} )))ヽ、l l ハ
  が   |、{ ハリノノノノノノ)、 l l
  い   |ヽヽー、彡彡ノノノ}  に
  い   |ヾヾヾヾヾヽ彡彡}  や
  !!    /:.:.:.ヾヾヾヾヽ彡彡} l っ
\__/{ l ii | l|} ハ、ヾ} ミ彡ト
彡シ ,ェ、、、ヾ{{ヽ} l|l ィェ=リ、シ} |l
lミ{ ゙イシモ'テ、ミヽ}シィ=ラ'ァ、 }ミ}} l
ヾミ    ̄~'ィ''': |゙:ー. ̄   lノ/l | |
ヾヾ   "  : : !、  `  lイノ l| |
 >l゙、    ー、,'ソ     /.|}、 l| |
:.lヽ ヽ   ー_ ‐-‐ァ'  /::ノl ト、
:.:.:.:\ヽ     二"  /::// /:.:.l:.:.
:.:.:.:.:.::ヽ:\     /::://:.:,':.:..:l:.:.


287 :デフォルトの名無しさん:2006/03/08(水) 14:23:41
冗談抜きに留年すりゃいいんじゃね?

288 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:24:17
2番目の問題だけでもだめでしょうか?

289 :デフォルトの名無しさん:2006/03/08(水) 14:24:38
>>277
だるー
(4)
#include<stdio.h>
int main(int c,char**v){
    FILE*fin=fopen(v[1],"r"),fout=fopen(v[2],"w");int m=0;
    for(;(c=getc(fin))!=EOF;m^=c=='\n')(m&&c-'\n')||putc(c,fout);
    fclose(fout);fclose(fin);return 0;
}
(5)
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
    FILE*fin=fopen(v[1],"rb");float f,sum=0;
    for(c=atoi(v[2]);c--;)fread(&f,1,sizeof(f),fin),sum+=f;
    printf("%f\n",sum);
    return 0;
}
(6)
void f156(int a, int *p2, int *p3, int*p4, int *p5){
    int n = a;*p2 = n*=a;*p3 = n*=a;*p4 = n*=a;*p5 = n*=a;
}
#include<stdio.h>
#include<stdlib.h>
int main(int c,char**v){
    int a[4],i;f156(atoi(v[1]),a,a+1,a+2,a+3);
    for(i=0;i<4;++i)printf("%d ",a[i]);puts("");
    return 0;
}

290 :デフォルトの名無しさん:2006/03/08(水) 14:29:34
#include <iostream>
#define xx for
#define xxx int
#define xxxx char
#define xxxxxx void
using namespace std;
xxxxxx xxxxx(xxxx **x,xxxx y,xxx *c){*c-=y-'0';}
xxx main(){xxx n=0;xxxx buf[21],*p=gets(buf);xx(xxx i;*p;++p){if(*p=='-'){xxxxx(&p,*++p,&n);continue;}n+=*p-'0';}cout << n;}

ポインタすらまだよく分からんのに適当に作ったら動いた

291 :デフォルトの名無しさん:2006/03/08(水) 14:31:16
>>289
ありがとうございました!これからは教えられる側になれるように精進します。感謝

292 :デフォルトの名無しさん:2006/03/08(水) 14:33:03
>>290
2問目バロス

293 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:33:13
30分延長になりました。オラに元気を・・・


294 :デフォルトの名無しさん:2006/03/08(水) 14:34:34
プリプロセッサでクオートさせるのって何だっけ?

295 :デフォルトの名無しさん:2006/03/08(水) 14:36:59
>>294
#のこと?

296 :デフォルトの名無しさん:2006/03/08(水) 14:37:30
>>295
 そ れ だ !
サンクス

297 :デフォルトの名無しさん:2006/03/08(水) 14:38:50
>>293
#include <stdio.h>
#define xx for
#define xxx int
#define xxxx char
#define xxxxxx void
xxxxxx xxxxx(xxxx **x,xxxx y,xxx *c){*c-=y-'0';}
xxx main(){xxx n=0;xxxx buf[21],*p=gets(buf);xx(;*p;++p){if(*p=='-'){xxxxx(&p,*++p,&n);continue;}n+=*p-'0';}printf("%d",n);}

>>290をCに勝手に修正

298 :デフォルトの名無しさん:2006/03/08(水) 14:39:30
>>留年勘弁
しょうがねぇなぁ。

299 :デフォルトの名無しさん:2006/03/08(水) 14:40:27
おちつけ、まだ20分もある

300 :デフォルトの名無しさん:2006/03/08(水) 14:41:56
>>289
すいません
(4)で
15-4.c : In function ‘main’:
15-4.c:3: error: 無効な初期化子
15-4.c:4: error: incompatible type for argument 2 of ‘_IO_putc’
15-4.c:5: error: incompatible type for argument 1 of ‘fclose’

というエラーが出るんですが。。。


301 :デフォルトの名無しさん:2006/03/08(水) 14:42:02
>>297
それじゃダメだろ
二段以上で展開しろ

302 :デフォルトの名無しさん:2006/03/08(水) 14:44:06
>>300
ああ、ごめん1レスに収めるための圧縮でミスがあったわw
#include<stdio.h>
int main(int c,char**v){
    FILE*fin=fopen(v[1],"r"),*fout=fopen(v[2],"w");
    int m=0;
    for(;(c=getc(fin))!=EOF;m^=c=='\n')(m&&c-'\n')||putc(c,fout);
    fclose(fout);fclose(fin);
    return 0;
}


303 :デフォルトの名無しさん:2006/03/08(水) 14:46:25
>>留年勘弁
#include <stdio.h>

int main(void)
{
  int n;

  scanf("%d", &n);
  printf("%d\n",n);
  return 0;
}

304 :デフォルトの名無しさん:2006/03/08(水) 14:46:27
うちの学科では学部を卒業するまでに、20%以上の学生が留年を少なくとも1回経験します

305 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 14:48:56
本当に感謝です。
ヒキオタデブが留年ヒキオタデブor無職ヒキオタデブに
なってしまうところでした


306 :デフォルトの名無しさん:2006/03/08(水) 14:50:15
こっちでも1,2年→3年だけで10%が留年か降年。

307 :デフォルトの名無しさん:2006/03/08(水) 14:54:58
>>302
出来ました。ありがとうございました。

308 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:01:53
問題1がならないんですが
#include <stdio.h>

int main(void)
{
int n;

scanf("%d", &n);
printf("%d\n",n);
return 0;
}

abcと入れると150と出ます
例では10なのですが・・・。

309 :デフォルトの名無しさん:2006/03/08(水) 15:02:55
>>308 問2だよ。それ。

310 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:04:27
できました。合計をするにはどうすればいいですか?
aaa
307

これを10と表示しないといけないみたいです

311 :デフォルトの名無しさん:2006/03/08(水) 15:07:04
ちょっと、ガンバってみるので、最終期限書いといて。



312 :デフォルトの名無しさん:2006/03/08(水) 15:07:58
そもそも30分延長から30分経過してるから終わりじゃね?

313 :デフォルトの名無しさん:2006/03/08(水) 15:09:47
みんなすごいからさ、俺もやってみたくなったんだよ

314 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:27:37
いろいろありがとうございました。助かりました
追試は不合格でしたが、追認が受けられるので・・・。

315 :名無しさん@お腹いっぱい。:2006/03/08(水) 15:31:36
>>275
遅くなった。申し訳ない
#include <stdio.h>
int pp(unsigned x){x=x-((x>>1)&0x55555555);x=(x&0x33333333)+((x>>2)&0x33333333);x=(x+(x>>4))&0x0f0f0f0f;x=x+(x>>8);x=x+(x>>16);return x&0x0000003f;}
int main(){char a[64];int k=0,i;printf("文字列->");scanf("%s",a);for(i=0;a[i]!='\0';i++){k+=pp((unsigned)a[i]);}printf("ビット->%d",k);}

316 :デフォルトの名無しさん:2006/03/08(水) 15:31:39
>>勘弁
もう、提出した?
ネタ回答なんで、提出すんなよ。

317 :留年勘弁 ◆4hcHBs40RQ :2006/03/08(水) 15:39:21
超提出した

318 :デフォルトの名無しさん:2006/03/08(水) 15:44:22
再試験受けても留年するだろ、あんなの出しちゃ。
追試代がもったいないので、受験しないことを提案する。

319 : ◆OubtqkQenY :2006/03/08(水) 16:19:05
>>12と似た問題で、言語C++など環境は一緒なんですけど
「16×16のマス目において、*(点がある)+(点がない、空白)と解釈し、
*で囲まれた領域とその数を求めなさい。
なおデータは配列の初期値としてユーザーが与えることとする。」
って問題誰か配列とvoidの関数しか使わないっていう
超単純なプログラム面倒だとは思いますが今日中に作ってくれませんか?
俺も留年にリーチがかかりそうなんです…

320 :リーチキタ━━━(゚∀゚)━━━!!:2006/03/08(水) 16:21:39
留年リーチ多いな・・・

321 :デフォルトの名無しさん:2006/03/08(水) 16:30:49
>>319 何時まで? 今から出掛けるんで、帰ったらやってみる。

322 : ◆aJd5joYi6U :2006/03/08(水) 16:34:26
今日の夜中まで大丈夫です、お願いします。

323 :デフォルトの名無しさん:2006/03/08(水) 16:35:19
>>284 後でなら私に出来ることなんでもしますんでお願いします

こういうのは、どう反応すればいいのですか?

324 :デフォルトの名無しさん:2006/03/08(水) 16:37:58
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    報酬は?
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

325 :デフォルトの名無しさん:2006/03/08(水) 16:42:44
神龍は何でも願いが叶えられるんだから報酬報酬言う必要ないような希ガス

326 :デフォルトの名無しさん:2006/03/08(水) 16:45:13
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

327 :デフォルトの名無しさん:2006/03/08(水) 16:46:21
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    報酬はイランガナ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

328 :デフォルトの名無しさん:2006/03/08(水) 16:47:35
#define X(a, b) Z(a, b)
#define Y(a, b) Z(b, a)
#define Z(a, b) a##b
使用法。int -> X(i, Y(t, n))

#define OOO0OOO a
とか組みあわせる

329 :デフォルトの名無しさん:2006/03/08(水) 16:58:29
基本
#define BEGIN {
#define END ;}
#define IF if
#define THEN BEGIN
#define ELSE END else BEGIN
#define ENDIF END


IF ( a == b )
THEN
 puts("a == b")
ELSE
 puts("a != b")
ENDIF

330 :デフォルトの名無しさん:2006/03/08(水) 19:17:27
>>319

端16x16のフィールドを作って
端の+をマインスイーパー感覚で再帰関数を使ってオープンしていき
全ての端を調べ終わったときに残ってる空白が*に囲まれている領域
書くのめんどくさいので誰かやれ

331 :デフォルトの名無しさん:2006/03/08(水) 19:28:33
voidの関数ってなんのことを言ってると思う?

332 :デフォルトの名無しさん:2006/03/08(水) 19:33:10
(1)戻り値がvoid
(2)引数がvoid
(3)双方ともvoid
(4)実はmain関数のこと

333 :デフォルトの名無しさん:2006/03/08(水) 19:36:40
>>331
日下部の関数とか。

void func(void);かなぁ。

334 :デフォルトの名無しさん:2006/03/08(水) 19:39:17
operator<<もprintfも使えないのかぁ

335 :デフォルトの名無しさん:2006/03/08(水) 19:40:33
標準関数を使っちゃいけない、っていう意味だったのか

336 :デフォルトの名無しさん:2006/03/08(水) 19:44:26
>>319をよくみろ
printfもscanfも使う必要はない

337 :デフォルトの名無しさん:2006/03/08(水) 19:47:02
求めた数を表示できないっすよ?

338 :デフォルトの名無しさん:2006/03/08(水) 19:50:26
アセンブラでOSコールだ

339 : :2006/03/08(水) 20:12:46
スーパーバイザコールするんですね?

340 :デフォルトの名無しさん:2006/03/08(水) 20:17:11
>>329
それに近いのがどっかで晒されてたような気がする。
確かどこかの大学の教科書だったような。

341 :デフォルトの名無しさん:2006/03/08(水) 20:38:30
IOCCC Japan の会場はここですか?
>>340
オリジナルの Borne Shell がそんなの使ってるという話を見た事がある。

342 :デフォルトの名無しさん:2006/03/08(水) 20:39:01
たしかにIOCCCチックな流れだな

343 :デフォルトの名無しさん:2006/03/08(水) 20:40:02
>>341
そんなのがエキスパートCプログラミングに載ってたな

344 :デフォルトの名無しさん:2006/03/08(水) 20:40:50
休み明けまではIOCCC Japanでいいんじゃね?
どうせこの時期に宿題持ち込む奴なんて追試食らうようなヤバイ奴だけだろ

345 :デフォルトの名無しさん:2006/03/08(水) 20:50:22
IOCCC Japanが開催されているきいて飛んできました

346 :デフォルトの名無しさん:2006/03/08(水) 21:00:13
>俺も留年にリーチがかかりそうなんです
換言するとまだ余裕があるってことだよナッ

347 :デフォルトの名無しさん:2006/03/08(水) 21:04:04
留年したほうが本人のためだろ

348 :デフォルトの名無しさん:2006/03/08(水) 21:17:00
>>306
降年って東大以外でやってるとこあんの?

349 :デフォルトの名無しさん:2006/03/08(水) 21:38:10
>>319
printfは許せ。
#include <stdio.h>
void main(void){char f[16*16+1] = {
"*+**************" "****************" "****************" "****+***********"
"****************" "****************" "*****+++++******" "****************"
"****************" "**************++" "**************++" "****************"
"******+++**+****" "*******+++******" "*********++*****" "****************"};
int c = 0;for(;;){bool b;for(;;){b=true;for(int i=0; i<16*16+1; ++i){
if(f[i]=='+'){if(!(i/16)||!(i/16-15)||!(i%16)||!(i%16-15)){f[i]='\0';b=false;
}else if(!f[i-1]||!f[i+1]||!f[i-16]||!f[i+16]){f[i]='\0';b=false;}}}if(b) break;}
for(int i=0; i<16*16+1&&b; ++i){if(f[i]=='+'){f[i]='\0';b = false;++c;}}if(b) break;}
printf("%d", c);}

350 : ◆OubtqkQenY :2006/03/08(水) 21:55:58
ありがとうございます、しかし起動しても何にも変化がないんですが…
あと面接があるんで中身何やってるか詳しく教えていただけますか?
いろいろ注文つけてごめんなさい…

351 :デフォルトの名無しさん:2006/03/08(水) 21:57:34
>>350
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。

352 :デフォルトの名無しさん:2006/03/08(水) 21:58:22
(゚Д゚)ハァ?

353 :デフォルトの名無しさん:2006/03/08(水) 21:59:21
スルー

354 : ◆OubtqkQenY :2006/03/08(水) 22:01:16
>>351
すいません、自分で理解しようと思ってたんですが実力がないので無理でした…

355 :デフォルトの名無しさん:2006/03/08(水) 22:37:01
いよいよIOCCC Japan開催だな

356 :デフォルトの名無しさん:2006/03/08(水) 22:37:45
わからないので聞く⇒スルーされる⇒
                ↑
               今ここ
⇒仕方ないので自分でやる⇒見やすいようにソースを分解⇒眺めてみる⇒理解する⇒糸冬

357 : ◆OubtqkQenY :2006/03/08(水) 23:29:47
>>356
申し訳ないです、がんばります!
でもコンパイルできるのに何にも表示しないんですが…

358 :デフォルトの名無しさん:2006/03/08(水) 23:32:38
4って出ない? VCとbccではちゃんと動くけど、gccだと違うのかな。

359 :デフォルトの名無しさん:2006/03/08(水) 23:33:13
>>357
ちゃんとコピペしたか?
実行すると数字が表示されるぞ

360 :デフォルトの名無しさん:2006/03/08(水) 23:38:31
>>349
うほっ!
エラーでまくるww

361 :デフォルトの名無しさん:2006/03/08(水) 23:39:28
>>360
Cでやってるでしょ?

362 : ◆OubtqkQenY :2006/03/08(水) 23:40:08
あ、出てました!すいません、見落としてました。
もし分からないとこあったらまた質問させていただきます。
よろしくお願いします。

363 :デフォルトの名無しさん:2006/03/08(水) 23:42:28
>>361
Cだった・・・

364 :デフォルトの名無しさん:2006/03/08(水) 23:54:17
お願いだから馬鹿を進級させないで・・・

365 :デフォルトの名無しさん:2006/03/09(木) 00:09:00
>>350 >>362
・・・すげえw

そういや、「宿題解いてくれたら、後でなんでもします」的な書き込みで、
その後なにかしているのを見たことがないなw

366 :デフォルトの名無しさん:2006/03/09(木) 00:10:22
追試受けたり、課題できないようないい加減な連中だしな

367 :デフォルトの名無しさん:2006/03/09(木) 00:16:08
IOCCC Japan開催中

368 :sage:2006/03/09(木) 12:42:04
[1] 授業単元: CPTS121
[2] 問題文(含コード&リンク): http://www.eecs.wsu.edu/~hundhaus/teaching/cpts121/progassignments/cpts121-Fa2005-pa2.html
[3] 環境
 [3.1] OS: Windows
 [3.2] Visual studio .net
 [3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 問題に挑戦してるのですが doubleからintへの変換で止まってます。
どなたかわかる人が居たらお願いします。

369 : :2006/03/09(木) 13:01:40
>>368
読めないから翻訳して提出して。

370 :デフォルトの名無しさん :2006/03/09(木) 14:37:20
>>319
手遅れか
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void get_randam(int block[16][16]);

int main(void)
{
int block[16][16];/*ブロック数*/
int i,j;/*for用*/
int k = 0;/*囲まれてる数*/
time_t t;
t =time(&t);
srand(t);

get_randam(block);
for(i = 0; i < 16; i++){
for(j = 0; j < 16; j++){
block[i][j] ;
if(block[i][j] == 1) printf("%2c",'*');
else if (block[i][j] == 0) printf("%2c",'+');
if(j == 15) putchar('\n');


371 :デフォルトの名無しさん :2006/03/09(木) 14:37:51
}
}
/*上下左右だけ(壁、四隅を除く)*/
for(i = 1; i < 15; i++){
for(j = 1; j < 15; j++){
block[i][j] ;
if(block[i][j] == 0){
if(block[i - 1][j] & block[i][j - 1] & block[i][j + 1] & block[i + 1][j + 1] )
k++;
}
}
}
printf("%d",k);

return 0;
}
void get_randam(int block[16][16])
{
int i = 0, j = 0;/*for用*/
int x = 0;/*ランダム数用*/
for(i = 0; i < 16; i++){
for(j = 0; j < 16; j++){
x = rand() % 2;
if(x == 0)
block[i][j] = 0;
else if (x == 1)
block[i][j] = 1;
}
}
}

372 :デフォルトの名無しさん:2006/03/09(木) 15:39:19
訳を書こうとおもったけど面倒くさすぎなのでコード
#include <stdio.h>
#include<math.h>
#define PI 3.1415926535
#define L(X,Y) for(i=X;i<Y;i++)
#define ODD 0
#define EVEN 1
double read_double(FILE *infile){double d;fscanf(infile, "%lf", &d);return d;}
int round_double_to_int(double number){return (int)(number+.5);}
int mod_integers(int number1, int number2){return number1%number2;}
int is_even(int number){return(number&1)?ODD:EVEN;}
double multiply_double(double number1, double number2){return number1*number2;}
double divide_double(double number1, double number2){return(number2==0.0)?0.0:(number1/number2);}
double compulte_sqrt(double number){return sqrt(number);}
int translate_random(double number){double n=number; return round_double_to_int((n<0.0)?(-PI*n):(n<11.0)?(2.0*n):(n<21.0)?(n+1.0):(n<31.0)?(n+PI):(n<41)?(n/4.0):(n<=50.0)?(n-1.0):(n+n-1.0));}
void print_int(FILE *outfile, int number){fprintf(outfile, "%d",number);}
void print_double(FILE *outfile, double number){fprintf(outfile,"%1000f",number);} //()の意味がよく分からん
int main(void){FILE*ifp=fopen("input.dat","r"),*ofp=fopen("output.dat","w");double d[10]; int i;
L(0,5)d[i]=read_double(ifp);
L(0,5)print_double(ofp,divide_double(d[i],PI));
L(0,5)print_double(ofp,divide_double(d[i],0.0));
L(5,10)d[i]=read_double(ifp);
L(0,10)print_double(ofp,multiply_double(d[i],PI));
L(0,5)print_int(ofp,round_double_to_int(d[i]));
L(0,5)print_int(ofp,is_even(round_double_to_int(d[i])));
L(5,10)print_int(ofp,mod_integers(round_double_to_int(d[i]),5));
L(0,5)print_double(ofp,compulte_sqrt(d[i]));
L(0,5)print_int(ofp,translate_random(d[i]));
fclose(ifp);fclose(ofp);return 0;
}
ギリギリ?意味が分からんところは自分で修正ヨロ。こんなコード自分でも書きたくない。

373 :372:2006/03/09(木) 16:07:49
>>368 投げっぱはよくないから出力の確認までした。
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define ODD 0
#define EVEN 1
#define L for(i=0;i<5;i++)
double read_double(FILE *infile){double d;fscanf(infile, "%lf", &d);return d;}
int round_double_to_int(double number){return (int)(number+.5);}
int mod_integers(int number1,int number2){return number1%number2;}
int is_even(int number){return(number&1)?ODD:EVEN;}
double multiply_double(double number1, double number2){return number1*number2;}
double divide_double(double number1, double number2){return(number2==0.0)?0.0:(number1/number2);}
double compulte_sqrt(double number){return sqrt(number);}
int translate_random(double number){double n=number;return round_double_to_int((n<0.0)?(-PI*n):(n<11.0)?(2.0*n):(n<21.0)?(n+1.0):(n<31.0)?(n+PI):(n<41)?(n/4.0):(n<=50.0)?(n-1.0):(n+n-1.0));}
void print_int(FILE *outfile,int number){fprintf(outfile, "%d\n",number);}
void print_double(FILE *outfile, double number){fprintf(outfile,"%.3f\n",number);}
int main(void){FILE*ifp=fopen("input.dat","r"),*ofp=fopen("output.dat","w");double d[5];int i;
L d[i]=read_double(ifp);
L print_double(ofp,divide_double(d[i],PI));
L print_double(ofp,divide_double(d[i],0.0));
L d[i]=read_double(ifp);
L print_double(ofp,multiply_double(d[i],PI));
L print_int(ofp,round_double_to_int(d[i]));
L print_int(ofp,is_even(round_double_to_int(d[i])));
L print_int(ofp,mod_integers(round_double_to_int(d[i]),5));
L print_double(ofp,compulte_sqrt(d[i]));
L print_int(ofp,translate_random(d[i]));
fclose(ifp);fclose(ofp);return 0;}

374 :デフォルトの名無しさん:2006/03/09(木) 16:47:28
>>372
凄いよ先生!!惚れました僕と寝て下さい。

375 :sage:2006/03/09(木) 16:50:24
>>372
大変お手数掛けました。滅茶苦茶助かりました!!ありがとうございます。
今度誰か助けれるようにがんばりたいと思います


376 :デフォルトの名無しさん :2006/03/09(木) 17:29:38
370だけど
俺でも頭ひねれば出来そうな問題プリーズ

377 :デフォルトの名無しさん:2006/03/09(木) 17:35:26
>>376
俺に彼女が出来るPGを考え作成せよ。
尚、提出期限は3/12(日)までとする。

378 :デフォルトの名無しさん:2006/03/09(木) 17:36:58
彼女が出来るPG・・・
いくらで売れるかな

379 :デフォルトの名無しさん:2006/03/09(木) 17:48:59
出会い系サイト作ればいいんじゃね?

380 :デフォルトの名無しさん:2006/03/09(木) 17:51:32
そんなもん作ったら管理が難しいだろ
PGなら作った後放置プレイ
待ってるだけで金が舞い込んでくる

381 :デフォルトの名無しさん:2006/03/09(木) 17:59:59
>>377
1〜4次元のどれをお望みですか?

382 :デフォルトの名無しさん:2006/03/09(木) 18:38:20
>>381
1次元で^^

383 :デフォルトの名無しさん:2006/03/09(木) 19:09:28
CUIベースのPGとか

384 :デフォルトの名無しさん:2006/03/09(木) 19:24:27
一次元・31ビットの彼女

#include <stdio.h>
#include <stdbool.h>

unsigned char hash(const char *s)
{
  unsigned char ret = 0;
  while(*s)
  {
    ret ^= *s;
    ret = ret << 1 | ret >> 7;
    s++;
  }
  return ret;
}

int main(void)
{
  char cmd[1000];
  unsigned kanojo = 0;
  while(true)
  {
    for(int i = 1; i < 32; i++)
      putchar(kanojo & (1 << i) ? '*' : '-');
    printf("\n> ");
    fgets(cmd, 1000, stdin);
    kanojo ^= hash(cmd);
    if(kanojo & 1) kanojo <<= 1;
  }
}

385 :デフォルトの名無しさん:2006/03/09(木) 19:40:10
よろしくお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):A−C連続問題
A. 0〜99までの整数をランダムに100個発生させ、配列TBL(0)から(99)に格納。
  データを配列順に出力。

B. Aのデータを昇順に整列、結果を出力。整列アルゴリズムは基本交換法を使用する。

C. 0〜99までの整数を1つ発生させ、Bのデータから二文探索法により検索。
  見つかった場合「**は、TBL(**)にあります」とする。
  データが見つからなかった場合は「**はTBL()に存在しません。」と出力した上で
  見つかるまでCを繰り返す。

[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: (10日まで)
[5] その他の制限: (1年生の授業なので出来るだけ簡単に)

386 :デフォルトの名無しさん:2006/03/09(木) 19:41:38
小学生?中学生?

387 :デフォルトの名無しさん:2006/03/09(木) 20:06:08
おそらく消防だろ

388 :デフォルトの名無しさん :2006/03/09(木) 20:08:42
>>385
A)

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

#define MAX 100

void ran_d(int array[MAX]);

int main(void)
{
int array[MAX];
int i;
time_t t;
t = time(&t);
srand(t);
ran_d(array);
for(i = 0; i < MAX ; i++){
printf("%d\n",array[i]);
}
return 0;
}
void ran_d(int array[MAX])
{
int i;
for(i = 0; i < MAX; i++){array[i] = (rand() % 100);}
}

389 :デフォルトの名無しさん:2006/03/09(木) 20:12:15
>>385
for(int i=0;i<100;i++){ tbl[i]=rand()%100; printf("%d\n",tbi[i]); }
俺ここまでしか和姦ねー
基本交換法って何?バブルソートのこと?

390 :デフォルトの名無しさん:2006/03/09(木) 20:13:39
>>389
バブルソートのことです。

391 :デフォルトの名無しさん:2006/03/09(木) 20:21:50
さっさとBとCとけよボケ。
こんなもんすら解けないのか

392 :デフォルトの名無しさん :2006/03/09(木) 20:25:24
挿入ソート
for(i = 1; i < MAX ; i++){
for(j = i; j >= 1; j--){
if(array[j] < array[j-1]){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}

393 :デフォルトの名無しさん:2006/03/09(木) 20:25:48
荒らさないで下さい。。

394 :385:2006/03/09(木) 20:27:14
>>392
あの、挿入ソートじゃなくて隣接交換法でおねがいできませんか?^^;;;;;;;;;

395 :デフォルトの名無しさん:2006/03/09(木) 20:29:21
偽者はやめてください。

396 : ◆g/ZMVdytmo :2006/03/09(木) 20:30:26
>>395が偽者です。

397 :デフォルトの名無しさん :2006/03/09(木) 20:31:03
シェルソート
for(h=1; h<MAX; h=h*3+1)
;

for( ;h>0; h/=3)
{

for(i=h; i<MAX; ++i)
{
j = i;
while(j >= h && array[j-h] > array[j])
{

temp = array[j];
array[j] = array[j-h];
array[j-h] = temp;

j -= h;
}
}
}

398 :デフォルトの名無しさん :2006/03/09(木) 20:35:22
バブルガムブラザーズ

for(i = 0; i < MAX; i++){
for(j = 0; j < MAX; j++){
if(array[i] > array[j]){
temp = array[j];
array[j] = array[i];
array[i] = temp;
}}}

399 :デフォルトの名無しさん:2006/03/09(木) 20:38:04
隣接交換法あってるかな?

for(i=0;i<MAX-1;i++){
  for(j=0;j<4-i;j++){
    if(array[j] > array[j+1]){
int tmep = array[j];
array[j] = array[j+1];
array[j+1] = tmep;
}
}
}


400 :デフォルトの名無しさん:2006/03/09(木) 20:40:17
A,B,Cまとめて
1レスに収めるために
改行消したりしてるから適当にコードは解凍しといてください。
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(){
    int TBL[100],i,j,k,l,m;
    srand(time(NULL));
    for(i=0;i<100;++i)printf("%d ",TBL[i] = rand()%100);
    printf("\n\n");
    for(i=0;i<100;++i)for(j=100;--j>i;) if(TBL[j] < TBL[i])k = TBL[i],TBL[i] = TBL[j],TBL[j] = k;
    for(i=0;i<100;++i)printf("%d ",TBL[i]);
    printf("\n\n");
    for(;;printf("%dはTBL()に存在しません。\n",j))
        for(l=0,m=100,j = rand()%100;l < m;)
            if(TBL[k = (l+m)/2] == j)return printf("%dはTBL(%d)にあります。\n",j,k),0;
            else if(TBL[k] < j) l = k + 1; else m = k;
}

401 :デフォルトの名無しさん:2006/03/09(木) 20:45:07
>>370>>371
これを>>12みたいに
表の領域のところに12345…って数字を埋めて出力するって
できますか?

402 :400:2006/03/09(木) 20:50:27
あ、しまったw
k = TBL[i] ... TBL[j] = k;
の部分の i は j-1 に置き換えといて。
そのままでもソートはされるけど別のソート方法になってしまう。

403 :デフォルトの名無しさん:2006/03/09(木) 22:00:27
>>400
すいません。馬鹿なので分割できません。。
お手数かけますがよろしくお願いします。

404 :デフォルトの名無しさん:2006/03/09(木) 22:01:50
そのまま提出すればいい

405 :デフォルトの名無しさん:2006/03/09(木) 22:10:23
戻す作業が激しく大変

406 :デフォルトの名無しさん:2006/03/09(木) 22:36:31
Bだけ出来ません。どうかよろしくお願いします。

407 :デフォルトの名無しさん:2006/03/09(木) 22:49:01
ググれば?

408 :デフォルトの名無しさん:2006/03/09(木) 23:29:26
#include <stdio.h>

#define MAX 10

int main(void)
{
  int data[MAX]={12,50,1,45,32,11,75,26,94,10},i,j,l,temp;
  printf("ソートをしようと思います\n");
  for (i=0;i<MAX-1;i++){
    for (j=MAX-1;j>i;j--){
      if (data[j-1]>data[j]){
        temp=data[j];
        data[j]=data[j-1];
        data[j-1]=temp;
      }
    }
  }
  for (l=0;l<MAX;l++){
    printf("%d\n",data[l]);
  }
  printf("ソートが完了したと思います\n");
  return 0;
}
バブルソート

409 :385:2006/03/09(木) 23:35:10
ググればバブルソートのプログラムはでるんですが
BはA、CはBのプログラムを元にしなきゃ駄目なので無理です。。

>>388 さんできれば続きを。。

410 :デフォルトの名無しさん:2006/03/09(木) 23:41:45
ttp://www.iba.k.u-tokyo.ac.jp/~iba/C/report3/report3.htm
Lv1の時点でさっぱりわかりません。Lv1だけでいいので教えていただけないでしょうか。
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C
[4] 期限: 明日まで

よろしくお願いします。


411 :デフォルトの名無しさん:2006/03/09(木) 23:45:31
東大生か

412 :デフォルトの名無しさん:2006/03/09(木) 23:49:11
だね。>>410のこと先生にちくっていいですかね?

413 :デフォルトの名無しさん:2006/03/09(木) 23:54:23
>>409
Bできたぞ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1680.txt

414 :デフォルトの名無しさん:2006/03/09(木) 23:59:19
伊庭タンキタ━━━━(゚∀゚)━━━━ッ!! 今年度3回目か?3回とも2chで聞くとはツワモノだな。

415 :385:2006/03/10(金) 00:00:39
>>413
ありがとうございます。

416 :385:2006/03/10(金) 00:05:34
残りC、お願いします<__>

417 :デフォルトの名無しさん:2006/03/10(金) 00:06:19
自動的に解答するPGを作れ?
意味わからん

418 :デフォルトの名無しさん:2006/03/10(金) 00:07:12
再帰じゃないのか?

419 :デフォルトの名無しさん:2006/03/10(金) 00:09:32
ファイル読み込んでパズルを解くプログラム作れ、ってだけだろ

それより、「不明な箇所は0とする」っていう説明がないのは不親切だよ伊庭先生

420 :デフォルトの名無しさん:2006/03/10(金) 00:39:58
>>410
一応Lv1を再帰でゴリゴリやった。
1レスに収めるためにコードを圧縮したので適当に解凍よろしく。

#include<stdio.h>
typedef struct T{int map[9*9],x[9],y[9],xy[9];}T[1];
int push(T t,int yx,int n){
    int y = yx/9,x=yx%9;
    if( t->map[yx] || ((t->y[y]|t->x[x]|t->xy[x/3+y/3*3]) & 1<<n) )return 0;
    t->y[y]|=1<<n;t->x[x]|=1<<n;t->xy[x/3+y/3*3]|=1<<n;t->map[yx]=n;
    return 1;
}
void pop(T t,int yx){
    int y = yx/9,x=yx%9,n=t->map[yx];t->y[y]&=~(1<<n);t->x[x]&=~(1<<n);t->xy[x/3+y/3*3]&=~(1<<n);t->map[yx] = 0;
}
int calc(T t,int yx){
    int i;if(yx==9*9)return 1;else if(t->map[yx])return calc(t,yx+1);
    for(i=1;i<=9;++i)if(push(t,yx,i)){if(calc(t,yx+1))return 1;else pop(t,yx);}return 0;
}
int main(){
    T x={{{0}}};int i,j,d;for(i=0;i<9*9;++i)scanf("%1d",&d),push(x,i,d);
    if(calc(x,0))for(i=0;i<9;++i,printf("\n"))for(j=0;j<9;++j)printf("%d",x->map[i*9+j]);
    else printf("解がない\n");return 0;
}


421 :420:2006/03/10(金) 00:53:47
ちなみにLv1というよりかはLv2の解き方に近いので簡単にLv2のほうも書ける。
その場合はcalc関数より上はさっきまでのコードと同じでその下を変更する。

int calc(T t,int yx){
    int i,j=0;
    if(yx==9*9){
        for(i=0;i<9;++i,printf("\n"))
        for(j=0;j<9;++j)printf("%d",t->map[i*9+j]);
        printf("\n");
        return 1;
    }else if(t->map[yx])return calc(t,yx+1);
    for(i=1;i<=9;++i)if(push(t,yx,i)){j+=calc(t,yx+1);pop(t,yx);}
    return j;
}
int main(){
    T x={{{0}}};int i,j,d;for(i=0;i<9*9;++i)scanf("%1d",&d),push(x,i,d);
    if(!calc(x,0))printf("解がない\n");
    return 0;
}

422 :デフォルトの名無しさん:2006/03/10(金) 00:55:53
>>416
できた
ただし二分探索は初めてなので自身ない
一応解説サイトを見ながら作ったけど;
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1681.txt

423 :422:2006/03/10(金) 01:29:17
二分探索の検索する奴が複数あると見つからないから

424 :385:2006/03/10(金) 07:05:44
>>423
ありがとうございます。助かりました!

425 :デフォルトの名無しさん :2006/03/10(金) 12:14:47
>>420
そういうソースってすぐ思いつくものなの?
見たけど何を何してるのかも俺わかんないよ。
経験の裏打ちは元より、それ以上に才能やセンスからくるの?
仕事でプログラムやってる人って、みんなこんなソース
すぐに設計して構築して打ち込めるの?
なんか不思議でしかたがない。

426 :420:2006/03/10(金) 12:41:46
才能やセンスはこれ位なら関係ないと思う。
経験もたいして重要じゃない。自分は大学1年でプログラミング暦はたったの4年しかないしな。
重要なのはパズルの解き方の定石を知っているか知らないかだけ。

問題を再帰的に考えるのがパズルの解き方の定石。
この問題の場合は一個数字を埋めて、
自分を呼び出す(この後自分の埋めた値を元に戻して)の繰り返しで成り立っている。

一個ずつ、埋めていって最後まで矛盾なく埋めれれば成功、そうでなければ失敗。
パズルは枝狩りとかを無視すれば基本的には殆どすべての問題はこのやり方で出来る

427 :デフォルトの名無しさん:2006/03/10(金) 12:45:40
まぁ、こんなスレに依頼しに来てる様な奴には一生できない。

428 : :2006/03/10(金) 12:52:11
>>420の問題の解答で質問したいので、夕方頃C言語なら俺に聞けスレに誰か来て下さいね。

429 :420:2006/03/10(金) 12:54:41
あー効率を無視して考えれば再帰も不要だな、まず0だけ抜き出す
まぁ0の数は不明だがこの場合4としよう

0000
これを1111から9999まで全部試す。
以上

自分のも基本的にはこのやりかた、
ただ、これだと効率が最悪なので23??とかのときに23が絶対にありえない組み合わせならすっ飛ばして24??に行ってるだけ

430 :デフォルトの名無しさん:2006/03/10(金) 12:58:39
嘘です。ごめんなさい。死にます。もう吊りっティングします。

431 :デフォルトの名無しさん:2006/03/10(金) 17:05:50
>>450
漏れが引き受けた、と言ってみるテスト

432 :デフォルトの名無しさん:2006/03/10(金) 17:45:03
 

433 :デフォルトの名無しさん:2006/03/10(金) 19:36:33
再帰なら局面退避スタックいらんやろうとか
その関数でpushやpopはないやろうとか
っていうかpushやpopって名前でその引数はないやろうとか
ツッコミどころは色いろあるわけだが
オレが提出するわけではないのでよしとしておこう

434 :デフォルトの名無しさん:2006/03/10(金) 19:46:35
>>433
伊庭さんが push とか pop とか言ってるから,仕方が無く作ったんでせう.

435 :デフォルトの名無しさん:2006/03/10(金) 19:52:18
>>420を提出する猛者はいるのだろうか

436 :デフォルトの名無しさん:2006/03/10(金) 20:44:21
>>410
これって「数独」、「ナンバープレイス」、「SingleNumbers」、その他の名称で知られる有名なパズルだろ。
ぐぐればソースが転がってるぞ。

437 :デフォルトの名無しさん:2006/03/10(金) 20:51:12
ナンプレはイギリスで流行ってるらしい
どの新聞を買っても載ってるんだって

438 :デフォルトの名無しさん:2006/03/11(土) 00:52:12
ディレクトリ内のファイル名をテキストファイルに列挙する
プログラムをお願いします

439 :438:2006/03/11(土) 00:58:24
すいません
テンプレ見てませんでした

440 :デフォルトの名無しさん:2006/03/11(土) 01:15:21
>>438
Windows版
#include <stdlib.h>
int main() {
system("dir /B /A:-D > result.txt");
return 0;
}


441 :デフォルトの名無しさん:2006/03/11(土) 01:22:59
>>438
あるサイトのサンプルをそのまんま載せます
引数にアドレスを
#include    <stdio.h>
#include    <dirent.h>

void main(argc,argv)
int   argc;
char  *argv[];
{
DIR   *dir;
struct dirent  *dp;
char  path[512];

    if(argc<=1){
        strcpy(path,".");
    }
    else{
        strcpy(path,argv[1]);
    }

    if((dir=opendir(path))==NULL){
        perror("opendir");
        exit(-1);
    }

    for(dp=readdir(dir);dp!=NULL;dp=readdir(dir)){
        printf("%s\n",dp->d_name);
    }
    closedir(dir);
}

442 :438:2006/03/11(土) 02:21:40
>>441
dirent.hが無いと言われるのですが・・

>>440
DOSコマンドですか・・
うう・・

443 :デフォルトの名無しさん:2006/03/11(土) 02:35:58
環境くらい示せ
っていうか、テンプレがあるの分かってるなら質問し直せ

444 :デフォルトの名無しさん:2006/03/11(土) 03:08:16
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv)
{
  if (argc == 1) {
    char buf[256];
    sprintf(buf, "%s *", argv[0]);
    system(buf);
  } else {
    int i = 1;
    for (; i < argc; i++) {
      printf("%s\n", argv[i]);
    }
  }
  return 0;
}

445 :444:2006/03/11(土) 03:12:56
すいません、問題ちゃんと読んでませんでした。
どこかを↓に差し替え
    sprintf(buf, "%s * > result.txt", argv[0]);

446 :デフォルトの名無しさん:2006/03/11(土) 06:53:34
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
2問お願いします・・。

//問題1//
//要素数10000の配列に乱数で値(0から9)が設定してある。配列の0から9までの個数を別々に求める。

//問題2//
//int型の数値(プラスのみ)を2進数に変換しint型の1次元配列(要素数32)に格納する関数を作成する。


[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C言語)
[4] 期限: できれば今日中・・
[5] その他の制限:
現追試中です、止まって進みません
知識は薄いです・・。 よろしくお願いします。



447 :デフォルトの名無しさん:2006/03/11(土) 07:01:58
よくばりさん






















  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

448 :446:2006/03/11(土) 07:21:45
> [3.2] コンパイラ名とバージョン: (gcc 3.4)
ココ消し間違いました。VCです(;´Д`)



449 :デフォルトの名無しさん:2006/03/11(土) 08:15:15
>>446 問題1
#include <stdio.h>
#define x *
#define xx /x
#define xxx ){
#define xxxx printf
#define xxxxx(xxx_xxxx) ("%d\n",xxx_xxxx);}
#define xxxxxx int
#define xxxxxxxx 10
#define xxxxxxx(xxx_xx) xxxxxx xxxxxxxxxxxxx[xxx_xx]
#define xxxxxxxxxx ={1,5,1,2,3,4,3,2,1,4,5,8};
#define xxxxxxxxxxxx xxxxxxxx x xxxxxxxx x xxxxxxxx x xxxxxxxx
xxxxxx main(xx, class **std::string flunk){
NUMBER_COUNTER } [ 0 - 9 ];
register start_label:(*/xxx
xxxxxxx(xxxxxxxxxxxx) xxxxxxxxxx
xxxxxx xxxxxxxxxxx,xxxxxxxxxxxxxx[xxxxxxxx]={xxxxxxxx-xxxxxxxx};
for(xxxxxxxxxxx=xxxxxxxx-xxxxxxxx;xxxxxxxxxxx!=xxxxxxxxxxxx;)
++xxxxxxxxxxxxxx[xxxxxxxxxxxxx[xxxxxxxxxxx++]];
for(xxxxxxxxxxx=xxxxxxxx-xxxxxxxx;xxxxxxxxxxx!=xxxxxxxx;){
xxxx xxxxx(xxxxxxxxxxxxxx[xxxxxxxxxxx++])return 0;}

450 :446:2006/03/11(土) 08:49:02
>>449
形だけでも教えてくれてありがとうございます。

すみません、午前に補講があるんで行ってきます。
今日中に間に合うように問2と共に試行錯誤してみます;

451 :デフォルトの名無しさん:2006/03/11(土) 09:02:04
錯誤もなにもこれそのままでいいような

452 :デフォルトの名無しさん:2006/03/11(土) 09:05:31
とおもったらなんかへんだなw

453 :デフォルトの名無しさん:2006/03/11(土) 09:34:40
#include <stdio.h>

int main(){
int array[10000] ={1,5,1,2,3,4,3,2,1,4,5,8};
int MAMUKO, TIMUKO[10]={0};
for(MAMUKO=0; MAMUKO!=10000; )
++TIMUKO[array[MAMUKO++]];
for(MAMUKO=0; MAMUKO!=10; ){
printf ("%d\n",TIMUKO[MAMUKO++]);
}
return 0;
}

とりあえず翻訳文

454 :デフォルトの名無しさん:2006/03/11(土) 10:03:12
>>446
問題1

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

#define N 10000

int main(){

int array[N];
int i, j;
int count[10]={0};

srand(time(NULL));
for(i=0; i<N; i++)
array[i]=rand()%10;

for(i=0; i<N; i++)
for(j=0; j<10; j++)
if(array[i]==j) count[j]++;

for(i=0; i<10; i++)
printf("'%d' = %d\n", i, count[i]);

return 0;
}


455 :問題2:2006/03/11(土) 11:24:54
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
struct str{
unsigned a: 1;unsigned b: 1;unsigned c: 1;unsigned d: 1;unsigned e: 1;unsigned f: 1;unsigned g: 1;unsigned h: 1;unsigned i: 1;unsigned j: 1;unsigned k: 1;unsigned l: 1;unsigned m: 1;unsigned n: 1;
unsigned o: 1;unsigned p: 1;unsigned q: 1;unsigned r: 1;unsigned s: 1;unsigned t: 1;unsigned u: 1;unsigned v: 1;unsigned w: 1;unsigned x: 1;unsigned y: 1;unsigned z: 1;unsigned A: 1;unsigned B: 1;
unsigned C: 1;unsigned D: 1;unsigned E: 1;unsigned F: 1;
};
union{
int number;
struct str bits;
}homework;
int str[32];
if(!scanf("%d", &homework.number)){
exit(1);
}
str[0] = homework.bits.F ? 1: 0;str[1] = homework.bits.E ? 1: 0;str[2] = homework.bits.D ? 1: 0;str[3] = homework.bits.C ? 1: 0;str[4] = homework.bits.B ? 1: 0;
str[5] = homework.bits.A ? 1: 0;str[6] = homework.bits.z ? 1: 0;str[7] = homework.bits.y ? 1: 0;str[8] = homework.bits.x? 1: 0;str[9] = homework.bits.w? 1: 0;
str[10] = homework.bits.v ? 1: 0;str[11] = homework.bits.u ? 1: 0;str[12] = homework.bits.t ? 1: 0;str[13] = homework.bits.s ? 1: 0;str[14] = homework.bits.r ? 1: 0;
str[15] = homework.bits.q ? 1: 0;str[16] = homework.bits.p ? 1: 0;str[17] = homework.bits.o ? 1: 0;str[18] = homework.bits.n ? 1: 0;str[19] = homework.bits.m ? 1: 0;
str[20] = homework.bits.l ? 1: 0;str[21] = homework.bits.k ? 1: 0;str[22] = homework.bits.j ? 1: 0;str[23] = homework.bits.i ? 1: 0;str[24] = homework.bits.h ? 1: 0;
str[25] = homework.bits.g ? 1: 0;str[26] = homework.bits.f ? 1: 0;str[27] = homework.bits.e ? 1: 0;str[28] = homework.bits.d ? 1: 0;str[29] = homework.bits.c ? 1: 0;
str[30] = homework.bits.b ? 1: 0;str[31] = homework.bits.a ? 1: 0;
for(homework.number=0; homework.number<32; homework.number++){
printf("%d", str[homework.number]);
}
return 0;
}

456 :デフォルトの名無しさん:2006/03/11(土) 11:33:32
>>446
問題2

#include <stdio.h>
#define X(a, b) Z(a, b)
#define Y(a, b) Z(b, a)
#define Z(a, b) a##b
#define x >>=
X(i,Y(t,n)) X(ma,Y(n,i))(){
X(X(X(u,Y(s,n)),X(i,Y(n,g))),ed) X(i,Y(t,n)) b[32], i, k=0;
X(X(X(p,Y(i,r)),Y(t,n)),f)("数字を入力->");
X(X(s,Y(a,c)),Y(f,n))("%d",&k);
X(f,Y(r,o))(X(i,Y(0,=));X(i,Y(=,<))31;X(i,Y(+,+))){b[X(31,Y(i,-))]=X(k,Y(1,&));k x 1;}
X(f,Y(r,o))(X(i,Y(0,=));X(i,Y(=,<))31;X(i,Y(+,+))){X(X(X(p,Y(i,r)),Y(t,n)),f)("%d",b[i]);
}
}

457 :デフォルトの名無しさん:2006/03/11(土) 12:14:30
#include <stdio.h>
void main(){
unsigned int b[32], i, k=0;
printf("数字を入力->");
scanf("%d",&k);
for(i=0;i<=31;i++){b[31-i]=k&1;k >>= 1;}
for(i=0;i<=31;i++){printf("%d",b[i]);
}
}

とりあえず翻訳文

458 :デフォルトの名無しさん:2006/03/11(土) 12:15:26
#include <stdio.h>
int main(){
unsigned int b[32], i, k=0;
printf("数字を入力->");
scanf("%d",&k);
for(i=0;i<=31;i++){b[31-i]=k&1;k >>= 1;}
for(i=0;i<=31;i++){printf("%d",b[i]);
}
}

intだった

459 :デフォルトの名無しさん:2006/03/11(土) 12:43:45
>>446
Q2
#include <stdio.h>
#define I int
#define R ;
#define Q [
#define O ]
#define P *
#define N __asm
#define S static
#define MOD ,
S I A R
S I B Q 32 O R
S I P C = B R
int main(){
AA:printf("NUMBER? ");
BB:scanf("%d" MOD &A);
CC:N MOV EAX MOD A
DD:N SHL EAX MOD 1 N JAE EE N MOV EBX MOD C N MOV Q EBX O MOD 1
EE:N JE GG N PUSH EAX
FF:printf("%d" MOD *C); N POP EAX N ADD C MOD 4 N JMP DD
GG:printf("%d" MOD *C);
}

460 :446:2006/03/11(土) 13:15:20
>>451-459
今帰ってきました。
6名もの方から解答を頂けるとは
感動しちゃいました、すみません;

昨日まで解らずにいて、困っていたので・・・

後数問似たような問題があるので
見合わせて解いて、提出に行きたいと思います。
ありがとうございました。

461 :デフォルトの名無しさん:2006/03/11(土) 15:17:23
みんな凄いな

462 :デフォルトの名無しさん:2006/03/11(土) 15:36:13
IOCCC Japan 大盛況開催中

463 :デフォルトの名無しさん:2006/03/11(土) 15:53:40
>>459
やってることは分かるが、sizeof(int) == 4決め打ちは如何なものかと思うが

それはそうとsetjmp.hとsignal.hって面白いな
エキスパートCプログラミングに触発されて試してみたがハマった

464 :デフォルトの名無しさん:2006/03/11(土) 17:02:11
>>449
目が痛いwwwww

>>456
なにこの簡易バズルwwwww

>>459
ある意味CだけどCっぽくねぇwwwww

465 :デフォルトの名無しさん:2006/03/11(土) 17:54:32
>>464
       -‐''''"´ ̄``ヽ、              ____
       /     _     ヽ        //´   __,,>、
     /        ̄ ̄   {        /::/ / ̄:::::::::::::::\
      l _ィニニア二二二ニヽ、j._      /::::l/::::::::::::::::::::::::::::::::l
     | 0Lj/-‐-レノ ノ_ヽ:::`ヽ     l:::::::::::/l/lノノ/_イ:::::l
     レ:r、/ イ゚テ   ピト`|::|      l:::::::::/ rtテ、  .ィtq l::::::|
      l:lヘ  '"   ,j  '"/ノ      |::lヘ!j  ´  ,j   !;:::/
     ヽヽ、   r‐-,   /'         レリー 、    ,....,  lノ/
        lヽ、  ̄ /         `ヽ、lヽ 、  ̄ /´
     _,r┴‐-`v´-‐j-、__   , -‐-、_r┴─'ー‐チト       バズル!!
  / ̄/:.:.:.:| ̄ ̄`T ̄´|:.:.:.:l´ `ヽ /    ヽ ̄`ー-‐'´`''''⌒ヽ
/   ,':.:.:.:.:.l    l   l:.:.:.l    \  _r‐、-、-、r,    、   ',
     |:.:.:.:.:.:.!     !   !:.:.l   ,. -‐ゝ/// 〉 〉 〉 〉 〉    !   ',
    l:.:.:.:.:.:.l     |   l:.:.:l  /  人〈〈〈〈 ' ' ' /っ   l    l
    l:.:.:.:.:.:.!     !   l:.:.:.ト/   /  ```´-ァ‐'''"     /   l
、__/:.:.:.:.:.:l     |    |:.:.:ヽヘ  l    //         / _ ィノ
    /:.:.:.:.:.:.:!    l   |:.:.:.:.:l `ーヽ、_ノ´l、______/lニ二」
____l:.:.:.:.:.:.:.|      l   |:.:.:.:.:!        |_  ( ( ) )_〕|   l
   l`ー‐‐'匸二l ̄ ̄l二フーイ       /   ̄ `‐‐'´ ヽ  |


466 :デフォルトの名無しさん:2006/03/11(土) 20:10:59
>>456 採用ありがとう。
同様ので、

#include <stdio.h>
#define A(a, b) C(a, b)
#define B(a, b) C(b, a)
#define C(a, b) a b

B(B(B(;return 0;},A(printf,("hello\n"))), {), int B((void), main))

467 :デフォルトの名無しさん:2006/03/11(土) 20:27:34
>>466
おぞましいバズルですね

468 :デフォルトの名無しさん:2006/03/11(土) 20:33:22
>>466
読みづらいが>>459ほどでは無いな
何せ>>459は-Eしても読めない奴には読めないんだからw

469 :デフォルトの名無しさん:2006/03/11(土) 20:38:08
>>466 はじっと見れば読める
>>459 は知ってれば普通に読める

470 :デフォルトの名無しさん :2006/03/11(土) 21:47:32
>>446の問題簡単そうだと思ったら、もうみんな解だしてるのね
一応俺のもはっとこ(Q2のみ)
int *to_binary(int n, int box[32])
{
if(n >= 0){
unsigned int for_binary, to_for;
int i ;/*要素数*/
for_binary = (unsigned int)n;
for(to_for = 1, i= 0; to_for < (sizeof(int)*8), i<32; to_for++,i++){
if(for_binary & (1 << (to_for - 1)))
box[i] = 1;
else
box[i] = 0;
}
return box;
}
else
return box;
}

471 :デフォルトの名無しさん:2006/03/11(土) 22:30:00
>>456とかを見てるとコンパイラ偉いなと思う

472 :デフォルトの名無しさん:2006/03/11(土) 22:34:35
中の人も大変だな

473 :デフォルトの名無しさん:2006/03/11(土) 23:04:45
プリプロセッサじゃないのか

474 :デフォルトの名無しさん:2006/03/11(土) 23:17:05
>410みたいなリンクにいけないのは、部外者だからなのかな

475 :デフォルトの名無しさん:2006/03/11(土) 23:26:26
>>474
特にアクセス制限とかはかけてないはずだけど……。時間置いて再度やってみてください。

476 :474:2006/03/12(日) 00:33:06
宿題なんだろうけど、オープンにする理由がわかんない。どうしてだろう
アクセスできてないから、いいかげんな疑問ですけど

477 :デフォルトの名無しさん:2006/03/12(日) 00:47:14
>>476
オープンにして困る情報が含まれていないからです。

478 :デフォルトの名無しさん:2006/03/12(日) 00:54:32
ブラウザが悪いんじゃない?

479 :デフォルトの名無しさん:2006/03/12(日) 15:44:21
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。

http://pc8.2ch.net/test/read.cgi/prog/1140616676/

480 :デフォルトの名無しさん:2006/03/12(日) 23:55:59
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
3問お願いします。

使用「処理A」〜「処理C]を満たすフローチャート(適当に作ってもらってかまいません。)
プログラムの作成をしてください。

「処理A」
0から99までの整数をランダムに100個発生させ、配列TBL(0)からTBL(99)に格納する。
データを配列順に出力(画面表示)する。

「処理B」
処理Aのデータを昇順に整列し、結果を出力する。
なお、整列アルゴリズムは基本交換法を使用すること。

「処理C」
0から99までの整数を一つランダムに発生させ、処理Bのデータから二分探索法により検索する。
見つかった場合の出力書式は「**は、TBL(**)にあります。」とする。
(その値が複数存在する場合は、いずれかの配列を示せばよい。)
データが見つからなかったときは「**は、TBL()に存在しません。」
と出力した上で、見つかるまで処理Cを繰り返す。

フローチャートもプログラムがわからないので作れる方お願いします。
とりあえず、フローチャートの流れがわかれば記号等は自分でやります。
以上です。長々とすみません。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: C言語
[4] 期限: 2006年03月19日までにお願いします。
[5] その他の制限:一応、ファイルの入出力までは学校でやりましたが・・・
C言語は苦手でしたので関数名とかは知ってても実際は使えないというのが状況です。

481 :デフォルトの名無しさん:2006/03/13(月) 00:07:18
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    流れ図めんどうなのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

482 :デフォルトの名無しさん:2006/03/13(月) 00:10:11
Aは俺が一番に出来た(・∀・)ニヤニヤ
#include <stdio.h>#include <stdlib.h>#include <time.h>
int main(void){int TBL[100];srand((unsigned int)time(NULL));for(i=0;i<100;i++)TBL[i]=rand()%100;}

483 :デフォルトの名無しさん:2006/03/13(月) 00:11:10
>>385

484 :デフォルトの名無しさん:2006/03/13(月) 00:18:44
なぜフローチャートなどという劣悪なシロモノを使わなければいけないのか。


485 :デフォルトの名無しさん:2006/03/13(月) 00:40:29
Aの答えを作ろうと思ったが、GCCのインラインアセンブラが余りにも糞仕様過ぎて止めた
どこの馬鹿があんな仕様考えたんだ?
srcとdestが入れ替わるわ、間接参照も面倒くさいわで使いにくいことこの上ないな

486 :デフォルトの名無しさん:2006/03/13(月) 00:42:11
>>480
>フローチャートもプログラムがわからないので作れる方お願いします。
そもそも普通はフローチャート→コーディングという流れなので
プログラムが分からないからフローチャートが書けないというのはおかしい

487 :デフォルトの名無しさん:2006/03/13(月) 00:42:36
YES!
masm系、特にnasmが最強

488 :デフォルトの名無しさん:2006/03/13(月) 00:43:42
>>385
>>385
>>385
>>385
>>385
>>385

489 :デフォルトの名無しさん:2006/03/13(月) 00:45:12
引き続きIOCCC Japanへの参加をお待ちしております

490 :デフォルトの名無しさん:2006/03/13(月) 00:45:26
そもそも普通はプログラムが分かるやつがフローチャートを書くので
プログラムが分からないからフローチャートがかけないというのはおかしいというのはおかしい

491 :デフォルトの名無しさん:2006/03/13(月) 00:52:44
>>488
385にも同じ問題がスレがあったの知らなくて今見てびっくりしたのですが、
この課題は他人との融通があったと判断した場合、
レポートを無効とすると記されているのでこれは使えないんですよ。

>>485
これはやらしい先生が考えたのでホント糞仕様書ですよ。



492 :デフォルトの名無しさん:2006/03/13(月) 01:00:35
おれもgas設計した人に教わってみたいもんだ

493 :デフォルトの名無しさん:2006/03/13(月) 01:06:00
Dean Elsner?

494 :デフォルトの名無しさん:2006/03/13(月) 01:19:09
>>491
もしかして>>485>>480の仕様のことを言ってると思ってるのか?
だとしたら小学生からやり直した方がいいな

495 :デフォルトの名無しさん:2006/03/13(月) 01:19:40
>>494
明らかにGNU GASの仕様のことだろ

496 :デフォルトの名無しさん:2006/03/13(月) 01:20:40
うん

497 :デフォルトの名無しさん:2006/03/13(月) 01:24:47
>>495
>>485は俺だからそりゃそうなんだが、>>491のは
どうみても>>480の事だと解釈してるっぽいから>>494を書いた

つーか、誰かgasの仕様変えようとは思わないのか

498 :デフォルトの名無しさん:2006/03/13(月) 01:28:39
プログラムの方は誰か作る気あるのですか?

499 :デフォルトの名無しさん:2006/03/13(月) 01:29:49
なんかソースがかなり煩雑になってるって聞いたことあるが・・・

いや、おれはGASのソース見てないけど

500 :デフォルトの名無しさん:2006/03/13(月) 01:31:25
そもそもgasって今もメンテされてるのか?

501 :デフォルトの名無しさん:2006/03/13(月) 01:37:24
>>497
勘違いしてましたわ。
gccのことだったとは気づかなかった。

話がずれてるので処理A〜Cお願いします。

502 :デフォルトの名無しさん:2006/03/13(月) 02:00:51
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    >>480の先生が有名人かと思ったのでスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

503 :デフォルトの名無しさん:2006/03/13(月) 02:59:24
>>480

>>388
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1680.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1681.txt
を参考にすると吉

504 :デフォルトの名無しさん :2006/03/13(月) 03:45:04
二分探索
どっかの参考ページでみながら書いたソースがあったので載せる

center = 配列の真ん中
num = 求めたい数値
low = 要素数の最初
high = 要素数の最後

while(array[center] != num){
center = (low + high)/2;//半分に切って真ん中の値を見る
if(array[center] > num)//半分の値より検索したい値が小さいとき
high = center -1;
else if (array[center] < num)//半分の値より検索したい値が大きいとき
low = center + 1;
if(high < low ){
printf("%dは見つからなかった\n",num);
return 0;
}
}
これでだいたいわかるだろ
あとフローチャート描けっていうのは、どう描けってんだ
AAつかうのか?
手書きで描いて、スキャナーでとるなりデジカメで撮るなりupすんのか?
それともwordや、illustraterで・・・・
そのプログラム全部書くよりフローチャート書く方が手間かかるわ

505 :デフォルトの名無しさん:2006/03/13(月) 04:55:06
ペイントでいいんじゃない?

506 :デフォルトの名無しさん:2006/03/13(月) 04:58:02
Visio

507 :デフォルトの名無しさん:2006/03/13(月) 04:59:50
Freemindは?

508 :デフォルトの名無しさん:2006/03/13(月) 07:10:17
ワードでいいんでない?

509 :デフォルトの名無しさん:2006/03/13(月) 10:40:09
フローチャートを描くプログラムを書けばOK

510 :デフォルトの名無しさん:2006/03/13(月) 10:53:53
本気で(A)の「乱数を発生させる」フローチャートが見たいと思った3月の雪空

511 :デフォルトの名無しさん:2006/03/13(月) 15:35:58
オレも見たい鴨

512 :デフォルトの名無しさん:2006/03/13(月) 18:23:48
OpenOffice

513 :デフォルトの名無しさん:2006/03/13(月) 18:57:41
>>510
ガイガーカウンタと計測器でがんばればいいんじゃね

514 :デフォルトの名無しさん:2006/03/13(月) 19:02:26
>>504
二分探索ありがとうございました。
フローチャートはあまりにも手間がかかりますので、自分でやります。


515 :デフォルトの名無しさん :2006/03/13(月) 20:23:20
>>514
初めて宿題スレでありがとうって言ってもらえた。

いえいえどういたしまして。
お互い精進しましょう。

516 :デフォルトの名無しさん:2006/03/13(月) 20:29:05
和やかな雰囲気(・∀・)イイネ!!

517 :デフォルトの名無しさん:2006/03/13(月) 20:29:46
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    スルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

518 :デフォルトの名無しさん:2006/03/13(月) 21:03:09
>>515
よかったね。前に、残っている宿題を整理するついでに、回答率がどれくらいで
礼を言われるのがどれくらいか、ざっと数えたことがあるんだけど、そのときは
回答率が約6割くらいで、それに対するレスがあったのは、回答があったうちの
半分未満だったよ。

まあ目安として3回答えて、一度もレスがなかったら、運が悪いのかもw

519 :デフォルトの名無しさん:2006/03/13(月) 21:40:23
解答してもらって礼すら言わない奴がいるのか・・・

520 :デフォルトの名無しさん:2006/03/13(月) 21:41:22
あ、あんたなんかに下げる頭は持ってないわよっ!
・・・・でも、ありがとう

521 :デフォルトの名無しさん:2006/03/13(月) 21:48:24
お礼とかより提出した宿題がどのように採点されたのか報告してくれ

522 :デフォルトの名無しさん:2006/03/13(月) 21:50:09
それは確かに興味あるwww

523 :デフォルトの名無しさん:2006/03/13(月) 21:51:13
確かに採点結果・教官のコメントは知りたいな

524 :デフォルトの名無しさん:2006/03/13(月) 21:51:37
テンプラに入れようぜw

525 :デフォルトの名無しさん:2006/03/13(月) 23:19:46
事後報告は必須です

526 :デフォルトの名無しさん:2006/03/14(火) 00:05:28
先生!漏れが変わりにやった宿題の評価は??

527 :デフォルトの名無しさん:2006/03/14(火) 00:08:06
報告テンプレ

[1] 評価:
[2] 結果:

何か足りないものある?

528 :デフォルトの名無しさん:2006/03/14(火) 00:08:24
ネタプログラムの評価は知りたい。

529 :デフォルトの名無しさん:2006/03/14(火) 00:09:07
時期が限られるが、単位取得の有無>>527

530 :デフォルトの名無しさん:2006/03/14(火) 00:10:54
>>529 結果か評価のどっちかに含めていいべさ

531 :デフォルトの名無しさん:2006/03/14(火) 00:13:59
おう! なんか、さいきん、読んでも理解できなくてな・・・
医者行ってくるわ・・・

532 :デフォルトの名無しさん:2006/03/14(火) 00:20:14
報告テンプレ

[1] 評価:
[2] 結果:
[3] 単位取得の有無:
[4] 回答者にコメント:

はどう?

533 :デフォルトの名無しさん:2006/03/14(火) 00:33:43
>>532
上出来w

534 :デフォルトの名無しさん:2006/03/14(火) 00:39:03
評価と結果の区別が分かりにくいかと(質問してくる人には)。
あとコメント欄にネタ回答への怨み言を書かれそうで困るかな。

535 :デフォルトの名無しさん:2006/03/14(火) 00:46:12
怨まれるのが恐いならネタ解答してんじゃねーよ。
そもそも、宿題がどう評価されたかを知って何が面白いんだ?

536 :デフォルトの名無しさん:2006/03/14(火) 00:47:08
レスポンスが無いとむなしいに決まってるじゃないか

537 :デフォルトの名無しさん:2006/03/14(火) 00:53:54
なるほど。
俺は解くだけで満足だが。

538 :デフォルトの名無しさん:2006/03/14(火) 01:24:01
報告テンプレ

[1] 先生の評価:
[2] 提出結果:
[3] 単位取得の有無:
[4] 回答者にコメント(愚痴等は禁止):

539 :デフォルトの名無しさん:2006/03/14(火) 01:28:03
>>535
恐いんじゃなくて、スレがいい感じで荒れそうだなぁと。
そうなるとネタ回答できそうな質問が減って困る。

540 :デフォルトの名無しさん:2006/03/14(火) 12:30:30
2ちゃんで一番好きなスレはここです。
このスレが無ければ卒業できませんでした。

541 :デフォルトの名無しさん:2006/03/14(火) 14:08:26
追試の時期が終わって問題投下が減ったかな?

542 :デフォルトの名無しさん:2006/03/14(火) 16:35:01
留年勘弁氏の動向が気になる。
ネタを本気に取られてしまった・・・

543 :C苦手 ◆Lzb88d0QyY :2006/03/14(火) 20:21:43

[1] 授業単元: C言語
[2] 問題文: (翻訳文なのでちょっとぎごちないです。読みにくくて申し訳ないです。)

辞書ファイル内の言葉を検索するプログラムを作成せよ。

長かったので↓に書きました。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1563


[3] 環境
 [3.1] OS: UNIX agave
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2006年三月二十日まで
[5] その他の制限:
基本しか習っておりません。
始めて1週間なのでかなり焦っています。
質問がかなり長くて申し訳ないですが、どなたか宜しくお願いします。

544 :デフォルトの名無しさん:2006/03/14(火) 20:28:03
>>543
gcc で日本語?やりたくねえなあ。

翻訳してない問題は無いの?そっちのほうがはるかに簡単そうなんだけど。

545 :デフォルトの名無しさん:2006/03/14(火) 20:34:41
>>543
久しぶりに面白そうな課題だからやってみたいんだが
原文を上げてくれ。そっちの方が読みやすい

それとその検索対象のファイルっていうののサンプルは無いのか?

546 :デフォルトの名無しさん:2006/03/14(火) 20:41:33
英語読めない香具師がここに一人

>>543
こうゆうものは原文と翻訳文を出すべきでは?

547 :デフォルトの名無しさん:2006/03/14(火) 20:43:03
>>543
機械翻訳ワケワカメ。


548 :デフォルトの名無しさん:2006/03/14(火) 20:45:57
C出来ないくせにUNIX出来るなんて・・・生意気だ!・・と言ってみるテスト

549 :デフォルトの名無しさん:2006/03/14(火) 21:06:18
基本的には

for (i = 0; i + strlen(key) < strlen(buf); ++i) {
  int flg = 1;
  for (j = 0; j < strlen(key); ++j)
     if (key[j] != '_' && key[j] != buf[i+j]) flg = 0;
  if (flg) return 1;
}
return 0;

くらいで辞書の各行を走査してやりゃいいだけのような。

550 :C苦手 ◆Lzb88d0QyY :2006/03/14(火) 21:31:00
>>544
>>547
>>545
>>546
>>547
レスありがとうございます。
gccで英語環境です。
英語の課題を日本語に訳したんでかなりぎごちないです。すみません。
原文のPDFと辞書のサンプルtxtファイル(サンプルなのでAの箇所とY〜Zあたりを抜粋しました)をzipで↓にあげときました。
宜しくお願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1563


>548
unixは基本コマンドしかいじった事ないです。
超初心者ですが大学のPCがunixなので。。

>>549
ありがとうございます!早速参考にしてみます!

551 :デフォルトの名無しさん:2006/03/14(火) 21:35:42
>>550
やってみるがこの調子だと競争になりそうだなw
まぁ別に解答済みでも自分なりのをうpるが

552 :デフォルトの名無しさん:2006/03/14(火) 21:41:45
和訳とはだいぶ意味違うじゃねーか

553 :デフォルトの名無しさん:2006/03/14(火) 21:47:53
-exact (デフォルト) 検索文字列と文字数がきっちりあう単語にマッチ
-prefix 検索文字列が先頭にある単語にマッチ
-anywhere 単語のどこかに文字列にマッチ
までは把握した。

554 :デフォルトの名無しさん:2006/03/14(火) 21:53:11
とりあえず引数異常の場合にstderrにUsageを出すところまでは把握した
つーか、臨時の環境だからMeadow入れ直し+Cygwinのうpでとが面倒だ('A`)

555 :デフォルトの名無しさん:2006/03/14(火) 22:21:07
>>551
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1684.c

仕様とかちゃんと読んで無いから間違ってるかもしれんけど.

556 :555:2006/03/14(火) 22:24:40
file_not_exist と invalid_pattern のエラーメッセージの表示先が間違ってるので直して.

557 :デフォルトの名無しさん:2006/03/14(火) 22:31:03
まとめ方が参考になる>>555

558 :デフォルトの名無しさん:2006/03/14(火) 22:36:13
この行為がcheating(カンニング)でmisconduct(不正行為)にあたり
発覚したらまずは課題が0点になるというところまでは把握した。

559 :デフォルトの名無しさん:2006/03/14(火) 22:45:00
レポート提出先のアドレスあったら、だれか突撃!

560 :C苦手 ◆Lzb88d0QyY :2006/03/14(火) 22:56:28
>>559
それだけは勘弁してください。


561 :デフォルトの名無しさん:2006/03/14(火) 23:00:32
>>560 スマンスマン。冗談だ。
で、提出先を教えてくれ。

562 :デフォルトの名無しさん:2006/03/14(火) 23:02:00
>>555のままだとスタイルの得点が0点になりそうなので質問者は注意したほうがいいね。
具体的には、
コメント:ない。
括弧:ifやforの後ろが1文のときに{}がない。
空白:関数の間に空行がない。
インデント:インデント1段階がスペース4つになってない。式が次行に続くときにスペース8つになっていない。

563 :デフォルトの名無しさん:2006/03/14(火) 23:08:53
>>561
提出先はpdfにちゃんと「http://submit.itee.uq.edu.au」の「COMP2303」だって書いてあるぞ。
でもどうやら簡単な認証があるようなので、コース名明記してメールすればいいんじゃない?

564 :デフォルトの名無しさん:2006/03/14(火) 23:11:21
英語のお手紙書くのはぢめてなんで、緊張するお!

565 :C苦手 ◆Lzb88d0QyY :2006/03/14(火) 23:23:55
>>563
>>564
学生以外はsubmit出来ないはずなのでご遠慮ください。お願いします。
となると私の課題はそのまま提出すると0点になり提出出来なくなるのでzipファイルは削除します。
自分でなんとか考えます、答えてくれた人ありがとうございます。参考にします。

566 :デフォルトの名無しさん:2006/03/14(火) 23:25:29
本気でやるやつ居ないと思うがなぁ

567 :デフォルトの名無しさん:2006/03/14(火) 23:27:04
Meadowいれたりしてる内に解答されたか・・・('A`)
まぁ自分のためにもなるんで頑張って作ってみるか

568 :デフォルトの名無しさん:2006/03/14(火) 23:36:19
負けた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1685.c

569 :568:2006/03/14(火) 23:45:16
一応わかってる穴。
* 568 のコードはオプションの扱いを端折ってるので正確ではない
* ASCII に依存している
素直に string.h のを使うべきだったな。
出しておいて言うのもアレだが。
バッファ管理はともかく >>555 のコードはスッキリしていて良いね。
enum{exact,..} と match_func *match[]={...} の所が好き。

570 :デフォルトの名無しさん :2006/03/15(水) 00:20:22
543の問題を解こうと思って
リンク先見たらソースしか載ってなかった
問題文どこ?

571 :デフォルトの名無しさん:2006/03/15(水) 00:20:45
・・・過去にマヂでセンセ宛てにメールした奴も居るんで、ジョークにならんとゆーところがまた・・・

572 :デフォルトの名無しさん:2006/03/15(水) 00:22:46
あれは学校のURL晒した本人が悪い

573 :デフォルトの名無しさん:2006/03/15(水) 00:44:53
>>570
1686に(翻訳前の>>550の方を)再upしたんで、どぞ。

574 :デフォルトの名無しさん:2006/03/15(水) 01:44:15
【積年の】旦那にしてる密かな仕返し【恨みじゃー】
http://human5.2ch.net/test/read.cgi/ms/1141694640/

8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp
夫の歯ブラシで洗面所の排水溝掃除。
洗面所をビショビショに汚した罰だ。

20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21
前に頭きた時あって
1度だけ歯ブラシで肛門カキカキしちゃった

22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J
よかった。どこのお宅も同じようなことしてて。

24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE
そうそう、ヘンなモノはダンナのお皿へ直行だよね。

41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q
見てるだけで気が晴れるな!
皆さん、頑張ってね!

42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+
年金分割が楽しみじゃのう

63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR
家族で密かにはぶっている。

男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。

575 :デフォルトの名無しさん :2006/03/15(水) 03:39:14
俺の英語の読解力の無さを再認識できた
で一応プログラムとしてはコマンドラインからまず、実行して
mainの引数として
打ち込む文字列の最初に'?'があったら
Usage: search [-exact|-prefix|-anywhere] pattern [filename]
ってプリントしてfprintf(stderr,"〜");exit(1)する
で文字列の中に'_'があったら
search: pattern should only contain underscores and letters
ってプリントしてfprintf(stderr,"〜");exit(1)する
で、すくなくとも一つでもマッチするwordがあれば行とそのwordを出力する、
でexit(0)[return 0]の事か?
なければexit(1)
で、これって、見つけたいwordはmainの引数から何個入れるの?好きなだけ?
限定されないとこまっちゃう。逆にコマンドラインから引数を受け取らないなら
好きなだけ比較できる。
はぁ、、英語って難しい

576 :デフォルトの名無しさん:2006/03/15(水) 05:11:12
>>575
ネタだよな?

577 :デフォルトの名無しさん:2006/03/15(水) 06:52:09
ここ、あほばっかだな

578 :575:2006/03/15(水) 07:29:31
そうだよ、あほだよ、だからもう、辞書ファイルから文字探索して
あれば、何行目と単語が表示するようなプログラムにしかならんかった
#include <stdio.h>#include <string.h>#include <stdlib.h>
typedef struct List{char letter[30];intgyou;struct List *next;}List;
void Fluss(List *p_fluss);void Getword(List *p_get);int main(void)
{char in_word_buff[30];int i = 1;char *gDlim ="\n",*pass;List *p_root = NULL;FILE *Dictionary;
List *p_new;List *p_fluss;if((Dictionary = fopen("辞書ファイル.txt","r")) == NULL){
fprintf(stderr,"ファイルを開けない");exit(1);}
while((fgets(in_word_buff,sizeof(in_word_buff),Dictionary)) != NULL){
p_new = (List *)malloc(sizeof(List));if(p_new == NULL){
fprintf(stderr,"メモリ確保出来ず");exit(1);}
pass = strtok(in_word_buff,gDlim);p_new->gyou = i++;
strcpy(p_new->letter,pass);p_new->next = p_root;p_root = p_new;}
p_fluss = p_root;Getword(p_fluss);Fluss(p_fluss); return 0;}
void Fluss(List *p_fluss){List *fl,*temp;int i = 1;for(fl = p_fluss ;fl!= NULL;){temp = fl->next;
free(fl);fl = temp;}}void Getword(List *p_get){
int get,i;char buff[256] = {0};printf("検索する単語はいくつですか");fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&get);for(i=1; i<=get;i++){printf("検索する単語%d個目\n",i);fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%s",buff);while(1){if(p_get == NULL) break;if(0 == strcmp(p_get->letter,buff))
printf("%sは%d行目にあります\n",p_get->letter,p_get->gyou);p_get = p_get->next;}}}

579 :デフォルトの名無しさん:2006/03/15(水) 12:20:57
>>578
まぁまぁ

580 :デフォルトの名無しさん:2006/03/15(水) 12:54:37
>>575
真面目な話、あの英文を読解できないのはヤバイと思うが

581 :デフォルトの名無しさん:2006/03/15(水) 15:02:30
C言語なら俺に聞けスレが消えてしまったので、宿題では無いのですが
ここで聞いてもよろしいですか?

582 :デフォルトの名無しさん:2006/03/15(水) 15:07:00
お前が消えろ

583 :デフォルトの名無しさん:2006/03/15(水) 15:07:22
自分でなんとかします。スレ汚し。すいません

584 :デフォルトの名無しさん:2006/03/15(水) 15:35:48
消えてねーよ探せよヴォケ

585 :デフォルトの名無しさん:2006/03/15(水) 15:40:40
このスレで暴言を吐くな
厨臭くなって困る

586 :デフォルトの名無しさん:2006/03/15(水) 15:47:16
>>585
このスレで暴言を吐くな
厨臭くなって困る

587 :デフォルトの名無しさん:2006/03/15(水) 15:52:50
これが厨

588 :デフォルトの名無しさん:2006/03/15(水) 15:52:58
これはしたり
ほんものの厨だったかw

589 :デフォルトの名無しさん:2006/03/15(水) 17:05:33
32歳だけど厨な俺が来ましたよっと

590 :デフォルトの名無しさん:2006/03/15(水) 17:42:55
荒れてきたな

591 :デフォルトの名無しさん:2006/03/15(水) 18:02:16
おしりがいい感じ

592 :デフォルトの名無しさん:2006/03/15(水) 19:48:34
虚しい会話ばっかw

593 :デフォルトの名無しさん:2006/03/15(水) 21:15:33
>>581
http://pc8.2ch.net/test/read.cgi/tech/1142302804/l50

594 :デフォルトの名無しさん:2006/03/15(水) 21:20:56
宿題ないとダメだなここw

595 :デフォルトの名無しさん:2006/03/15(水) 21:53:45
誰か人助けだと思って宿題を投下してくれないか?

596 :デフォルトの名無しさん:2006/03/15(水) 21:58:55
脳内で発生した宿題でもいいか?

597 :デフォルトの名無しさん:2006/03/15(水) 22:05:54
メンドーな問題じゃなきゃおk

598 :デフォルトの名無しさん:2006/03/15(水) 22:15:56
[1] 授業単元:脳内
[2] 問題文(含コード&リンク): 数当てGAMEを作れ
各桁の数字が違う4桁の整数をランダムに作成する
次に4桁の整数の入力を求め当たりならばメッセージを出して終了
ハズレならば
正解と入力値が完全に同じ数字の個数を H
含んでいるが位置が異なる数字を B
として出力後再度入力待ちをする
なおできれば入力のチェックも行う

  正解・・6387
  入力・・3967
  出力・・1H2B

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC/VC++
 [3.3] 言語: C
[4] 期限: time(NULL)での表現が限界に達するまで
[5] その他の制限: なんでもOK

599 :デフォルトの名無しさん:2006/03/15(水) 22:21:46
じゃあ俺も

[1] 授業単元:脳内
[2] 問題文
  整数平方根を求める関数my_sqrtを作る
  (例.my_sqrt(3)->1 (1.7320508...の整数部分
     my_sqrt(5)->2 (2.2360679...の整数部分) を返す)
[3] 環境
 [3.1] OS: 何でも
 [3.2] コンパイラ名とバージョン: 何でも
 [3.3] 言語: 何でも
[4] 期限: いつでも
[5] その他の制限: 関数に与える引数は0<= x <=2^32-1まで返り値は整数。math.h使用禁止

600 :デフォルトの名無しさん:2006/03/15(水) 23:07:38
>>599
綺麗なやり方じゃないが誰もが思いつくであろう物を上げておく

unsigned my_sqrt(unsigned long n)
{
unsigned i;

for (i=1; i*i<=n; ++i);
--i;

return i;
}


601 :デフォルトの名無しさん:2006/03/15(水) 23:29:55
>>599
math.h を include しなくても、しかるべきプロトタイプ書いて
ライブラリをリンクしたら使えてしまう訳だが。
まあそんな無粋な事はせずにやってみた。
int my_sqrt(int i){int j=i;for(;;--j)if(i>=j*j)return j;}
でもこれだと引数が2^16以上で破綻するからこうか。
int my_sqrt(int i)
{int m,j;for(j=8*sizeof(int)-1,m=1<<j;!(i*m);m>>=1,--j);
j=(i&m)>>((j+1)/2);for(;;++j)if(i<j*j)return j-1;}

602 :デフォルトの名無しさん:2006/03/15(水) 23:33:19
何故 数当ては誰も作ってくれないグレるぞ俺

603 :デフォルトの名無しさん:2006/03/15(水) 23:35:59
>>598
後はBだけまで来た
はずかしいソースができた

604 :601:2006/03/15(水) 23:36:22
同じ事をまとめられるので微修正
int my_sqrt(int i){int m,j;for(j=8*sizeof(int)-1,m=1<<j;!(i&m);m>>1,--j);
for(j=(i&m)>>((j+1)/2);i>=j*j;++j);return j-1;}

605 :デフォルトの名無しさん:2006/03/15(水) 23:43:24
>>598
はずかしながらできますた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1687.txt
ここが変だとかいわないでね

606 :デフォルトの名無しさん:2006/03/16(木) 00:04:28
>>599
ニュートン法。誤差がない保証はどこにもない。

int my_sqrt(unsigned n)
{
  if(n == -1)
    return 65535;
  if(n == 0)
    return 0;
  unsigned a = n;
  unsigned prev = -1;
  while(a < prev)
  {
    prev = a;
    a = (a + n / a) / 2;
  }
  return prev;
}

607 :デフォルトの名無しさん:2006/03/16(木) 00:04:50
[1] 授業単元:脳内
[2] 問題文(含コード&リンク): 文字列中の番号に対して自然なソートを実装せよ。
以下のような大小関係になる
no1 < no822 < no2086
a < a0 < a1 < a1a < a1b < a2 < a10 < a20
x2-g8 < x2-y7 < x2-y08 < x8-y8
1.001 < 1.002 < 1.010 < 1.02 < 1.1 < 1.3 < 2.0
[3] 環境
 [3.1] OS: 一般的なコンソール
 [3.2] コンパイラ名とバージョン: 自由
 [3.3] 言語: C89 / 現実的な範囲のC++
[4] 期限: なし
[5] その他の制限: 仕様が足りない部分は、適当に補完してください。

608 :605:2006/03/16(木) 00:05:48
さっきのはバグがあった
気づかんかった
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1688.txt

609 :デフォルトの名無しさん:2006/03/16(木) 00:08:05
>>608
ふはは気づいたか

610 :デフォルトの名無しさん:2006/03/16(木) 00:09:10
気づきましたよ
自分でやってて気づきましたよ

2H
3B

あれ?

611 :デフォルトの名無しさん:2006/03/16(木) 00:20:34
ここってプロプログラマ率どんくらいだろうか

612 :デフォルトの名無しさん:2006/03/16(木) 00:23:24
漏れは趣味の人だお

613 :デフォルトの名無しさん:2006/03/16(木) 00:29:27
俺ただの大学生

614 :デフォルトの名無しさん:2006/03/16(木) 00:32:31
俺もただの大学一年生

615 :デフォルトの名無しさん:2006/03/16(木) 00:33:08
俺は中学と高校の狭間

616 :デフォルトの名無しさん:2006/03/16(木) 00:34:05
俺ただの高校生

617 :デフォルトの名無しさん:2006/03/16(木) 00:36:46
>>607
例の「自然」さが理解できん。

618 :デフォルトの名無しさん:2006/03/16(木) 00:39:03
OpenJaneからJaneViewへの移行が今終わった、
お気に入りがすっきりした。

619 :デフォルトの名無しさん:2006/03/16(木) 00:43:13
>>608
Blowの仕様はそれでいいのかな?
例えば、正解が6501のとき
6555って入力すると
2H 2B
って出るけど
2H 0B
が正しいんじゃない?
まあ、各桁がすべて異なった数値以外は
受け付けないようにすればラクなんだけどね


620 :デフォルトの名無しさん:2006/03/16(木) 01:06:15
たしかに受け付けないほうが楽な上に親切ですね。
脳内で修正しときますw

621 :デフォルトの名無しさん:2006/03/16(木) 01:07:25
>>611
ただの大学生だお

>>607
本題と関係ないんだが、C89ってのを久しぶりに見たんで一瞬何かと思った
みんなはANSIとC89、標準のどれで表記してる?これ以外もあったらよろ

622 :デフォルトの名無しさん:2006/03/16(木) 01:15:44
>>621
質問はテンプレ使え

623 :デフォルトの名無しさん:2006/03/16(木) 01:16:54
血も涙もないなw

624 :デフォルトの名無しさん:2006/03/16(木) 01:47:48
>>607
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1689.cpp

625 :624:2006/03/16(木) 01:58:08
バグってた。
compare_fractionの最初の行は
for(int i = 1; ; i++)

626 :デフォルトの名無しさん:2006/03/16(木) 02:08:37
>>622
ちょwwwwwwwこれでもテンプレ要るのかよwwww

[1] 授業単元:プログラミング用語C
[2] 問題文(含コード&リンク):ISO/IEC 9899:1990を別の表記にせよ
[3] 環境
 [3.1] OS:All
 [3.2] コンパイラ名とバージョン:gcc3.4.4
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:日本語・英語以外は使ってはいけない

627 :デフォルトの名無しさん:2006/03/16(木) 03:22:20
>>626 C/C++で書いちゃいけないんならスレ違いだ。>日本語・英語以外は使ってはいけない

628 :デフォルトの名無しさん:2006/03/16(木) 03:30:50
オマイラなんでそんなに厳しいんだw

>>626
そんなのこのスレ見て自分で判断しろよカスが

629 :デフォルトの名無しさん:2006/03/16(木) 03:36:54
さ〜て雑談で1000まで行くかぁ?

630 :デフォルトの名無しさん:2006/03/16(木) 06:29:54
>>629
だ が 断 わ る

631 :デフォルトの名無しさん:2006/03/16(木) 06:34:18
>>598
もしやまた伊庭タンですか?!

632 :デフォルトの名無しさん:2006/03/16(木) 08:17:13
>>607です。
>>624 回答ありがとう。
仕様の原文のURLを書くべきだった。反省している。
ttp://sourcefrog.net/projects/natsort/
ちなみに、C版の解答も載ってるんで。興味があったらどうぞ。

633 :デフォルトの名無しさん:2006/03/16(木) 11:44:10
>>632
実装をみてみたけど、それだと
x2-y08 < x2-y7
で仕様に反してるな。

634 :デフォルトの名無しさん:2006/03/16(木) 15:06:34
>>599
昔平方根を筆算で解いてたのを思い出してやってみた
int my_sqrt(unsigned int a)
{
  int n,i,j,sqrt_a,x=0,y;
  int a2[6];/* log_100(2^32)<5ですたい */
  a2[0]=0;
  for(n=1;a>=100;n++){
    a2[n]=a%100;
    a/=100;
  }
  a2[n]=a;
  y=a;
  sqrt_a=0;
  for(i=n;i>0;i--){
    for(j=0;y-(x*10+j+1)*(j+1)>=0;j++)
      ;
    y=(y-(x*10+j)*j)*100+a2[i-1];
    x=x*10+j*2;
    sqrt_a=sqrt_a*10+j;
  }
  return sqrt_a;
}
ちゃちゃっと検証してみたが今のところ問題ない模様...なんか動作おかしかったら突っ込みよろん
ちょっといじれば小数点以下も求められる・・はずw


635 :デフォルトの名無しさん:2006/03/16(木) 15:52:01
とりあえず模範解答置いときますね

int my_sqrt(unsigned x) {
unsigned a, b, m;
a=1;
b=(x>>5)+8;
if(b>0xFFFF)b=0xFFFF;
do{
m=(a+b)>>1;
if(m*m>x)b=m-1;else a=m+1;
}while(b>=a);
return a-1;
}

636 :デフォルトの名無しさん:2006/03/16(木) 17:56:55
すいません。悩んでも悩んでも無理でした。。。
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
vectorが複数の要素を持っている。
要素はcharの配列をメンバに持つ構造体である。
vectorの要素が5個で、charの配列が[8]のとき、
2番目の要素のポインタを自動変数にコピーせよ。
vector<A> v_a;
typedef struct {
char str[8];
}B;
B b;
--------------------
b.strにデータをセットしたとする
--------------------
m_v.push_back(b);
↑5回繰り返す。

ここまではわかったんですが、その後がさっぱりです。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++ 6.0)
 [3.3] 言語: C++
[4] 期限: 2006/03/17 09:00まで
[5] その他の制限:制限はありません

宜しくお願いします。

637 :デフォルトの名無しさん:2006/03/16(木) 18:06:00
>>636
struct B {char str[8];};
B b;
strcpy(b.str, "Whee!");
std::vector<B> m_v(5, tmp);
char * autoVariable = m_v[2];
ってことか?

638 :デフォルトの名無しさん:2006/03/16(木) 18:28:24
>>636
え、よくわからんけど
こういうことじゃまいか?
struct A { char str[8]; } a;
std::vector<A> v_a;

//5個セット
strcpy(a.str, "aiueo");
v_a.push_back(a);
...

A *dst = &v_a[1];

要素はポインタをメンバに持ってないんだが要素のポインタってなんだ?

639 :デフォルトの名無しさん:2006/03/16(木) 19:39:54
業務に1票
理由:わけのわからん名前をつけてるから。

640 :デフォルトの名無しさん:2006/03/16(木) 19:42:43
おれはSTL使わせる課題なんて見たことないのぉ

641 :デフォルトの名無しさん:2006/03/16(木) 19:47:12
業務にもう一票。この時期そんな宿題はでない。
でも授業単元は情報処理w

642 :デフォルトの名無しさん:2006/03/16(木) 19:48:35
流れに乗って業務にもう1票

643 :デフォルトの名無しさん:2006/03/16(木) 19:55:06
[1] 授業単元: ゼミで出た話題
[2] 問題文:
1 から n までの数字が適当に並び替えられた列が入力として与えられる.「列から長さ 4 の部分列を選んで,その中を逆順にする」という操作だけを用いて元の列を巡回的になるように並び替えたい.

入力: 数 n,それに続いて 1 から n までの数が適当に並び替えられたもの.
出力: 可能のとき,手順を一ステップ毎表示する.逆順にした区間は [ ] で括る.実現する手順が複数あればどれを表示してもよい.不可能のときはimpossibleと表示.

入力例:
6 6 5 2 3 1 4
対応する出力例:
6 [1 3 2 5] 4
[2 3 1 6] 5 4
2 3 [4 5 6 1]

[3] 環境: 標準的な環境.言語はどちらでも可.
[4] 期限: 3/19 くらいまで.
[5] その他の制限: 特になし.

644 :デフォルトの名無しさん:2006/03/16(木) 20:03:49
これはいいネタがやってまいりました

645 :643:2006/03/16(木) 20:07:58
>>643 追加
・並び替えは最短手数のものを表示してください.
・n は高々256 とします.

646 :デフォルトの名無しさん:2006/03/16(木) 20:09:54
>>645
後から問題を付け足すのはやめましょう

647 :デフォルトの名無しさん:2006/03/16(木) 20:10:20
問題の意味が理解できない

648 :デフォルトの名無しさん:2006/03/16(木) 20:10:49
>>647
俺も

649 :デフォルトの名無しさん:2006/03/16(木) 20:14:04
ゲェー、最短手数?
総当りしか解き方を思いつかない俺にはだめだ

650 :643:2006/03/16(木) 20:17:15
>>646 すんません。
>>647-648
長さ 2 の列を選んで並び替えるのは(巡回を無視して)バブルソートですが,
それを長さ 4 の列でやりたい,ということです.
巡回ってのは 2 3 4 5 1 とか 4 5 1 2 3 みたいなのです.
分からないことがあったら聞いてください.

>>649
幅優先探索なら総当りでも最短性が保障できますが,
n! くらいのオーダーがかかるので n が 256 近いときに終わらない気がします.

651 :デフォルトの名無しさん:2006/03/16(木) 20:22:08
>>538使ってくれるかな?

652 :643:2006/03/16(木) 20:26:25
>>651 [1] を他のメンバーの評価(コメント)ということにして使います.

653 :デフォルトの名無しさん:2006/03/16(木) 20:26:34
追試のあとにごっついのきたなオイ

654 :デフォルトの名無しさん:2006/03/16(木) 20:35:18
>>643
元の列を巡回的になるように・・・
なんとなく理解した。
長さ5のとき。
4 3 2 1 5
ってのもアリにする?

655 :デフォルトの名無しさん:2006/03/16(木) 20:37:17
昇順っしょ

656 :643:2006/03/16(木) 20:37:57
>>654
逆順は駄目です.が,もし逆順でもいいなら簡単に解けるぞ,ということであれば
それはそれで面白いので,是非教えてください.

657 :デフォルトの名無しさん:2006/03/16(木) 20:46:10
どっちかというと数学の範疇な気がしなくも無い

658 :デフォルトの名無しさん:2006/03/17(金) 02:18:38
6 6 5 2 3 1 4のやつ
これ単調増加列とかじゃないけど
どんな列なのかいまいちわからん
例でいいから計算してみてよくわからん

659 :デフォルトの名無しさん:2006/03/17(金) 03:37:46
>>658
それ
6 5 2 3 1 4
の間違いっしょ

ちょっと考えればわかるだろ・・・

660 :デフォルトの名無しさん:2006/03/17(金) 03:57:32
最初の6はnの意味での6でしょ。んで残り6個が初期配置。

661 :デフォルトの名無しさん:2006/03/17(金) 04:20:13
宿題ではないのですが、面白いと思いまして。(スレ違いならそのようなスレに誘導をよろしくです
次の配置のものはどのような方針で作られますか
100
010
001

001
100
010
つまり、縦から見ても横から見ても 1 がひとつあるような全ての配置です

662 :デフォルトの名無しさん:2006/03/17(金) 04:32:38
とりあえず >>643 の例題は解けたけど、データによってはなかなか帰ってこなくなる。
無限ループにはならないと思うが。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1691.cpp

impossible にする条件がよくわかってない。
いつあきらめればいいんだろう。

あ、単純に過去のパターンをすべて覚えておいて、
既出パターンが生成されたらそこでやめればいいのか。


663 :デフォルトの名無しさん:2006/03/17(金) 04:42:07
>>643がうまくいかなくてついカッとなってやった

>>661
縦と横方向にかぶらないようにするだけだから簡単
#include <iostream>
#include <vector>
#include <algorithm>
const int size = 10;
int main(){
std::vector<int> v;
for(int i=0; i<size; ++i)v.push_back(i);
std::random_shuffle(v.begin(), v.end());
for(int y=0; y<size; ++y){
for(int x=0; x<size; ++x)std::cout<<(x==v[y])?'1':'0';
std::cout << std::endl;
}
return 0;
}

今は反省して>>662のソースみている

664 :デフォルトの名無しさん:2006/03/17(金) 04:49:03
どうでもいいんだが、>>662のコンパイラだと
#include <algorithm>
これいらんのか

665 :661:2006/03/17(金) 06:06:20
>>663
C++が不勉強で読めてないのですが、Cでの実現を考えると特殊なライブラリが必要になりそうですか

666 :デフォルトの名無しさん:2006/03/17(金) 06:21:19
>>665
そんなことない
一応これはC++のSTLつかってんだけど、どれもとても基本的な関数だからね

おれのやり方だと、まずわかりやすい基本の形として
1000
0100
0010
0001
みたいなのを考える
このデータの持ち方として
int array[4] = { 0, 1, 2, 3 };
とした
最初の要素に1行目の'1'の位置を格納
次の要素に2行目の'1'の位置を格納
って感じね
んで、この配列を好きに並べ替えればいいだけなのよ
>>663でいうと、random_shuffleでランダムに並び替えてるだけ
例えばarray[4] = { 2, 1, 3, 0 };
のときは
0010
0100
0010
1000
って感じになる

もっといい方法あるかもしれんけど

667 :666:2006/03/17(金) 06:23:29
>>666間違えた
> 0010
> 0100
> 0010
> 1000
じゃなくて
0010
0100
0001
1000
だった


668 :661:2006/03/17(金) 06:41:31
ども。勉強不足だ。つながらないや。primitiveとの関連が解決ずみかもわかんないのに。余地がありそうだ

669 :デフォルトの名無しさん:2006/03/17(金) 07:11:18
>>662
深さの見積もりが多分おかしい(といってもじゃあ一体どういう式にすべきか思いついてないけど)。
そのソースだと315624が解けない(回答は下記)。

長さ6だと操作による全パターン数は360になる。昇順パターンはそのうち6パターン。
ということはまんべんなく分布しているとみると最大60手かかる?

3 1 5 6 2 4
[6 5 1 3] 2 4
6 [2 3 1 5] 4
[1 3 2 6] 5 4
1 [5 6 2 3] 4
[2 6 5 1] 3 4
2 6 [4 3 1 5]
[3 4 6 2] 1 5
3 4 [5 1 2 6]
[1 5 4 3] 2 6
1 [2 3 4 5] 6

670 :デフォルトの名無しさん:2006/03/17(金) 07:14:28
ごめん>>669はまちがい、さらに短いのがあった。
深さを1ずつ増やしながら順次まわしてけばいいかも。

671 :デフォルトの名無しさん:2006/03/17(金) 07:16:01
…って、それが幅優先かorz

672 :デフォルトの名無しさん:2006/03/17(金) 07:27:43
近いほうでいいから最大30手か?

673 :デフォルトの名無しさん:2006/03/17(金) 07:52:10
連投すまんがさらに間違い。
長さ6だと操作による群のパターン数は360だが、昇順パターンはそのうち3パターン。
(123456,345612,561234)と(234561,456123,612345)は違う群を作る。なので解けるパターンは720パターン。
あと分布空間は長さ6だと少なくとも3次元(多分4次元)なので、最大手数はもっと少ないかもしれん。

674 :643:2006/03/17(金) 08:09:08
>>643
本人ですが,とりあえず深さ優先を書いてみました.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1692.cpp

>>672
全探索かけたら n = 6 では 9 手が最長ということになりました.

>>669
反復深化ですね.アリかも.

675 :643:2006/03/17(金) 08:11:19
>>674>>669>>670 の間違い

676 :643:2006/03/17(金) 08:46:36
連続投稿すみません.impossible が不十分ですが反復深化してみました.
幅優先の実装が悪いせいもありますが,こっちのほうが早いです.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1693.cpp

幅優先をいくらか走らせたら,可能の場合は短手数でできるようなので,
こっちでimpossible をやる前に判定できれば,満足できる気がします.

677 :デフォルトの名無しさん:2006/03/17(金) 09:17:33
>>643
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1694.txt
幅優先で書いたけど遅いー

678 :デフォルトの名無しさん:2006/03/17(金) 12:19:35
>>643
循環するようにってことだね?
巡回と循環じゃ随分意味が違う

679 :デフォルトの名無しさん:2006/03/17(金) 12:23:25
うろ覚えですまんが、
15パズルはピースの入れ替えが複数個じゃないと解けない
っていうのがあった気がする。
同様にこの循環(巡回?)パズルも簡単なルールを発見できると面白そうね。

680 :デフォルトの名無しさん:2006/03/17(金) 14:27:09
>>643
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1695.cpp

スマートポインタがあればもっときれいに書く。
# 無くてもきれいに書くべき何だろうけど、動的メモリを解放しなきゃいけないことに気づいたときにはもうほとんど書き上がっていた

681 :デフォルトの名無しさん:2006/03/17(金) 14:32:41
ごめん、charじゃ範囲足りない(かもしれない)。intかunsigned charだ。

682 :デフォルトの名無しさん:2006/03/17(金) 19:12:03
スレ違いを承知してるけど、ここのC++使いたちはどんな本で勉強したのでつか?
書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?

683 :デフォルトの名無しさん:2006/03/17(金) 19:16:25
C++知らないけど
かなり面倒くさそう

684 :デフォルトの名無しさん:2006/03/17(金) 19:32:22
>>643が解けない腹いせに答えてみる。

>ここのC++使いたちはどんな本で勉強したのでつか?
俺はwebで勉強してとりあえず書けるようになった後、
「プログラミング言語C++」を読んだ。

>書店でAccelerated C++って本を見付けたんだけど、これいい本なのかな?
Amazonで初めの数ページを見てみた限りではまともな事が書いてある。
入門書として優れているかは別の話だが。

685 :デフォルトの名無しさん:2006/03/17(金) 22:02:59
宿題なんですが、乱数の意味を知ってても
使い方がよくわかりません。
2問なんですが・・。
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):

問題1
要素数10の配列に乱数で値(1から100)が設定してある。
最大値のある場所を求める。同じ値があったらどうするか。

問2
2つの要素数100の配列に乱数で値(1から10)が設定してある。
2つの配列の同じ内容の場所を求める。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: いつでも
[5] その他の制限:
お願いしますm。



686 :デフォルトの名無しさん:2006/03/17(金) 22:17:26
>>685
「同じ値があったらどうするか。」ってのは問題文なのか?

687 :デフォルトの名無しさん:2006/03/17(金) 22:21:42
問1に吹いたwwww

問2もあいまいだな。
2つの配列の同じ内容って、
A[index] == B[index];
が真となる最初のindexの場所を探せってことか?


688 :デフォルトの名無しさん:2006/03/17(金) 22:31:33
最初だけじゃなくて全部じゃないのか?

689 :デフォルトの名無しさん:2006/03/17(金) 22:32:04
漏れが引き受けた
しばし待たれよ

690 :685:2006/03/17(金) 22:33:45
問題文ですね・・
よく確認したら「同じ値があったらどうする の か」
「の」が抜けてました、すみません。
それでも意味がわかりませんよね。

>687さんが言うとおり
問題2は配列は別で要素数は同じだと思います。

691 :デフォルトの名無しさん:2006/03/17(金) 22:36:41
ばか

692 :デフォルトの名無しさん:2006/03/17(金) 22:38:26
期限がいつでもってのも意味不明だよな

693 :デフォルトの名無しさん:2006/03/17(金) 22:52:47
>>685
俺が思ったとおりに作った
後悔は・・・・してるかもしない
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1696.txt

694 :685:2006/03/17(金) 23:37:59
>>693
有難うございます。ちゃんと表示できました。
意味不明な問題を解いてもらって申し訳ない(汗

他の問題も悩んで解いていて寝不足気味なので、
すみませんが寝ますね・・

695 :デフォルトの名無しさん:2006/03/18(土) 00:07:41
3 1 5 6 2 4がなんで[6 5 1 3]を選択できるの?
[6 5 1 3] 2 4

696 :デフォルトの名無しさん:2006/03/18(土) 00:32:46
3 1 5 6 2 4
のうち、"3 1 5 6"の部分を選んで逆転させた、という表示が
[6 5 1 3] 2 4

697 :デフォルトの名無しさん:2006/03/18(土) 00:39:29
よくわかってないんだけど、長さが4つの列を
適当に選んで逆順にしていって結果的にソートして
ある状態にすればいいってこと?
 条件は最適解だせよってことでOK?

698 :デフォルトの名無しさん:2006/03/18(土) 00:45:32
>>697
n=256まで対応(>>645)。

699 :デフォルトの名無しさん:2006/03/18(土) 01:06:09
長さのnの列から部分列4を選んで
並び替えろって話なんだな
簡単かなぁ何使って求めようかな

700 :デフォルトの名無しさん:2006/03/18(土) 01:32:13
え、、ただ4列選んで逆にするだけなの?

701 :デフォルトの名無しさん:2006/03/18(土) 01:48:22
連続した4要素な。

702 :661:2006/03/18(土) 01:52:33
Cに書き換えることができませんでした。>>661をお願いできませんか

703 :デフォルトの名無しさん:2006/03/18(土) 02:00:56
>>702
つまり
010
100
001
をCで表示しろってことか?

704 :661:2006/03/18(土) 02:02:26
そうです。縦からも横からも同じにみえるように

705 :デフォルトの名無しさん:2006/03/18(土) 02:54:11
全部出力するのか?
それともランダムで1つだけ出力するのか?

706 :デフォルトの名無しさん:2006/03/18(土) 02:59:22
>>661
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1697.txt
一応出来た。

707 :デフォルトの名無しさん:2006/03/18(土) 03:07:31
すこぶる強引にできた
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 15
int main(void){
int num[MAX][MAX]={0},i,k,x,y,swap;
int list[MAX];
srand(time(NULL));
for(i=0;i<MAX;i++){
num[i][i] = 1;
list[i] = i;
}
for(i=0;i<MAX;i++){
x = rand()%MAX;
y = rand()%MAX;
if(x!=y){
swap = list[x];
list[x] = list[y];
list[y] = swap;
}
}
for(i=0;i<MAX;i++){
for(k=0;k<MAX;k++){
printf("%d ",num[list[i]][k]);
}
puts("");
}
return 0;
}

708 :デフォルトの名無しさん:2006/03/18(土) 03:16:25
>>661ってN-Queen問題を簡単にした奴か?

709 :デフォルトの名無しさん:2006/03/18(土) 03:53:11
>>679を見て思ったが・・
連続した4つを逆順にする操作は、隣同士の数の置換を6回(偶数回)するので、
答えにたどり着くまでには、隣同士の置換は偶数回行われるはず。

てことは、nが偶数なら、半分(奇置換で辿り付く分)は解けないことになるのかな。
例えば、123456と612345は奇数回の置換で結びつくから、
123456から612345へは4つを逆順にする操作ではたどり着けない。
でも、nが奇数だと、列を巡回させるのは、偶数回の置換で可能だから、
こういうことは言えないか。


710 :デフォルトの名無しさん:2006/03/18(土) 04:08:18
ん?逆か。
nが偶数で、問題文が123456..に対して奇置換での操作で作られたものなら、
612345(と、そこから偶置換でたどり着ける答え)を目指せばいいのか。
nが奇数だと、どう巡回させても偶奇を変えられないから、
答えにたどり着けない配位が出てくるのか・・。


711 :デフォルトの名無しさん:2006/03/18(土) 04:44:06
みんなはコマンドプロンプトの背景と文字は何色にしてる?

712 :デフォルトの名無しさん:2006/03/18(土) 04:44:57
背景青
文字白

713 :デフォルトの名無しさん:2006/03/18(土) 04:57:19
デフォルト

714 :デフォルトの名無しさん:2006/03/18(土) 05:03:55
背景も文字も黒w

715 :デフォルトの名無しさん:2006/03/18(土) 11:03:47
>>709-710
事実として、個数(=n)/全パターン数(=n!)/解けるパターン数
4/24/8
5/120/10
6/720/720
7/5040/2520
8/40320/40320
9以上は時間の関係上未探索。
5以下は特例とすると、偶数だと全パターンとけて奇数だと半分とけないってことになる?

716 :デフォルトの名無しさん:2006/03/18(土) 11:07:11
補足。
個数(=n)/全パターン数(=n!)/解けるパターン数/最大最適置換回数
4/24/8/1
5/120/10/1
6/720/720/9
7/5040/2520/7
8/40320/40320/9

717 :643:2006/03/18(土) 11:30:05
>>715
証明できました.以下 n ≧ 6 とします.

補題:任意の偶置換を連続する4要素のリバースで実現できる.
証明:
偶置換は三要素の巡回置換に表せるので,三要素の巡回置換が表せれば十分.そのためには,列 [...,a,b,c,...] を [...,b,c,a,...] に移せればいい(ただし左右の ... は動かさない).
この置換は,右側に3つ以上スペースがある場合は8手でできる.右側に2つ以上,左側に1つ以上のスペースがある場合は9手でできる(手順省略).
長さを 6 以上に制限しているので,かならずこのどちらかの条件か,左右を入れ替えた条件が成立するのですべて実現できた.//

定理:n が偶数の場合はすべて解け,奇数の場合は半分解けない.
n が偶数のときは列全体の巡回置換が奇置換になるので,4要素の入れ替えと全体の巡回置換を合わせてすべての置換を生成する.n が奇数のときは偶置換になるので,奇置換のものは生成できない.//

718 :デフォルトの名無しさん:2006/03/18(土) 11:50:30
>>717
>>678
間 違 っ た 日 本 語 を い つ ま で も 使 い 続 け る の は な ぜ ?

719 :デフォルトの名無しさん:2006/03/18(土) 12:06:57
>>718
どうでもいい。

それから、「巡回置換」は正しい術語。

720 :デフォルトの名無しさん:2006/03/18(土) 14:03:22
どうでもいいわきゃないがそれはともかく
>「巡回置換」は正しい術語。
アラやだ恥ずかしい

721 :デフォルトの名無しさん:2006/03/18(土) 14:11:26
>>720 え?普通に巡回置換って言うけどなぁ。

722 :デフォルトの名無しさん:2006/03/18(土) 14:14:37
巡回置換。ぐーぐるセンセでもたくさんヒットする。
言葉を正確に使いたい気持ちはわかるんだが、
人に強制はしないほうがいいと思う。
たまに、自滅する。(漏れも、以前は良くやった)

相手の意図を汲み取るのに力を割いたほうが
人生、幸せになると思うんだ。

723 :デフォルトの名無しさん:2006/03/18(土) 14:44:50
>>717
ということは6以上でimpossibleになるのは、
要素数が奇数でバブルソートしたときに交換回数が奇数のものってことでOK?

そうでなければ反復深化してればいつかは解けるってことかな。
(まぁそのいつかをどれだけ早くするかが問題なわけだが。)

724 :643:2006/03/18(土) 15:38:54
>>723
OKです.

ただ反復深化だと,n = 12 くらいが限界っぽいですね.
指数かかるアルゴリズムなので,仕方が無いんですが.

725 :デフォルトの名無しさん:2006/03/18(土) 15:47:55
>>643
なんか文字列探索のアルゴリズムと同じような気がしてきたよ。
久しぶりにマジメに考えてみよう。

726 :デフォルトの名無しさん:2006/03/18(土) 18:04:06
・出現パターンをノードに多分木を作って、循環が見つかったらそれをリーフとし、
 そこからルート向かって集めたノード列が答えになる。

・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
 それ以上深く探索するのは無駄。したがって無効ノードになる。
・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。

・子ノード生成深度を1づつ深くしてゆくと、どこかでリーフが見つかるか、
 ルートノードが無効ノードになるのでそこで探索終了。
・ルートが無効になったときが、すなわちimpossible。


727 :デフォルトの名無しさん:2006/03/18(土) 18:07:17
補足
多分木のルールは、あるパターンに1回操作したとき生成されるパーン群を、子ノードとする。


728 :デフォルトの名無しさん:2006/03/18(土) 18:11:20
あと、子ノードは幅優先で生成するってことで。

729 :デフォルトの名無しさん:2006/03/18(土) 18:14:01


730 :726:2006/03/18(土) 18:18:43
ポイントはここ

>・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。

これによって、あるノードが無効化されたとき、親の方向へ向かってノードの無効が発生する。
そして解がない場合には、最終的にノードの無効化がルートノードにまで達してしまう。

731 :デフォルトの名無しさん:2006/03/18(土) 18:32:32
それって BFS 木を陽に作ってるだけじゃないの?
何にせよ実装キボンヌ

732 :http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:55:48
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?


733 :デフォルトの名無しさん:2006/03/18(土) 18:56:16
>>732
マルチしね

734 :デフォルトの名無しさん:2006/03/18(土) 19:51:23
>>685
もう答えでてるみたいだけど。
問2
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

main(){
int cnt,a[100],b[100];
srand(time(NULL));
for(cnt=0;cnt<100;cnt++){
a[cnt]=rand()%10;
b[cnt]=rand()%10;
if(a[cnt]==b[cnt]){
printf("%d,",cnt);
}
}
printf("\n");
return 0;
}

735 :デフォルトの名無しさん:2006/03/18(土) 20:27:46
>>726
問題は
>・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
これのサイズと
>・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
> それ以上深く探索するのは無駄。したがって無効ノードになる。
これの早さ。
順列はハッシュ化できるのでハッシュマップにすれば早さはかせげるが要素数14で1GBをこえてしまう。
線形探索だと要素数と手数が増えた時点でかなり遅くなる。
ハッシュ値を無限精度整数にして二分探索すればましかもしれないがサイズの問題は以前として残る。

最大手数を見積もるか、一番近い巡回列(循環列?)までの距離がわかれば改善されるのだろうが…。

736 :デフォルトの名無しさん:2006/03/19(日) 01:06:57
[1] 授業単元: 脳内
[2] 問題文(含コード&リンク):
マルコフ連鎖プログラムの日本語版を作成せよ
[3] 環境
 [3.1] OS: コンソール
 [3.2] コンパイラ名とバージョン: メジャーなコンパイラで通ること
 [3.3] 言語: C/C++どちらでも可
[4] 期限: [無期限]
[5] その他の制限: ライブラリは標準ライブラリのみ
漢字コードはプログラム作成上都合のよいものを選択してよい



737 :デフォルトの名無しさん:2006/03/19(日) 01:27:33
最適置換回数は9個のとき9手、10個のとき11手。
11個は30分以上かかりそうなので求めてない。

738 :709:2006/03/19(日) 02:06:42
>>643
なるほど!
偶置換は三要素の巡回置換で表せる事実から出発すると、
簡潔に証明できるんだな・・。
任意の偶置換を4要素のリバースのみで実現することによって
証明しようとしたまではいいけど、力業に走って
ゴチャゴチャしてきて投げてしまった。結構面白かった。


739 :デフォルトの名無しさん:2006/03/19(日) 03:32:43
>>736
Java Applet版が下にありますね。
ttp://www.cc.rim.or.jp/~knagasa/jmarkov/jmarkov.html
自分が書いた文章を入れてみたら結構笑えたが、
作成対象としてはいまいち食指が…。

740 :デフォルトの名無しさん:2006/03/19(日) 15:59:32
巡回対称性を用いたら探索空間を1/nに減らせる…と思ったのだが、
置換操作に巡回対称性がないためだめだったorz

741 :デフォルトの名無しさん:2006/03/19(日) 19:42:37
春になったらまた初心者を虐めてやろうではないか

742 :デフォルトの名無しさん:2006/03/19(日) 20:01:22
>>741
調子に乗って恥をかかないようにな

743 :デフォルトの名無しさん:2006/03/19(日) 21:31:21
[1]授業単元:無し
[2] 問題文:
2つの整数値を入力し、合計とビット毎のAND、OR、XORの結果の
2進数を表示するプログラムの作成。
実行結果イメージ
第1値   :100
第2値   :200
合計    :0000 0001 0010 1100
論理積   :0000 0000 0100 0000
[3] 環境
 [3.1] OS:windowsXP
 [3.2] Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限: 無いです

2進数へ変換する為に2で割った余りを文字列に格納してそれを逆順に表示
させるという方針を立てたのですがどうコーディングしたらよいのかがわからないです。
よろしければお願いいたします

744 :デフォルトの名無しさん:2006/03/19(日) 22:13:51
>>743
#include <stdio.h>
#define swap( Type, x, y ) do { Type tmp; tmp = x; x = y; y = tmp; } while (0)
char *reverse_string( char *str )
{
char *start = str, *end = str;
while ( *++end );
--end;
while ( start < end ) { swap( char, *start, *end ); ++start; --end; }
return str;
}
char *get_binary_expression( int n, char *buf )
{
char *p = buf;
while ( n ) { *p++ = '0' + n % 2; n /= 2; }
*p = '\0';
return reverse_string( buf );
}
int main( void )
{
int a, b;
char buf[1024];
printf( "Input First Integer> " ); scanf( "%i", &a );
printf( "Input Second Integer > " ); scanf( "%i", &b );
printf( "First: %s\n", get_binary_expression(a,buf) );
printf( "Second: %s\n", get_binary_expression(b,buf) );
printf( "Sum: %s\n", get_binary_expression( a+b, buf ) );
printf( "AND: %s\n", get_binary_expression( a&b, buf ) );
printf( "OR: %s\n", get_binary_expression( a|b, buf ) );
printf( "XOR: %s\n", get_binary_expression( a^b, buf ) );
return 0;
}

745 :デフォルトの名無しさん:2006/03/19(日) 22:21:36
>>743
#include <stdio.h>
#define bit(x, n) ((x & 1<<n)>>n)
typedef int WORD;

int main(void)
{
WORD wo1, wo2; WORD woSum, woAnd, woOr, woXor; int i;
printf("第1値: "); scanf("%d", &wo1); printf("第2値: "); scanf("%d", &wo2);
woSum = wo1 + wo2;
woAnd = wo1 & wo2;
woOr = wo1 | wo2;
woXor = wo1 ^ wo2;
printf("合計: "); for (i=15;i>=0;--i) {
printf("%d", bit(woSum, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("論理積: "); for (i=15;i>=0;--i) {
printf("%d", bit(woAnd, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("論理和: "); for (i=15;i>=0;--i) {
printf("%d", bit(woOr, i));
if (!(i%4)) printf(" "); }
printf("\n");
printf("排他的論理和: "); for (i=15;i>=0;--i) {
printf("%d", bit(woXor, i));
if (!(i%4)) printf(" "); }
printf("\n");
return 0;
}

746 :デフォルトの名無しさん:2006/03/19(日) 22:24:17
>>743
#include <stdio.h>
int main(){
int bit[32],a,b,and,xor,or,i;
printf("第1値->");scanf("%d",&a);
printf("第2値->");scanf("%d",&b);
and=a&b;xor=a^b;or=a|b;printf("and:");
for(i=0;i<=31;i++){
bit[31-i]=(and>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");
printf("%d",bit[i]);
}
printf("\nxor:");
for(i=0;i<=31;i++){
bit[31-i]=(xor>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");
printf("%d",bit[i]);
}
printf("\nor: ");
for(i=0;i<=31;i++){
bit[31-i]=(or>>i)&1;
}
for(i=0;i<=31;i++){
if(i%4==0)printf(" ");printf("%d",bit[i]);
}
return 0;
}

747 :デフォルトの名無しさん:2006/03/19(日) 22:30:48
>>744-746
ありがとうございます。
ソースを参考にコーディングの方法を勉強したいと思います<(_ _)>

748 :デフォルトの名無しさん:2006/03/19(日) 22:32:18
>>743の人気に嫉妬

749 :743:2006/03/19(日) 22:58:28
>>746を参考にこういうコードを書きました
#include <stdio.h>
int Bin(int x);
int main(){
unsigned int a,b;
printf("第1値   :");scanf("%d",&a);
printf("第2値   :");scanf("%d",&b);
printf("\n合計    :");
Bin(a+b);
printf("\n論理積   :");
Bin(a&b);
printf("\n論理和   :");
Bin(a|b);
printf("\n排他的論理和:");
Bin(a^b);
return 0;
}
int Bin(int x){
int buf[16],i;
for(i=0;i<=15;i++){
buf[15-i]=(x>>i)&1;
    }
for(i=0;i<=15;i++){
if(i%4==0){
printf(" ");
}
printf("%d",buf[i]);
   }
return 0;
}

750 :デフォルトの名無しさん:2006/03/19(日) 23:04:38
そうか

751 :デフォルトの名無しさん:2006/03/20(月) 00:02:18
>>736
VC6,Shift-JISでやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1698.txt
トークン化のアルゴリズムがいまいちで面白くないかもしれん。

752 :デフォルトの名無しさん:2006/03/20(月) 00:09:03
漏れも自分の小説を>739に入れたらおかしくてげらげら笑っているうちに作る気なくしたw
自分を見失わずに仕上げた>751は偉い。

753 :デフォルトの名無しさん:2006/03/20(月) 00:12:35
>>751修正
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1699.txt
標準ライブラリのみという条件を見落としていた。
標準入出力をバイナリモードにするのを止め。#pragmaは許してくれ。

754 :デフォルトの名無しさん:2006/03/20(月) 03:08:25
>>742
(ノ´∀`*)

755 :デフォルトの名無しさん:2006/03/20(月) 15:41:45
自分のHPを表示したらfirefoxがクラッシュした・・・orz

756 :デフォルトの名無しさん:2006/03/20(月) 16:01:37
m9(^Д^)プギャーッ

757 :755:2006/03/20(月) 18:45:51
感動の実話です

758 :643:2006/03/20(月) 18:54:36
ゼミやってきました.報告テンプレ使うと予告したので使います.

[1] 先生の評価: (他のメンバーの評価ということで)
結局指数のアルゴリズムなので,まあそんなものか,という感じでした.
存在に関する議論と同じようにすれば最適とは限らない手順は多項式で作れるので,それを簡約化できないかという意見などが出ました.
[4] 回答者にコメント(愚痴等は禁止):
100レス程度付き合っていただきありがとうございました.

759 :デフォルトの名無しさん:2006/03/20(月) 21:27:15
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):コマンドプロンプト上で動く、実用的なプログラムを作りなさい。例)電卓
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:[2006年03月21日23:59まで]
[5] その他の制限:習ったもの↓
printf,scanf,if,else if,switch,for,while,多重ループ,1次元配列,2次元配列,strcpy,strlen,sqrt等

宜しくお願いします。

760 :デフォルトの名無しさん:2006/03/20(月) 21:29:11
#include <stdio.h>

int main() {
for(;;)
printf("単位ください!\n");
}


761 :デフォルトの名無しさん :2006/03/20(月) 21:35:51
ファイルを読み込んで別ファイルに書き出す
#include<stdio.h>

int main(int argc , char *argv[])
{
FILE *in,*out;
int c;

if( argc < 2 ){
printf("ファイルを指定してください\n");
return 0;
}

if((in = fopen( argv[1], "r")) == NULL){
printf("ファイルをオープンできません");
return 1;
}
if((out = fopen( argv[2],"w")) == NULL){
printf("ファイルをオープンできません");
return 1;
}
while((c = fgetc(in)) != EOF){
fputc(c,out);
}
fclose(in);
fclose(out);

return 0;
}

762 :759:2006/03/20(月) 21:46:31
因みに、高校1年レベルで良いです。

763 :デフォルトの名無しさん:2006/03/20(月) 21:55:45
>>761
先生!
#0A0A0A色で塗ったビットマップをコピーすると#0D0A0Dと#0A0D0Aのストライプになってしまいます!
ファイルサイズも倍近くになってしまいます!
こんな恣意的な質問をする生徒はどうしたらいいでしょうか?

764 :デフォルトの名無しさん:2006/03/20(月) 22:35:57
>>763
"b" を指摘したいんかw?

765 :デフォルトの名無しさん:2006/03/20(月) 23:41:53
あー、つまんね。

766 :デフォルトの名無しさん:2006/03/20(月) 23:47:22
昼寝してしまって寝付けないのでおもしろい宿題捏造してください。

767 :デフォルトの名無しさん :2006/03/21(火) 00:11:19
じゃあ問題
[1] 授業単元:脳内+過去問
[2] 問題文 以下のC言語ソースで表示される盤面で*で囲まれている+の部分を数値か何か
別の文字で埋めよ
[3] 環境 :特に決まり無し
[4]期限無し。

#include <stdio.h>#include <stdlib.h>#include <time.h>
void get_randam(int block[16][16]);
int main(void){int block[16][16];/*ブロック数*/int i,j;/*for用*/time_t t;t =time(&t);
srand(t);get_randam(block);for(i = 0; i < 16; i++){for(j = 0; j < 16; j++){block[i][j] ;
if(block[i][j] == 1) printf("%2c",'*');else if (block[i][j] == 0) printf("%2c",'+');
if(j == 15) putchar('\n');}}return 0;}void get_randam(int block[16][16])
{int i = 0, j = 0;/*for用*/int x = 0;/*ランダム数用*/for(i = 0; i < 16; i++){for(j = 0; j < 16; j++){
x = rand() % 2;if(x == 0)block[i][j] = 0;else if (x == 1)block[i][j] = 1;}}}

768 :デフォルトの名無しさん:2006/03/21(火) 00:29:03
>>766
>>759向けに高校1年レベルの実用的なプログラムということで考えたのだが
明日デートで早めに寝なきゃならんので代わりに作ったってくれ。

[2] 問題文(含コード&リンク):
xの三次関数とxの最小値・最大値を入力として受け取り、
三次関数全体の増減表と概形、与えられたxの範囲での関数の最大値・最小値を出力するプログラムを作れ。
関数の入力の仕方、概形の出力の仕方は各自で工夫すること。
xの最小値・最大値はいずれかまたはその両方を未入力とすることもできるようにする。
[1][3][4][5] >>759に順ずる。

769 :デフォルトの名無しさん:2006/03/21(火) 00:54:22
>767

囲まれてるってのは8方向全部で囲まれてるってこと?

770 :デフォルトの名無しさん:2006/03/21(火) 01:04:09
>>768
三次関数忘れた。ごめん、むり。

771 :デフォルトの名無しさん:2006/03/21(火) 01:12:07
y = x^3
こういうやつだよ

772 :デフォルトの名無しさん:2006/03/21(火) 01:15:19
うん、それはわかるけどさ、最大値とか最小値とかグラフとか
思い出すところから始めるとか、暇潰しのテンションではむりぽ

773 :デフォルトの名無しさん:2006/03/21(火) 01:17:27
y=ax^3+bx^2+cx+dだな
微分してその解が0になるxから極値が求まるぞ

774 :デフォルトの名無しさん:2006/03/21(火) 01:18:53
とりあえず、適当な感覚で 三次関数 f(x) の値を列挙するところから始めれ。

775 :デフォルトの名無しさん:2006/03/21(火) 01:20:53
structが使えないとやってられないわけだが。

776 :デフォルトの名無しさん:2006/03/21(火) 01:21:51
>>775
おまえは全国300万人のN88BASIC野郎を敵に回した

777 :デフォルトの名無しさん:2006/03/21(火) 01:22:09
習って無くてもstructぐらいいいだろー?
ちょっとぐらいCを自分で学んでたら絶対に知ってるだろうし

778 :デフォルトの名無しさん:2006/03/21(火) 01:23:32
でも概形ってムリだな

779 :767:2006/03/21(火) 01:44:46
一つの座標に対して上下左右や四方八方だけなら簡単だけど
例えば
*****
*+++*
*++*
***
のような部分を
*****
*111*
*11*
***
のようにする。


780 :デフォルトの名無しさん:2006/03/21(火) 01:54:42
よくわからんが上下左右の外郭から到達できないすべての+が該当するんじゃねーの?

781 :デフォルトの名無しさん:2006/03/21(火) 02:05:16
>>779
----略-----
for(i=0; i<16; i++)
for(j=0; j<16; j++){
if(block[0][j]==0) block[0][j]=2;
else if(block[15][j]==0) block[15][j]=2;
else if(block[i][0]==0) block[i][0]=2;
else if(block[i][15]==0) block[i][15]=2;
}
for(k=0; k<16; k++)
for(i=0; i<16; i++)
for(j=0; j<16; j++)
if(block[i][j]==0){
if(block[i-1][j]==2) block[i][j]=2;
else if(block[i][j-1]==2) block[i][j]=2;
else if(block[i][j+1]==2) block[i][j]=2;
else if(block[i+1][j]==2) block[i][j]=2;
}
puts("------変換しました------");
for(i = 0; i < 16; i++)
for(j = 0; j < 16; j++){
block[i][j] ; // これ必要ないだろ?
if(block[i][j] == 1) printf("%2c", '*');
else if (block[i][j] == 0) printf("%2c", '#');
else if (block[i][j]==2) printf("%2c", '+');
if(j == 15) putchar('\n');
}
return 0;
}
こんな感じか?

782 :デフォルトの名無しさん:2006/03/21(火) 02:05:28
つまりお絵かきそふとのpaintでつか。

783 :デフォルトの名無しさん:2006/03/21(火) 02:28:55
>>767
解法其の一 : 力業
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=27366

うまいアルゴリズム思い付かんかったです。
>>767 のプログラムの出力をパイプでわたすと解きます
一応 16x16 じゃないのにも対応したつもり。メモリとかデータエラーのチェックはいいかげん。
だれかうまいアルゴリズム考えて

784 :デフォルトの名無しさん:2006/03/21(火) 02:44:39
>>767
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void get_randam(int block[16][16]) {
  int *p;
  for(p = &block[0][0]; p <= &block[15][15]; p++) *p = rand() % 2;
}
void paint(int block[16][16], int x, int y){
  if( block[y][x] != 0) return;
  block[y][x] = 2;
  paint(block, x+1, y); paint(block, x-1, y); paint(block, x, y+1); paint(block, x, y-1);
}
void make_ans(int block[16][16]){
  int i, *p;
  for(i = 0; i < 16; i++){
    paint(block, 0,i); paint(block, 15,i); paint(block, i,0); paint(block, i,15);
  }
}
int main(void){
  int block[16][16], *p, i = 0;
  srand(time(NULL));
  get_randam(block); make_ans(block);
  for(p = &block[0][0]; p <= &block[15][15]; p++, i++){
    switch(*p){
    case 0: printf(" 1"); break;
    case 1: printf(" *"); break;
    case 2: printf(" +"); break;
    default:printf("  "); break;
    }
    if(i % 16 == 1) putchar('\n');
  }

785 :784:2006/03/21(火) 02:51:25
改行条件がおかしいか?
i 初期値を = 1 として、 if(i % 16 == 0) putchar('\n'); とすればいいか・


786 :767:2006/03/21(火) 03:00:52
すごいね
俺、解答が解らないから書き込んだけど
やっぱ、頭のいい人は違うは
解答を見て勉強さして頂きます。

787 :784:2006/03/21(火) 03:18:36
16 を N, 15 を N-1 とおきかえれば、任意の大きさに対応できるけど、
Nを大きくすると再帰のネストがドンドン深くなって、しまいにはプログラムが落ちます。
うちの環境だと、N = 50 で落ちたり落ちなかったりする。メモリ1G実装。

788 :784:2006/03/21(火) 03:26:53
よくみたらバグってる。paint() の判定の最初に、x, yが負なら処理しないようにしないと駄目だ。


789 :デフォルトの名無しさん:2006/03/21(火) 03:33:19
N=50で落ちるのはバグの性だったようです。これならN=100でも落ちない。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 16
void get_randam(int block[N][N]) {
  int *p; for(p = &block[0][0]; p <= &block[N-1][N-1]; p++) *p = rand() % 2;
}
void paint(int block[N][N], int x, int y){
  if( x<0 || y<0 || x>=N || y>=N || block[y][x] != 0) return;
  block[y][x] = 2;
  paint(block, x+1, y); paint(block, x-1, y); paint(block, x, y+1); paint(block, x, y-1);
}
void make_ans(int block[N][N]){
  int i;
  for(i = 0; i < N; i++){
    paint(block, 0,i); paint(block, N-1,i); paint(block, i,0); paint(block, i,N-1);
  }
}
int main(){
  int block[N][N], *p, i = 1; 
  srand(time(NULL)); get_randam(block); make_ans(block);
  for(p = &block[0][0]; p <= &block[N-1][N-1]; p++, i++){
    switch(*p){
    case 0: printf(" 1"); break;
    case 1: printf(" *"); break;
    case 2: printf(" -"); break;
    default:printf(" E"); break;
    }
    if(i % N == 0) putchar('\n');
  }
}

790 :デフォルトの名無しさん:2006/03/21(火) 05:17:44
誰か暇なおれに問題を投下してくれ。
専門的なやつとか数値計算とかはやめてくれw
簡単なやつでいい、頼む。


791 :デフォルトの名無しさん:2006/03/21(火) 05:27:09
ほい
[1] 授業単元:PKU JudgeOnline 1000
[2] 問題文(含コード&リンク): http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1000
要約
ともに0以上10以下の二つの整数を標準入力で受け取り
その和を標準出力に表示せよ

[3] 環境
 [3.1] OS: たぶんWindows
 [3.2] コンパイラ名とバージョン: gccもある
 [3.3] 言語: CとかC++とかいろいろ
[4] 期限: 無い無い
[5] その他の制限: ナイナイ

なんか競いたいならソースの最小容量目指すとか
現在トップは25byteだな

792 :デフォルトの名無しさん:2006/03/21(火) 05:30:29
>>790
Hello World!!と表示するプログラムを作成せよ。

793 :デフォルトの名無しさん:2006/03/21(火) 05:40:00
>>791
25byte絶対無理

794 :790:2006/03/21(火) 05:48:20
>>791
競うつったてコンパイラが違うじゃん

795 :デフォルトの名無しさん:2006/03/21(火) 05:52:04
>>794
同じコンパイラのだけリストアップしてコード長見ればいいんじゃん?

http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1000&language=5&orderby=clen

796 :デフォルトの名無しさん:2006/03/21(火) 06:15:44
>>795
あ、ごめん実行ファイルのサイズかと思ってた
ソースのサイズだったのか
65文字が限界のようだ
25文字のソースが見たいわ

797 :デフォルトの名無しさん:2006/03/21(火) 06:24:57
#include"/WINDOWS/Temp/a"

798 :デフォルトの名無しさん:2006/03/21(火) 06:27:45
main(a,b){scanf("%d%d",&a,&b);printf("%d",a+b);}
これで通るっぽいが48バイトか
43バイトも遠いな

799 :デフォルトの名無しさん:2006/03/21(火) 06:44:43
よくわからんが、プログラムが保存されていることを期待して、
main() {system("./prog");}
というのはどうだろう。
(無論、progを作るプログラムを別途走らせるんだが)

800 :デフォルトの名無しさん:2006/03/21(火) 06:51:48
>>799
それが許されるなら25バイトを軽く切るな

801 :デフォルトの名無しさん:2006/03/21(火) 06:58:42
いくつかの異なってる値が飛んできてるようなので
対応する値をテーブルに入れておいて乱数で選択
何度か送ればいつか AC

802 :デフォルトの名無しさん:2006/03/21(火) 07:02:41
>>801
どういうこと?
ランクインされてるやつは偽装してるってこと?

803 :デフォルトの名無しさん:2006/03/21(火) 07:04:49
>>801 それっぽ

804 :デフォルトの名無しさん:2006/03/21(火) 07:28:47
>>802
これを偽装というかどうかは難しいけど、ランクインするためには必要。

乱数まで使うのはアレだけど、あらかじめ結果を計算しておく手法は
しばしば使われていて、特に入力が無い問題だとそれがベストな場合も多い。
例えば↓なんかは、事前計算無しでも解けるけど事前計算のほうが遥かに簡単。
http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1320

805 :デフォルトの名無しさん:2006/03/21(火) 07:45:07
送信して相手の応答を見るのがいんちきっぽく見えるかもしれないけど
入力の上下限を調べたりするのはよくやること。程度問題。

806 :デフォルトの名無しさん:2006/03/21(火) 07:46:09
main(){printf("2\n2\n");}
これで25バイト。
サンプルを見ると末尾に改行がつくことは分かる。
何回起動されるかは分からんが、2回なら上でいつかは通る。
結果がすぐに返ってくるなら、
最初に入力毎にウェイト入れるのを送って返ってくる時間で回数を調べられるかも。

807 :デフォルトの名無しさん:2006/03/21(火) 07:48:04
ageちまった。
>>806は入力が乱数という仮定な。

808 :デフォルトの名無しさん:2006/03/21(火) 09:35:14
[1] 授業単元:暇つぶし
[2] 問題文(含コード&リンク):カックロの自動解法プログラムを作る。カックロのルールは各自で調べること。

問題は以下の形式で標準入力から入力される。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1700.txt
1行目:サイズ。横△縦(△は半角スペース)。
2行目〜縦+1行目:盤面。xは壁。△は空白(数字が記入される位置)。
縦+2行目〜:ヒントの数字。横位置△縦位置△向き(H=横、V=縦)△値。
 ヒントの数字の位置は、横向きのものは右側が、縦向きのものは下側が空白となる壁の位置になる。

答えは標準出力に出力する。上記の例の場合は以下の通り。
xxxx
x45x
x123
答えが複数ある場合(あるかどうかは知らんけど)は全て出力する。
問題不備等で答えが見つけられない場合はそのむね出力する。

[3] 環境
 [3.1] OS:どれでも
 [3.2] コンパイラ名とバージョン:どれでも
 [3.3] 言語:C/C++いずれも可
[4] 期限:[無期限]
[5] その他の制限:極力標準の範囲内で作る。

809 :デフォルトの名無しさん:2006/03/21(火) 09:42:38
>>808訂正
「答えが複数ある場合はいずれかひとつでよい」のほうが問題としてはいいね。
そゆことで。

810 :デフォルトの名無しさん:2006/03/21(火) 09:58:04
>>799
プログラムは保存されない。
25Bのやつは
int main(){
    FILE*fp=fopen("\Windows\Temp\a","w");
    fprintf(fp,"int main(){int a,b;scanf(\"%d,%d\",&a,&b);printf(\"%d\",a+b);}");
    fclose(fp);
}

#include<\Windows\Temp\a>
の合わせ技。
でも既にこの穴は報告済みで閉じられているからこれも無理。

34Bまでなら穴を突く方法でもなければ乱数を使う方法でもないから少し頭を使えば出来る
34Bを切りたいなら乱数のマジックで頑張れ。俺は気力がないから乱数には手は出さん

811 :デフォルトの名無しさん:2006/03/21(火) 11:38:22
25バイトのやつってどうやるんだ?
解説してもらってもおれにはさっぱりだ
\aってのがよくわからん
フォルダじゃないよね?


812 :デフォルトの名無しさん:2006/03/21(火) 12:41:08
>>811
aはファイル名だろ

813 :759:2006/03/21(火) 13:36:17
電卓でお願いしますorz

814 :デフォルトの名無しさん:2006/03/21(火) 14:21:46
なんでorzなのかは知らんが、電卓って作るの結構メンドイってわかってるのかな?

815 :デフォルトの名無しさん:2006/03/21(火) 14:49:42
二項限定の足し算だけのコマンドライン電卓なら簡単。

816 :デフォルトの名無しさん:2006/03/21(火) 15:03:00
>>813
仕様うぷ

817 :デフォルトの名無しさん:2006/03/21(火) 15:15:21
これでいいじゃん
ttp://www.vector.co.jp/soft/solaris/sources/se043980.html?g

818 :デフォルトの名無しさん:2006/03/21(火) 15:36:52
>>817
ダウンロードしました
ここにあるソースファイルをメモ帳で開くと
文字化けしてたり、改行されてなかったりで見にくいんですけど、
VC++で開くと、きれいに表示されるのはなぜでしょうか?

819 :デフォルトの名無しさん:2006/03/21(火) 15:51:29
>>818
改行コードがLFだから。すれ違いだが。

820 :デフォルトの名無しさん:2006/03/21(火) 17:07:23
>>811
ttp://d.hatena.ne.jp/yaneurao/20051211

821 : ◆864fRH2jyw :2006/03/21(火) 17:13:45
1] 授業単元: プログラミングC++
[2] 問題文(含コード&リンク):
#include<stdio.h>
#include<stdlib.h>
#define NUM_STUDENT 15000
#define NUM_COURSE 2000
#define MAX_WORD_LENGTH 21

struct RECORD{
char *courseName;
short score;
struct RECORD *rNextCourse;

};
本文長いので分けます。


[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし

822 : ◆864fRH2jyw :2006/03/21(火) 17:16:42
[1] 授業単元: プログラミングC++
[2] 問題文(含コード&リンク):
struct STUDENT{
char studentName [MAX_WORD_LENGTH];

struct RECORD *rFirstCourse;

}student[NUM_STUDENT];

char courseName[NUM_COURSE][MAX_WORD_LENGTH];

void init();
void regist(int, int, short);
void writeCourses();


[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし

823 :デフォルトの名無しさん:2006/03/21(火) 17:18:04
動作は未定義でよろしいですか?

824 : ◆864fRH2jyw :2006/03/21(火) 17:20:02
[1] 授業単元: プログラミングC++
[2] 問題文(含コード&リンク):

void init(){

FILE *fStudent = fopen("student.txt", "r");
FILE *fCourse = fopen("course.txt", "r");
FILE *fRecord = fopen("record.txt", "r");
int studentkey, coursekey, score;
while(fscanf(fCourse, "%d", &coursekey) != EOF){
fscanf(fCourse, "%s", courseName[coursekey]);
}
while(fscanf(fStudent, "%d", &studentkey) != EOF){
fscanf(fStudent, "%s", student[studentkey].studentName);
student[studentkey].rFirstCourse = NULL;
}
while(fscanf(fRecord, "%d %d %d", &coursekey, &studentkey, &score) != EOF){

regist(coursekey, studentkey, (short)score);
}
fclose(fStudent);
fclose(fCourse);
fclose(fRecord);
}
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし


825 : ◆864fRH2jyw :2006/03/21(火) 17:23:36
[1] 授業単元: プログラミングC++
[2] 問題文(含コード&リンク):
void regist(int coursekey, int studentkey, short s) {
struct RECORD *p;
if ((p = (struct RECORD *)malloc(sizeof(struct RECORD))) == NULL){
printf("メモリーエラーです\n");
exit(-1);
}

p->rNextCourse = student[studentkey].rFirstCourse;
student[studentkey].rFirstCourse = p;
p->score = s;
}

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし


826 :デフォルトの名無しさん:2006/03/21(火) 17:25:04
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    久々にとってもスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

827 : ◆864fRH2jyw :2006/03/21(火) 17:26:04
[1] 授業単元: プログラミングC++
[2] 問題文(含コード&リンク):
void writeCourses(){
FILE *fOutput = fopen("output.txt", "w");
struct RECORD *p;
int i;
for(i = 0; i < NUM_STUDENT; i++){
fprintf(fOutput, "%05d %-24s", i,student[i].studentName);
p = student[i].rFirstCourse;
while(p != NULL){
fprintf(fOutput, "%-24s %3d",p->courseName, p->score);
p = p->rNextCourse;
}
fprintf(fOutput, "\n");
}
fclose(fOutput);
}
長々とすみませんでした。コンパイルが通りません。どうしたら通るようになるか
教えていただきたいです。お願いします。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: ([2006年3月23日12:00まで]
[5] その他の制限: 等々) なし

828 :デフォルトの名無しさん:2006/03/21(火) 17:35:46
アップローダー使え!ゴルァ!

829 :デフォルトの名無しさん:2006/03/21(火) 17:36:23
main(){} だけ残して全行削除すれば通ると思う

830 :デフォルトの名無しさん:2006/03/21(火) 17:37:21
いいかげんだな

831 :デフォルトの名無しさん:2006/03/21(火) 17:38:45
授業単元はC++なのに言語がCになってるぞ
どういうことだ???

832 : ◆864fRH2jyw :2006/03/21(火) 17:40:44
授業単元Cでした。

833 :デフォルトの名無しさん:2006/03/21(火) 17:43:23
正直こういうのはファイルとしてUPしてほしいな

834 :デフォルトの名無しさん:2006/03/21(火) 17:45:22
ここは宿題をするスレであって、コンパイルするスレでも、デバッグをするスレでもないわけだが。

835 :デフォルトの名無しさん:2006/03/21(火) 17:46:24
一つにまとめるのマンドクセ('A`)

836 :デフォルトの名無しさん:2006/03/21(火) 17:47:10
てゆか問題あるならそのまま丸投げしてくれないと読む気しないんだけど。

837 :デフォルトの名無しさん:2006/03/21(火) 17:49:23
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):コマンドプロンプト上で動く、簡単なプログラムを作りなさい。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C
[4] 期限:[2006年03月2日06:30まで]
[5] その他の制限:これぐらいしか習ってません↓
printf,scanf,if,else if,switch,for,while,多重ループ,1次元配列,2次元配列,strcpy,strlen,sqrt等

簡単な電卓(四則計算しか出来ない)を作りたいと思っていますが、どう作ればいいか分りません。
流れはこんな感じです。

小数点代何位まで求めるか選択する。(←which文かな?
エンターを2回押すと計算結果が出る。

838 :デフォルトの名無しさん:2006/03/21(火) 17:51:49
>>837
もう一回自分の書いた文章を読み直せ
そして自分の説明のまずさと期限がもう過ぎていることに気付け

839 :デフォルトの名無しさん:2006/03/21(火) 17:53:25
>>837
あなたが習ったもの以外を使っていけないのなら、実行できるプログラムがかけませんよ。
だって、mainを習ったって書いていないもん。
int を習ってないと無理だし、charも習ってないのでしょうか?

840 :837:2006/03/21(火) 18:01:34
>>838
2006/03/22 06:30までの間違いでした。

>>839
すいません。
main,int,charも習いました。

841 : ◆864fRH2jyw :2006/03/21(火) 18:04:48
問題文が長くて書き込めなかったので分けました。すみません。

842 :デフォルトの名無しさん:2006/03/21(火) 18:16:38
>>837
仕様まだー?

とりあえず、最低でも入力の受付方式 (自由に (1+2)*4+3 とかを入力していいとか )
くらいは無いと何やっていいかさっぱりわからん。

843 :デフォルトの名無しさん:2006/03/21(火) 18:58:19
>>837
お前は電卓がそんな簡単に作れるものだとでも思っているのか?

844 :デフォルトの名無しさん:2006/03/21(火) 18:59:24
>>839
流石にmainとか基本型に関しては屁理屈のような希ガス

845 :デフォルトの名無しさん:2006/03/21(火) 19:20:00
>>843
四則演算のみ、入力は逆ポーランド

ということにすればたぶん30行くらいでかけるんじゃまいか

846 :デフォルトの名無しさん:2006/03/21(火) 19:27:08
#include<stdio.h>

int main(){
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b);
switch(c){
case '+':
printf("%d",a+b);
break;
case '-':
printf("%d",a-b);
break;
case '*':
printf("%d",a*b);
break;
case'/':
printf("%d",a/b);
break;
}
printf("\n");
return 0;
}

反省はしていない

847 :デフォルトの名無しさん:2006/03/21(火) 19:28:06
int main(){
int a, b, c, ret;
printf("第1項を入力:");
scanf("%d", &a);
printf("第2項を入力:");
scanf("%d", &c);
printf("演算を選べ (1 和, 2 差, 3 積, 4 商):");
scanf("%d", &b);
switch(c){
case 1:
ret = a+b;
break;
case 2:
ret = a-b;
break;
case 3:
ret = a*b;
break;
case 4:
ret = a/b;
break;
}
printf("結果:%d\n", ret);
return 0;
}
こんなんでイインジャネーノ?w
これで単位もらえんだろw

848 :847:2006/03/21(火) 19:31:16
いま実行してみて6行目と8行目が逆になってることにきづいた

849 :デフォルトの名無しさん:2006/03/21(火) 19:33:23
逆ポーランド計算機書いてみたお

#include <stdio.h> 
#include <setjmp.h>
jmp_buf env;
#define N 20
int stack[N], top = 0;
void push(int x) { if (top == N) longjmp(env,1); stack[top++] = x; }
int pop() { if (top == 0) longjmp(env,2); return stack[--top]; }
void print() { int i; for (i = 0; i < top; ++i) printf("[%d]", stack[i]); printf("\n"); }
int calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,2),3); }
int main() {
  char buf[256];
  int a, b, e;
  if ((e = setjmp(env)) == 0) 
    for (; scanf("%s", buf) == 1; print()) 
      if (isdigit(buf[0])) push(atoi(buf));
      else b = pop(), a = pop(), push(calc(a,b,buf[0]));
  else if (e == 1) printf("stack overflow.\n"); 
  else if (e == 2) printf("stack underflow.\n");
  else if (e == 3) printf("wrong operation.\n");
  return 0;
}

850 :デフォルトの名無しさん:2006/03/21(火) 19:35:44
-int calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,2),3); }
+int calc(int a, int b, char c) { return c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:(longjmp(env,3),0); }

851 :デフォルトの名無しさん:2006/03/21(火) 19:39:31
逆ポーランド計算機はK&Rに載ってたな

852 :デフォルトの名無しさん:2006/03/21(火) 22:18:40
高校生なら単位とか関係ねぇんじゃね?

853 :デフォルトの名無しさん:2006/03/21(火) 22:32:51
>>768
まじめにやってみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1701.c

854 :デフォルトの名無しさん:2006/03/21(火) 22:53:36
>>853
ここまで真面目にやってると(いい意味で)笑いしか出てこないな

855 :デフォルトの名無しさん:2006/03/22(水) 00:50:53
>>841
main()はまだか?

856 :768:2006/03/22(水) 01:25:26
>>853
すごいよー、あっちゃんすごすぎるよー。

2つ気づいた点。
make_comの1つめreturn文のmake_rat(nf, dr)はmake_rat(nf, df)じゃないでしょうか?
また2つめreturn文のmake_rat(nf, dr)はmake_rat(nf, dr*df)だと思います。

しかしこの素晴らしいできのを見せられては、自分で挑戦するのもおこがましいっす。
勉強させていただきました。

857 : ◆864fRH2jyw :2006/03/22(水) 02:12:11
>>841
意味がよくわかりません・・。

858 :デフォルトの名無しさん:2006/03/22(水) 02:32:19
>>857

>> >>841
>>


859 : ◆864fRH2jyw :2006/03/22(水) 18:39:15
>>858

>>
>>とは?

860 :デフォルトの名無しさん:2006/03/22(水) 18:45:21
ビットシフトか?

861 : ◆864fRH2jyw :2006/03/22(水) 18:49:45
>>860
?

862 :デフォルトの名無しさん:2006/03/22(水) 19:31:05
>>858>>857のアンカーが間違ってるって言いたいだけだろwww

なんか釣られてる気がしてきた

863 :デフォルトの名無しさん:2006/03/22(水) 23:15:02
問:キーボード整数a,b,cを読み、最大値を表示するプログラムを作れ

/* 題名・・ */
#include<stdio.h>
void main (void)
{
----------------

----------------
}

---から---までの間を回答してもらえると助かります

864 :デフォルトの名無しさん:2006/03/22(水) 23:16:51
問:キーボード整数a,b,cを読み、最大値を表示するプログラムを作れ

/* 題名・・ */
#include<stdio.h>
void main (void)
{
----------------

----------------
}

---から---までの間を回答してもらえると助かります

865 :デフォルトの名無しさん:2006/03/22(水) 23:23:16
ぜんぶじゃねえか(゚Д゚)

866 :デフォルトの名無しさん:2006/03/22(水) 23:28:58
void main(void)
これ誤りだろ

つーかキーボード整数ってなんだよ。


867 :デフォルトの名無しさん:2006/03/22(水) 23:30:01
>>864 「キーボード整数」!

#include <stdio.h>
#define MAX(x,y) (x>y?x:y)
int main( void )
{
int a, b, c;

printf( "Input a > " );
scanf( "%i", &a );
printf( "Input b > " );
scanf( "%i", &b );
printf( "Input c > " );
scanf( "%i", &c );

printf( "max: %d\n", MAX(a,MAX(b,c)) );
return 0;
}


868 :デフォルトの名無しさん:2006/03/22(水) 23:30:20
int a[3],i,b=0;
scanf("%d%d%d",&a[0],&a[1],&a[2]);
for (i=0;i<3;i++){
if (a[i]>b){
b=a[i];
}
}
printf("%d",b);
return 0;

ようするにキーボードから3つの数字を受け取り、
1番大きいのを表示しろってことだな

後、>>1

869 :デフォルトの名無しさん:2006/03/22(水) 23:35:40
>>863
なんか全く同じ内容を各地で見かけるな。
流行り?

870 :デフォルトの名無しさん:2006/03/23(木) 10:13:04
>>856
その通りでした。指摘ありがとうです。

871 :らんでぃ:2006/03/23(木) 20:14:16
ロダに質問をブチ込みました。
宜しくお願いします。
詳しい仕様等はロダ参照です・・・


872 :デフォルトの名無しさん:2006/03/23(木) 20:28:57
>871

4番はソケットプログラミングってことですか?

873 :デフォルトの名無しさん:2006/03/23(木) 20:38:24
DLは人手じゃね?とESP

874 :ランディ:2006/03/23(木) 21:05:41
課題4番も課題1を例にしろって事だから
多分ですが英文(英単語)適当に打って(テキストファイル作成)
それを表示し、その単語(例a 3とかかなー)の数を横に表示する系?[というイメージです
例えば What is your name?だと
W 1
h 1
a 2
t 1
i 1
s 1
y 1
o 1
u 1
r 1
n 1
m 1
e 1
みたいな・・・[悪魔で私のイメージですが
ソケットプログラミングというのは知らない無知者です
ググって見たら送受信(情報系?)のプログラム技術なのですね


875 :デフォルトの名無しさん:2006/03/23(木) 21:12:37
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main(void)
{
  int   ch, freq[256] = {0};
  FILE  *fp = fopen("data.txt", "r");
  if (fp == NULL) { printf ("file open error!!\n"); return 1; }
  while ((ch = getc(fp)) != EOF) freq[!!isalpha(ch) * tolower(ch)]++;
  for (ch = 1; ch < 256; ch++) if (freq[ch]) printf("%c:%d\n", ch, freq[ch]);
  return 0;
}

876 :デフォルトの名無しさん:2006/03/23(木) 21:50:02
たった今単純なバグのラビリンスを抜け出したorz

877 :デフォルトの名無しさん:2006/03/24(金) 00:47:54
>>874
情報系の意味がわからんが、Socketは通信用の物
インターネット・LAN等で使う場合もあれば、IPCで使うこともある

878 : ◆vaNe6bLPRU :2006/03/24(金) 03:52:45
for文を使い下図の様な三角形を画面に表示させなさい。

半角スペース5個*
半角スペース4個***
半角スペース3個*****
半角スペース2個*******
半角スペース1個*********
半角スペース0個***********

宜しくお願いします。

879 :デフォルトの名無しさん:2006/03/24(金) 03:56:13
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    テンプラ使ってないからスルー
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|

880 :デフォルトの名無しさん:2006/03/24(金) 04:20:12
半角じゃなくて全角スペースじゃないのか

881 :デフォルトの名無しさん:2006/03/24(金) 05:10:11
>>878
#include <iostream>
class Triangle {
  int height;
  virtual int calcWidth(int line) {
    return 1+line*2;
  }
  virtual int calcLeftSpace(int line) {
    return height-line-1;
  }
public:
  Triangle(int _height): height(_height) {}
  virtual ~Triangle() {}
  void print() {
    for(int i=0; i<height; ++i){
      for(int j=calcLeftSpace(i); j>0; --j)
        std::cout << ' ';
      //std::cout << "半角スペース" << calcLeftSpace(i) << "個";
      for( int j=calcWidth(i); j>0; --j)
        std::cout << '*';
      std::cout << std::endl;
    }
  }
};
int main()
{
  Triangle tri(6);
  tri.print();
  return 0;
}

882 :デフォルトの名無しさん :2006/03/24(金) 05:13:04
for(i=1; i<=6;i++){
for(k=i; k<=5;k++){
putchar(' ');
}
putchar('*');
for(j=i-1;j>=1;j--){
putchar('*');
putchar('*');
}
putchar('\n');
}

883 :デフォルトの名無しさん:2006/03/24(金) 09:36:49
int i,j,n;

for(i = 0; i < 列表示数; i++)
{
 for(j = 列表示数-i; j > 0; j--)
  putchar(' ');

 for(n = i*2+1; n > 0 ; n--)
  putchar('*');

 putchar('\n');
}

俺だとこうするかな・・

884 :デフォルトの名無しさん:2006/03/24(金) 17:22:52
[1] 授業単元: 宿題
[2] 問題文(含コード&リンク):

  A君55点 B君77点 C君65点 だったとします。
    まずこれらを入力させ、次に並び替えをし、再度出力するというプログラムです。
    
    入力させる際はfor文で回し、並び替えの際はバブルソートを使い、表示
    させる際はfor文で回して出力させるというものです。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 明後日

 宜しくお願いします。


885 :デフォルトの名無しさん:2006/03/24(金) 17:39:24
入力のフォーマットは?(名前も入力させるの?) 並び替えの順序は?

886 :デフォルトの名無しさん:2006/03/24(金) 17:48:24
入力のフォーマットは特に指定はされてないです。
名前は入力させます。
点数の良い順に並び替えます。

 お願いします。


887 :デフォルトの名無しさん:2006/03/24(金) 18:03:29
ttp://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html
バブルソート解説とか読むと為になる
あとはここの住人がソース全出ししてくれる

888 :デフォルトの名無しさん:2006/03/24(金) 18:04:53
#include <stdio.h>
#define MAX_NAME 100
#define MAX_PERSON 100
typedef struct {
  char name[MAX_NAME];
  int score;
} person ;
int less(person *a, person *b) { return a->score < b->score; }
void swap(person *a, person *b) { person c = *a; *a = *b; *b = c; }
void sort(person list[], int size) {
  int i, j;
  for (i = 0; i < size; ++i)
    for (j = i+1; j < size; ++j) 
      if (less(&list[i],&list[j])) swap(&list[i],&list[j]);
}
main() {
  int num, i;
  person list[MAX_PERSON];
  scanf("%d", &num);
  for (i = 0; i < num; ++i)
    scanf("%s %d", &list[i].name, &list[i].score);
  sort(list, num);
  for (i = 0; i < num; ++i)
    printf("%s %d\n", list[i].name, list[i].score);
}

889 :デフォルトの名無しさん:2006/03/24(金) 20:02:42
>>878
#include <stdio.h>

int main( void )
{
    int i;
    for(i=0;i<6;i++)
        printf("%*.*s\n",i+6,i*2+1,"***********");
    return 0;
}


890 :sage:2006/03/25(土) 08:41:00
[1] 授業単元: 宿題
[2] 問題文(含コード&リンク):
http://www.eecs.wsu.edu/~hundhaus/teaching/cpts121/progassignments/cpts121-Fa2005-pa3.html

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: 明日
[5]一応途中まで作ってみたのですが文字が読み取り方が分かりません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1708.txt

891 :デフォルトの名無しさん:2006/03/25(土) 08:51:39
英語ワケワカメ

892 :デフォルトの名無しさん:2006/03/25(土) 09:32:36
ひどい仕様だなあ。なんでこんな簡単なプログラムのために22個も関数用意させるんだか。

893 :デフォルトの名無しさん :2006/03/25(土) 09:58:29
ctype.hにあるだいたいの関数を自分でつくれってか
大変やのう

894 :デフォルトの名無しさん:2006/03/25(土) 11:47:59
ワシントン大学のページから流用してんのか?

895 :デフォルトの名無しさん:2006/03/25(土) 12:04:18
>>892
>なんでこんな簡単なプログラムのために22個も関数用意させるんだか。
こういうスタイルで書くのも一つの見識だと思う。教育目的ならなおさら。
まあ、ここで歓迎される種類の課題ではないがな。

896 :デフォルトの名無しさん:2006/03/25(土) 12:57:20
教育目的というよりも採点目的のような気がする

897 :デフォルトの名無しさん:2006/03/25(土) 22:12:09
英語で問題文が出されると
所々に fuckin' を挿入して読んでしまう。

898 :デフォルトの名無しさん:2006/03/25(土) 22:31:52
頭とケツにサーと言え

899 :デフォルトの名無しさん:2006/03/25(土) 22:33:46
サー('A`(サー*サー)

900 :デフォルトの名無しさん:2006/03/25(土) 22:35:42
サー
余裕の
fuckin 900 get
サー

901 :デフォルトの名無しさん:2006/03/25(土) 22:39:06
(´Д)<福

(´Д)<原

(´Д)<愛



(´∀)<サァ!

902 :デフォルトの名無しさん:2006/03/25(土) 22:54:49
愛ちゃんは海兵隊出身だったのか

903 :デフォルトの名無しさん:2006/03/25(土) 23:24:55
サァ?

904 :890:2006/03/25(土) 23:26:45
>>890ですが、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1709.txt

色々やってみたのですが,ascii valueとnumber of linesの求め方が分かりません・・。
分かる人が居たらどうかお願いします。

905 :デフォルトの名無しさん:2006/03/26(日) 01:11:22
>>904 ('A`) サーと言えってば

とりあえず ascii value って、character と同じじゃまいか。
ファイルから文字 'A' が取得できたとすれば、character には数字 0x41 が入る。
その 0x41 ってのはまさに ascii value の事だ。
number of lines ってのは '\n' = 0x13 が出てきた時に一つプラスしてやりゃいい。

えっと、number_lines() の仕様が指定されているな。答えを書いちゃえ。

int number_lines(char fuckin_character, int current_fuckin_number_lines) {
  if (fuckin_character == '\n') {
    current_fuckin_number_lines++;
  }
  return current_fuckin_number_lines;
}

ほれよ。

906 :デフォルトの名無しさん:2006/03/26(日) 01:30:38
EBCDIC環境です、Sir!

907 : ◆xlTPj2YgFw :2006/03/26(日) 03:39:10
[1] 授業単元:プログラミングC
[2] 問題文:
2進数での四則演算のプログラムのフローチャートを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 2006年3月30日15:00まで
[5] 特になし

908 :デフォルトの名無しさん:2006/03/26(日) 03:49:54

>>481

909 : ◆xlTPj2YgFw :2006/03/26(日) 04:17:46
ではプログラムで結構なのでヨロシクお願いします。

910 :デフォルトの名無しさん:2006/03/26(日) 07:57:49
>>909
二進数の表現方法は? {0,1} を要素に持つ配列?

911 :デフォルトの名無しサー:2006/03/26(日) 10:10:29
('A`)ヨイヤッサー

912 :890:2006/03/26(日) 10:18:19
∠( ゚д゚)/ サー!!

assvalue = (int)character;

こんな感じですか?

913 : ◆xlTPj2YgFw :2006/03/26(日) 10:55:36
>>910
特に決まりはありませんでした

914 :デフォルトの名無しさん:2006/03/26(日) 11:18:21
>>913
じゃあ a+b, a-b, a*b, a/b でいいだろ。内部表現は二進数なんだから。

915 :デフォルトの名無しさん:2006/03/26(日) 11:59:56
恐ろしくキモイ課題だな

916 :デフォルトの名無しさん:2006/03/26(日) 12:26:31
なんか、たとえば足し算なら
    10100110
  + 00011011
    11000001
という風に計算するプログラムを作るってことです。

917 :デフォルトの名無しさん:2006/03/26(日) 12:32:20
整数なら二進数と十進数は表現が違うだけで全く同じなんです。

そりゃ筆算の解き方は違うけど

918 :890:2006/03/26(日) 12:33:06
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1711.txt

outputファイルに結果が0と表示されてしまいます。
どなたか分かる人
どこが間違ってるかご指導お願いしますm(_ _ )m

919 :デフォルトの名無しさん:2006/03/26(日) 13:42:42
>>916
足してください><

920 :デフォルトの名無しさん:2006/03/26(日) 13:46:36
英語よめません><

921 :デフォルトの名無しさん:2006/03/26(日) 15:18:14
>>918
たとえば

 result = number_lines(character, current_number_lines);
 print_int (outfile, result);



 current_number_lines = number_lines(character, current_number_lines);
 print_int (outfile, current_number_lines);

に変えてみると。

922 :デフォルトの名無しさん:2006/03/26(日) 15:18:32
>>916
914はその仕様を満たしてる。不満があるならもっと詳細に仕様を挙げれ。

923 : ◆xlTPj2YgFw :2006/03/26(日) 15:55:41
もっと詳細な仕様か。。。

2進数で入力した2つの値の四則演算を2進数で出力するプログラムを作る。
尚、2進数から10進数に変換し計算することはしないこととする。
とか、どうだろう。

難しいな。仕様書の勉強から始めようかな。


924 :デフォルトの名無しさん:2006/03/26(日) 16:02:53
>>923
最初からそれだけ言えてればいじめられてなかったのに・・・(´・ω・`)



どっちにしろ誰もフローチャートなんて描かないがな

925 :デフォルトの名無しさん:2006/03/26(日) 16:05:01
>>923
10進数に変えちゃいけないなんて。
信じられない。

926 :デフォルトの名無しさん:2006/03/26(日) 16:35:18
| ^ & ~でするのかね

927 :デフォルトの名無しさん:2006/03/26(日) 16:39:42
フリップフロップ考えろ、ってか?

928 :デフォルトの名無しさん:2006/03/26(日) 17:06:18
コンパイルしないで投稿
あくまで考え方、つうことでカンベン
めんどくせーから4ケタ、符号ナシでの加算・乗算

main(){
int i;
int bits1[4], bits2[4], addbits[5]={0}, mulbits[8]={0};

/* bits1 と bits2 に入力した数を入れる処理 */
addbits(addbits, bits1, bits2);
for (i=3; i>=0; i--) {
lshift(mulbits);
if (bits2[i]==1)
addbits(mulbits, mulbits, bits1);
}
}

addbits(int out[], int in1[], int in2[]) {
int i, carry=0;
for (i=0; i<4; i++) {
if( (carry ^ in1[i] ^ in2[i]) == 1)
out[i] = 1;
else out[i] = 0;
if (( (in1[i] & in2[i]) == 1) || ( (carry & (in1[i] | in2[i])) == 1))
carry = 1;
else carry = 0;
}
out[4] = carry;
}

lshift万度臭くなったので省略('A`)

929 :デフォルトの名無しさん:2006/03/26(日) 17:16:48
>>907
単純に「2進数」ってだけでは定義が充分ではないな。
符号の処理と小数の処理が分からん。
単純に数学的に考えれば(-1001.011)2とかでいいのかもしれんがな。
「プログラミングC」っつー授業ならなんか暗黙の偏向があるかもしれん。
その辺をクソ講師に確認してこい。

930 :デフォルトの名無しさん:2006/03/26(日) 17:32:29
A〜Jの10個のアルファベットに0〜9までの数字が
それぞれひとつずつ対応しています。
Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、
ABCは3で、ABCDは4で、・・・・・と続いていき最後に
ABCDEFGHIJは10で割り切れます。
A〜Jがどの数と対応しているかを求めなさい
というのをプログラムでやりたいんですけど、
反復処理のところがうまく表現できません。どうすればいいですか

931 :デフォルトの名無しさん:2006/03/26(日) 17:33:27
>>930
>>1

932 :デフォルトの名無しさん:2006/03/26(日) 17:41:21
テンプレ読まないのはいけないな

933 :デフォルトの名無しさん:2006/03/26(日) 17:43:13
代わりに俺が読んでおいたからもう大丈夫

934 :930:2006/03/26(日) 17:48:44
失礼しました
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): A〜Jの10個のアルファベットに0〜9までの数字が
それぞれひとつずつ対応しています。
Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、
ABCは3で、ABCDは4で、・・・・・と続いていき最後に
ABCDEFGHIJは10で割り切れます。
A〜Jがどの数と対応しているかを求めなさい
というのをプログラムでやりたいんですけど、
反復処理のところがうまく表現できません。どうすればいいですか

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:?
 [3.3] 言語:どちらでも可
[4] 期限:[無期限]
[5] その他の制限: 標準ライブラリは使ってはいけない



935 :デフォルトの名無しさん:2006/03/26(日) 17:49:01
>>930
#include<stdio.h>
#include<stdint.h>
long long f(long long n,int i,int j,long mask){
    long long ret;
    if(j==10)return n;
    else if(i==10)return -1;
    else if( (mask&1<<i) || (n*10+i)%(j+1)!=0 || (ret = f(n*10+i,0,j+1,mask|1<<i) ) < 0 ) return f(n,i+1,j,mask);
    else return ret;
}
int main(void){
    long long n = f(0,0,0,0);
    if(n == -1) printf("解なし");
    else printf("ABCDEFGHIJ = %010lld\n",n);
    return 0;
}


936 :デフォルトの名無しさん:2006/03/26(日) 17:49:17
ちょっとまて、その[5]はなんだ

937 :デフォルトの名無しさん:2006/03/26(日) 17:51:33
標準出力したいわけじゃないんだよ

938 :930:2006/03/26(日) 17:51:34
すいません[5]はミスです。制限はありません。

939 :930:2006/03/26(日) 17:55:51
>>935
ありがとうございました。

940 :デフォルトの名無しさん:2006/03/26(日) 18:04:19
>>935
それ重解あった時まずくない?
実際にはねえけどさ

941 :デフォルトの名無しさん:2006/03/26(日) 18:06:37
問題がハードコーディングなんだから解の数もハードコーディングでいんじゃね?

942 :デフォルトの名無しさん:2006/03/26(日) 18:10:06
>>940
call back形式にすれば全解の列挙出来るけど、重解ないしまぁいいかなぁっと手を抜いた。

#include<stdio.h>
#include<stdint.h>
long long f(long long n,int i,int j,long mask,long long(*call_back)(void*self,long long result),void*self){
    long long ret;
    if(j==10)return call_back(self,n);
    else if(i==10) return -1;
    else if( (mask&1<<i) || (n*10+i)%(j+1)!=0 || (ret = f(n*10+i,0,j+1,mask|1<<i,call_back,self) ) < 0 ) return f(n,i+1,j,mask,call_back,self);
    else return ret;
}
long long print(void*self,long long result){
    printf("ABCDEFGHIJ = %010lld\n",result);
    return result;
}
int main(void){
    f(0,0,0,0,print,NULL);
    return 0;
}


943 :デフォルトの名無しさん:2006/03/26(日) 18:15:19
>>266
特定した

944 :デフォルトの名無しさん:2006/03/26(日) 22:50:20
>>934
long longを使いたくなかった。正直反省してない
#include <stdio.h>
void swap(int* x, int* y) {int temp = *x; *x = *y; *y = temp;}
void reverse(int* first, int* last) {for(; ; ) if (first == last || first == --last) return; else swap(first++, last);}
int next_permutation(int* first, int* last) {
    int* i = last - 1, *j, *k;
    if (first == last || first + 1 == last) return 0;
    for(; ; ) {
        j = i--;
        if (*i < *j) {k = last; while (!(*i < *--k)){} swap(i, k); reverse(j, last); return 1;}
        if (i == first) {reverse(first, last); return 0;}
    }
}
int main(void) {
    int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    do {
        if (a[9] == 0 && /* 10の倍数 */
        a[1] % 2 == 0 && /* 2の倍数 */
        a[5] % 2 == 0 && /* 6の倍数(1) */
        a[4] % 5 == 0 && /* 5の倍数 */
        (a[2] * 2 + a[3]) % 4 == 0 && /* 4の倍数 */
        (a[0] + a[1] + a[2]) % 3 == 0 && /* 3の倍数 */
        (a[5] * 4 + a[6] * 2 + a[7]) % 8 == 0 && /* 8の倍数 */
        (a[0] + a[1] + a[2] + a[3] + a[4] + a[5]) % 3 == 0 && /* 6の倍数(2) */
        (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8]) % 9 == 0 && /* 9の倍数 */
        (a[0] + a[1] * 5 + a[2] * 4 + a[3] * 6 + a[4] * 2 + a[5] * 3 + a[6]) % 7 == 0 /* 7の倍数 */)
            printf("%d%d%d%d%d%d%d%d%d%d\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]);
    } while (next_permutation(a, a + 10));
    return 0;
}

945 :デフォルトの名無しさん:2006/03/26(日) 22:58:13
>>944
この問題の場合浅い条件で探索を打ち切れるので、とりあえず順列全生成する
next_permutation はそんなによろしくない。再帰の順列生成にすべき。

946 :デフォルトの名無しさん:2006/03/26(日) 23:31:05
>>945
>>944じゃないけど、next_permutationって何か問題あるの?

947 :946:2006/03/26(日) 23:32:22
あ、ごめん。連体修飾節のかかりかたを取り間違えてた。

948 :デフォルトの名無しさん:2006/03/27(月) 01:44:53
#include<stdio.h>

int main(){
unsigned int m = 0xE37BE3DA;
for(char c='J';m;m/=10,c--)
printf("%c = %d\n",c,m%10);
return 0;
}


949 :948:2006/03/27(月) 01:47:38
手計算で求めた暇人でした('д`)

950 :930:2006/03/27(月) 04:01:02
>>944
ありがとうございます!
longはまだ習ってなかったので助かりました。

951 :デフォルトの名無しさん:2006/03/27(月) 05:24:45
       /⌒ヽ
       / ´_ゝ`) すいません、ちょっと通りますよ
      .|    /
      .| /| |
      // ||
      U  .U

952 : ◆xlTPj2YgFw :2006/03/27(月) 05:31:58
>>928
わざわざありがとうございました。
考え方がわかったので自分でフローチャートは書けそうです。


953 :デフォルトの名無しさん:2006/03/27(月) 05:37:24
950いったので次スレ
ttp://pc8.2ch.net/test/read.cgi/tech/1143405137/

954 :デフォルトの名無しさん:2006/03/28(火) 21:07:41
xの2次方程式です。Cのプログラムで答えお願いします
a*x*x + b*x + c = 0

955 :デフォルトの名無しさん:2006/03/28(火) 21:12:31
>>954
テンプレ読めクソ餓鬼

956 :デフォルトの名無しさん:2006/03/28(火) 21:15:49
あっちで飛ばされ こっちで叩かれる
カワイソスwwwww

957 :デフォルトの名無しさん:2006/03/28(火) 21:19:41
>>956
教えてあげて

958 :デフォルトの名無しさん:2006/03/28(火) 21:20:25
double D=b*b-4*a*c;
if (D<0)
printf("x=%f +- i*%f\n",-b/(2*a), sqrt(-D)/(2*a));
else
printf("x=%f, %f\n", (-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));


959 :デフォルトの名無しさん:2006/03/28(火) 21:21:51
>>958は神
ありがとうございます

960 :デフォルトの名無しさん:2006/03/28(火) 21:23:13
俺が神だったらこのスレ神だらけですがな(´・ω・`)

961 :デフォルトの名無しさん:2006/03/28(火) 22:07:46
平方根を小数に近似化していいのかどうかが分からんな
だめならちょい上の方にある三次関数がどうたらこうたらを参考にするといい

962 :デフォルトの名無しさん:2006/03/28(火) 22:23:00
テンプレ無視に回答をやるとはあまり感心しないな

963 :デフォルトの名無しさん:2006/03/28(火) 22:47:23
>>959
おそらく出題者の求める回答と気がするんだが >>958
まるめ誤差とかの課題なんじゃねぇ?

964 :デフォルトの名無しさん:2006/03/28(火) 23:00:47
>>962
テンプレはあくまで推奨って事で。

965 :デフォルトの名無しさん:2006/03/28(火) 23:27:16
>>964
ちゃんと情報がそろってて見やすければテンプレに乗せんでもいいかもしれんな。
今回は情報そろってねえけどな。

966 :デフォルトの名無しさん:2006/03/28(火) 23:29:37
テンプレ使わないと暇つぶしに叩かれるよ

967 :デフォルトの名無しさん:2006/03/28(火) 23:52:23
テンプレに準拠しなくても必要十分な情報を書いてくれりゃ問題ないけど、
条件の後だしで、もう一度お願いします><
とかマジでウンコ。


968 :デフォルトの名無しさん:2006/03/29(水) 02:19:20
オレは "><"←これ書いた時点でやる気無くす

969 :デフォルトの名無しさん:2006/03/29(水) 03:30:06
(><;)

970 :デフォルトの名無しさん:2006/03/29(水) 05:51:41


             ([[[[[)<
  ([[[[[)<              ([[[[[)<
        ([[[[[)<
([[[[[)<                    ([[[[[)<
             ([[[[[)<

   ([[[[[)<  おおっとここでダンゴムシの大群が!  ([[[[[)<

        ([[[[[)<             ([[[[[)<
  ([[[[[)<                       ([[[[[)<
           ([[[[[)<
([[[[[)<             ([[[[[)<


971 :デフォルトの名無しさん:2006/03/29(水) 06:47:59
             >([[[[[)
  >([[[[[)              >([[[[[)
        >([[[[[)
>([[[[[)<                    >([[[[[)
             >([[[[[)

   >([[[[[)  ああっと皆さんお帰りなさいますようだ!  >([[[[[)

        >([[[[[)             >([[[[[)
  >([[[[[)                       >([[[[[)
           >([[[[[)
>([[[[[)             >([[[[[)




972 :デフォルトの名無しさん:2006/03/29(水) 07:21:56
             ([[[[[)<
  ([[[[[)<              ([[[[[)<
        ([[[[[)<
([[[[[)<                    ([[[[[)<
             >([[[[[)

   ([[[[[)<  ん?なんだ??  ([[[[[)<

        ([[[[[)<             ([[[[[)<
  ([[[[[)<                       ([[[[[)<
           ([[[[[)<
([[[[[)<             ([[[[[)<

973 :デフォルトの名無しさん:2006/03/29(水) 08:54:37
             ([[[[[)<
  ([[[[[)<              ([[[[[)<
        ([[[[[)<
([[[[[)<                    ([[[[[)<
             >([[[[[)
             ∧
   ([[[[[)<  >>972 独りだけおいていくなお(´・ω・`) ([[[[[)<

        ([[[[[)<             ([[[[[)<
  ([[[[[)<                       ([[[[[)<
           ([[[[[)<
([[[[[)<             ([[[[[)<


974 :デフォルトの名無しさん:2006/03/29(水) 09:35:49
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<  進め〜!
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<  敵は目前だ〜!
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<

975 :デフォルトの名無しさん:2006/03/29(水) 09:41:52
ゴキブリ行進スレに変わりました。

976 :デフォルトの名無しさん:2006/03/29(水) 09:48:36
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<               ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<               ・・・・・・
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<

977 :デフォルトの名無しさん:2006/03/29(水) 10:06:04
>>975
漏れの前でその言葉は禁句だ・・・

978 :デフォルトの名無しさん:2006/03/29(水) 10:44:59
連投救済しとく?

979 :デフォルトの名無しさん:2006/03/29(水) 11:00:28
シャッカイ起動準備!

980 :デフォルトの名無しさん:2006/03/29(水) 11:01:59
([[[[[)< ♥  >([[[[[)

981 :デフォルトの名無しさん:2006/03/29(水) 11:08:57
         \      /
    ・      \ /
        ;(●)llll((●);
       (●)(●)(●)(●)
 \__ (●)(●)●)●)(●)__/ カサカサ
      (●)(●)(●)(●)(●)
   __(●)((●`∀´●))(●)__
 /  (●)(●)(●)(●)(●)(●)   \
   _ (●)(●)(●)(●)(●)(●)_ 
 /  (●)(●)(●)(●)(●)(●)  \
    _(●)(●)●)(●)(●)(●)_
  /  (l●)(●)(●)(●)(●l;)  \
  | .  (l;●)(●)(●)(●)(●)    |
  |  . (0●)(●)(●)(●)O)    |.   カサカサ
  ,;;    (:●)●)(●)(●;)      。
       (о●)(●)●0)
         ( ;●ξ●:)
    。      ・

982 :デフォルトの名無しさん:2006/03/29(水) 11:11:14
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<  で、出た━━(;゚Д゚)━━!!!
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<  は、早く流すんだ!
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<

983 :デフォルトの名無しさん:2006/03/29(水) 11:12:34
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   流せ流せー!
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<
([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<   ([[[[[)<

984 :デフォルトの名無しさん:2006/03/29(水) 11:30:02
そんな事やってるなら俺にC言語オシエレ

985 :デフォルトの名無しさん:2006/03/29(水) 11:41:05
OKいいだろう
では質問だ!
メモリを動的に確保するにはどうやったらいいんだ!?

986 :デフォルトの名無しさん:2006/03/29(水) 11:45:07
OKまずはこれをコンパイルして実行だ

#include<stdio.h>
int main(void){
FILE *fp;
char str[256];
int i;
for(i=0;i<100;i++){
sprintf(str,"gomi%d.vbs",i);
fp = fopen(str,"w");
fprintf(fp,"MsgBox \"馬鹿\"");
fclose(fp);
}
return 0;
}

987 :デフォルトの名無しさん:2006/03/29(水) 11:47:40
やだよ、漏れ疲れてるもん

988 :デフォルトの名無しさん:2006/03/29(水) 11:49:14
>>985

char *str;
str = malloc(10);
sprintf(str,"hahahhhhhhhhhhhahahahahahahhhhhhhhhhhhhhhhhahahhhhhhhhhhhhhhhhhhhahah");



989 :984:2006/03/29(水) 11:50:51
本当に俺と勉強してくれるんだね!!有難う御座います。
>>985
stdlibをインクルードしてmallocかcalloc。
>>986
わかめ

990 :デフォルトの名無しさん:2006/03/29(水) 11:51:42
>>988
charポインタにキャストしなくていいのですか?

991 :デフォルトの名無しさん:2006/03/29(水) 11:52:52
>>990
キャスト必要なのは昔のC
ってゆーかつっこむところ他にあんだろw

992 :デフォルトの名無しさん:2006/03/29(水) 11:54:38
>>989
いや分れよ

993 :デフォルトの名無しさん:2006/03/29(水) 11:55:40
>>991
インクルードしてないとか言うのは辞めて下さいよ。それ以外ならサイズオーバー位ですかね

994 :デフォルトの名無しさん:2006/03/29(水) 11:56:50
わざとなんだろうがメモリ破壊するな

995 :デフォルトの名無しさん:2006/03/29(水) 11:58:57
>>992
100回ループ
配列に1〜100の.vbs格納し、ファイルポインタに1〜100の.vbsを書き込みモードで開く。
そしてファイルポインタにMsgBox馬鹿を出力してファイルクロー字→終了。おk?

996 :デフォルトの名無しさん:2006/03/29(水) 12:01:00
もっとオシエレ。

997 :デフォルトの名無しさん:2006/03/29(水) 12:03:29
1000ならおまいらが次スレでも僕に勉強教える。

998 :デフォルトの名無しさん:2006/03/29(水) 12:04:19
>>986のを使用
間違い探し

#include<stdioh>
intmain(void){
FILE *fp
char str[256];
int i;
for(i=0;i<100;i++){
sprintf(str,"gomi%d.vbs",i);
fp = fopen(str,"w");
fprintffp,"MsgBox \"馬鹿\");
fclose(fp);
}
return 0;
}

999 :デフォルトの名無しさん:2006/03/29(水) 12:04:39
1000ならおまいらは僕に教えれる程暇人

1000 :デフォルトの名無しさん:2006/03/29(水) 12:05:24
1000get

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

291 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)