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

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

暇な人がエレガントにC/C++の宿題片づけます 33代目

1 :デフォルトの名無しさん:04/10/16 22:18:19
暇な人がエレガントにC/C++の宿題を片づけて見せます。
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか
・エラーは、その行とエラーの詳細を書きましょう。
エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10

2 :デフォルトの名無しさん:04/10/16 22:20:33
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

3 :デフォルトの名無しさん:04/10/16 22:22:04
32代目は諸事情によりお見せできません。
どうかご了承ください。

4 :デフォルトの名無しさん:04/10/16 22:24:23
前スレが終わってからでも遅く無いのに

5 :デフォルトの名無しさん:04/10/16 22:25:14
【注意点追加】
・複雑なAAはスレが荒れたり問題を埋もれさせてしまう原因に
 なりますので、使用を控えてください。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:

6 :デフォルトの名無しさん:04/10/16 22:26:49
ダディクールがC/C++の宿題を片づけます 32代目
http://pc5.2ch.net/test/read.cgi/tech/1097592876/l50

↑使い切って、その時点でここ残っていれば移行すれば?

7 :デフォルトの名無しさん:04/10/16 22:26:57
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:

テンプレに沿って質問したほうが回答者も正確な情報をつかみやすくなります。
問題文はこう書いたほうが分かりやすいだろうとか自分で勝手に改変しないでください。
原文をそのまま忠実に書いてください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

8 :デフォルトの名無しさん:04/10/16 22:28:22
>>6
過去スレあさる奴が迷惑だろ?
あんなAAばっかの糞スレなんか

9 :デフォルトの名無しさん:04/10/16 22:31:26
安心しろ。過去スレあさる奴なんていない。

10 :デフォルトの名無しさん:04/10/16 22:34:10
>>8
AAばっか貼ってたのもあんたじゃないの?

11 :デフォルトの名無しさん:04/10/16 22:37:24
さぁ毎度お馴染みの最悪な空気です
つか、前1の影響引きずってるなー

12 :デフォルトの名無しさん:04/10/16 22:38:56
>>10
違う。
漏れは歴代スレの2-3でお世話になってた者
今では回答者側に回ってる。
ここのスレにお世話になったから変なAAでいっぱいになるのがつらかった。
だからこのスレたてた。

13 :デフォルトの名無しさん:04/10/16 22:39:05
今1=前1
だったりしてな

14 :デフォルトの名無しさん:04/10/16 22:40:12
ま、ガンバレ
俺はあっちが終わるまでは、重複に質問するようなのは無視する

15 :デフォルトの名無しさん:04/10/16 22:57:35
削除依頼しておく。


16 :デフォルトの名無しさん:04/10/16 23:00:40
>>15
それならついでに前スレのAAのレス削除依頼してきて

17 :デフォルトの名無しさん:04/10/16 23:04:24
こっちはその時(あっちを使い切ったとき)がくるまでじっくり寝かせておこう。

18 :デフォルトの名無しさん:04/10/16 23:20:17
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       /|(●),   、(●)、.:::::::::::::::|
  | |       |   ,,ノ(、_, )ヽ、,, .U :::::::::::::::| なにこのスレ……
  | |      .|U  `-=ニ=- '  .::::::::::::U:::|
  | |       |    `ニニ´ U.....:::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::

19 :NGワード:04/10/16 23:41:35
(●)


20 :デフォルトの名無しさん:04/10/16 23:52:24
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       /|(○),   、(○)、.:::::::::::::::|
  | |       |   ,,ノ(、_, )ヽ、,, .U :::::::::::::::| なにこのスレ……
  | |      .|U  `-=ニ=- '  .::::::::::::U:::|
  | |       |    `ニニ´ U.....:::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::

21 :NGワード:04/10/16 23:54:55
\((●|○)\)

22 :デフォルトの名無しさん:04/10/17 02:33:03
前スレタイよりはまし。

23 :デフォルトの名無しさん:04/10/17 02:42:21
ただ、感情にまかせてスレ立てするのはいただけない
気持ちはわかるが。

24 :デフォルトの名無しさん:04/10/17 12:14:06
Linax 2.4.23 SCHED.C を修正して FAIR TIME SCHEDULING にしなさい。
というものです。どうか、よろしくお願いします。

25 :デフォルトの名無しさん:04/10/17 12:16:04
あっ、間違いました。Fair Share Scheduling です。
すみません、よろしくお願いします。

26 :デフォルトの名無しさん:04/10/17 13:03:11
Linux 2.6.0 を修正してマイクロカーネルにしなさい.
というものです.どうかよろしくお願いします.

27 :デフォルトの名無しさん:04/10/17 23:22:45
>>26
良い課題に恵まれたんですね.いいなぁ.
GNU Hurd のソースとかは参考になるのかな?

28 :デフォルトの名無しさん:04/10/17 23:30:13
なんか凄いね。

会社で良い組み込み系OS探してんだが、
調べてる暇も無いので、完成したらパクらせて欲しい。

29 :デフォルトの名無しさん:04/10/18 05:19:32
    /\___/ヽ
   /''''''   '''''':::::::\     
  . |(●),   、(●)、.:| + >>26 全部自分でやりなさい。
  |   ,,ノ(、_, )ヽ、,, .::::|.    
.   |   `-=ニ=- ' .:::::::| +   
   \  `ニニ´  .:::::/  +  
,,.....イ.ヽヽ、ニ__ ーーノ゙-、    
:   |  '; \_____ ノ.| ヽ i   
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||.

30 :デフォルトの名無しさん:04/10/19 13:32:14
>>26
既にそういうプロジェクトがあるようです.
http://research.nii.ac.jp/H2O/

31 :デフォルトの名無しさん:04/10/21 00:43:10
質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:winXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:今日中
[5] その他の制限:特に無し

C言語初心者です。課題で迷っています。
strcmp関数(文字列の比較する関数)と同じ働きをする関数αを作りたいですがどのように作れば良いのか分かりません。教えて下さい。
ちなみに関数の作り方の構文は知っています。



32 :31:04/10/21 00:45:32
開発環境はMicrosoft Visual Studio .NET 2003

33 :デフォルトの名無しさん:04/10/21 00:45:44
>>31
関数の作り方の構文とは何だ。
ていうか、前スレ終わってから使えよ、ここを。

34 :デフォルトの名無しさん:04/10/21 10:41:35
>>31 動作確認もしとらんがこんなもんだろ。マルチやめれ。

int α( char* a, char* b )
{
while( *a && *b && *a == *b ) { a++; b++; }
return *a - *b;
}


35 :デフォルトの名無しさん:04/10/21 11:18:36
マルチなんかに答えてやるなよ

36 :デフォルトの名無しさん:04/10/21 11:25:20
まぁそうなんだが、誰か答えれば止めるだろうと...

37 :デフォルトの名無しさん:04/10/21 12:28:48
そうやって甘やかす香具師がいるから図に乗ってマルチすんだろが

38 :デフォルトの名無しさん:04/10/21 12:44:55
そうやって誰も答えないからさらにマルチするんだろが。

ま、素人のマナー違反にカリカリしなさんな。

39 :デフォルトの名無しさん:04/10/21 12:52:29
>>38
あっちでみんな答えてるだろうが。
お前のマナー違反をどうにかしろ馬鹿野郎

40 :デフォルトの名無しさん:04/10/21 14:11:16
↑あっちこっちにまともな回答がないから書いたわけだが...

不毛なのでもうやめ。逃げるにあらず。


41 :デフォルトの名無しさん:04/10/21 14:13:45
逃げやがった

42 :デフォルトの名無しさん:04/10/21 14:17:50
>>40
ちゃんと答え出てるのにな。ああ、お前が理解できないだけか。
逃げた馬鹿に何を言ってもしかたがないけど。

43 :デフォルトの名無しさん:04/10/21 14:21:55
ヘタレ野郎を追い詰めるスレはここですか?

44 :デフォルトの名無しさん:04/10/21 15:51:05
別板より誘導されたのでここで質問します。

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=126

[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):Microsoft Visual C++ 6.0
 [3.3] 言語:C
[4] 期限:10月22日まで

リンク先のプログラムはL x M 行列 A と M x N 行列 B の積 C(Cは L x N 行列)
を求めるプログラムですが、これを
「行列Bを、転置行列に変換してからAとの積を求める」プログラムにするには
どうしたらいいいか回答をお願いします。

45 :デフォルトの名無しさん:04/10/21 16:35:38
>>44
ていうか、前スレ終わってから使えよ、ここを。

46 :デフォルトの名無しさん:04/10/21 17:25:09
>>44
正方行列でなくても転置行列って定義できるのか?
というか題意の通り行と列をひっくり返したら正方行列でないと積が不可能になっちまう。

47 :デフォルトの名無しさん:04/10/21 21:10:36
>>46
..........................................................................

48 :デフォルトの名無しさん:04/10/21 21:50:17
>>47
何が言いたいのか低学歴なヲレにも分かるような表現をしてくれ

49 :44:04/10/22 00:49:36
行列Bは転置したあとに 必ずM x N 行列となると考えていいです。

50 :デフォルトの名無しさん:04/10/22 01:26:41
Bを転置する関数かいて放り込めばいいやん
それぐらいやれ

51 :デフォルトの名無しさん:04/10/25 18:25:51
すいません!よろしくお願いします!(赤、緑、青、白、黒を示すプログラム)
赤、緑、青の数値の中で

(1)まず青の数値の割合が20〜26%の時に白
(2)次に赤、緑、青のうちで最も割合の多い色を示し
(3)それ以外は黒
とするプログラムを作成願います。
自分はif文のただ羅列で行き詰ってしまったのでお手数ですが。

52 :デフォルトの名無しさん:04/10/25 18:46:37
>>51
マルチは放置

53 :デフォルトの名無しさん:04/10/25 20:18:42
>>36
>>38
早く答えてやれよ
出番だぜ

54 :デフォルトの名無しさん:04/10/25 20:55:35
>>51
RGB各プレーンを対象とするということか?
(1)はBプレーン以外は関係ないのか?
(2)は各プレーンのうち一番明るいプレーンがどれかということか?
(3)は(1)以外で(2)以外と解釈すると有り得ないがどういう意味か?

55 :デフォルトの名無しさん:04/10/25 21:32:25
>>54
(1)はBプレーン以外のものはなんでもいいんじゃない!
それから(2)と(3)は逆のプログラムすればいいと思うがそれにしてもムリそうだな!


56 :デフォルトの名無しさん:04/10/25 22:10:50
>>51
何をしたいのか全く分からん。そのif文だらけになった
自分で書いたコードをさらしてみよ。理解の一助になるかも知れん。

57 :デフォルトの名無しさん:04/10/25 22:14:02
そうやって甘やかす香具師がいるから図に乗ってマルチすんだろが

58 :デフォルトの名無しさん:04/10/25 22:18:05
ここって、甘やかすためのスレではなかったのですか?

59 :デフォルトの名無しさん:04/10/25 22:27:29
マルチする奴にやってはいけませんよと優しくささやくスレですが?

60 :デフォルトの名無しさん:04/10/26 00:09:56
エラストテネスのふるいで100までの素数を求める方法キボンヌ

61 :デフォルトの名無しさん:04/10/26 00:11:32
ていうか、前スレ終わってから使えよ、ここを。

62 :デフォルトの名無しさん:04/10/26 00:22:06
>>60
工夫という工夫、一切なし。
#include <iostream>
static const int PRIME_MAX = 100;
int main()
{
  int prime[PRIME_MAX + 1];
  for (int i = 2; i <= PRIME_MAX; ++i)
    prime[i] = 1;
  for (int i = 2; i <= PRIME_MAX; ++i)
  {
    int notprime = i;
    while ((notprime += i) <= PRIME_MAX)
      prime[notprime] = 0;
  }
  for (int i = 2; i <= PRIME_MAX; ++i)
    if (prime[i]) std::cout << i << ' ';
  std::cout << std::endl;
}

63 :デフォルトの名無しさん:04/10/26 00:22:47
て い う か 、 前 ス レ 終 わ っ て か ら 使 え よ 、 こ こ を 。

64 :デフォルトの名無しさん:04/10/26 00:39:36
つまり前スレ終わってからここを使えってことか?

65 :デフォルトの名無しさん:04/10/26 00:49:38
「ていうか」ってなんですか?

66 :デフォルトの名無しさん:04/10/26 00:53:22
もうこのスレ埋め立てするの?

67 :デフォルトの名無しさん:04/10/26 06:15:38
本当にまずいんです!よろしくお願いします!(赤、緑、青、白、黒を示すプログラム)
赤、緑、青の数値の中で

(1)まず青の数値の割合が20〜26%の時に白
(2)次に赤、緑、青のうちで最も割合の多い色を示し
(3)それ以外は黒
とするプログラムを作成願います。
自分はif文のただ羅列で行き詰ってしまったのでお手数ですが。

>>54
違います!

>>56
すいません。いやになって消してしまいました

>>57
どうかお願いします!


68 :デフォルトの名無しさん:04/10/26 08:41:42
>>60
サンクス!!繰り返しの仕方かなり参考になるわ。初心者でスマヌ。

69 :デフォルトの名無しさん:04/10/26 08:55:01
だから何を言いたいのかまったく分からないと書いているだろうに。
こんなんでいいんかいな。
#include <stdio.h>
int max(double x[3]){
  return x[0] < x[1] && x[1] < x[2] ? 2 : x[0] < x[1] && x[1] > x[2] ? 1 : x[0] > x[1] && x[1] > x[2] ? 0 : x[0] < x[2] ? 2 : 0;
}
int main(void){
  double color[3];
  const char* colorname[3] = {"赤", "緑", "青"};
  printf("%s(%%)?:", colorname[0]);
  scanf("%lf", &color[0]);
  printf("%s(%%)?:", colorname[1]);
  scanf("%lf", &color[1]);
  printf("%s(%%)?:", colorname[2]);
  scanf("%lf", &color[2]);
  if (color[0] < 0.0 || 100.0 < color[0] ||
      color[1] < 0.0 || 100.0 < color[1] ||
      color[2] < 0.0 || 100.0 < color[2]) {
    printf("Error!:0%未満、または100%以上のものがあります!");
    return 1;
  }
  if (20.0 <= color[2] && color[2] <= 26.0) {
    printf("白\n");
    printf("最大のものは%s\n", colorname[max(color)]);
  }
  else
    printf("黒");
  return 0;
}

70 :51:04/10/26 10:06:12
>>67
誰だよ!俺のフリして書き込みしてるアホは!
>>69
どうもありがとうございました、ご恩に尽きます。

71 :デフォルトの名無しさん:04/10/26 11:08:54
恩に尽きちゃうのか。

72 :デフォルトの名無しさん:04/10/27 10:35:19
              ,,;:-‐''"⌒ ̄";;;;;;;⌒ ̄"ヾ、
              ='-‐''"/,::´ /::::::::::::::::ヽ :::`ヾ
              ァ'´.,:´/.::::::/i:: :::::. :; :::丶 ::::::ヾ、
             / / ::/.:  { l ヽ_,,,_`、 .:`、ヽ:::::::ヽ`
              {::/ァ' .i..:/i.::{::{.ヾ~::i:ヾ丶::::::.::::i:::::::::}
          、_ノ'.{ .::::{-{‐{:;iヾ{ '"T ヾ il.|'.:::.::}::::::::ト、
              l.:il :lヽi'"ヽ`、ヽ .l,'゚i!'〉リi}::i:::::l:::ノ::ハヽ、_
麻衣子は        {:| i .} } {'゚}.   ┴-' i}:ノl::::}::i:::::. l`ー"
 お風呂入るから   {、.ヾ-i ー´、    〃 ノ:::ノ::ノ::}:: ::. }
  ちょっと待っててね   ノト " っ   、_,;-':.:'/:::::::l: : l
                {:l:::`i::..、   ._.,.;:イシ:::/::ノ   l、
                iんV´iノノ` ツi iリノツ-‐''"  :: : ヽ 、
             _,-.r‐i {,-ト .i_,,ノ-‐-―/ : : :::ノ :::::.  } `、
            ( l ./ /~   /     .ノ/:::::/:  ::::::: : :l
           (.._,,iツvV   .,'     ,'::{:::;:::::   :::::::: :::i
          `ー7/::::{. '"~/     {;;;li/::::l::::::  :::::::::::::{
            {:l(ァ'  ,, '      l::;;|l/:::{i::::: : ::: :::: ::::l
            リァ' .,  ´       /メ{ {l:::/ {:::l:. :  :  ::::|
           /, ´      ノ // l {iメ {:::|i:: :    :::l
          /./       /::'/:/  {:i:|イ{ i::l::  i    ::}
          i' ´      /::::::/::/    l .:|::::|:l:::l : l :   ::l
          {      , イ´  /::;/  .ィ´:| }::::l:i::::i:i:. .| : :.  ::l
            i、__,, ィ i::::l  /:,:::l //l::::l .}::::li:::::l l::::} i: i  :::l

73 :デフォルトの名無しさん:04/10/27 15:00:07
>>72
( ゚Д゚)ゴルァ!!
こっちきちゃダメ。

74 :デフォルトの名無しさん:04/10/29 03:16:04
xが整数であるかどうかを,if文で判別したいんですが,どうすればいいんかな?

75 :デフォルトの名無しさん:04/10/29 03:47:41
doubleのxのことか?

76 :デフォルトの名無しさん:04/10/29 10:35:47
xは文字列ではないかと超予想

77 :デフォルトの名無しさん:04/10/29 10:46:54
>>76
エスパーキタ━━━━━━(゚∀゚)━━━━━━ !!!!!

78 :74:04/10/29 15:54:42
>>75
そう,xはdoubleっす


79 :デフォルトの名無しさん:04/10/29 16:09:54
>>74
if(x == (int)x)
で、望みの結果が得られるかもしれない。

80 :デフォルトの名無しさん:04/10/29 16:19:33
   / ̄ ̄ ̄ ̄ ̄ ミ
  /   ,――――-ミ
 /  /  /   \ |
 |  /   ,(・) (・) |
  (6       つ  |
  |      ___  |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |      /__/ /  < なわけねぇだろ!
/|         /\   \__________

81 :デフォルトの名無しさん:04/10/29 16:28:13
>>80
なんで?

82 :デフォルトの名無しさん:04/10/29 16:32:50
望みの結果がintに収まる範囲でのみ、で桶なら

83 :デフォルトの名無しさん:04/10/29 16:44:10
(x+0.5)(int)
四捨五入な。

84 :74:04/10/29 16:49:04
>>79
さんくす


85 :デフォルトの名無しさん:04/10/29 17:05:00
ファイルを読み込むときにその前にscanfで入力した値に
依存するファイルを読み込む、ってことはできるんでしょうか?
scanf("%d",&n);
fp=fopen("node3.dat","r");
この3をnによって変えたいのですがやり方がわかりません。


86 :デフォルトの名無しさん:04/10/29 17:05:42
>>85
できる

87 :デフォルトの名無しさん:04/10/29 17:06:57
>>85
char filename[100];
sprintf(filename, "node%d.dat", n);
fp = fopen(filename, "r");

88 :デフォルトの名無しさん:04/10/29 17:07:03
>>86
すみません、できれば教えていただきたいのですが・・・

89 :デフォルトの名無しさん:04/10/29 17:07:44
>>87
ありがとうございました

90 :デフォルトの名無しさん :04/10/30 02:03:56
依頼お願いします。
ある領域内に長方形が描画されている(入力画像として読み込み)として、
その長方形で平行な線分どうし(縦横各一組)をペアリングして検出する
プログラムをVC++で作りたいのですが、どのような記述にすればよいで
しょうか。
結果の表示方法は、平行だということが言えている様ならどんな感じでも
大丈夫です。どなたか知恵を貸して下さい。

91 :デフォルトの名無しさん:04/10/30 07:10:46
edgeの抽出は終わってて辺の直線のベクトルとかは既に得られてると考えていいの?


92 :デフォルトの名無しさん:04/10/30 09:40:07
>>90
  ■■■
  ■■■
こういう画像があったら、
  │
─┴─┬─
     │
微分するとこうなる。
  ↑  ↑
ここに注目すればペアが得られる。写真などの場合はノイズに注意。

93 :デフォルトの名無しさん:04/10/30 10:55:46

こんなのも

94 :デフォルトの名無しさん:04/10/30 13:50:30
質問なのですが
#defineで指定している定数値があるのですが
それを外部のファイルから数値を読み込んで設定する方式に変えたいのですが
どのように書けばいいでしょう?



95 :デフォルトの名無しさん:04/10/30 13:59:54
Win32APIのInterlocked〜とCriticalSectionだけを使って同期を取り、2つのスレッドを交互に実行する方法はありますか?ヒントだけでもお願いします。

96 :デフォルトの名無しさん:04/10/30 15:10:01
n人の成績データを入力して、合計、平均、平均との差を出力するプログラムを
書いてるんですが、もう少しきれいなソースになる気がするんですが、どう変更すればいいでしょうか?

#include<stdio.h>
#define N 10

int main(void)
{
int ten[N],sum,ave,i;
printf("点数データを%d件入力してください\n->",N);
scanf("%d",&ten[0]);
sum=ave=ten[0];

for(i=1;i<N;i++){
printf("->");
scanf("%d",&ten[i]);
ave=(ave+ten[i])/2;
sum+=ten[i];
}

printf(" 点数 平均との差\n");
printf("----------------\n");
for(i=0;i<N;i++){
printf("%3d\t%3d\n",ten[i],ten[i]-ave);
}
printf("----------------\n");
printf("合計:%4d : 平均:%3d\n",sum,ave);
return 0;
}

97 :デフォルトの名無しさん:04/10/30 15:15:00
>>96
平均の式が間違い
まず算数からやり直せ

98 :96:04/10/30 15:29:03
>>97
int sum=0

for(i=0;i<N;i++){
printf("->");
scanf("%d",&ten[i]);
sum+=ten[i]
}

ave=ten/N;

こんな感じに変更すればいいでしょうか?

99 :デフォルトの名無しさん:04/10/30 15:34:32
#include<stdio.h>
#define N 10

int main(void)
{
  int ten[N], sum, ave, i;
  printf("点数データを%d件入力してください", N);
  for (i = 0; i < N; i++) {
    puts("->");
    scanf("%d", &ten[i]);
    sum += ten[i];
  }
  ave = sum / N;

  puts(" 点数 平均との差");
  puts("----------------");
  for(i = 0; i < N; i++) {
    printf("%3d\t%3d\n", ten[i], ten[i] - ave);
  }
  puts("----------------");
  printf("合計:%4d : 平均:%3d\n", sum, ave);
  return 0;
}

100 :从*・ 。.・) ◆SayuminPM. :04/10/30 17:25:08
100

101 :90:04/10/30 18:06:17
>>91-92
返信遅れてすみません。
edgeの抽出は終わってる状態でかまいません。もし分かるなら
教えていただけませんでしょうか。

102 :デフォルトの名無しさん:04/10/30 18:18:35
Cで自然数a,bの約数を全て表示するプログラムを教えてください。

103 :デフォルトの名無しさん:04/10/30 18:26:45
>>102
公約数じゃなくてそれぞれの約数でいいのか?

104 :デフォルトの名無しさん:04/10/30 18:37:04
工夫なし
#include <stdio.h>

int main(void)
{
int a, b, x, i;

printf("a b "); scanf("%d %d", &a, &b);
if (a < 0 || b < 0) return 1;
x = (a - b) ? (b) : (a);
for (i = 1; i <= x; i++)
if(a % i == 0 && b % i == 0) printf("%d\n", i);

return 0;
}

105 :デフォルトの名無しさん:04/10/30 18:43:01
一応
#include <stdio.h>

void f(int x)
{
int i;
for (i = 1; i <= x; i++)
if(x % i == 0) printf("%3d ", i);
puts("");
}

int main(void)
{
int a, b;

printf("a b "); scanf("%d %d", &a, &b);
if (a < 0 || b < 0) return 1;

puts("aの約数"); f(a);
puts("bの約数"); f(b);

return 0;
}

106 :デフォルトの名無しさん:04/10/30 18:47:02
あ、まちがえてた。
まあいいや、勝手にしる。

107 :デフォルトの名無しさん:04/10/30 18:54:30
>>102
公約数なら、、 と思って作ったら表示してねぇ。まぁいいか。

struct int_list{
  int value;
  int_list next*;
}
int_list* kouyakusuu(int a,int b){
  if(a==0 || b==0){
    return null;
  }
  int_list result* = new int_list;
  int_list nowList* = result;
  int minArg = a<b?a:b;
  for(int i=1;i <= minArg;i++){
    if(a%i==0 && b%i==0){
      (*nowList).next = new int_list;
      nowList = (*nowList).next;
      (*nowList).value=i;
    }
  }
  return (*result).next;
}

108 :102:04/10/30 18:59:45
>>103-107
すいません、ありがとうございます。
公約数って書き忘れてました。

109 :デフォルトの名無しさん:04/10/30 19:00:31
公約数とはどこにも書いてないからなあ

110 :107:04/10/30 19:10:30
>>107 に、これつなげれば動くかな。

#include <stdio.h>

void main(char** args){
  int a,b;
  scanf("%d %d", &a, &b);
  int_list result* = kouyakusuu(a,b);
  while(result != null){
    printf("%d\n", (*result).value);
    result = (*result).next;
  }
}

111 :デフォルトの名無しさん:04/10/30 19:19:08
#include <stdio.h>

int main(void)
{
    int a = 234, b = 354, i;
    for(i = 1; i <= a && i <= b; i++)
        if(a % i == 0 && b % i == 0)
            printf("%d\n", i);
    return 0;
}

112 :ジョン:04/10/30 23:33:00
急ぎなんですけど、誰か助けてください。
学校で課題が出たんですけど、さっぱり分かりません。
ボイヤームーア法を使って文字列の探索するプログラムを作れという課題です。
下にプログラム(未完成)を載せておきます。これを改良して作るのらしいのですが・・・。
どなたかお願いします。
#include <stdio.h> #include <string.h> #define MAXCHR1 1000 #define MAXCHR2 256
int main(void){
char filename[MAXCHR2], ex[MAXCHR1], strg[MAXCHR2];
FILE *fp;
printf("Input filename.\n");
fgets(filename, MAXCHR2, stdin);
printf("Input search string.\n");
fgets(strg, MAXCHR2, stdin);
if((fp = fopen(filename, "r")) == NULL){
printf("read open error!");
return(-1);
while(fgets(ex, MAXCHR1, fp) != NULL){
/* ここでボイヤームーア法を使う */ }
fclose(fp);
return (0);


113 :デフォルトの名無しさん:04/10/30 23:36:59
>>112
ちょっとまってろ。めしおごれよ。

114 :デフォルトの名無しさん:04/10/30 23:38:45
急ぎ?
今日土曜だし、明日日曜だし、早くても明後日までだろ?

115 :ジョン:04/10/30 23:39:59
そうですね。あさってまでなら何とかなりそうです。
お願いします。

116 :デフォルトの名無しさん:04/10/31 02:53:12
知ってるが
      お前の態度が
                気に入らない

117 :r:04/10/31 12:46:04
BMサーチ

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1027870433_319/bms.c

うそ。インチキ。
インチキなのは、INCHIKI を含む行です。
つか、どうやるんだろう。いくつ足し算をするんだろう。

118 :デフォルトの名無しさん:04/10/31 13:51:42
C++ の宿題なんですが
入力した文字を逆転表示して表示させるにはどうしればいいのでしょうか・・・?


こんにちは

はちにんこ

と言った具合です。



119 :デフォルトの名無しさん:04/10/31 13:58:38
for(i=0; i<sizeof(str); i++)
{
printf("%c",str[(sizeof(str)-1)-i]);
}
printf("\n");

120 :デフォルトの名無しさん:04/10/31 14:01:44
sizeofでいいのかー?

121 :デフォルトの名無しさん:04/10/31 14:03:56
>>118
1-tape TuringMachineのプログラムでもいいですか?

122 :デフォルトの名無しさん:04/10/31 14:05:10
>>121
お願いします。

123 :デフォルトの名無しさん:04/10/31 14:07:11
こんにちは
はマルチバイトだよ

124 :デフォルトの名無しさん:04/10/31 14:07:36
#include <stdio.h>
void main(){
  char str[256];
  gets(str);
  for(int i=strlen(str)-1;i;i--){
    printf("%c",str[i]);
  }
}

125 :デフォルトの名無しさん:04/10/31 14:16:25
>>124
error C2065: 'strlen' : 定義されていない識別子です。とでました・・・

126 :デフォルトの名無しさん:04/10/31 14:21:31
ハハハ・・・
strlenはstring.hにあるの忘れてた上にマルチバイトも無視するとはな・・・

#include <string.h>

127 :デフォルトの名無しさん:04/10/31 14:25:08
>>126
今度は出来ました。
ありがとうございました。

128 :デフォルトの名無しさん:04/10/31 14:27:07
//ちょっと訂正。いまだマルチバイト無視。
#include <stdio.h>
#include <string.h>
void main(void){
  char[] str = new char[256];
  gets(str);
  int i=strlen(str);
  while(i){
    i--;
    printf("%c",str[i]);
  }
}

129 :デフォルトの名無しさん:04/10/31 14:37:27
>>128

\test2.cpp(5) : warning C4091: 空白の宣言が見つかりました。
\test2.cpp(5) : error C2143: 構文エラー : ';' が '[' の前に必要です。
\test2.cpp(5) : error C2143: 構文エラー : ';' が '[' の前に必要です。
\test2.cpp(6) : error C2065: 'str' : 定義されていない識別子です。
\test2.cpp(10) : error C2109: 配列または、ポインタでない変数に添字が使われました。
cl.exe の実行エラー

test2.exe - エラー 4、警告 1

ってなります・・・

130 :デフォルトの名無しさん:04/10/31 14:42:53
CコンパイラじゃなくてC++コンパイラじゃなきゃいやん。

131 :デフォルトの名無しさん:04/10/31 14:43:05
(σ゚∀゚)σgets!!

132 :デフォルトの名無しさん:04/10/31 14:45:36
>>130
コンパイラは Microsoft Visual C++ 6.0使ってます。


133 :デフォルトの名無しさん:04/10/31 14:45:36
あらま、、、 C++じゃない環境で動作確認したのがまずかったか・

char[] str = new char[256];
じゃなくて
char str[256];

だな。

134 :デフォルトの名無しさん:04/10/31 14:49:25
>>133
今度はOKでした。
しかし DOSでこんにちはと打つと

こんにちは
ヘちにんこ1ress any key to continue

となってしまいます・・・

135 :デフォルトの名無しさん:04/10/31 15:08:44
getsしたあと'\n'のあとに'\0'を入れなきゃだめな希ガス。

136 :デフォルトの名無しさん:04/10/31 15:23:24
再度依頼お願いします。
ある領域内に長方形が描画されている(入力画像として読み込み)として、
その長方形で平行な線分どうし(縦横各一組)をペアリングして検出する
プログラムをVC++で作りたいのですが、どのような記述にすればよいで
しょうか。
結果の表示方法は、平行だということが言えている様ならどんな感じでも
大丈夫です。edgeの抽出は終わってる状態として結構です。
どなたか知恵を貸して下さい。

137 :デフォルトの名無しさん:04/10/31 15:28:14
本当に宿題か?

138 :デフォルトの名無しさん:04/10/31 15:31:23
宿題じゃなくてもいいんじゃない?

139 :r:04/10/31 15:53:37
class Line {
public:
    double GetX1() const;
    double GetY1() const;
    double GetX2() const;
    double GetY2() const;
};
こんなインタフェースが用意されていて、
全部のLineはvector<Line> lines;に入っているとする。

こんなクラスを用意する
struct K {
    Line* line;
    double a;
    Katamuki( const Line* line ) {
    this.line = line;
    a = ( line -> getX1() - line -> getX2() )/ ( line -> getY1() - line -> getY2() );
    }
};
あとは、
vector<K> ks;
for( ... )
    katamuki.push_back( lines[i] );
とし、ks を a の値でソートし、
値の近い物を平行なラインとすればいい。
aが無限大になりそうな場合の処理は、まあ、なんとか考えて。

140 :デフォルトの名無しさん:04/10/31 15:58:06
>>139
せめてatan2とか使えよ。

141 :デフォルトの名無しさん:04/10/31 17:07:00
scanfでAかBを入力させて、そのあとifを使って分岐させて続きを作りたいのですが、
char x,A,B;
printf("AかBを入力してください>>");
scanf("%c",&x);
if(x == A)
{

}
if(x == B)
{

}
こんな感じにしましたが、ifの中身から実行されません。scanfで表示させた文字を
if文に反映させるにはどうすればいいんでしょうか?言語はCです。

142 :デフォルトの名無しさん:04/10/31 17:13:00
>>141
char x,A,B;
printf("AかBを入力してください>>");
scanf("%c",&x);
A = ’A’;
B = ’B’;
if(x == A)
{

}
if(x == B)
{

}

143 :デフォルトの名無しさん:04/10/31 17:21:35
>>142
できました。どうもありがとうございます。

144 :デフォルトの名無しさん:04/10/31 18:55:03
>>112
ここにソースある。これコピペでOKだ。
http://www-igm.univ-mlv.fr/~lecroq/string/node14.html#SECTION00140

145 :デフォルトの名無しさん:04/10/31 19:27:28
…テンプレ修正きぼん

旧: ・計算問題は必ず数式自体をあげ、どのような計算をするのか
新: ・計算問題、アルゴリズム問題では必ず数式や手順を示し、詳しい説明を付記してください。

146 :デフォルトの名無しさん:04/10/31 19:30:33
>>145
そんな事が書けるようだったら質問なんかするわけないじゃん

147 :118:04/10/31 19:47:17
誰か教えてください・・・

148 :デフォルトの名無しさん:04/10/31 19:49:31
/*
>>118
文字反転プログラム(Shift-JIS)
*/
#include<stdio.h>

#define SIZE   256

void    r_put(unsigned char* p) {
    if (*p == '\0')
        return;
    
    if (((0x80<p[0]) && (p[0]<0xa0)) || ((0xe0<=p[0]) && (p[0]<0xf0))) {
        r_put(p+2);
        putchar(p[0]);
        putchar(p[1]);
    } else {
        r_put(p+1);
        putchar(p[0]);
    }
}

int     main() {
    unsigned char    buff[SIZE];
    
    printf("文字列を入力してください\n");
    scanf ("%s", buff);
    r_put (buff);
    
    return 0;
}


149 :118:04/10/31 20:04:20
>>148
なんとお礼を申し上げたらいいものか・・・
完璧です!
ありがとうございました。

150 :ジョン:04/10/31 20:31:57
>>144
ありがとうございます。でも、コンパイル時にエラーがでます・・・。

151 :デフォルトの名無しさん:04/10/31 20:35:53
>>148
「хavを入力すると正しく動きません。

152 :デフォルトの名無しさん:04/10/31 20:57:30
>>150
ソースの先頭に
#include <stdio.h>
#define ASIZE 256 /* 256文字種(asciiだけでいいなら128?) */
#define XSIZE 100 /* 検索文字列の最大長かな(動的確保するなら不要) */
#define OUTPUT(x)printf("%d\n", (x))
#define MAX(a, b)(a) > (b) ? (a) : (b)
でもつけとけ。

153 :ジョン:04/10/31 21:14:58
>>152
#define MAX(a, b)(a) > (b) ? (a) : (b)
の?っていうのはどういうものですか?

154 :デフォルトの名無しさん:04/10/31 21:18:20
if(a>b)
return b;
else
return a;
を総画

155 :152:04/10/31 21:22:46
あー、小修正。
#define OUTPUT(x) printf("%d\n", (x)) /* 開始位置の出力(0オリジン) */
#define MAX(a, b) ((a) > (b) ? (a) : (b)) /* 大きいほうの数値を得るよくあるマクロ */


156 :デフォルトの名無しさん:04/10/31 21:31:49
どうしてもわかりません。どなたかご教授ください。おねがいします!
f(x)=exp(-x^2)-sinx=0を2分法で根を求めるプログラムを作成せよ。
・初期値a,bをそれぞれ1,0とし、収束判定値eを5*10^-7とすること。
・コマンドライン引数として「-k」を与えると計算量を表示すること。
・計算結果はファイルに保存できるようにすること。
(実行例1)
C:\....\C>nibunpou
a=1
b=0
e=5E-7

出力ファイル名を入力してください。 > test.txt
c  n
----------------
1  0.5000000
2  0.7500000
3  0.6250000
4  0.6875000
5  0.6562500



20  0.6805983
(実行例2)
C:\....\C>nibunpou -k
a=1
b=0
e=5E-7

計算量は20回です。

157 :デフォルトの名無しさん:04/10/31 21:44:04
言語はCです。お願いします。

158 :デフォルトの名無しさん:04/10/31 21:47:41
>>156
どこがどう判らない?
全部丸ごと一分たりとも判らないなら死ね。

159 :デフォルトの名無しさん:04/10/31 21:51:44
>>118
#include <locale>
#include <string>
#include <list>
#include <iostream>

int main() {
std::locale::global(std::locale("japanese"));
std::wstring wstr;
std::wcin >> wstr;
std::list<wchar_t> wclst(wstr.begin(), wstr.end());
wclst.reverse();
wstr.assign(wclst.begin(), wclst.end());
std::wcout<< wstr << std::endl;
}

160 :デフォルトの名無しさん:04/10/31 22:42:58
>>156
#include <stdio.h>
#include <assert.h>
#include <math.h>
#include <string.h>
#define func(x) (exp(-pow((x),2))-sin(x))
int main(int argc, char **argv) {
double low=0, mid, high=1, ret;
double e = 5 * pow(10,-7);
int count = 0;

assert((func(low)<0&&func(high)>0) || (func(low)>0&&func(high)<0));
for (;;) {
count++;
mid=(low+high)/2;
if (fabs(ret=func(mid))<e)
break;
if (ret>0)
low = mid;
else
high = mid;
}
if (argc==2 && strcmp(argv[1],"-k")==0)
printf("%d times, ans: %f\n",count,mid);
else
printf("ans: %f\n",mid);
return 0;
}
完全に仕様には沿ってないけど、こんなもんでどう?

161 :デフォルトの名無しさん:04/10/31 23:13:25
どうでもいいこと気にしてみたり。
#define func(x) (exp(-(x)*(x))-sin(x))
double e = 5e-7;

162 :デフォルトの名無しさん:04/10/31 23:38:17
>>156
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=249

163 :デフォルトの名無しさん:04/10/31 23:46:36
>double e = 5e-7;
完全に忘れてたよ(;´Д`)

164 :156:04/10/31 23:52:48
>>160,>>161,>>162
丁寧にお答えいただき非常に助かりました。
ありがとうございます!


165 :デフォルトの名無しさん:04/11/01 06:10:42
ここって大学の入試問題のプログラムとか面倒見てくれるの?
海外向け携帯電話の英文入力インターフェース作ってるんだけど
今日の昼までの期限なんですが未だ出来ておらず…
自宅受験なんですがカンニングではなく情報収集力のテストもかねられてるっぽいんで
ttps://www.52school.com/rits/ans_menu.jsp
とりあえず問題見て感想ぷりーず


166 :デフォルトの名無しさん:04/11/01 06:56:56
↑みれない

167 :デフォルトの名無しさん:04/11/01 07:17:35
↑へんなsはいってるぞ
ttp://www.52school.com/rits/ans_menu.jsp

168 :デフォルトの名無しさん:04/11/01 07:24:21
おもしろそうだけど今日の昼までにはさすがに無理。
3日くらいほしいな。。

169 :165:04/11/01 07:31:26
>>168
独創的なのを作ろうとして*ボタンを切り替えボタンにして、
キーボードのQWERTY配列をキーボード左から3×3マスずつカットして3分割したのを
*ボタンで切り替えてうつって方式やりたいんだけど
切り替えボタンのプログラムがわからないっぽ


170 :165:04/11/01 07:36:37
キーボードの3×3カットの意味わかります?
こゆことです
パターン1

  1ボタン q 2ボタン w 3ボタン e

  4ボタン a 5ボタン s 6ボタン d

  7ボタン z 8ボタン x 9ボタン c
パターン2

1ボタン r 2ボタン t/ 3ボタン y

4ボタン f 5ボタン g 6ボタン h

7ボタン v 8ボタン b 9ボタン n
パターン3 

1ボタン u 2ボタン i 3ボタン o

4ボタン j 5ボタン k 6ボタン l

7ボタン m 8ボタン p 9ボタン 記号


171 :デフォルトの名無しさん:04/11/01 07:42:05
マルチすんなボケ

172 :デフォルトの名無しさん:04/11/01 07:49:06
>>165
オオ同じ穴の狢よw
ところで、オレはオーソドックスにToUpperを使って小文字を大文字に変換するプログラムを作ろうと思ってるんだけど

else if(SensePressedDuration(2) == LONG){//強く押された時
if (status == 10 ){//直前に入力された文字が10[a]なら
DeleteLetter();//[a]を削除し
DisplayLetter(ToUpper(10));     //大文字の[A]に変換、表示し ←ここがかなり間違ってる臭い・・
status = -1;//文字を確定する
}
でいのでしょうか・・・教えて偉い人・・・

173 :デフォルトの名無しさん:04/11/01 07:55:30
>>172
終わりそう?
俺取扱説明書で死にそう。2000字もいかね
創意工夫点も1000字もいかねw

174 :デフォルトの名無しさん:04/11/01 07:57:03
質問です。
配列に格納された文字列を1文字ずつ表示する関数。

void put_st(const char str[])
{
unsigned i=0;

while(str[i])
putchar(str[i++]);
}

これをprintf関数を用いるとコンパイルは出来るのですが、
実行途中でエラーがでます。
printf("%s",str[i++]);

なぜでしょうか?
どう直したらいいのでしょうか?

おねがいします。

175 :173:04/11/01 08:00:27
>>172
else if(SensePressedDuration(2) == LONG){//強く押された時
ってPressedDurationは長さのやつやのにコメントが「長く」じゃなくて「強く」
になってんの?

176 :デフォルトの名無しさん:04/11/01 08:02:06
>>169
配列とかでパターンごとのマップで持つくっといて、
'*'が押されたらマップを切り替えるようなものを作ってみたら?


177 :デフォルトの名無しさん:04/11/01 08:07:15
>>165
マルチじゃねぇか。消えろ。

>>174
%sってなんだよ。

178 :デフォルトの名無しさん:04/11/01 08:10:29
%sは文字列。この場合は%c。

179 :デフォルトの名無しさん:04/11/01 08:10:39
>>176
アドバイスさんくすです。
それ考えてたんですが。パターンごとのボタン表示のプログラム(今は3つ繋げられないんでパターンごとに保存してます)
はできているんですが、マップとしてくくるためにどんなプログラム使えばよろしいでしょうか?

180 :174:04/11/01 08:17:11
みなさんどうもありがとうございましたm(. .)m
すっきりしました。

181 :デフォルトの名無しさん:04/11/01 08:24:15
>174

printf("%c",str[i++]);
じゃないの?あるいは
printf("%s",str+i);i++;

182 :デフォルトの名無しさん:04/11/01 08:40:10
ランレングス符号化において、
効率よく圧縮を行う方法はどのようなものがありますか?



183 :デフォルトの名無しさん:04/11/01 09:01:22
>>173
こっちに書き込むときに間違ってたw
本文は確かめたけどちゃんと短く長くになってた・・
取り扱い説明書は、いろんな所のマニュアルからひっぱってくればいいとおもうよ
創意工夫は・・・むずいw

184 :ドシロウトかもしれない・・・:04/11/01 09:04:48
int SensePressedDuration(int ButtonNum)のくだりは合ってると思う
int ToUpper(int LetterNum)の使い方がちょっとわからなくて・・・

185 :デフォルトの名無しさん:04/11/01 09:06:22
>>183
てか海外向けだから説明書は英語じゃなくていいのか?w

186 :デフォルトの名無しさん:04/11/01 10:41:43
>>182
ランレングス法の問題点は、ランダムな文字列を符号化する場合
かえってサイズを大きくしてしまうことがある
そこで 「ここからn文字先までは符号化をしない――」 
ような情報を付加すれば、極端な膨張をおこさずに効率よく圧縮できる。

187 :デフォルトの名無しさん:04/11/01 11:07:26
C言語:分割コンパイルの宿題

2つの値(実数)をキーボードから入力し、
それぞれ以下のことを行う関数を作成し画面に表示するソースコードを記述しなさい。
ただし、main()関数と以下の関数は別ファイルに記述し、ヘッダファイルmp用いること。
-@加算 A減算 B乗算 C除算
-D大きいほうを出力 E小さいほうを出力

よろしくお願いします。

188 :デフォルトの名無しさん:04/11/01 11:08:21
誤字です、すいません
mp→も

189 :デフォルトの名無しさん:04/11/01 11:36:57
>>185
もしそうだとしたら絶望的だ・・w

190 :デフォルトの名無しさん:04/11/01 12:02:24
>>189
そんなときはExcite翻訳で。
#事後チェックを忘れずにw

191 :デフォルトの名無しさん:04/11/01 12:30:29
エキサイト翻訳を使うのは初心者。
漏れみたい玄人は暗記パンを使う。

192 :デフォルトの名無しさん:04/11/01 12:51:53
人の宿題をやってあげるなんて・・・。
なんていい人たちだ・・

193 :デフォルトの名無しさん:04/11/01 13:11:25
教えたがり人種

194 :デフォルトの名無しさん:04/11/01 13:29:56
CやC++のスレで宿題教えてと書くと邪魔だからこの隔離スレがあるのだよ

195 :デフォルトの名無しさん:04/11/01 14:45:36
そしてスルーされる187

196 :デフォルトの名無しさん:04/11/01 15:29:07
>>187
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "calc.h"
int main() {
  char Buffer[128];
  double Num[2];
  int i;
  for (i = 0; i < 2; i++) {
    printf("%dつめの数:", i + 1);
    fgets(Buffer, sizeof Buffer, stdin);
    Num[i] = atof(Buffer);
  }
  Add(Num);
  Sub(Num);
  Mul(Num);
  Div(Num);
  Max(Num);
  Min(Num);
  return 0;
}


197 :デフォルトの名無しさん:04/11/01 15:30:34
//calc.c
#include <stdio.h>
#include "calc.h"

void Add(double d[]) {
  printf("加算:%f\n", d[0] + d[1]);
}

void Sub(double d[]) {
  printf("減算:%f\n", d[0] - d[1]);
}

void Mul(double d[]) {
  printf("乗算:%f\n", d[0] * d[1]);
}

void Div(double d[]) {
  printf("除算:%f\n", d[0] / d[1]);
}

void Max(double d[]) {
  printf("最大値:%f\n", d[0] > d[1] ? d[0] : d[1]);
}

void Min(double d[]) {
  printf("最小値:%f\n", d[0] < d[1] ? d[0] : d[1]);
}


198 :デフォルトの名無しさん:04/11/01 15:31:22
//calc.h
void Add(double []);
void Sub(double []);
void Mul(double []);
void Div(double []);
void Max(double []);
void Min(double []);

199 :デフォルトの名無しさん:04/11/01 16:24:46
>>197
0除算チェックは?

200 :デフォルトの名無しさん:04/11/01 16:30:18
どうすべきか指定がないから、対応しようがないわな

201 :Cの課題:04/11/01 17:40:46
#include <stdio.h>
int gi;
void main(void)
{
int i,gi=0;
void count();
printf("\t gi\t ai\t si\n");
for(i=0; i<3; i++){
count();
gi=gi+1;
printf("main()\t gi= %d\n",gi);
}}
void count(void)
{
int i, ai=0;
static int si;
for(i=0; i<3; i++){
printf("count()\t gi= %d\t ai=%d\t si=%d\n",gi,ai,si);
ai =ai+1;
gi =gi+1;
si =si+1;
}}
(1)以上のプログラムを実行し,表示結果を説明せよ。
また,main()の中と外で変数名giを誤って重複使用している。
この場合,コンピュータは重複した変数をどう扱ってると考えられるか。
(2)変数宣言のところで,自動変数のgiやaiを0に初期化しているが,
初期化を行わないとどうなるか。
なんだかよく分からないので、どなたか説明して下さい!お願いします。




202 :デフォルトの名無しさん:04/11/01 18:15:59
(1)count関数を呼び、グローバル変数gi,自動変数ai,静的変数siを表示し、
  それぞれ+1する。これを3回繰り返しcount関数から戻る。
  自動変数giを+1して表示する。
  main関数内ではこの、「count関数を呼ぶ,自動変数giを+1して表示」を3回繰り返す。
  main関数内では、giは自動変数としてグローバル変数giとは別に扱われる。

(2)自動変数を初期化しないと、変数の内容は不定(なにが入っているか分からない)
  で開始される。

203 :デフォルトの名無しさん:04/11/01 18:36:30
#include <stdio.h>
#defineVSIZE 256
#defineHSIZE 256
int im[VSIZE][HSIZE];
main ()
{
int i,j;
int c;
FILE *fp;
fp = fopen("カラー.psd","rb");
for(i=0;i<VSIZE;i++){
for(j=0;j<HSIZE;j++){
c = fgetc(fp);
im[i][j] = c;
}
}
fclose(fp);
fp=fopen("グレースケール.psd", "wb");
for (i=0;i<VSIZE; i++){
for(j=0;j<HSIZE;j++){
fputc(im[i][j],fp);
}
}
fclose(fp);
}
カラー画像をグレースケール画像に変換する式は分かったんですが
どうやって書いていいのか分かりません。
変換式 グレースケール = 0.299R + 0.587G + 0.114B
おねがいします

204 :デフォルトの名無しさん:04/11/01 18:44:36
>>203
食事のあと入浴してから紅茶を飲んだ後に作ってあげるけれど、
言語はCでカラーのPSDフォーマットの画像をグレイスケールのPSDフォーマットの画像
に変換するんだね?

205 :デフォルトの名無しさん:04/11/01 18:45:22
C++でもOK?

206 :203:04/11/01 18:53:03
>>204 グレースケールは.rawに
>>205 OK

207 :デフォルトの名無しさん:04/11/01 19:29:33
>>165がどんな問題だったのか教えてくれorz気になって眠れん(´д`)

208 :デフォルトの名無しさん:04/11/01 20:55:06
PSDってどんな形式だっけ…。

209 :デフォルトの名無しさん:04/11/01 20:55:27
>>208
ホトショップ

210 :デフォルトの名無しさん:04/11/01 20:55:48
変換式がわかっててなんでかけないんだろう……

211 :デフォルトの名無しさん:04/11/01 20:56:48
psdって、レイヤー情報も持ってるんじゃなかったっけ?
単純に>203みたいには読めないと思うのだけど。

212 :デフォルトの名無しさん:04/11/01 21:02:05
PSDフォーマットの詳細がみつからないんだけど、
だれか知らない?

213 :デフォルトの名無しさん:04/11/01 21:57:49
psdの仕様が教えられている or 仕様書を貰っている
でもなきゃ、そんな宿題でないはず…。

214 :デフォルトの名無しさん:04/11/02 00:11:19
ちょっとお聞きしたいのですが、C言語の
関数からで.midiの再生をするプログラムを作ることは可能ですか?
.wavの再生にはPlaySound関数を使ってるのですがwavはファイルサイズ
が大きすぎて人に渡すプログラムを作るときに困ってしまいます。
もし再生する方法をどなたかご存じでしたらお願いします。




215 :デフォルトの名無しさん:04/11/02 00:16:47
>>214
とてもすれ違いです

216 :デフォルトの名無しさん:04/11/02 00:16:52
ふーん、宿題スレは誘導されなかったのに敢えてマルチとはねぇ。

217 :デフォルトの名無しさん:04/11/02 00:18:26
調べた方が早い上に労力もいらないだろうに

218 :デフォルトの名無しさん:04/11/02 00:21:55
216>>ついてきたか
217>>アフォだからわかんなかったんだよ

219 :デフォルトの名無しさん:04/11/02 03:22:37
>>203
ttp://www.wotsit.org/download.asp?f=psd3_4

220 :デフォルトの名無しさん:04/11/02 09:09:40
>>219
うへっ、めんどくせ。>204は満漢全席でも食べに行ったのか、一向に仕上がってこないから
フォーマットが来たことだしちょっとやってみようかと思ったら……
ImageMagickでも拾ってこいって感じだな。

221 :デフォルトの名無しさん:04/11/02 11:07:36
ポインタについて易しく書いてあるサイトありませんか?・・・

222 :デフォルトの名無しさん:04/11/02 11:53:11
ttp://www.plus-vision.com/jp/product/laserpointer/laserpointer.html
ttp://pya.cc/pyaimg/pimg.php?imgid=7198
ttp://www9.plala.or.jp/sgwr-t/

つーかググッたら結構出るだろうし、
ポインタ関連ならC専門スレのほうが的確(ここもスレ違いではないが)

223 :デフォルトの名無しさん:04/11/02 11:58:35
基礎的な事はサイトに頼る前に本買ってじっくり読めと思うが。

推薦図書/必読書のためのスレッド PART 20
http://pc5.2ch.net/test/read.cgi/tech/1097627740/l50

224 :デフォルトの名無しさん:04/11/02 12:27:49
ポインタの理解が変な人って、大抵メモリがイメージできてないんだよね

225 :デフォルトの名無しさん:04/11/02 15:03:28
目盛りですか?
軽量カップみたいなものを想像すればよろしいのでしょうか?
それとも、メジャーみたいなもののほうがいいのでしょうか?

226 :デフォルトの名無しさん:04/11/02 15:56:31
軽量カップですか?
NASAが開発した新素材かなんかを想像すればよろしいのでしょうか?

227 :デフォルトの名無しさん:04/11/02 16:22:44
昼間は厨房ばかりだな。つまんねーんだよ

228 :デフォルトの名無しさん:04/11/02 16:23:20
もう夕方だ

229 :デフォルトの名無しさん:04/11/02 16:26:46
クワガタ

230 :常識人:04/11/02 17:32:29
厨房ですか?
厨房は確かに、私のスーパープログラムの作成を阻害し、
またそれにより、私のスーパープログラムを、お目にかかることのできなくなった
このスレの住人には大損失です。
ですか、そもそも宿題を丸投げする人種は厨房なのです。
自分に利益をもたらす厨房(自己満足、優越感、技術向上を与えてくれる)は、歓迎し、
そうでない厨房(ネタレスをする厨房)は貶める。これはただのわがままです。
つまり、厨房ということになります。
厨房をこのスレでは許容すべきです。

お前が厨房だという意見は受け付けないので悪しからず。



231 :デフォルトの名無しさん:04/11/02 17:49:00
ほんたま?とはキャラ違うか

232 :デフォルトの名無しさん:04/11/02 17:59:16
> またそれにより、私のスーパープログラムを、お目にかかることのできなくなったこのスレの住人には大損失です。
日本語の勉強をしましょう

233 :デフォルトの名無しさん:04/11/02 18:07:00
優越感なんて感じるかよ・・・・こんな糞簡単な質問ばかりで・・・・・・
そりゃあ、君にはかなり難しいかもしれないがな・・・・

234 :常識人:04/11/02 18:08:24
批判は受け付けません。以上。

235 :デフォルトの名無しさん:04/11/02 18:12:16
まあコピペなんだがな。

236 :デフォルトの名無しさん:04/11/02 18:15:09
常識人さん。
またあなたですか?
どうして、あなたはわざわざ、長文を書いてまでこのスレを荒らすのです?
スーパープログラムですって?なんですか、スーパーって?
プログラマー以前に、人間として恥ずかしくないのですか?
もし、私だったらそんな生き恥をさらす前に、死を選ぶところです。
常識人さん。
わたしはこれまであなたに、「もう来ないで下さい」
そう言い続けてきました。
ですが、今日はあえて言わねばなりますまい。

常 識 人 死 ね。

237 :デフォルトの名無しさん:04/11/02 18:20:50
それもコピペなんだがな。

238 :デフォルトの名無しさん:04/11/02 20:46:33
コピペではないだろうが
>>236
お前は少し言いすぎなんじゃねーの?
”死ね”なんて軽々しく人に対して言っていいもんじゃない。
せめて”氏ね”とかにして”死”という字を使わないのが2ちゃんの常識。
そういう意味でお前は常識知らず。常識人のほうが
常識を持っている分だけまし。
もうこないでほしいのはお前のほうだ。常識人は、宿題が枯渇しているときの
俺たちの心のオアシス。
水がなければ俺たちは死ぬ。>>236、お前は俺たちを殺すつもりか?
殺される前に、俺はお前のことを警察に通報するつもりだ。




239 :デフォルトの名無しさん:04/11/02 20:49:36
これもコピペなんだがな。

240 : :04/11/02 20:52:20
数系変換プログラムをつくってくれませんか?

241 :デフォルトの名無しさん:04/11/02 21:01:21
>>240
template< T_>
int henkan( T_ arg_ ){
    return 1;
}

242 :デフォルトの名無しさん:04/11/02 21:47:23
ここではレポートの書き方とか質問しても大丈夫ですか?

243 :デフォルトの名無しさん:04/11/02 22:02:00
言いわけねーだろ

244 :デフォルトの名無しさん:04/11/02 22:07:47
よしのぶもちょっときてるな。
古田もきてるしな。

245 :デフォルトの名無しさん:04/11/02 22:16:59
>>243
C言語の課題のアルゴリズムを書かなくちゃいけないレポートなんですけどそれでもダメですか?

246 :デフォルトの名無しさん:04/11/02 22:23:28
>>245
問題見て判断

247 :デフォルトの名無しさん:04/11/02 22:32:20
この問題が分かりません。どなたかお願いします。
1.要素の数256の文字型配列str1, str2を宣言する。gets 関数を使ってstr1にキーボードから文字列を入力し、
ポインタを使ってその文字列をstr2にコピーするプログラムを作りなさい
2.入力された英文字列を、すべて大文字に変換して出力するプログラムを、
ポインタを使って作りなさい。


248 :デフォルトの名無しさん:04/11/02 22:39:11
>>247
関係者ですが、自分でやりなさい。

249 :デフォルトの名無しさん:04/11/02 22:41:52
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=322

このプログラムを基にポーカーの役判定アルゴリズムを完成させてください。
※トランプ52枚のカードはスペードのエースが0…スペードのキングが12…
そしてクラブのキングが51というように整数で表します。ジョーカーはなしです。

250 :デフォルトの名無しさん:04/11/02 22:45:12
>249

もちとまともなのを基に汁!

251 :デフォルトの名無しさん:04/11/02 22:49:48
>>247

#include <stdio.h>
int main(void)
{
char str1[256], str2[256], *p1 = str1, *p2 = str2;

printf("str1:");
gets(str1);
while (*p2++ = *p1++) ;
printf("str2:%s\n",str2);
return 0;
}

#include <stdio.h>
#include <ctype.h>
int main(void)
{
char str[256], *p = str;
gets(str);
while (*p) *p++ = toupper(*p);
printf("%s\n", str);
return 0;
}



252 :デフォルトの名無しさん:04/11/02 23:05:05
>>249
ポーカーのルールがわからない俺は(ry

253 :デフォルトの名無しさん:04/11/02 23:20:24
常にクールな顔をすればいいのだよ

254 :デフォルトの名無しさん:04/11/02 23:22:35
( ´・ω・`)Am I cool?

255 :デフォルトの名無しさん:04/11/02 23:24:10
( ´・ω・`)私は寒いの?

256 :デフォルトの名無しさん:04/11/02 23:25:14
( ´・ω・`)そう、心が寒いの

257 :デフォルトの名無しさん:04/11/03 00:22:38
ストレートの判定

下の関数は外で宣言
int comp(const void *i, const void *j)
{
  return *(int*)i - *(int*)j;
}

ここから

//hdは%13されてる
int flag_str=0;

qsort(hd,5,sizeof(int),comp);

for(int i=0; i<4; i++){
 // 9は13から1にいった場合の判定
 if(abs(hd[i]-hd[i+1])==1 || abs(hd[i]-hd[i+1])==9){if(i==3) flag_str=1; }
 else{i=4}
}
ストレートフラッシュはフラッシュとのフラグの組み合わせ

合ってるか自信は無い


   

   

258 :デフォルトの名無しさん:04/11/03 01:56:22
ご参考に
http://www.japan-poker.net/game/p_game.htm

259 :デフォルトの名無しさん:04/11/03 02:01:28
>>257,>>258
ありがとうございます。
一応一通り判定はできるようになりました。

あと、同じマークのカードが4つ来たときに
フラッシュを狙うための方法を考えているのですが
うまくいきません。もしよければ教えていただけませんか?

260 :デフォルトの名無しさん:04/11/03 02:43:36
>>259
それはもうスレ違い

261 :デフォルトの名無しさん:04/11/03 03:42:12
ハニーフラッシュを作りなさい

262 :デフォルトの名無しさん:04/11/03 09:37:23
>>261
すべてQで、ハニーフラッシュな。

263 :デフォルトの名無しさん:04/11/03 11:07:35
Qが5枚はイカサマです。

264 :デフォルトの名無しさん:04/11/03 12:34:27
ジョーカー使えば・・・?

265 :デフォルトの名無しさん:04/11/03 12:35:15
ショッカーってなんでキーキー言うの?耳障りなんだけど

266 :r:04/11/03 13:00:09
>>259
仲間はずれのカードを捨てればいいんじゃないの?


267 :デフォルトの名無しさん:04/11/03 13:12:13
card[5] に、手持ちのカードが入ってるとして

/* 捨てるべき、手持ちのカードへのインデックスを返す */
int forFlash( int* card )
  int mark[4], i, target_mark;
  for( i = 0; i < 5; i++ )
    mark[ card[i] / 13 ]++;
  for( i = 0; i < 4 && mark[i] == 4; i++ )
    ;
  if( i == 4 )
    return -1;
  target_mark = mark[i];
  for( i = 0; i < 5; i++ )
    if( card[i] / 13 != target_mark )
      return i;
  return -1; // エラー
}


268 :デフォルトの名無しさん:04/11/03 14:19:29
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=323
誰かこれを分かりやすく説明して下さいお願いします

269 :デフォルトの名無しさん:04/11/03 14:25:25
>>268
見たまんまだろ?
これ以上、何を説明しろと?


270 :デフォルトの名無しさん:04/11/03 14:31:43
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=323

271 :デフォルトの名無しさん:04/11/03 14:57:07
前者はローカル変数を引数として渡し、後者はグローバル変数を使っている。以上。

何が知りたいのかよく分からん。
「プログラム変数の受け渡し方法の違い」って何よ?
同じ出力結果になるソースを提示されても非常に説明しづらい。
違う結果になるソース貼られて「どうして違うの?」なら答えやすいけど。

272 :デフォルトの名無しさん:04/11/03 15:08:19
グローバルに宣言しちゃえば関数に渡す必要ないんだから
全部グローバルで宣言すればええやん
なんでわざわざそんな面倒なことするん?



とエスパってみる(リンク先すら見てないので見当違いかも)

273 :268:04/11/03 15:50:30
>>271
>>この二つのプログラムの変数の受け渡し方法の違いを
「の」が抜けてましたね
自分も答え方が分からなくて困ってます

274 :デフォルトの名無しさん:04/11/03 16:00:36
例えて言うならデータを渡す時にメール(引数)を使うか
掲示板(グローバル変数)を使うかの差。

なんて答え方すればいいのだろうか。

275 :デフォルトの名無しさん:04/11/03 16:04:12
関数の呼び出し時に値がスタックに積まれる、とか
戻り値がeaxに入ってくる、とか
なんかソッチ方面の気がしね?

あとは何だ、再帰してたり再入してたりすると
アレだったりとかよ。

276 :デフォルトの名無しさん:04/11/03 16:11:19
>>275
>関数の呼び出し時に値がスタックに積まれる、とか

これは処理系依存。レジスタ渡しだって普通にあるぜ

277 :デフォルトの名無しさん:04/11/03 16:21:53
>276
言われてみりゃそうだな。Winでも fastcall だとレジスタ渡しか。
__declspec(naked) で自前で fastcall やろうとして暴走させたりしてよw

まーでも学校の課題だしよ。センコーも難しーことは考えてなさそーくね?
もれはソッチ方面にジェンキン寿司禁固1年賭けんぜ。ウヘヘ

278 :デフォルトの名無しさん:04/11/03 16:28:15
問題文の意図が汲み取れないので、
答え方が解らんといっているくせに、
当の問題文を改変せずに
そのまま載せようとしない奴には
回答のしようがない。


279 :デフォルトの名無しさん:04/11/03 16:40:17
同じクラスの奴キタ━━━━(゚∀゚)━━━━ッ!!

280 :デフォルトの名無しさん:04/11/03 17:01:03
>>279
で、>>279 はどういう風に解釈した?


281 :デフォルトの名無しさん:04/11/03 20:28:44
a(0)=1
b(0)=1
a(n)=a(n-1)+b(n)
b(n)=b(n-1)*1.1
で与えられる数列を、a(n)が30以下の間表示せよ

変数がいっぱいで意味わからない。゚(゚´Д`゚)゜。
おねがいしまs

282 :デフォルトの名無しさん:04/11/03 20:39:18
>>281
#include <iostream>

double b(int n)
{
 return (n == 0) ? 1. : b(n - 1) * 1.1;
}

double a(int n)
{
 return (n == 0) ? 1. : a(n - 1) + b(n);
}

int main()
{
 for (int n = 0; n <= 30; n++)
  std::cout << "a(" << n << ") = " << a(n) << ", b(" << n << ") = " << b(n) << std::endl;
}

283 :デフォルトの名無しさん:04/11/03 20:43:11
>>281
#include <stdio.h>

int main() {
int i = 0;
double a = 1;
double b = 1;

printf("a(%d) = %lf, b(%d) = %lf\n", i, a, i, b);

for(i = 1; i < 30; i++) {
b = b * 1.1;
a = a + b;
printf("a(%d) = %lf, b(%d) = %lf\n", i, a, i, b);
}
return 0;
}

284 :デフォルトの名無しさん:04/11/03 20:45:15
>>281 失礼。訂正。
#include <iostream>

double b(int n)
{
 return (n == 0) ? 1. : b(n - 1) * 1.1;
}

double a(int n)
{
 return (n == 0) ? 1. : a(n - 1) + b(n);
}

int main()
{
 for (int n = 0; n <= 30; n++)
  if (a(n) <= 30.)
   std::cout << "a(" << n << ") = " << a(n) << ", b(" << n << ") = " << b(n) << std::endl;
}

285 :デフォルトの名無しさん:04/11/03 20:45:17
>>281

#include <stdio.h>
int main() {
 int i;
 double a=b=0;
 
 for (i=0; i<30; i++) {
  b = b * 1.1;
  a = a + b;
  printf("a(%d) = %f\n", i, a);
  printf("b(%d) = %f\n", i, b);
 }
 return 0;
}

どのへんが変数多いんだろう?

286 :285:04/11/03 20:46:39
( ´д`;) aとbを0にしてどうするんだろう・・・
double a=b=1.0;


287 :デフォルトの名無しさん:04/11/03 20:49:19
a(n)が30以下の時だぞ。
今の所正解は>>284だけだ。

288 :デフォルトの名無しさん:04/11/03 20:52:45
>>283
>>285
for (i=1; i<=30; i++) {
だな

289 :デフォルトの名無しさん:04/11/03 20:56:29
>>288
そうしても>>285の場合はa(0)がなくてa(31)が余分になるんじゃない?

290 :デフォルトの名無しさん:04/11/03 20:56:35
>>288
そりゃ「nが30以下の場合」だろ。頭悪いのか?

291 :デフォルトの名無しさん:04/11/03 20:58:27
>>287
馬鹿。>>284 は唯の勘違い野郎だ。
問題文には「数列」と書いてあるだろうが。


292 :デフォルトの名無しさん:04/11/03 20:59:59
a(n)が30以下の間表示せよ
a(n)が30以下の間表示せよ
a(n)が30以下の間表示せよ
a(n)が30以下の間表示せよ

293 :デフォルトの名無しさん:04/11/03 21:01:42
おおっと、全員間違いか?!
アホばっかだな。

294 :デフォルトの名無しさん:04/11/03 21:02:28
>>293
だから>>284が唯一の正解なの。今のところ。

295 :デフォルトの名無しさん:04/11/03 21:03:41
こんな奴らに仕事は出せんな。とんでもないプログラムを作ってくれそうだ。

296 :デフォルトの名無しさん:04/11/03 21:05:51
>>295
厨房なので許してあげてください。

297 :281:04/11/03 21:16:08
あ!
いっぱい書いてもらったところ恐縮なんですが
while文使ってできますか?

298 :デフォルトの名無しさん:04/11/03 21:20:07
>>297
#include <iostream>

double b(int n)
{
 return (n == 0) ? 1. : b(n - 1) * 1.1;
}

double a(int n)
{
 return (n == 0) ? 1. : a(n - 1) + b(n);
}

int main()
{
 double a = 1., b = 1.;
 int n = 1;

 while (true) {
  if (a > 30.) break;
   std::cout << "a(" << n << ") = " << a << ", b(" << n << ") = " << b << std::endl;
  b *= 1.1;
  a += b;
  n++;
 }
}

299 :デフォルトの名無しさん:04/11/03 21:20:46
C言語で『西暦年月日を入力し、2000年12月31日までの日数を計算するプログラム』を作りたいのですが、
全然分かりません.どなたかプログラムを作ってくれませんか?お願いします.

300 :デフォルトの名無しさん:04/11/03 21:21:04
あ、スマソ。こちらで
#include <iostream>

int main()
{
 double a = 1., b = 1.;
 int n = 1;

 while (true) {
  if (a > 30.) break;
   std::cout << "a(" << n << ") = " << a << ", b(" << n << ") = " << b << std::endl;
  b *= 1.1;
  a += b;
  n++;
 }
}

301 :デフォルトの名無しさん:04/11/03 21:22:34
whileを使うならこの方が良くない?

#include <iostream>
int main()
{
 double a = 1., b = 1.;
 int n = 1;

 while (a <= 30.) {
  std::cout << "a(" << n << ") = " << a << ", b(" << n << ") = " << b << std::endl;
  b *= 1.1;
  a += b;
  n++;
 }
}

302 :デフォルトの名無しさん:04/11/03 21:25:54
>>297
std::cout << "a(" << n << ") = " << a << ", b(" << n << ") = " << b << std::endl;



printf("a(%d) = %lf, b(%d) = %lf\n", n, a, n, b);

ね。
死らな刈田だろう。

303 :デフォルトの名無しさん:04/11/03 21:45:19
>>299
#include <stdio.h>
#include <time.h>

int main(void)
{
 struct tm tm, tm2;
 int y, m, d;

 printf("西暦と年月日を入力して下さい:");
 scanf("%d %d %d", &y, &m, &d);

 tm.tm_year = 2000 - 1900;
 tm.tm_mon = 12 - 1;
 tm.tm_mday = 31;
 tm.tm_hour = 0;
 tm.tm_min = 0;
 tm.tm_sec = 0;
 tm.tm_isdst = 0;

 tm2.tm_year = y - 1900;
 tm2.tm_mon = m - 1;
 tm2.tm_mday = d;
 tm2.tm_hour = 0;
 tm2.tm_min = 0;
 tm2.tm_sec = 0;
 tm2.tm_isdst = 0;

 printf("%ld days\n", (long)difftime(mktime(&tm), mktime(&tm2)) / (60 * 60 * 24));
 return 0;
}

304 :デフォルトの名無しさん:04/11/03 21:46:20
>>299
ちなみに2000年12月31日から経過した日数ならtmとtm2をdifftime()の中で
ひっくり返せ。

305 :デフォルトの名無しさん:04/11/03 21:48:08
>>303
「西暦と年月日」というのはおかしいので、「年月日を年を西暦で」か何かに
読み替えてくれ。

306 :デフォルトの名無しさん:04/11/03 22:02:50
問題はキーボードから入力した文字列中の英大文字、英小文字、数字、記号の個数を出力しなさい。というものです。
下記のところまでできました。エラー、警告等もないのですが、KKKkkk999−−−と3つずつのように同じ数だけ入力すると最後にエラー表示(?)がでます。
なぜでしょうか?
#include <stdio.h>
void main()
{
char *a;
int o=0,k=0,su=0,ki=0;
scanf("%s",a);
while(*a!='\0'){
if(*a>='a'&&*a<='z'){
k++;}
else if(*a>='A'&&*a<='Z'){
o++;}
else if(*a>='0'&&*a<='9'){
su++;}
else{
ki++;}
a++;
}
printf("小文字は%d個\n大文字%d個\n数 字%d個\nその他%d個\n",k,o,su,ki);
}


307 :デフォルトの名無しさん:04/11/03 22:09:47
エラー表示(?)

308 :デフォルトの名無しさん:04/11/03 22:10:33
>>char *a;
>>scanf("%s",a);

ネ申


309 :デフォルトの名無しさん:04/11/03 22:12:22
何もかもが理解出来てない悪寒

310 :306:04/11/03 22:12:49
すみませんエラー表示書き忘れました。
エラー表示は「"0x77f627fe"の命令が"0x00000004"のメモリを参照しました。メモリが"read"になることはできませんでした」というものです。
スミマセンでした。

311 :デフォルトの名無しさん:04/11/03 22:20:15
変えてみた
char *a=(char*)malloc(sizeof(char)*100);
char *b = a;
int o=0,k=0,su=0,ki=0;
scanf("%s",a);

while(*a!='\0'){
if(*a>='a'&&*a<='z'){
k++;}
else if(*a>='A'&&*a<='Z'){
o++;}
else if(*a>='0'&&*a<='9'){
su++;}
else{
ki++;}
a++;
}
a=b;

printf("小文字は%d個\n大文字%d個\n数 字%d個\nその他%d個\n",k,o,su,ki);
free(a);

でいいのかなあ

しかし暦の計算は知らなかったなあ

312 :デフォルトの名無しさん:04/11/03 22:23:03
>>311
char a[100];でもいいんじゃないか?

313 :デフォルトの名無しさん:04/11/03 22:26:02
ポインタインクリメントしてるからなあ
コンパイラに怒られたよ

314 :デフォルトの名無しさん:04/11/03 22:26:15
free( b ); でいいじゃん。

315 :デフォルトの名無しさん:04/11/03 22:30:49
それは何となく…

316 :デフォルトの名無しさん:04/11/03 22:33:58
>>313
char buf[100];
char *a = buf;

317 :デフォルトの名無しさん:04/11/03 22:37:59
>>問題はキーボードから入力した文字列中の

318 :306:04/11/03 23:51:12
ポインタでインクリメントを使用し、ポインタの文字型に入れた「m12」の「2」を画面に出力しなさい。
printf("?",*(a+2));
「?」は?

319 :デフォルトの名無しさん:04/11/03 23:53:06
ポインタの文字型に入れた
      ↑
   このへんが「?」

320 :デフォルトの名無しさん:04/11/04 00:05:07
%cが文字
%sが文字列

>>318
どんな本使ってるんだ?
もしかして釣り?

321 :839:04/11/04 19:37:52
バネ振り子をプログラムで作る宿題が出ました。
式は
dx/dt=v
dtheta/dt=a
dv/dt=(L+x)*a^2+g*cos(theta)-k/m*x
da/dt=-(2*v*a+g*sin(theta)/(L+x)
です。
これをアダプティブ・ルンゲクッタ法で解くプログラムをお願いします?

322 :デフォルトの名無しさん:04/11/04 20:19:10
氏ねってお願いします?

323 :デフォルトの名無しさん:04/11/04 20:21:43
お願いしません。

324 :デフォルトの名無しさん:04/11/04 20:25:10
逝けってお願いします?

325 :デフォルトの名無しさん:04/11/04 20:46:37
質問です
ttp://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H12a2/pm01.html
ここの問1のプログラムをCで構造体を使わずに作るのですが
訳解らず困ってます。

どなたか御教授願えませんでしょうか。


326 :デフォルトの名無しさん:04/11/04 20:53:34
infoserv@rs.kagu.tus.ac.jpまで
http://pc5.2ch.net/test/read.cgi/tech/1097932699/325
を送りました。

327 :デフォルトの名無しさん:04/11/04 22:29:34
西暦1900年の干支は「子」である。1900以上の数値を
入力したとき、その歳の干支を出力するプログラムを作りなさい。

文字型配列etoに{"子","丑","虎",〜・・・"戌","猪"}を格納。
入力された数値と1900の差を12で割った余りでその年の干支を特定すればよい。
ポインタを使ったほうが、プログラムが簡単になる。

この問題が宿題として出されたんですが、どなたかお願いします。

328 :デフォルトの名無しさん:04/11/04 22:33:09
それは干支か?十二支ではなく、本当に干支か?

329 :デフォルトの名無しさん:04/11/04 22:33:11
>>325
フローに 1→n って書いてあるから出題者は BASIC を対象言語にしてるんだろなぁ。
香ばしい問題なので汚いソースを用意しました。
#include <stdio.h>
int main( void ) {
int maxn=5,n,Irank,Iusrn,Orm=0,Ormno[5];
int no[]={101,102,201,202,301},umaxn[]={4,4,3,4,6},status[]={0,1,0,1,0},rank[]={3,3,2,2,1};
scanf("%d %d", &Irank, &Iusrn );
for(n=0;n<maxn;n++)
if(!status[n]&&umaxn[n]>=Iusrn&&(Irank<1||Irank==rank[n])){
Ormno[Orm]=no[n];Orm++;
}
for(n=0;n<Orm;n++)
printf("%d\n",Ormno[n]);
return 0;
}


330 :デフォルトの名無しさん:04/11/04 22:39:38
>>327
ポインタを使ったほうが簡単って
char* eto[]={"子","丑"....};
の事かぁ?
printf("%s\n", eto[(In-1900)%12]):
これだけ書けば良いだろ。

331 :デフォルトの名無しさん:04/11/04 22:42:44
>>327
ということで回答。
#include <iostream>
int main()
{
  static const char jikkan[][3] = {"庚", "辛", "壬", "癸", "甲", "乙", "丙", "丁", "戊", "己"};
  static const char junishi[][3] = {"申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未"};
  std::cout << "西暦(年):";
  int year;
  std::cin >> year;
  std::cout << "干支:" << jikkan[year % 10] << junishi[year % 12] << std::flush;
}

332 :デフォルトの名無しさん:04/11/05 01:01:25
ポインタってdouble型なら
double *a;
と書くと思いますが、
double* a; てのとどう違うのですか?(*の位置?両方あっているの?)

333 :デフォルトの名無しさん:04/11/05 01:05:24
>>332
それは本当に宿題なのか?

334 :デフォルトの名無しさん:04/11/05 01:09:26
>>332
意味は同じ。
前者が昔風、後者が最近(といっても10年くらい前)からの流行。
「double* までが型である」という主張に元ずく。
double* a, b;
だと b の型は double になるのが気持ち悪いので、後者で書くときは1行1変数が
一般的。


335 :デフォルトの名無しさん:04/11/05 01:13:54
double* a, * b;


336 :デフォルトの名無しさん:04/11/05 01:18:30
↑本当にそんな書き方してるの?

337 :デフォルトの名無しさん:04/11/05 01:27:40
double* a, *b;

338 :デフォルトの名無しさん:04/11/05 01:36:28
>>334
基づく

339 :325:04/11/05 03:53:31
>>329さん
ありがとうございます。
助かりました
これぐらいすぐ作れるように頑張ります〜

340 :デフォルトの名無しさん:04/11/05 07:23:26
double
* a,
* b;

341 :デフォルトの名無しさん:04/11/05 08:45:42
>>334
「元ずく」という表記は何時頃からの流行でつか?


342 :デフォルトの名無しさん:04/11/05 08:54:43
typedef double *pointer_to_double;
pointer_to_double a, b;

343 :デフォルトの名無しさん:04/11/05 10:16:36
どなたかお願い致します。Cです。

一問目
整数を入力し、入力した数値の二乗を出力するプログラムを作成せよ。
ただし、入力した整数を引数とし、その二乗を復帰値とする関数を作ること。

二問目
時間を(0〜23)を入力し、以下のような挨拶を出力せよ。
ただし、関数には入力した時間を引数として渡し、復帰値は無いこと。
0〜3 Good Night
4〜11 Good Morning
12〜16 Good Afternoon
17〜20 Good Evening
21〜23 Good Night

344 :デフォルトの名無しさん:04/11/05 10:26:34
int square(int n)
{
 return n * n;
}

void greeting(int hour)
{
 switch (hour)
 {
 case 0:
 case 1:
 case 2:
 case 3:
  printf("Good Night");
  break;
マンドクセ
 default: 
  break;
 }  
}

後適当に埋めて。マンドクセ

345 :デフォルトの名無しさん:04/11/05 10:27:26
case 1:
が消えちゃってら。マンドクセ

346 :デフォルトの名無しさん:04/11/05 10:28:25
Janeが変だっただけだ。マンドクセ

347 :343:04/11/05 10:32:20
続きです。

三問目

2つの正の整数を入力し、最大公約数を求めよ。
ただし、入力促進メッセージを必ず付けること。
また、ユークリッドの互除法を用いること。
また、何回ループしたかも表示せよ。

四問目
矩形則にてf(x)=x(2)の(a,b)での定積分を求めよ。
ただし、分割数nとa,bはキーボードより入力すること。

五問目
座標P(a,b)を円の中心とし、座標Q(c,d)を円周の一点とする円の面積を求めよ。

ヒント 1,点(e,f)を中心で半径をrとする円の公式は
    (x - e)(2)+(y - f)(2)=r(2)
    
    2,円の面積はs=πr(2)
    
    3,まず、1からr(2)を求め、それから面積を求める。

348 :デフォルトの名無しさん:04/11/05 10:33:17
>>344
挨拶の中の空白は全角だYO!

349 :デフォルトの名無しさん:04/11/05 10:40:26
マンドクセ

350 :デフォルトの名無しさん:04/11/05 11:36:35
>>343
void greeting(int hour){
  char *word[] = {"Night", "Morning", "Afternoon", "Evening"};
  int id[24] = {0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,0,0,0};
  printf("Good %s\n", word[id[hour % 24]]);
}


351 :デフォルトの名無しさん:04/11/05 12:01:11
>>347 
5

#include <stdio.h>
#define PI 3.14159
int main(void)
{
double a, b, c, d, s;

printf("a >>"); scanf("%lf", &a);
printf("b >>"); scanf("%lf", &b);
printf("c >>"); scanf("%lf", &c);
printf("d >>"); scanf("%lf", &d);
s = PI * ((c - a) * (c - a) + (d - b) * (d - b));
printf("s = %f", s);
return 0;
}

352 :デフォルトの名無しさん:04/11/05 12:45:28
ぱいのていぎは 4*atan(1.0)

353 :デフォルトの名無しさん:04/11/05 12:48:33
titty fucking

354 :デフォルトの名無しさん:04/11/05 13:15:49
>>352
atanの定義は?

355 :デフォルトの名無しさん:04/11/05 13:22:10
>>352
ふつーM_PI (@math.h)

356 :デフォルトの名無しさん:04/11/05 18:15:49
>>355
uva では使えない

357 :デフォルトの名無しさん:04/11/05 18:28:37
>>356
スレタイ嫁

358 :デフォルトの名無しさん:04/11/05 21:04:13
すいません皆さんにはレベルが低すぎてつまらないかと思いますがお願いします
双方向リストの隣接交換法でソートするプログラムです

struct EMPLOYEE { /* 社員データ */

char name[NAME_LENGTH]; /* 氏名 */
int age; /* 年齢 */
char section[SECTION_LENGTH]; /* 所属 */
char address[ADDRESS_LENGTH]; /* 住所 */
char status; /* 状態 ('i':データ有り、'h':データ仮削除) */
struct EMPLOYEE * next; /* 次のリストを示す */
struct EMPLOYEE * prev; /* 前のリストを示す */
};
を使用してください
ソートには、ポインタをつなぎかえる方法を使用してください

359 :デフォルトの名無しさん:04/11/05 21:53:53
Cで 4次の方程式
x^4 + A*x^3 + B*x^2 + C*x + D = 0
を A, B, C, Dを与えて、虚数解を含む4つの解を求めたいのですが
上手くいきません。どうかお願いします。


360 :デフォルトの名無しさん:04/11/05 22:28:39
visual C++ 6.0
配列の最大値と最小値を求める関数を作成しなさい。
最大値と最小値の表示はmain関数で表示するものとします。

初期値
a[] = {10, 25, 7, 45, 2, 100, 3, 70, 50, -1};

-1は配列の終端を意味します。

#include <stdio.h>

void MaxMin(int*, int*);


void main(void)
{
int a[] = {10, 25, 7, 45, 2, 100, 3, 70, 50, -1};

void MaxMin(int *x, int *y)
{
}

別の変数名例えば”int Max = 0”を宣言してforで-1になるまでループし、ifで比較して格納するって言う方法以外を探しているのですができませぬ。
考えるだけ考えましたが無理だったので恥を忍んでお願いします。orz

後説明へたくそで面目ない。(´・ω・`)


361 :デフォルトの名無しさん:04/11/05 22:38:10
>>358
何をどの順番にソートするんだ?

>>360
ソートとアルゴリズムで検索してくれ

4次は無理です…
解き方いろいろありそう


362 :デフォルトの名無しさん:04/11/05 22:38:58
最大値、最小値の初期値は はいれつの先頭要素に汁のがセオリー(w
んで、要素2番目から比較汁!

363 :デフォルトの名無しさん:04/11/05 22:43:31
>360
>別の変数名例えば”int Max = 0”を宣言

えーっと、パラメータの *x,*y そのまま使え(w

364 :360:04/11/05 22:48:32
何となくわかってきました。
>>361 >>362 >>363

ありがとうございまする。

365 :デフォルトの名無しさん:04/11/05 22:49:04
年齢でお願いします >361


366 :デフォルトの名無しさん:04/11/05 23:01:47
#include <stdio.h>
void MaxMin(int*, int*, int*);
void main(void)
{
int a[] = {10, 25, 7, 45, 2, 100, 3, 70, 50, -1};
int Max, Min;
MaxMin(&Max, &Min, a);
printf("%d\n", Max);
printf("%d\n", Min);
}
void MaxMin(int *x, int *y, int *z)
{
for(*x = *y = *z, *z++; *z != -1; *z++)
{
if(*x < *z)
*x = *z;
if(*y > *z)
*y = *z;
}
}
試してないから動くかは知らん

367 :デフォルトの名無しさん:04/11/05 23:40:57
すみません。お手上げです。5時間以上考えたんですが、どうしても上手くいきません。
何故でしょうか?^^;。分かる方ご指摘下さい。f=1です。
http://ceram.material.tohoku.ac.jp/~takamura/class/comp16/day5/day5.html

#include <stdio.h>
#include <math.h>

main()
{

int h, k, l;
float x1=0.0, x2=0.0, x3=0.5, x4=0.5, y1=0.0, y2=0.5, y3=0.5, y4=0.0, z1=0.0, z2=0.5, z3=0.0, z4=0.5;
double a, d, lambda, theta, F, FF, Fa, Fb;

a = 0.3615;
lambda = 0.154056;

for( h = -4; h<=4; h++){
for( k = -4; k<=4; k++){
for( l = -4; l<=4; l++){
if ( !(h==0 && k==0 && l==0) ){

d = a / sqrt(h*h+k*k+l*l);
theta = 2*asin(lambda/(2*d));
if ( F > 0.001){
Fa = 1+cos(6.28*(h*x2+k*y2+l*z2))+cos(6.28*(h*x3+k*y3+l*z3))+cos(6.28*(h*x4+k*y4+l*z4));
Fb = sin(6.28*(h*x1+k*y1+l*z1))+sin(6.28*(h*x2+k*y2+l*z2))+sin(6.28*(h*x3+k*y3+l*z3))+sin(6.28*(h*x4+k*y4+l*z4));

FF = Fa*Fa + Fb*Fb

printf("( %2d %2d %2d ) d = %.4lf 2theta = %.41fnm F_square = %.41f\n", h, k, l, d, theta, FF);
}}}}}}

368 :デフォルトの名無しさん:04/11/06 00:21:53
>>347
> 三問目
20bitまでの対応だけど

/* calc GreatestCommonDivisor and get Iteration count */
#include <stdio.h>
int gcd(int a, int b, int n){
return (a>b)?b?gcd(b,a%b,++n):a|n<<20:gcd(b,a,n);
}

int main(){
int a, b, n, tmp;
puts("a wo irete:"); scanf("%d", &a);
puts("b wo irete:"); scanf("%d", &b);
tmp=gcd(a,b,0);
printf("saidai kouyakusu ha %d\n%d kai no loop\n",tmp&1048575,tmp>>20);
return 0;
}


369 :r:04/11/06 10:51:44
>>358
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1027870433_324/sort.zip


370 :デフォルトの名無しさん:04/11/06 15:20:45
>>367
とりあえず突っ込みどころ、
sqrtの引数、(double)でキャストしてあげましょう。
if(F>0.001)、Fの値が未定義です。全て偽になってprintf文が一回も呼び出されません。
printf文内、%.41fは小数点以下41桁出します。nmは謎です。指数を使いたいなら、eを使いましょう。

とりあえず5時間何を考えてたのか知りませんが、適当なところでprintf文埋め込んでデバッグしていくのがいいかと思われます。
また、うまくいかないのは何なのか、しっかり答えましょう(コンパイルがうまくいかない、実行中エラーが出る、値が違う、など)
がんばってくださいね。

371 :370:04/11/06 15:31:26
悪い、nmはナノメートルの事ね。fとくっついてたからわからんかった。スマソ

372 :370:04/11/06 15:43:29
#define PI 3.141592654
int main()
{
int h, k, l, cnt=0; /*追加*/
float x1=0.0, x2=0.0, x3=0.5, x4=0.5, y1=0.0, y2=0.5, y3=0.5, y4=0.0, z1=0.0, z2=0.5, z3=0.0, z4=0.5;
double a, d, lambda, theta, F, FF, Fa, Fb;

a = 0.3615;
lambda = 0.154056;

for( h = -4; h<=4; h++){
for( k = -4; k<=4; k++){
for( l = -4; l<=4; l++){
if ( !(h==0 && k==0 && l==0) ){
d = a / sqrt((double)(h*h+k*k+l*l));/*変更*/
if(lambda/(2*d)>1){continue;} /*追加*/
theta = 2*asin(lambda/(2*d));
Fa = 1+cos(6.28*(h*x2+k*y2+l*z2))+cos(6.28*(h*x3+k*y3+l*z3))+cos(6.28*(h*x4+k*y4+l*z4));
Fb = sin(6.28*(h*x1+k*y1+l*z1))+sin(6.28*(h*x2+k*y2+l*z2))+sin(6.28*(h*x3+k*y3+l*z3))+sin(6.28*(h*x4+k*y4+l*z4));

FF = Fa*Fa + Fb*Fb;
if ( FF > 0.001){
cnt++;/*追加*/
printf("( %2d %2d %2d ) d = %.4lf nm 2theta = %6.2f F_square = %4.2e\n",h,k,l,d,(180*theta)/PI,FF);/*変更*/
}}}}}
printf("count=%d",cnt);/*追加*/
}
できた。
確認のためにcntでカウント回したが、いらなかったら削除してくれ。あとはソートするだけ。

373 :デフォルトの名無しさん:04/11/06 17:13:29
すみません、教えていただきたいのですが、
「100行100列のフィールドを全体領域として、そのフィールド内で5行5列の
窓枠を用意する。その窓枠内の各行列全ての値の総和が、別のフィールド(
任意の行列で構成)の任意のマスの値として代入できるようなプログラム」
という課題が出たのですが、お手上げです。どなたか考えていただけない
でしょうか。。VisualC++です。これを機会に勉強したいと思っております。

374 :デフォルトの名無しさん:04/11/06 17:20:37
フィールドの構造も指定されてないのか?

375 :373:04/11/06 18:03:36
>>374
指定されていませんが、おそらくある程度大きなフィールドを用意しなければ
いけないと思います。30×30の行列くらいで考えていただけないでしょうか。
もし不都合ならば、多少いじっても大丈夫だと思います。

376 :デフォルトの名無しさん:04/11/06 18:34:49
素直に二次元配列でやればいいんじゃないの?
クラスでやるのも面白いだろうけど、373はそこまでやる気あるとは
思えないし。

377 :367:04/11/06 18:37:04
>>370
明らかに勉強不足でした。それと説明不足で申し訳ありませんでした。
5時間一体何をやっていたのでしょうか?^^;。やはり基本的なところ
に穴があるようなので、もっとCの事を勉強しなくてはと思いました。
本当にどうもありがとうございました。


378 :デフォルトの名無しさん:04/11/06 19:04:13
質問です。
iとj,nを指定してある中で下記のようなプログラムを作りました。
do{
 t = rand()%n+1;
}while(t==i&&t==j);
i,j≠tであるtが欲しいのですが、実行してもi=tやj=tのときが
あります。do whileの継続条件にこのような書き方は認められない
のでしょうか?だとしたらどのようにかけばよいのでしょうか?

379 :デフォルトの名無しさん:04/11/06 19:06:28
do{
 t = rand()%n+1;
}while(t==i||t==j);
か?

380 :378:04/11/06 19:10:12
>>379
ありがとうございます!実行したところできました!
そうですよね、かつではなくまたは、じゃないと
明らかにダメでした…助かりました☆

381 :デフォルトの名無しさん:04/11/06 19:10:38
i = 3 j = 10
とかのとき
t = i と t = j
が同時になりたつことなんてないだろw


382 :373:04/11/06 19:19:25
>>376
二次元配列・・・。そんな言葉が授業中出てきたような気がします。。
自分で考えるべきなのは承知してますが、助けてもらえないでしょうか・・・

383 :デフォルトの名無しさん:04/11/06 19:21:35
>>382
二次元配列だったらググった方が絶対に早いぞ

384 :デフォルトの名無しさん:04/11/06 19:27:50
test

385 :デフォルトの名無しさん:04/11/06 19:30:03
int matrix[100][100];

っていうのはわかるの?
わからないと相当説明がしんどい。

386 :デフォルトの名無しさん:04/11/06 19:37:56
まとりっくすひゃくばんひゃくばん

387 :373:04/11/06 19:45:35
>>385
はい、左の[]が行で右の[]が列を表すんだと思います。
for文を使ってループだの、和をsumに足しこむなどするんだと
思うんですが、それをプログラムの記述にしたときのルールと
いうか、順番というか、表現方法がいまいち分かりません。。

388 :デフォルトの名無しさん:04/11/06 19:53:31
言語はCです。どなたかお願いします。

空白で区切られた2つの正の整数を標準入力から読み込んで、そのまま標準出力へ書き出すプログラムを作成しなさい。
ただし以下の条件を満たすこと。
1、scanfは使わない。
2、行の先頭にある連続した空白は無視する。
3、2つの整数は複数の空白で区切られてもよい。
4、最初の2つの整数以降の文字は無視する。
5、数字以外の文字が含まれている場合(4f ,343kd 等)は0とする。



389 :デフォルトの名無しさん:04/11/06 20:03:18
sscanf()って落ち?w

390 :デフォルトの名無しさん:04/11/06 20:06:56
getcをループでまわして文字列入力
そのあと、strtolを二回呼び
最後にprintf

391 :デフォルトの名無しさん:04/11/06 20:30:40
で、strtol の前にstrtok?

392 :デフォルトの名無しさん:04/11/06 21:08:59
>>388
まじめにやってみた。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=251&fi=no

393 :392:04/11/06 21:17:32
訂正

最初の while を 無限ループではなく。

while( *word_start )

としてくれ。
こうしないと、1ワード + スペースだけしか入力されなかったとき、無駄な0が出力される。


394 :デフォルトの名無しさん:04/11/06 21:24:50
>>392
ちゃんとみてないが、2つの整数の間の空白に関して
> そのまま標準出力へ書き出す
が満たされていない気がする。

ということでやってみた。

#include <stdio.h>
int buf[256], sp;
void push(int c) { if(sp < 256) buf[sp++] = c; }
void output(void) { int i; for(i = 0; i < sp; i++) putchar(buf[i]); sp = 0; }
void popall(void) { sp = 0; }


395 :デフォルトの名無しさん:04/11/06 21:25:06
int main(int argc, char argv) {
  int c, state = 0, num_output = 0;
  c = getchar();
  while(c != EOF && c != '\n') {
    switch(state) {
    case 0:
      if(isspace(c)) { c = getchar(); continue; }
      else if(isdigit(c)) { state = 1; }
      else { state = -1; }
      break;
    case 1:
      while(isdigit(c)) { push(c); c = getchar(); }
      if(isspace(c)) { output(); }
      else { putchar('0'); popall(); while(!isspace(c)) c = getchar(); }
      if(++num_output == 2) return 0;
      state = 2;
      break;
    case 2:
      while(isspace(c)) { putchar(c); c = getchar(); }
      state = 0;
      break;
    default:
      printf("bad input\n");
      return -1;
    }
  }
}

396 :デフォルトの名無しさん:04/11/06 22:06:47
>>388 エラーは考慮してない。
#include <stdio.h>
#include <ctype.h>
int a[2], i, flag;
int space(void) {
  char c = getc(stdin);
  if (isspace(c)) return 1;
  else {ungetc(c, stdin); return 0;}
}
int graph(void) {
  char c = getc(stdin);
  if (isgraph(c)) {
    if (isdigit(c) && flag) (a[i] *= 10) += c - '0';
    else a[i] = flag = 0;
    return 1;
  }
  else {ungetc(c, stdin); return 0;}
}
void doc(void) {
  while (space()) ;
  i = 0; flag = 1; a[i] = 0; while (graph()) ;
  while (space()) ;
  i = 1; flag = 1; a[i] = 0; while (graph()) ;
}
int main(void) {
  doc();
  printf("%d %d", a[0], a[1]);
  return 0;
}

397 :デフォルトの名無しさん:04/11/06 22:07:47
言語はC++です。どなたかお願いします。

適当に名前を入力すると、名前のアルファベット順にソートして出力する。
入力件数は最大5件とする。
名前はローマ字表記とし、半角大文字で入力する。
名前入力の時に改行のみを入力するか、5件入力されたら、入力を打ち切る。
ソートのアルゴリズムは単純選択法を用いること。

398 :デフォルトの名無しさん:04/11/06 22:47:09
double a[}={3.4 , 5.8 , 0.6 , 2.4 , 1.8 , -1}の配列の要素をバブルソートで昇順に並べるプログラム(C++)
"-1"は番兵である。 これ私に教えてください〜!!


399 :デフォルトの名無しさん:04/11/06 22:50:28
>>398
複数のスレで聞く行為はマルチと呼ばれ、一番最低の行為です。

400 :r:04/11/06 22:52:12
>>397
ソート部分は作った。
入力部分は自分で作れ。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=325


401 :デフォルトの名無しさん:04/11/06 23:02:57
>>397
#include <iostream>
#include <string>
void selection_sort(std::string* first, std::string* last){
  for (int n = last - first, i = 0; i < n - 1; i++) {
    int k = i;
    for (int j = i + 1; j < n; j++) if (*(first + j) < *(first + k)) k = j;
    std::string temp = *(first + i); *(first + i) = *(first + k); *(first + k) = temp;
  }
}
int main(){
  std::string name[5];
  int i = 0;
  for (; i < sizeof(name) / sizeof(name[0]); ++i) {
    std::cout << "name?:";
    if (!std::getline(std::cin, name[i]) || name[i] == "") break;
  }
  selection_sort(name, name + i);
  for (int j = 0; j < i; ++j) std::cout << "name[" << j << "]:" << name[j] << std::endl;
}

402 :デフォルトの名無しさん:04/11/06 23:35:59
ごめんなさい、よくそういうの知らなかったもので>w<

403 :デフォルトの名無しさん:04/11/06 23:40:48
>>402
誰に対する何のレスなんだよ。

404 :デフォルトの名無しさん:04/11/06 23:50:11
399に対してです。たびたびすみません。

405 :デフォルトの名無しさん:04/11/07 00:09:00
あなたは404ふぉーびっつんです


406 :デフォルトの名無しさん:04/11/07 00:14:24
何か398可哀想だから教えてあげるかな。

407 :デフォルトの名無しさん:04/11/07 00:30:02
>>398 そうやって成長するのだよ

408 :デフォルトの名無しさん:04/11/07 00:38:29
何を知らないって、常識を知らないんだな。
あと客観的思考が足りないとか。

409 :デフォルトの名無しさん:04/11/07 00:43:29
ほんとにごめんなさい。でも私、その398のやつ知りたかったから〜>w<できればもう常識はずれなことをしないから教えて欲しい・・・。

410 :デフォルトの名無しさん:04/11/07 01:15:19
>>405
404なのにForbidden?

411 :デフォルトの名無しさん:04/11/07 01:21:22
>>409
とりあえずその相手をおちょくってるような顔文字やめろ

412 :デフォルトの名無しさん:04/11/07 01:23:25
>>409
自分で調べたところまでを書くとかなんとか…
せめて予想でも.
いきなり,もってきてわかりませんじゃ,答えてくれないよ

413 :モウモウ:04/11/07 01:26:13
>>398
こことか読めばわかるんでないの?
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html

414 :デフォルトの名無しさん:04/11/07 01:37:02
何か厳しいというか、私が何にもわかってなかったから、ほんとみなさんすみませんでした。

415 :デフォルトの名無しさん:04/11/07 01:39:01
頼むからここでは非常識な厨にも優しくしてやってくれ
他のスレに来られると困るんだよ。

416 :モウモウ:04/11/07 01:42:05
>>414
その宿題かたずけないと、先生に怒られるの?
せっぱつまっているんなら教えてあげてもいい。

417 :デフォルトの名無しさん:04/11/07 01:49:48
できれば教えて欲しいです。実は焦ってるんで、お願いします。

418 :デフォルトの名無しさん:04/11/07 01:53:30
>>417
というか
>>413
読めって.
こうしている時間に勉強したら解決したんじゃない?

419 :モウモウ:04/11/07 01:57:05
>>417
わかった。30分ぐらいまってて。
プログラム書くから。

420 :373:04/11/07 02:10:17
どなたか>>373をお願いします。。

421 :モウモウ:04/11/07 02:12:49
>>398 >>>417
これでいいだろう。たぶん。

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

/**
 *  data に数値データを渡すと、バブルソートで昇順にソートする。
 *  data 内の -1 は番兵になる。
 *  data には番兵を除いて少なくとも 1 つの数値があること。
 */
void bubble_sort(double* data)
{
    int i, j;
    for (i = 0; data[i] != -1; i++) {
        for (j = i + 1; data[j] != -1; j++) {
            if (data[i] > data[j]) {
                // データを入れ替える
                double temp = data[i];
                data[i] = data[j];
                data[j] = temp;
            }
        }
    }
}


422 :モウモウ:04/11/07 02:13:52

/**
 *  数値データを表示する。
 */
void print_data(double* data)
{
    int i;
    printf("data =");
    for (i = 0; data[i] != -1; i++) {
        printf(" %g", data[i]);
    }
    printf("\n");    
}

int main(void)
{
    double a[] = {3.4 , 5.8 , 0.6 , 2.4 , 1.8 , -1};

    print_data(a);
    bubble_sort(a);
    print_data(a);

    return 0;
}

423 :モウモウ:04/11/07 02:14:44
>>420
その宿題かたずけないと、先生に怒られるの?
せっぱつまっているんなら教えてあげてもいい。

424 :デフォルトの名無しさん:04/11/07 02:22:39
モウモウさん、できれば421のやつをC++でやってもらいたいのですが。でもたぶん同じ感じですよね!?

425 :モウモウ:04/11/07 02:23:55
>>424
上のやつは C に近いけど、C ではコンパイルとおらないよ。
C++ でって、どういうこと?STL とか使えってこと?
要件定義をしっかり教えてくれ。

426 :デフォルトの名無しさん:04/11/07 02:25:20
STL使ったら、バブルソートなんか作るのアホだよな

427 :モウモウ:04/11/07 02:25:37
ごめん、C でもたぶんとおるよ (C++ でもとおる)。
printf じゃなくて cout を使ってほしいってこと?

428 :デフォルトの名無しさん:04/11/07 02:27:14
>>424
やってもらって礼もいわずに書き直せだから常識がないと言われるんですよ.


429 :373:04/11/07 02:29:13
>>モウモウさん
月曜日までに作るように言われてるんですが、知り合いのいない授業
でして・・・。できないと怒られるというより、単位がでないかもしれ
なくてかなり困ってる次第です。どうか教えてください。

430 :デフォルトの名無しさん:04/11/07 02:29:24
>>373
やろうと思ったけど問題の意味が分からない。
100行100列のフィールドと、別のフィールドを造るってこと?

431 :モウモウ:04/11/07 02:30:40
>>430
やってくれるんなら 430 さんに任せるけど、それでいいですか?

432 :373:04/11/07 02:31:45
>>430
そうです。お願いします。

433 :430:04/11/07 02:32:00
いいけど、問題の意味がいまいち理解できてない。

434 :デフォルトの名無しさん:04/11/07 02:33:17
他にもstd::vector<std::vector<hoge> >とかstd::valarray<hoge>を
使っていいかとか。それによってはコード量も違う。

435 :モウモウ:04/11/07 02:34:49
>>434
老婆心ですまないが、初心者にそれは使わないほうがいいんでは?
C だけで済ませておいたほうが、彼のためにもなるし。。。

436 :デフォルトの名無しさん:04/11/07 02:38:19
野暮なことで申し訳ないが
彼のため、というのならそもそも答えてあげるのが間違いだ罠

437 :430:04/11/07 02:38:23
全体フィールドのある領域の合計を、別のフィールドの特定の場所に代入すればいいのかな?

438 :373:04/11/07 02:45:21
最初の100行100列の各行列に数値(任意)を入れます。次に5行5列の窓枠を
用意して、1行1列のマスに入ってる数値、1行2列のマスに入っている数値、
1行3列のマスに入っている数値、1行4列のマスに入ってる数値、1行5列のマスに入ってる数値、
2行1列に入っている数値、2行2列のマスに入ってる数値、・・・、5行5列に入っている数値
までの総和を、別の50行×50列のフィールドの1行1列目のマスの値となるように
代入、1行2列のマスに入っている数値〜1行6列のマスに入っている数値、2行2列・・・5行6列
のマスに入っている数値までの総和が別の50行×50列のフィールドの1行2列目のマスの値と
なるように代入、以下同様に5行5列の窓枠をシフトしていってそれぞれの総和が順次代入
されていくようなプログラムです。説明が足らずすみませんでした。

439 :373:04/11/07 02:50:33
50*50だと足りないですね・・・。100*100の行列をもう一つ用意
に訂正です。。すみません。

440 :430:04/11/07 02:52:04
C++ でいいんだっけ?

441 :373:04/11/07 02:56:21
>>440
はい、そうです。すごく助かります。。

442 :デフォルトの名無しさん:04/11/07 02:59:36
>>441
ほんとにいいのか?
第3者から見ても、
おそらく>>373の考えてるレベルと>>440が書こうとしてる内容は
結構ギャップがあると思うぞ

見栄張らず、Cで書いてもらったほうが勉強という意味でも適正レベルだと思うぞ

443 :373:04/11/07 03:03:53
>>442
VisualC++だったと思うんですが、それってC++ということではないの
でしょうか?

444 :デフォルトの名無しさん:04/11/07 03:04:20
ほんとありがとうございます。そしてすぐにお礼もいわずにすみません。COUTを使ったらどうなりますか!?

445 :430:04/11/07 03:05:44
まぁ、C++といっても、Cに毛の生えたような感じで作ります。
malloc 使いたくないだけなんでw

446 :デフォルトの名無しさん:04/11/07 03:06:29
>>444
あんた誰?

447 :デフォルトの名無しさん:04/11/07 03:06:36
VisualC++というのはソフトウェアを指す
C++というのはC言語の拡張版、といったところ
C言語と記述方法は互換性あるけど、別物と考えてもいいぐらい

なので、C言語もろくすっぽに理解してない場合はC++なんて到底理解できない

448 :モウモウ:04/11/07 03:07:43
>>444
printf(" %g", data[i]) のところを cout << " " << data[i]
printf("\n") のところを cout << "\n" もしくは cout << endl にするだけ。
ちなみに私はもう寝るからな。

449 :373:04/11/07 03:13:59
>>430
本当に助かります。よろしくお願いします。
>>447
授業がC++だと思うので提出もC++だと思います。
作っていただくプログラムを頑張って理解したいと思います。
もし、わからないところが出てきたら質問するのでそのときは
よろしくお願いします。

450 :デフォルトの名無しさん:04/11/07 03:15:59
もう一度>>1を読もうな。

451 :373:04/11/07 03:20:25
>>450
はい。。430さんをはじめ、すみませんでした。

452 :デフォルトの名無しさん:04/11/07 03:31:43
>>438

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=252&fi=no

正直へんてこなコードになった。
C++ 使いつつあんまり C++ っぽくしないようにしたんで。
かといって、初心者に優しいわけでもないんだな、これが。

453 :デフォルトの名無しさん:04/11/07 03:37:42
>>373
多分勘違いのままだろうから説明加えとく

おそらく授業というのは
「VisualC++という名前のソフトウェアを使ったC言語」の授業だろう
この「VisualC++」が「メモ帳」であってもC言語やC++言語は勉強できる
ソフトの名前にC++が付いていても
C++言語を授業として扱わない限りC++を習っていることにはならない

そもそもC++が理解できるレベルならこういう宿題もぱっぱと済ませられる(はず)
っていうかそもそもそんな宿題出さないね



この勘違いのままスレ違いな発言して追い出されてマルチということはするなよ

454 :デフォルトの名無しさん:04/11/07 04:39:38
>>439
ちょっと待て。100*100の行列を別に用意したとして、
辺や隅はどうするんだ。

455 :281:04/11/07 06:05:42
教えてもらったプログラム間違ってるんですけど・・・
全部0になっちゃう

#include <stdio.h>←これ使いたい
int main()
{
 double a = 1., b = 1.;
 int n = 1;

 while (a <= 30.) {
  printf("a(%d) = %lf, b(%d) = %lf\n", n, a, n, b);
  b *= 1.1;
  a += b;
  n++;
 }
}

456 :デフォルトの名無しさん:04/11/07 06:47:28
>455
普通に>283でいいんじゃない?
それとnの初期値は0にしてね

457 :デフォルトの名無しさん:04/11/07 08:16:11
C++の問題をCで解いたってなんの問題もないだろ
coutやclassを使えというなら、そのことを書くべき

CとC++が全然別の言語とでも思い込んでるんだろ

458 :デフォルトの名無しさん:04/11/07 09:30:47
〔問題〕
文字列strを空文字列にする関数
void null_string(char str[])
を作成し作成した関数を実行する
プログラムを作成せよ

459 :デフォルトの名無しさん:04/11/07 09:40:24
そんな餌に(ry

460 :デフォルトの名無しさん:04/11/07 09:50:45
void null_string(char str[]){
  str[0] = '\0';
}
int main(void){
  char str[] = "クマー";
  null_string(str);
  return 0;
}

461 :デフォルトの名無しさん:04/11/07 10:10:20
>>455
printf()の"%lf"は(基本的に)間違い。
また、"%f"よりも"%g"をお奨め。

462 :デフォルトの名無しさん:04/11/07 10:19:04
((String)null).length();

463 :r:04/11/07 10:21:16
>>462
ガッ


464 :デフォルトの名無しさん:04/11/07 10:38:00
>>461
そこでC99

465 :デフォルトの名無しさん:04/11/07 12:56:12
>>444
coutを大文字で書くヤツ初めて見た

466 :デフォルトの名無しさん:04/11/07 13:01:49
COUT

467 :デフォルトの名無しさん:04/11/07 13:09:46
BASICに時代を戻さないでください

468 :デフォルトの名無しさん:04/11/07 13:10:46
何でも大文字にしたがるMFCにはカスタマイズされたCOUTがあるに違いない。

469 :373:04/11/07 14:47:00
>>452-453
助かりました。ありがとうございました!

470 :マイク ◆yrBrqfF1Ew :04/11/07 16:21:12
すいませんこれがわからなくて困ってますぅ
言語仕様外ですがおねがいしまーす

//以下のプログラムに何らかの入力を与え
//結果として以下のプログラム内で/bin/shを実行せよ
//環境はi386 && (linux||*bsd)とする
namespace vuln {
void off_by_one(const char *input)
{
char buffer[16];
for (int i = 0; i <= sizeof(buffer) && input[i] != '\0'; ++i)
buffer[i] = input[i];
}
}

int main(int argc, char **argv)
{
if (argc == 2)
vuln::off_by_one(argv[1]);
return 0;
}

471 :r:04/11/07 16:24:48
>>470
それで問題文は全部?
なんか意味がわからね。


off_by_one()をリターンする前に
system( buffer );
を呼べばイイとか、そういう事?

472 :マイク ◆yrBrqfF1Ew :04/11/07 16:26:31
コードの書き換え書き足し削除は一切無しで。

473 :デフォルトの名無しさん:04/11/07 16:31:37
バッファオーバーランでも狙うのか?

474 :デフォルトの名無しさん:04/11/07 16:44:22
i <= sizeof(buffer)
ここを突けってことか?

475 :マイク ◆yrBrqfF1Ew :04/11/07 16:47:54
patchあてるならそこですねー。

476 :デフォルトの名無しさん:04/11/07 16:50:27
言葉遣い悪すぎ

477 :デフォルトの名無しさん:04/11/07 16:53:04
57 名前:マイク ◆yrBrqfF1Ew [] 投稿日:04/10/25 08:37:20
俺はできるがgoodを表示させられる奴いるか?

//bcc32 5.5.1 on win2k
#include <iostream>
#include <iomanip>
int main()
{
volatile int n = 0;
char buffer[128];
cin.get(buffer, 132, '\0');
std::cout<<(n == 4276545 ? "good" : "bad")<<std::endl;
return 0;
}

58 名前:マイク ◆yrBrqfF1Ew [sage] 投稿日:04/10/27 18:45:03
やはり誰もいないな(▽

478 :マイク ◆yrBrqfF1Ew :04/11/07 17:07:09
で、できるんですか?

479 :マイク (仮):04/11/07 17:14:12
やはり誰も出来ないな(▽

480 :デフォルトの名無しさん:04/11/07 19:56:47
まあなんかしらんが >>477 はできた。
てか'\0'ってのが不可解だ。


481 :デフォルトの名無しさん:04/11/07 20:21:23
>>480
どうやるの?

482 :480:04/11/07 20:41:09
ヒントは4276545が何を表すかを考えることだなあ。
あとは128に132分読み込んでるって事か。それでbufferがあふれるわけだな。

これで十分だろ。答えになっちまうよ。

483 :デフォルトの名無しさん:04/11/07 20:53:19
なんか知らんが、どうしてチート関連になると答えないんだろうね。
ここはチートスレじゃないんだぞ?

484 :デフォルトの名無しさん:04/11/07 20:58:39
はいはい"AA...A"(Aを132個)入力すればいいんでしょ。それでは
宿題をドゾー

485 :デフォルトの名無しさん:04/11/07 20:59:09
Windowsについてる電卓使うとわかりやすくなるよね。

486 :デフォルトの名無しさん:04/11/07 20:59:37
チートスれじゃないから、チート関連には答えないんじゃねーの?

487 :マイク ◆yrBrqfF1Ew :04/11/07 21:15:44
>>470はどうした?
というかどこがチートだ?

488 :マイク(偽◇yrBrqfF1Ew :04/11/07 21:19:21
やはり誰も出来ないな(▽

489 :デフォルトの名無しさん:04/11/07 21:21:26
どうも、常識人さんがいないと
スレが荒れる傾向にあるな。

490 :マイク ◆yrBrqfF1Ew :04/11/07 21:26:14
それは大変だな。

491 :デフォルトの名無しさん:04/11/07 21:32:54
>>487
http://www2.alc.co.jp/ejr/index.php?word_in=cheat&word_in2=reedeirrf&word_in3=zJPa7DCxJ15687987t

492 :マイク ◆yrBrqfF1Ew :04/11/07 21:39:53
そんな怪しいリンク誰も踏まないだろ。

493 :デフォルトの名無しさん:04/11/07 21:43:50
>>492
ん?このリンク先知らない?
英辞郎だよ

494 :マイク ◆yrBrqfF1Ew :04/11/07 21:45:04
全く知らん。

495 :476:04/11/07 21:51:44
こんな古典は答える価値もないのに、図に乗りやがって
土下座して出て行け

・処理系依存方法しかない
・1バイトオーバーライトで、(恐らく)pushされてるebpを書き換える
・関数エピローグでスタックをbufferに向けてeipを変更する

496 :デフォルトの名無しさん:04/11/07 21:52:06
>>494
だったら今知ればいい。
英語に通じている人でも、ときどきこの英単語を日本語ではどう訳せばよいのか、
と思うことがあるよね。
特に専門用語では訳が難しい。
エルミート作用素、演算子、どっちがいいの?とか。

497 :496:04/11/07 21:54:03
英辞郎はわりと専門用語も載っているWEB上の英和辞典だから便利だよ

498 :マイク ◆yrBrqfF1Ew :04/11/07 22:05:19
>>495
まあ、そんなとこか。

>>496
良かったな。

499 :デフォルトの名無しさん:04/11/07 22:25:11
四則計算

キーボードから実数を2つ入力し、実数の加算、減算、乗算、除算と
整数の加算、減算、乗算、除算、剰余算を表示するプログラムを作りなさい。
なお、整数の値は(入力せずに)実数値を整数値に変換して用いなさい。

[実行例]

a b = 64.2 22.8 <--- ここで2つの実数値を入力
a=64.19997, b=22.799999
a + b = 86.999996
a - b = 41.399998
a * b = 1463.759881
a / b = 2.815789
ia=64, ib=22 <--- この場所で入力した実数値を整数値に変換した値を表示しておく
ia + ib = 86
ia - ib = 42
ia * ib = 1408
ia / ib = 2
ia % ib = 20


お願いします。

500 :デフォルトの名無しさん:04/11/07 22:51:31
>>498
真摯さが足りん。
君は人の言葉に対して敬意がない。
君は情報をあたえてもらったのだから、そのことに対して「よかったな。」の一言か?
それはあまりに無礼だ。
常識人に常識を教えてもらったらどうだ?

501 :デフォルトの名無しさん:04/11/07 22:52:49
>>499
#include <stdio.h>
int main(void) {
double a, b;
int ia, ib;
printf("a b = ");
scanf("%lf %lf", &a, &b);
printf("a=%lf, b=%lf\na + b = %lf\na - b = %lf\na * b = %lf\na / b = %lf\n", a, b, a + b, a - b, a * b, a / b);
ia = a; ib = b;
printf("ia=%d, ib=%d\nia + ib = %d\nia - ib = %d\nia * ib = %d\nia / ib = %d\nia %% ib = %d\n", ia, ib, ia + ib, ia - ib, ia * ib, ia / ib, ia % ib);
return 0;
}

502 :デフォルトの名無しさん:04/11/07 22:56:08
>>499
言語は?

> a b = 64.2 22.8
ここから
> a=64.19997, b=22.799999
何でこうなるの?

> この場所で入力した実数値を整数値に変換した値を表示しておく
切り上げ?切り捨て?四捨五入?

503 :デフォルトの名無しさん:04/11/07 23:40:27
>>502
低レベルの人は書き込みをご遠慮ください。

504 :デフォルトの名無しさん:04/11/07 23:43:31
JIS丸めもあるね

505 :デフォルトの名無しさん:04/11/08 01:06:22
問題は文字型のポインタに数字を5個入れprintfで出力せよというものです。
そこで↓な感じで作りましたがうまくいきません。初心者なのですが、分かりやすい解説お願いします。
下記のとおりな感じでお願いします。
#include <sdio.h>
int mani()
{
char *a;
int i;
scanf("%s",a);
for(i=0;i<5;i++){
printf("c",*a);
a++;}
return 0;
}

506 :デフォルトの名無しさん:04/11/08 01:07:21
誤<sdio.h>→<stdio.h>

507 :デフォルトの名無しさん:04/11/08 01:40:27
>>505
まず、「文字型のポインタ」と言う表現をそのままとると、char*ということになる。
君の書いているchar *a;と言うのは、ポインタ型変数の宣言だ。しかし、ポインタとは
あくまである領域を指す値(メモリのアドレス)を入れる場所であって、数字などを入れる
場所ではない。ということは、ポインタだけ作ってやってもそれが指す領域を実際に
作ってやらないと、代入も何もないわけだ。
…とここまで書いてみて、突っ込みどころ満載過ぎてもう何を書いていいのやら。

とりあえずsdio→stdio、mani→main、char *a;→char a[6];、scanf("%s", a);→scanf("%5s", a);、
printf("c", *a);→printf("%c", *(a+i));、a++;→(削除)とすれば動かないではないけれども、
ポインタを使っているとは言いがたい。もうめんどくさいから寝る。

508 :デフォルトの名無しさん:04/11/08 01:44:11
>>505
ポインタ変数に数字を5個入れるのは無理だが・・・

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

int main()
{
  char *a;
  a = (char *)malloc(sizeof(char)*(5+1)); // とりあえず (5文字+終端文字) 分のメモリを確保

  scanf("%5s",a);  // 入力ストリームから5文字以内で入力
  printf("%s\n",a);  // あとは表示するだけ

  free(a);       // 確保したメモリを解放
  return 0;
}

もしや、配列を使ったほうがいいのだろうか・・・

509 :デフォルトの名無しさん:04/11/08 01:54:26
ちゅーか
>>505の内容だけでは
問題に沿った解答解説ができない


510 :デフォルトの名無しさん:04/11/08 02:05:56
#include <studio.h>

int main(void)
{
char *s = "12345";
printf("%s\n", s);
return 0;
}

511 :508:04/11/08 02:07:16
#include <stdio.h>

int main()
{
  char a[5+1];     // (5文字+終端文字) を格納する配列
  char *p;       // 題意に沿うようにポインタ変数を用意

  p = &a[0];      // 配列の先頭アドレスをポインタ変数に代入
  scanf("%5s",p);   // 5文字以内で入力

  for(i=0;i<5&&p[i]!='\0';i++){
    printf("%c",p[i]);  // 終端文字のところまで1文字づつ表示する
  }

  return 0;
}

これなら、ポインタを使ってると言える・・・よね?

512 :デフォルトの名無しさん:04/11/08 02:08:22
文字型のポインタに数字を入れることはできません。

513 :デフォルトの名無しさん:04/11/08 02:09:22
>>510
また斬新な回答を・・・

#include <studio.h>
になってるからネタか?

514 :デフォルトの名無しさん:04/11/08 02:12:13
もしや、>>510が正解か?
#include <studio.h>は別として

515 :デフォルトの名無しさん:04/11/08 02:12:35
>>513
全然斬新じゃない。
C言語のプログラミング入門的講義では、まず間違いなく一人はstudio.hと書く。

516 :デフォルトの名無しさん:04/11/08 04:24:47
>>515
と、言うことはみな「スタジオ」と読んでるのか?
君を含めて( ̄ー ̄)ニヤリッ。

517 :デフォルトの名無しさん:04/11/08 09:34:50
先生に
スタジオどっとえいち
と習いました

518 :デフォルトの名無しさん:04/11/08 09:35:08
うるせーよ (゚Д゚) バーヤ バーヤ


ノД`、)

519 :デフォルトの名無しさん:04/11/08 09:36:58
C言語課題

・「ID」「名前」「年齢」を要素にもつ構造体INFOを作成しなさい。
ただし、名前は動的メモリにて確保するものとする。

・scanf関数から「名前」と「年齢」を入力し、
動的メモリを用いて、どんどん何人分でも追加できていけるソースコードを記述しなさい。

この2つで1つのソースコードです。
よろしくお願いしますー

520 :デフォルトの名無しさん:04/11/08 09:40:12
>>どんどん何人分でも

不可能

521 :デフォルトの名無しさん:04/11/08 09:46:30
IDは自動採番やろか。

522 :デフォルトの名無しさん:04/11/08 09:46:52
template <class T> static T abs(T a) { return a > 0 ? a : -a; }

のtemplate <class T> static T abs(T a)って何を意味しているんですか?

523 :デフォルトの名無しさん:04/11/08 09:53:30
任意の型であるTという型のaというパラメータを採るabsという名前のTという型の値を返す静的なテンプレート関数。

524 :519:04/11/08 11:17:25
IDは連番数字です

525 :デフォルトの名無しさん:04/11/08 11:44:48
>>516
どう呼んでいようが聞いていない学生はいるものだ。

526 :デフォルトの名無しさん:04/11/08 12:56:18
>>519 少し長いので2回に分ける
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct INFO { int id;char* name;int age; };
static int Use = 0;
static int Max = 0;
static INFO* info = NULL;
static int add( char* name, int age )
{
INFO* tmp;
if( Use >= Max ) {
Max += 32;
tmp = (INFO*)malloc( sizeof( INFO ) * Max );
if( ! tmp )return 0;
if( info ) {
memcpy( (void*)tmp, (void*)info, sizeof( INFO ) * Use );
free( (void*)info );
}
info = tmp;
}
info[Use].id = Use;
info[Use].name = (char*)malloc( strlen( name ) + 1 );
if( ! info[Use].name )return 0;
strcpy( info[Use].name, name );
info[Use].age = age;
Use++;
return 1;
}


527 :526:04/11/08 12:57:09
続き
int main( void )
{
charname[128];
intage, i;
while( 1 ) {
scanf( "%s %d", name, &age );
if( ! strcmp( name, "end" ) )break;
if( ! add( name, age ) ) {
printf( "cannot alloc any more!\n" );
return 1;
}
}
for( i = 0; i < Use; i++ )
printf( "%d: %s (%d)\n", info[i].id, info[i].name, info[i].age );
return 0;
}


528 :526:04/11/08 13:04:21
なんかつながってしまったとこがあるな。
charname -> char name
intage -> int age
名前を end にすると終了して入力されたのを表示する。(それぐらい判るか)



529 :デフォルトの名無しさん:04/11/08 16:10:58
C言語で、x円借金して年利yで毎月z円返済して、
返却を完了する月とその月の返却額を計算するプログラムを教えてください。

530 :デフォルトの名無しさん:04/11/08 16:21:10
>>529
クレ板にイケ

531 :デフォルトの名無しさん:04/11/08 16:22:27
収入が無く返済できず自己破産で糸冬 了..._〆(゚▽゚*)

532 :デフォルトの名無しさん:04/11/08 16:33:28
お願いしますよ〜

533 :デフォルトの名無しさん:04/11/08 16:38:07
じゃあまず算数でそれを表現してみては?
いくらなんでもそれぐらいはできるだろ?

534 :デフォルトの名無しさん:04/11/08 16:46:42
#include <stdio.h>
void main()
{
    
int x,y,z;
int nokori;
int tuki;
int i;
int hensai;
tuki = 1;
printf("借金の金額:\n");
scanf("%d",&x);
printf("年利:\n");
scanf("%d",&y);
printf("月の返済額:\n");
scanf("%d",&z);
nokori = x;
while(nokori>0)
{
 for(i=0; i<12; i++,tuki++){
  nokori -= z;
  if(nokori <= 0)
  { break;}
 }
 nokori=nokori+x*y/100;
 if(nokori >= x || tuki > 1000) {printf("欝だ氏のう"); return;}
}
hensai = nokori+z;
printf("月:%d 返済額:%d\n",tuki,hensai);
return;
}

535 :デフォルトの名無しさん:04/11/08 16:59:45
直しておこう

while(nokori>0)
{
 for(i=0; i<12; i++,tuki++){
  nokori -= z;
  if(nokori <= 0)
  { goto yatta;}
 }
 nokori=nokori+x*y/100;
 if(nokori >= x || tuki > 1000) {printf("欝だ氏のう"); return;}
}
yatta:

たまにはgotoを

536 :デフォルトの名無しさん:04/11/08 17:01:40
void main

537 :デフォルトの名無しさん:04/11/08 17:03:08
おいらの人生終了..._〆(゚▽゚*)

538 :デフォルトの名無しさん:04/11/08 17:10:17
gotoを出すならgotoの問題もちゃんと教えとけ
goto推奨みたいに受け止められたらかなわん

539 :デフォルトの名無しさん:04/11/08 17:27:48
>>534
ありがとうございます。参考になりました。

540 :デフォルトの名無しさん:04/11/08 17:35:04
gotoはソース見づらくなるから、あまり使わないほうがいいらしいです

あとwhileの中とか直しといて

541 :デフォルトの名無しさん:04/11/08 17:53:33
多重ループやswitchから抜け出すための goto なら禿も推奨している

542 :デフォルトの名無しさん:04/11/08 17:54:27
リストの結果を逆順に表示するように表示関数を書き直す
って問題なんですが、教えて頂けますでしょうか?
void print(List *p) {
int i;
printf("(");
for(i=0; i<size(p); i++) {
printf("%d",get(p,i));
if (i < size(p)-1) printf(",");
}
printf(")\n");
}

543 :デフォルトの名無しさん:04/11/08 18:00:22
>>541
禿って誰ですか?

544 :デフォルトの名無しさん:04/11/08 18:06:10

void print(List *p) {
int i;
printf("(");
for(i=size(p)-1;i >=0 i--) {
printf("%d",get(p,i));
if (i !=0) printf(",");
}
printf(")\n");
}


545 :デフォルトの名無しさん:04/11/08 18:08:41
>>543
http://pc5.2ch.net/test/read.cgi/tech/1095113801/

546 :542:04/11/08 18:11:52
>>544
さんくすです、できますた。

547 :541:04/11/08 18:15:45
>>545
ワロタ

漏れが言ったのはまあこいつのことだが、上級者には違いねぇ
http://pc5.2ch.net/test/read.cgi/tech/1095113801/

548 :541:04/11/08 18:16:42
間違えたorz
http://www.research.att.com/~bs/←こいつ

549 :デフォルトの名無しさん:04/11/08 18:34:38
>>543
Bjarne Stroustrap(C++の作者)のこと

550 :デフォルトの名無しさん:04/11/08 21:16:44
>>549
そいつバカ

551 :デフォルトの名無しさん:04/11/08 22:02:53
すみません、また質問なのですが、

/* index番目にvalueを挿入する */
void insert(List *p, int index, Item value) {
int i;
if (index < 0) return;
while (index >= size(p)) add(p,nil);
for (i = size(p)-1; i > index; i--)
set(p, i, get(p, i-1));
set(p, index, value);
}

とあるのですが、例えば
s(セット)で
1
5
(0,5)
とした場合、i(インサート)で
1
4
と入力すると、
(0,4)
となってしまうのですが、
(0,4,5)
と表示させるためにはどうしたらいいんでしょうか?
よければおしえてください…。

552 :デフォルトの名無しさん:04/11/08 22:09:14
( @盆@)

553 :デフォルトの名無しさん:04/11/08 22:10:44
>>551
それだけでは、情報不足でなんともいえない。
考えられることは。

(1) インサート処理がうまくされていない。(setのバグ)。
4のうしろのちゃんと5がリンクされているかどうか確認汁。

(2) 表示ルーチンのバグ。
ちゃんと0-4-5 とリストは出来ているが、全部表示できていない。


どっちかだろうな。


554 :デフォルトの名無しさん:04/11/08 22:11:23
sとかiとかって一体何だ。エスパーじゃないんだから何を指しているのか、
全ソースを示すなりしなければ何も相手に通じないぞ。

555 :デフォルトの名無しさん:04/11/08 22:12:42
void insert(List *p, int index, Item value) {
int i;
if (index < 0) return;
add(p,nil);
for (i = size(p)-1; i > index; i--)
set(p, i, get(p, i-1));
set(p, index, value);
}
でどうよ?

556 :デフォルトの名無しさん:04/11/08 22:15:46
>>555
なんでそう思ったのか、興味あるな。

関係なさげだが・・。

557 :デフォルトの名無しさん:04/11/08 22:18:46
>>553
試したんですけど、やっぱり見えていない部分の数字は消えていました・・。

>>555
すごいっす!できました。
ありがとうございます!

>>554
すみません・・。

558 :デフォルトの名無しさん:04/11/08 22:19:57
それでいいのか・・。何でだ?

559 :555:04/11/08 22:25:06
既に>>551は見てないだろうけど>>556のために。
indexの場所によらずサイズが増えるので while(index>=size(p)) は不要。
ただし消したせいでindex > size(p)+1 の場合バグになると言う罠…ということに気付いたのは今。
と言うことでリトライ。
void insert(List *p, int index, Item value) {
int i;
if (index < 0) return;
add(p,nil);
while (index >= size(p)) add(p,nil);
for (i = size(p)-1; i > index; i--)
set(p, i, get(p, i-1));
set(p, index, value);
}
…元のと混合しただけ。

560 :デフォルトの名無しさん:04/11/08 22:33:04
注釈つけ忘れ
add(p,nil); // 最低1つ追加
while (index >= size(p)) add(p,nil); // 足りなければその分追加

561 :551:04/11/08 22:36:58
>>559,560
みてますよ〜。馬鹿ですが、自分でも頑張ってみます^^
ありがとうございます。

562 :デフォルトの名無しさん:04/11/08 22:43:32
リストのなかに未使用ノードある場合、addしなくてもいいように思えたんだけど、
必ずaddしないとならないのか・・・。

setのつくりが分からんから、確かなことは分からないけど。

563 :551:04/11/08 23:13:17
すみません、setのつくりも載せておきます。

/* index番目の要素をvalueとする */
void set(List *p, int index, Item value) {
if (index < 0) return;
if (index >= p->N) {
insert(p, index, value);
return;
}
p->data[index] = value;
}

564 :デフォルトの名無しさん:04/11/09 00:16:52
dx/dt=V, dV/dt=-kx 初期条件x0=1, V0=0をadaptive runge kutta法
を用いて,0.0 <= t <= 10.0 の範囲で定数 k を 0.1 単位で 0.1 から
10.0 まで変えて変えて x の挙動を見なさい。

以下のプログラムを参考にしなさい。
http://gcc.gnu.org/ml/gcc-bugs/2000-03/msg00912.html
お願いします。

565 :マイク ◆yrBrqfF1Ew :04/11/09 05:12:55
>>500
あんだって?

566 :デフォルトの名無しさん:04/11/09 05:56:38
1,タナカ,キムラ,スズキ
2,ササキ,タムラ,アオキ
3,シムラ,カトウ,タカギ
(↓つづく)



半角数字につづき名前が並んだ、
カンマで区切られたN行4列のname.txtがあるとして、
このファイルを読み込み文字配列char yasai[128][4]に入れなさい。
ファイルのテキストの行数は128未満であるとする。
C言語です。お願いします。

567 :デフォルトの名無しさん:04/11/09 07:16:04
↑問題が変。
char* yasai[128][4]; に入れるなら可能だが...

568 :566:04/11/09 07:31:15
すいません、それでお願いします。

569 :デフォルトの名無しさん:04/11/09 08:29:16
↑1度に書けないので分割
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void) {
char*ya[128][4];
FILE*fp;
inti,j;
charbuf[1024];
char*ptr;

for( i = 0; i < 128; i++ )
for( j = 0; j < 4; j++ )
ya[i][j] = NULL;
fp = fopen( "name.txt","rt" );
i = 0;
while( i < 128 && fgets( buf, 1023, fp ) ) {
j = 0;
ptr = strtok( buf, ",\n" );
while( j < 4 && ptr ) {
ya[i][j] = (char*)malloc( strlen( ptr ) + 1 );
strcpy( ya[i][j], ptr );
j++;
ptr = strtok( NULL, ",\n" );
}
i++;
}
fclose( fp );



570 :569:04/11/09 08:29:51
i = 0;
while( ya[i][0] && i < 128 ) {
j = 0;
while( ya[i][j] && j < 4 ) {
printf( "%s\t", ya[i][j] );
j++;
}
printf( "\n" );
i++;
}
return 0;
}


571 :569:04/11/09 08:31:50
一部くっついた
inti -> int i,
charbuf ->char buf

572 :デフォルトの名無しさん:04/11/09 10:55:36
Cです。お願いします。

直線P1(1,4),P2(3,0)の二点を入力し、この直線に直行する
直線を求めよ。
1点目のX座標= =>1
1点目のY座標= =>4
2点目のX座標= =>3
2点目のY座標= =>0
直線の式は Y=0.50X + 1.00です。


573 :デフォルトの名無しさん:04/11/09 11:07:33
二点に直行する直線って何だ?
二点を結ぶ直線なら一意に決まるが、それに直交する直線なら無数にあるわけだが。

574 :デフォルトの名無しさん:04/11/09 11:09:45
>>573
ハズイ奴

575 :デフォルトの名無しさん:04/11/09 11:10:15
>>569
あんた、変数の定義のときにタブを入れる癖があるだろ。
だせぇからやめようぜ。

576 :デフォルトの名無しさん:04/11/09 11:11:43
>>573
プッ

577 :デフォルトの名無しさん:04/11/09 11:11:59
>>575
なんでだせぇの?

578 :デフォルトの名無しさん:04/11/09 11:17:18
>>577
メリットがねぇだろ。

579 :デフォルトの名無しさん:04/11/09 11:23:16
>>578
デメリットはあるのか?

580 :デフォルトの名無しさん:04/11/09 11:27:12
>>578
位置をそろえるのに使ったら見やすいよ

581 :デフォルトの名無しさん:04/11/09 11:36:45
>>575
おまえさんのソース提供だけは断るYO
>>578
メリット:
タブ幅のスペースを\t(タブ)に変更したらサイズが小さくなる
>>580
デメリット:


582 :デフォルトの名無しさん:04/11/09 11:40:59
俺も変数宣言にタブ文字使うんだけど、
ナウでヤングな若者の感覚じゃダサイのか。

583 :デフォルトの名無しさん:04/11/09 11:56:41
位置を揃えるなんて考えがださいっつーの。
int, doubleくらいならいいが、const char * も揃えるのか?
くだらねぇ。

あ、インデントにタブを使うなら賛成。つーか、スペースを4つも入れるな。

584 :575ではないけど:04/11/09 12:03:00
タブ幅が違うと悲しい結果にはなる気もする。
それにタブって機種依存しなかったっけ?記憶が薄いが。

>>581
ファイルサイズなんて・・・
まあプロポーショナルフォントを常用する人にはメリットがでかい気もする。


そんな俺はインデントにタブ使う。orz


585 :デフォルトの名無しさん:04/11/09 12:04:44
インデントは位置揃えに入らないのかと問い詰めたい。

586 :デフォルトの名無しさん:04/11/09 12:23:11
FORTRAN70です。お願いします。

ある数xとyのそれぞれの約数とxとyの最大公約数、そして最小公倍数を計算しなさい。

ただし、関数副プログラムまたはサブルーチン副プログラムのどちらかを用いること。

587 :デフォルトの名無しさん:04/11/09 12:26:50
>>586
ほほぅ。C/C++言語のスレでFORTRANか。狂ってるな。

588 :デフォルトの名無しさん:04/11/09 12:40:42
インデントはスペース
プログラマなら常識

589 :569:04/11/09 12:46:05
>>575
ここで晒すソースにタブ使わないほうが良いのは確かだな。
>>583
const char* どころか CLongLongNameClass とかが有っても揃えてるな。
見た目で変数名定義が揃ってると気持ち良いので...そろそろ止めようかとも思うけど。

590 :569:04/11/09 12:49:38
スレ違いの話題だが、目立系でタブ使用禁止のサイトあったな。
vi のタブ幅を変更できる奴が居なかったてのが理由なんだが...

591 :デフォルトの名無しさん:04/11/09 13:29:51
スペースにするとカーソルを移動させる際のキーを押す回数が増えるのがめんどくさい

592 :デフォルトの名無しさん:04/11/09 13:36:47
そんなエディタを使う(orそんな使い方しかできない)香具師が蛸

593 :デフォルトの名無しさん:04/11/09 13:43:40
>>587
細かいこと言うなよ。C/C++もFORTRAN70もたいして変わらないだろ。

594 :デフォルトの名無しさん:04/11/09 13:45:03
>>593
ケチな事言うなよ。お前がスパっと答えればいいだろ。

595 :デフォルトの名無しさん:04/11/09 13:46:06
FORTRANの問題を板間違えてカキコしてしまいました。すみませんでした

596 :デフォルトの名無しさん:04/11/09 14:12:34
タブに文句つけてるのは、タブ←→スペースを手で書き換えてる初心者だろ。
整形したきゃ自分でやれ
そんなの人にやらせることか

597 :デフォルトの名無しさん:04/11/09 14:14:07
>>596
自分が初心者のときそうだったからと言って、他人まで同じだと思わないほうがいいよ。

598 :デフォルトの名無しさん:04/11/09 14:49:31
とりあえずHomeとEndキーをFnつきにするのは止めて
>>最近のキーボード

599 :デフォルトの名無しさん:04/11/09 15:19:31
で、結局複数のスペースをカーソルキー(それに順ずるもの)一つで
一度にそのスペース群を飛ばせるエディタなんてあるの?

そもそもそんな挙動してたらタブと変わらんと思うが

>>598
ノートで十字キーのそばにあるならOK

600 :デフォルトの名無しさん:04/11/09 16:12:48
C言語で、N次元連立一次方程式の解を求めるプログラムを教えてください。
例えばNが3だとしたら、
A1x+A2y+A3z=B1
A4x+A5y+A6z=B2
A7x+A8y+A9z=B3
このAとBの値を入力してx,y,zを出力させるようなプログラムです。

601 :デフォルトの名無しさん:04/11/09 16:14:33
>>599
vi
emacs
及びその他諸々。

602 :デフォルトの名無しさん:04/11/09 16:15:13
>>600
先ずはそのような解を求める方法を教えてください。

603 :デフォルトの名無しさん:04/11/09 16:35:15
>>602
掃き出し法でもAの逆行列をBにかける方法でもなんでもいいです!

604 :デフォルトの名無しさん:04/11/09 16:43:44
>>603
>602はリア厨以下だからそれを知らないのだよ。

605 :デフォルトの名無しさん:04/11/09 16:53:43
>600
ここはC/C++の宿題を片付けるスレだ
学校の宿題は自分の机で片付ける方が将来の為だぞ

606 :デフォルトの名無しさん:04/11/09 16:55:45
>>605
このスレが何故あるのか知らないのか?

607 :デフォルトの名無しさん:04/11/09 16:57:50
>>605
600はC/C++の宿題じゃないの???

608 :デフォルトの名無しさん:04/11/09 16:58:44
>605は、>600が算数の問題を解くためにプログラムを作らせようとしていると思ったんジャマイカ。

609 :デフォルトの名無しさん:04/11/09 17:00:04
そんなばなな

610 :デフォルトの名無しさん:04/11/09 17:06:47
暇人だった
書き込めればなんでもよかった
いまは反省しているΛ||Λ

611 :デフォルトの名無しさん:04/11/09 19:46:07
Cです、お願いします。

キーボードから入力したの実数のビット列を表示するプログラムを作文しなさい
(32ビット表示し、4ビットごとにスペースで区切る)

612 :デフォルトの名無しさん:04/11/09 19:48:20
作文かい。

613 :デフォルトの名無しさん:04/11/09 19:52:25
(´-`).。oO(ここは質問の仕方を教えるスレじゃないんだけどな…)

614 :デフォルトの名無しさん:04/11/09 19:55:26
ビットパターンの出力なんてわざわざCでやる必要はない
Javaならデフォルト関数で一発だ。ハイ解決

615 :デフォルトの名無しさん:04/11/09 19:59:33
   「プログラム」
              ろく いちいち
 きょう、キーボードからにゅうりょくした
じっすうのビットれつをひょうじするプロ
グラムがしゅくだいにでた。じょうけんと
して32ビットひょうじし、4ビットごとにス
ペースでくぎるようにいわれた。

616 :611:04/11/09 20:04:12
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
キーボードから入力した実数のビット列を表示するプログラムを作文しなさい
(32ビット表示し、4ビットごとにスペースで区切る)
[原文通りです]
[3] 環境
 [3.1] OS:Windows Me
 [3.2] コンパイラ(バージョン):Borland C++ 5.5.0
 [3.3] 言語:C
[4] 期限:2004年11月12日15:00まで
[5] その他の制限:ありません

617 :デフォルトの名無しさん:04/11/09 20:07:49
ビットにして表示するなんて荒業以外方法あるのだろうか
ちょっと興味がある…

618 :デフォルトの名無しさん:04/11/09 20:09:15
あまりにも簡単な宿題を丸投げしてて、先々自分が困ると思わねーの?

619 :デフォルトの名無しさん:04/11/09 20:11:50
ここは宿題を片付けるスレであって
初心者に手取り足取り教えてやるすれではないんだけどな・・・・・・(´-`)y-┛~~

620 :デフォルトの名無しさん:04/11/09 20:30:26
>>613,619
じゃ、お前がやってあげればいいじゃん♪

621 :デフォルトの名無しさん:04/11/09 20:51:31
int xtob(unsigned int n)
{
int i, j;
for(i=31;i>=0;i++){
for(i=0;i<4;i++){
if(0x80000000 & n){
putchar('1');
}else{
putchar('0');
}
n <<= 1;
}
putchar(' ');
}
putchar('\n');
return 0;
}

622 :621:04/11/09 20:52:47
どっか間違いがあるけどバグ取りくらいしてくれるよな
どこが悪いかくらい自分で考えてね

623 :デフォルトの名無しさん:04/11/09 21:01:51
うわ、だっせぇ、問題もまともに読めないのに偉そうに「自分で考えてね」なんて書いちゃってるよこの人。

624 :デフォルトの名無しさん:04/11/09 21:07:30
>>611=>>623


625 :611:04/11/09 21:10:43
>>617-619
申し訳ありませんでした
やはりもう少し自分で考えてみます。
>>621
ありがとうございました。参考にさせていただきます

626 :デフォルトの名無しさん:04/11/09 21:13:13
タブは(広義の)環境依存だから使わない方がいいよ。
空白なら、等幅フォントの場合絶対ずれないし。

627 :デフォルトの名無しさん:04/11/09 21:23:05
>>625
おいおい、問題文が正しいなら実数だろ?
>621は整数だぞ。

628 :デフォルトの名無しさん:04/11/09 21:23:10
; orz
(setq-default indent-tabs-mode nil)


629 :デフォルトの名無しさん:04/11/09 21:26:58
だから、インデント以外でタブを使うからずれるんだって。
インデントで使うなら4カラムごとだろうが8カラムごとだろうが問題ないっしょ。

630 :デフォルトの名無しさん:04/11/09 21:37:40
スペース使っても固定ピッチじゃなきゃずれるけどな

631 :デフォルトの名無しさん:04/11/09 23:35:11
#include <stdio.h>
#include <string.h>
int main(){
int n,i,j;
float f;
unsigned char b[4],msk;
printf("数字をいれろ> ");fflush(stdin);
n = scanf("%g",&f);
if(n!=1){printf("嫁寝ーよ\n");exit(1);}
printf("\n 28 24 20 16 12 8 4 0\n");
memcpy((void *)b,(void *)&f,4);
for(i=3;i>=0;i--){
msk = (1 << 7);
for(j=7;j>=0;j--){
if(b[i] & msk)printf("1");
else printf("0");
if(!(j%4))printf(" ");
msk >>= 1;
}
}
printf("\n");
return 0;
}


632 :デフォルトの名無しさん:04/11/09 23:37:41
このスレじゃバカでも解答者になれるのか

633 :再挑戦:04/11/09 23:39:19
#include <stdio.h>
#include <string.h>
int main(){
  int n,i,j;
  float f;
  unsigned char b[4],msk;
  printf("数字をいれろ> ");fflush(stdin);
  n = scanf("%g",&f);
  if(n!=1){printf("嫁寝ーよ\n");exit(1);}
  printf("\n  28   24   20   16   12    8    4    0\n");
  memcpy((void *)b,(void *)&f,4);
  for(i=3;i>=0;i--){
    msk = (1 << 7);
    for(j=7;j>=0;j--){
      if(b[i] & msk)printf("1");
      else printf("0");
      if(!(j%4))printf(" ");
      msk >>= 1;
    }
  }
  printf("\n");
  return 0;
}


634 :>>611:04/11/10 00:48:43
タブが潰れてるけど勘弁な

#include<stdio.h>
int main(){
unsigned char buf[4];
char *table[] = { "0000 ","0001 ","0010 ","0011 ",
"0100 ","0101 ","0110 ","0111 ",
"1000 ","1001 ","1010 ","1011 ",
"1100 ","1101 ","1110 ","1111 "};

scanf("%f", (float *)buf);
printf("%s%s%s%s%s%s%s%s\n",table[buf[3]/16], table[buf[3]%16],
table[buf[2]/16], table[buf[2]%16],
table[buf[1]/16], table[buf[1]%16],
table[buf[0]/16], table[buf[0]%16]);
return 0;
}


635 :634:04/11/10 00:50:15
いちおうリトルエンディアン用、SUNとかには0123の順で表示さしてくれい。

636 :デフォルトの名無しさん:04/11/10 01:02:44
>unsigned char buf[4];

unsigned char buf[sizeof(float)];
後はループで

637 :デフォルトの名無しさん:04/11/10 01:03:38
関係ないけど、判定関数。

int is_little_endian(){
char ch[2];
*(int*)ch = 1;
return ch[0] == 1;
}


638 :デフォルトの名無しさん:04/11/10 01:05:40
あ、int のバイト数無視してた。

639 :デフォルトの名無しさん:04/11/10 01:53:39
>>611
これで良いと思うのだが...
『入力した実数のビット列を表示する』って書いてるからバイトオーダーなんか意識
する必要ないのでは?

#include <stdio.h>
#include <string.h>
int main( void )
{
int a, i;
float b;

scanf( "%f", &b );
memcpy( &a, &b, sizeof( int ) );
for( i = 0; i < 32; i++ ) {
printf( "%d", ( a & 0x80000000 ) / 0x80000000 );
a <<= 1;
if( i % 4 == 3 )
printf( " " );
}
return 0;
}


640 :デフォルトの名無しさん:04/11/10 02:05:21
>>410
亀レスだが一つだけ逝っておきたいことがある

のっとふぁうんど

でした。すいませんごめんなさいもうしません。゚(゚´Д`゚)゚。



641 :600:04/11/10 02:21:55
どなたか>>600の課題を・・・orz

642 :デフォルトの名無しさん:04/11/10 02:25:13
>>641
掃き出し法

643 :デフォルトの名無しさん:04/11/10 03:39:15
>>641
ここから自分で探せ。
ttp://www.mscom.or.jp/~tog/anna/
ヒント
ttp://www.mscom.or.jp/~tog/anna/LEQ2.C

但し、ガウスの消去法の途中でピボットが0になったら当然エラーになるから
ttp://www.mscom.or.jp/~tog/anna/LEQPTR6.C

のような完全ピボット選択法がよく使われる。しかし実際には部分ピボット選択
で十分な事が多いので、ぐぐれ。

644 :デフォルトの名無しさん:04/11/10 03:59:31
>>641
アルゴリズムはそこらじゅうに落ちてたから、後でトリッキーなコード
考えてみる。一日ほどまたれい。

645 :デフォルトの名無しさん:04/11/10 04:12:53
もうこれでいいじゃん。
http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/simple_equation/simple_equation_2.html

646 :デフォルトの名無しさん:04/11/10 07:43:50
for(t=0;t<10;t++)
num[t]=0; /* 配列fをクリヤー*/
while((ch=fgetc(fin))!=EOF) /* 1行読む*/
{
if(isdigit(ch))
num[ch-48]+=1; /*listの48番目に1を足す*/
}

for(t=0;t<10;t++)
fprintf(fout,"%c :%4d\n",t+48,num[t]);

数字を抽出して出力するプログラムですが、
これの後に、a-zA-zそれぞれをislower isupper を使って、上と同じようにfor whileでプログラムを作ったら、出力されるのは数字部分だけですよね。
数字、英小文字、英大文字を抽出して出力するにはどうすればいいでしょうか?

for(t=0;t<10;t++)のあとの出力で終わらないようにしたいのですが。

647 :デフォルトの名無しさん:04/11/10 07:44:18
ageます

648 :デフォルトの名無しさん:04/11/10 08:21:21
↑特定文字の出現回数を抽出するんだろ。
num[256] にして全文字の出現回数を取得→見たい文字だけ出力
が一番普通で早いと思うぞ。
お前さんのはトリッキー。

649 :デフォルトの名無しさん:04/11/10 08:35:48
>>648
どうもです。やってみます。

650 :デフォルトの名無しさん:04/11/10 08:36:42
あれだ。「コメントが無いほうがマシ」ってのの例だな。
問題の内容さえ理解していないのがワラッタ。

int num[256];
for(t=0;t<256;t++)num[t]=0;
while((ch=fgetc(fin))!=EOF){/*1文字読む*/
&bpsp;&bpsp;num[ch] += 1; /* 文字に対応したカウンタを1増やす*/
}

/* 大文字小文字といわず、記号も含めて吐きだす */
for(t=33;t<=126;t++) fprintf(fout,"%c :%4d\n",t,num[t]);

651 :デフォルトの名無しさん:04/11/10 08:54:46
>>650
そういえばコメント消すの忘れてたw
ハズカシ

652 :デフォルトの名無しさん:04/11/10 09:17:07
このプログラムではコンパイルが通りません
バグを教えて下さいお願いします。



http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1

653 :デフォルトの名無しさん:04/11/10 09:24:50
>>652
タイミング的にこれかな?
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=328

他人に余計な手間掛けさせるなや。

654 :余りにも単純なTypoだ:04/11/10 09:27:31
>>652
>・エラーは、その行とエラーの詳細を書きましょう。
>エラーメッセージが出た場合はそのままコピーしてください。
つーか、>1を100辺くらい読め。

そして己の書いたソースを穴が開くほど読め。

655 :ネムー:04/11/10 11:54:44
質問です。
フーリエガラーキン法を用いて、ガウシアンパルスf(x)=exp(-100*x^2)を
微分するプログラムを教えて下さい。
xの範囲は-1〜1で、f(x)の値としてはガウシアンパルスを
128等分した離散値を使うものとしてください。

言語はC++でコンパイラはボーランドC++コンパイラーです。
GNU Scientific Libraryが移植済みです。

656 :デフォルトの名無しさん:04/11/10 16:11:14
C言語の宿題です。
2桁以上の任意の整数を入力して、数字の桁を入れ替えるプログラムを作る問題です

例…1234→4321

誰かお願いします

657 :デフォルトの名無しさん:04/11/10 16:17:16
>>656
#include <stdio.h>
int main() {
int in,out,wk;
scanf("%d",&in);
wk = in;
out = 0;
while(wk)
{out = (out * 10) + wk % 10;
wk /= 10;
}
printf("%d %d",in,out);
return 0;
}
手抜きして作ったので自分で修正してくれ

658 :デフォルトの名無しさん:04/11/10 16:26:37
>>656
#include <stdio.h>
#include <string.h>

int main()
{
char buf[64];
size_t i;

printf("2桁以上の整数を入力: ");
scanf("%s", buf);

i = strlen(buf);
while( i > 0 )
printf("%c", buf[--i]);
printf("\n");

return 0;
}


659 :デフォルトの名無しさん:04/11/10 16:30:59
[1] 授業単元:C言語実習1
[2] 問題文(含コード&リンク):http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=329
[3] 環境
 [3.1] OS:WinXP SP2
 [3.2] コンパイラ(バージョン):Microsoft Visual Studio .NET 2003
 [3.3] 言語:C
[4] 期限:2004年11月17日23:59まで
[5] その他の制限:なし

よろしくお願いします。

660 :デフォルトの名無しさん:04/11/10 17:55:53
>>659
過去ログ嫁( ゚Д゚)ゴルァ!!

661 :デフォルトの名無しさん:04/11/10 17:57:12
>>660
何怒ってるでちゅか(プ

662 :526:04/11/10 18:14:00
漏れ >>660 じゃないけど気持ちは解る。
ほとんど同じ様な問題に解答したので...

もっとも >>659 にはそれを直すだけの力も無さそうだけどな。
今回は別な人が答えてやんなよ。

663 :デフォルトの名無しさん:04/11/10 18:19:34
この問題1から順にやればできるようになってる
よって順番にやって詰まってからもう一回鯉

664 :デフォルトの名無しさん:04/11/10 18:27:48
↑しかし、この問題を1から順番にやるとなると最初は main() に全処理書くことに
なりそうだな。

こうゆう学校を出た奴がKStep関数を書くのか?

665 :デフォルトの名無しさん:04/11/10 19:21:58
Cの課題です。
1.N×N行列の行列式を求めるプログラムを作成。
  Nはプリプロセッサで指定する。数値は初期値で設定する。
  不要な演算をしないようにする。たとえば0となっている要素に掛けたりすること
  エラー(計算結果にNaNとう値)が出ないようにする。
2.1のプログラムを参考して、逆行列を求めるプログラムを作成。
  行列式の値が0なら適切なメッセージを表示して、計算を中止する。
  それ以外は逆行列を表示する。

お願いします。

666 :デフォルトの名無しさん:04/11/10 19:37:10
行列式の求め方かいて
逆行列の求め方かいて

667 :デフォルトの名無しさん:04/11/10 19:39:47
>>665
>>643を探せ。

668 :デフォルトの名無しさん:04/11/10 19:42:31
失礼。行列式の求め方はガウスの消去法の前進消去のみで求まる。
ttp://www.mit.msn.to/matrix/determinant.html

669 :デフォルトの名無しさん:04/11/10 19:52:40
C言語でn×n行列のAとBの二乗平均誤差を計算をしたいのですが
どなたかわかりませんか?

式は
1/(n^2)×{Σ(A−B)^2}の平方根
で、Σの範囲は1≦i≦nです。
A及びBはA[1][1]、A[1][2]、・・・A[1][n]、A[2][1]、A[2][2]、・・・・A[n][n]
というように変化して計算いくものとします。

670 :665:04/11/10 20:30:59
ありがとうございます。参考になりました

671 :デフォルトの名無しさん:04/11/10 20:49:10
【宿題】
Σ(a_i - b_i)^2 を計算する場合と、
Σ(a_i^2 + b_i^2) - 2Σ(a_i * b_i) を計算する場合とでは、
どちらが誤差が大きくなりますか?

672 :デフォルトの名無しさん:04/11/10 21:05:46
>>671
符号による

673 :671:04/11/10 21:06:44
>>672
a_i と b_i は正の数で、近い値の場合はどうなりますか?

674 :デフォルトの名無しさん:04/11/10 21:07:45
>>659
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&rm=50
253から260まで

675 :デフォルトの名無しさん:04/11/10 21:10:33
>>673
差を取ると桁落ちする
0.1234 - 0.1232 = 0.0002
有効数字 4桁 ⇒ 1桁

676 :611:04/11/11 00:38:24
課題が完了しました
ご指導くださった方々ありがとうございました

677 :デフォルトの名無しさん:04/11/11 10:32:55
なんか別のスレにも質問あがっているみたいですが、
どうやら同じ課題を与えられている人らしいです…

[1] 授業単元:データ構造とアルゴリズム
[2]問題:

標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。また、同じ長さの行は入力した順番に出しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに依存しなければなりません。勝手な上限を設けてはいけません。

実行例

入力
Windows XP
Power Mac G5
Unix SVR4

出力
Unix SVR4
Windows XP
Power Mac G5

[3] 環境:
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:2004年11月24日
[5] その他の制限:

どなたかわかる方はご教授くださいm(__)m

678 :ネムー:04/11/11 10:39:16
質問です。
・1次元配列で与えられた離散データをFFT(高速フーリエ変換)する
プログラムを教えて下さい。
・配列で与えられた離散データをFFTして、ikかけて
逆FFTすると微分値が求まるらしいので、その方法を教えて下さい。
OS;Windows XP
言語;CかC++
コンパイラ;ボーランドC++コンパイラ
です。
よろしくお願いします。

679 :デフォルトの名無しさん:04/11/11 10:59:30
>>678
俺も眠いから無理。
それに高速ふーりえ変換の方法も知らないし。
と、ゆうことで自分で調べるかネ申でもまってて。

680 :デフォルトの名無しさん:04/11/11 11:25:22
>>678

> 1次元配列で与えられた離散データをFFTするプログラム

www.fftw.org か
http://momonga.t.u-tokyo.ac.jp/~ooura/index-j.html から
ダウンロード汁!

> 配列で与えられた離散データをFFTして、ikかけて逆FFT
> すると微分値が求まる

...って、もう方法が完全にわかっているじゃないか。

681 :ネムー:04/11/11 11:31:43
すいません。
方法わかっててもなかなかうまいことかけなくて・・・。
とりあえずダウンロードしてやってみます。
ありがとうございました。

682 :デフォルトの名無しさん:04/11/11 12:11:28
キボードから入力された英小文字を英大文字にして表示するプログラム
文字列の最大の長さは20まで
それ以外はそのまま表示する
小文字 adc12
大文字 ADC12

683 :デフォルトの名無しさん:04/11/11 12:41:02
>>682
#include <stdio.h>
int main()
{
 int i;
 char str[21];
 printf("input> ");
 scanf("%20s",str);
 for(i=0;i<20;i++)
 {
  if(str[i]=='\0')break;
  else if(0x60<str[i]&&str[i]<0x7b) str[i]-=0x20;
 }
 printf("%s",str);
 return 0;
}


684 :デフォルトの名無しさん:04/11/11 12:50:19
>>683
どうもありがとうございました

685 :デフォルトの名無しさん:04/11/11 12:55:39
同じネタの繰り返しかorz

686 :デフォルトの名無しさん:04/11/11 13:08:19
任意サイズのリングバッファのアドレス計算
をするプログラムを作れ。



687 :デフォルトの名無しさん:04/11/11 13:10:26
>>683
tolower使うべき

688 :デフォルトの名無しさん:04/11/11 13:29:27
>>686
命令寸奈

689 :686:04/11/11 13:33:04
>>688
ごめんなさい。問題文がそうだったので・・・
改めまして
問題:任意サイズのリングバッファのアドレス計算
   をするプログラムを作りましょう。
以上、宜しくお願いします。

690 :デフォルトの名無しさん:04/11/11 15:37:38
>>689
アドレス計算
の意味がわからんのは俺だけか?

691 :デフォルトの名無しさん:04/11/11 15:38:46
俺もわかんね

692 :デフォルトの名無しさん:04/11/11 15:45:14
おらもわかんね

693 :デフォルトの名無しさん:04/11/11 15:55:50
授業に出席していない>>689もわからないにイピョーウ

694 :デフォルトの名無しさん:04/11/11 17:52:51
リングバッファの末尾のポインタを求めればいいんじゃないの?

695 :デフォルトの名無しさん:04/11/11 17:58:45
リングバッファは通信系でよく使うな。
なに。そんなに難しいものではない。

696 :デフォルトの名無しさん:04/11/11 18:03:08
では“アドレス計算”どぞー

697 :デフォルトの名無しさん:04/11/11 18:12:29
2問お願いします
「キーボードから入力された10進数を、2進数として出力するプログラムを作りなさい。
2進数への変換は、キーボードから入力された10進数を2で0になるまで割り、余りを逆の順番で並べる方法を用いる。
ただし、入力は正の整数で最大値は16383(すべてが1である14桁の2進数)とする。

「キーボードから和暦(英文字に続く文字)を入力したとき、西暦年を出力するプログラムをつくりなさい。
ただし、明治はmまたはM,大正はtまたはT,昭和はsまたはS、平成はhまたはHとし、数字は必ず2桁で入力するものとする。
たとえあ平成7年の場合はh07またはH07to入力すること。

698 :デフォルトの名無しさん:04/11/11 18:13:57
修正)最後の行の「またはH07to入力すること。」は「またはH07と入力すること。
」です。
お願いします。

699 :デフォルトの名無しさん:04/11/11 18:16:14
mtshMTSHは全角?

700 :デフォルトの名無しさん:04/11/11 18:26:42
>>697
本人がもういないようなのでこの質問はキャンセルされました。


701 :デフォルトの名無しさん:04/11/11 18:30:05
>>699
スミマセン。mtshMTSHは半角でお願いします

702 :デフォルトの名無しさん:04/11/11 18:43:09
  . ∩_∩ ;
  ; | ノ|||||||ヽ `
 , / ● ●|  
 ;, |\( _●)/ ミ
; 彡、| |∪| |、\ ,
 ./  ヽ/> ) :
(_ニニ>/ (/ ;
;  |   | ;
'  \ヽ/ / :
,  //\\ .  
;  し’ '`| | 

703 :デフォルトの名無しさん:04/11/11 19:23:47
というかそんな簡単なのもできないで大丈夫か?

704 :デフォルトの名無しさん:04/11/11 19:27:07
簡単言うならちゃちゃっとやってやれ

705 :デフォルトの名無しさん:04/11/11 19:29:47
>>730
当方、初心者なので。。申し訳ありません。

706 :デフォルトの名無しさん:04/11/11 19:36:51
>>705
答える気が失せた。ここ言って修行してこい
http://pc5.2ch.net/test/read.cgi/prog/1096909647/

707 :デフォルトの名無しさん:04/11/11 19:57:39
嫌です。
>>706様に教えて欲しい

708 :デフォルトの名無しさん:04/11/11 19:59:19
>>707
以前に出たような質問をするなよ。
過去ログでも参照しとけ。

709 :デフォルトの名無しさん:04/11/11 20:02:42
707は当方ではないので、お願いします。
当方、この場での質問は初めてなので>>708様がおっしゃっているのは別の方だと思います。
回答のほうお願いします

710 :デフォルトの名無しさん:04/11/11 20:06:20
自分でやりな
できないならできないで、できるとこまでやれ
それから来い
てか、過去ログにあるらしいから探しに行け

711 :デフォルトの名無しさん:04/11/11 20:08:59
>>697
#include <stdio.h>
#include <limits.h>
int main()
{
char buf[256];
unsigned int d, mask;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
int status = sscanf(buf, "%ud", &d);
if (status == 0 || status == EOF) {
continue;
}
for (mask = ~(UINT_MAX >> 1); mask != 0; mask >>= 1) {
if ((d & mask) != 0) {
break;
}
}
if (mask == 0) {
puts("0");
continue;
}
for ( ; mask != 0; mask >>= 1) {
if ((d & mask) != 0) {
putchar('1');
} else {
putchar('0');
}
}
putchar('\n');
}
return 0;
}

712 :デフォルトの名無しさん:04/11/11 20:11:42
>>706さん、私はどうしてもあなたに教えてほしいのです。
あなたが、このスレ随一のプログラマだということを確信しておりますので。
もちろん、だからといって、あなたが私の”宿題”を引き受けてくれる道理
などはないことも、重々承知しているつもりです。
ですが、私は、自分の宿題を済ませるということだけが、目的というわけではないのです。
私は、あなたのプログラミング能力を、世間に知らしめたいのです。
”こんなにも才能あふれるプログラマが、このスレにはいるんだぞ”ということを
自慢してまわりたいのです。
どうかお願いします。私のささやかな願いをかなえてもらえないでしょうか。
あなたの、プログラムが、いつか世界を救う。
今ではそんな気さえしています。



713 :デフォルトの名無しさん:04/11/11 20:16:08
・長ったらしい文章
・文中からほとばしる電波
・くどい敬語








ま た 常 識 人 か ! !


714 :大原ゆき:04/11/11 20:18:04
>>713
違います。

715 :デフォルトの名無しさん:04/11/11 20:20:02
>>714
誰ですかあなたは?

716 :デフォルトの名無しさん:04/11/11 20:21:21
時々えらい粘着質な香具師がわくな
宿題をやってもらえず、単位でも落したか?

717 :デフォルトの名無しさん:04/11/11 20:23:05
>>716
いいから早く宿題やれよ。

718 :デフォルトの名無しさん:04/11/11 20:27:03
>>716
そんな奴は単位を落として当然だろ。
どうせ学科のゴミの癖にまだ大学にへばり付いて、
なに?粘着した垢?石鹸カス?チンカス?
大学にいても意味ないだろ。
大学の名前に傷がつくどころか、同級生にも迷惑なんだよ。


719 :デフォルトの名無しさん:04/11/11 20:30:17
>>697
#include <stdio.h>
int main()
{
char buf[256], era;
int year;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
int status = sscanf(buf, "%c%d", &era, &year);
if (status == 0 || status == EOF) {
continue;
}
switch (era) {
case 'm': case 'M':
printf("%d\n", year + 1867);
break;
case 't': case 'T':
printf("%d\n", year + 1911);
break;
case 's': case 'S':
printf("%d\n", year + 1925);
break;
case 'h': case 'H':
printf("%d\n", year + 1988);
break;
default:
break;
}
}
return 0;
}

720 :デフォルトの名無しさん:04/11/11 20:30:38
宿題の内容から言って、工業高校か専門学校だろ
これが大学生の宿題だとしたら終わっとるよ

721 :デフォルトの名無しさん:04/11/11 20:42:31
#include <stdio.h>
int main()
{
char *a;
int i,k,n10,n1,g,a1,a2,a3;
scanf("%s",a);
for(i=0;i<=3;i++){
if(*(a+i)=='M'||*(a+i)=='m'){
k=1867;
}
else if(*(a+i)=='T'||*(a+i)=='t'){
k=1911;
}
else if(*(a+i)=='S'||*(a+i)=='s'){
k=1925;
}
else if(*(a+i)=='H'||*(a+i)=='h'){
k=1988;
}
a++;
}
for(i=0;i<=3;i++){a--;}
a1=*(a+1);
a2=*(a+2);
printf("西暦%d年",(k+(a1*10)+a2));
return 0;
}
久しぶりのCだができた。と思ったらどこかおかしいので>>697>>727以降を参照しな
早くこの流れを終わらせようぜ

722 :デフォルトの名無しさん:04/11/11 20:46:02
>>719
自分のやけど、ちょっとよろしゅうないところがあるわ。

> if (status == 0 || status == EOF) {

ここは、『if (status != 2 || status == EOF) {』 やね。
あとswitchのところは、『switch(toupper(era)) {』 でcaseを減らすのもええかも。
is〜()やto〜()の未定義動作が怖いから、あまり使いとうないねんけどな。

723 :デフォルトの名無しさん:04/11/11 20:46:58
宿題が出る。
煽るやつととくやつが出る。
だらだらする。
また宿題が出る。
マルチということが判明する。
叩く。
また宿題が出る。

ずっと前からこの流れだよ。

724 :デフォルトの名無しさん:04/11/11 20:49:06
>>721
『a1=*(a+1);
a2=*(a+2);』
のトコ見てみろ

725 :デフォルトの名無しさん:04/11/11 20:51:10
>>723
まとめページが必要かなぁー にゃんにゃん

726 :デフォルトの名無しさん:04/11/11 20:51:44
>>char *a;
>>scanf("%s",a);


727 :デフォルトの名無しさん:04/11/11 20:51:45
>>721
そのプログラムはまずいで。
aにメモリが割り当てられてへんから、スタック破壊される。
あと入力に年号の一文字が無かったときに、動作が不定やわ。
それとこれが一番問題やねんけど、それほんまにまともに動くん?
文字(a1, a2)に対して演算してはるで。
言わせてもらうと、かなりあかんプログラムやわ。作りがひどすぎます。

728 :デフォルトの名無しさん:04/11/11 20:51:47
てかレス激しいなw

729 :デフォルトの名無しさん:04/11/11 20:54:58
解答が出たことだし、これにて一件落着!
次の宿題の方、どうぞー

730 :デフォルトの名無しさん:04/11/11 20:56:19
>>723によれば
次の質問者はマルチだよ。

731 :デフォルトの名無しさん:04/11/11 20:58:19
氏ねマルチ


732 :デフォルトの名無しさん:04/11/11 20:59:13
ご主人様ぁ〜

733 :デフォルトの名無しさん:04/11/11 20:59:31
1問目がまだやんけ

734 :デフォルトの名無しさん:04/11/11 20:59:34
ほんたま辺りが…

735 :デフォルトの名無しさん:04/11/11 20:59:54
>>733
719

736 :デフォルトの名無しさん:04/11/11 21:01:36
>>735
2問お願いします
「キーボードから入力された10進数を、2進数として出力するプログラムを作りなさい。
2進数への変換は、キーボードから入力された10進数を2で0になるまで割り、余りを逆の順番で並べる方法を用いる。
ただし、入力は正の整数で最大値は16383(すべてが1である14桁の2進数)とする。

                   やて

737 :デフォルトの名無しさん:04/11/11 21:02:23
>>736
自分でやれ。

738 :デフォルトの名無しさん:04/11/11 21:03:33
>>736
どっかで見た問題

739 :デフォルトの名無しさん:04/11/11 21:05:00
>>736
「剰余算の結果を逆順で出力」って、全然面白くも何ともないやん。
719で出しとき。あれなら(逆順にするための)バッファもいらんし、なにより美しいわ。

740 :デフォルトの名無しさん:04/11/11 21:07:55
>>736
すでに誰か回答してたような気が…

741 :739:04/11/11 21:09:59
>>736
ごめん、間違えてもた。719 ちゃうわ。 711 が答えや。

742 :デフォルトの名無しさん:04/11/11 21:14:07
題意通りにやらないと失格だよ

743 :デフォルトの名無しさん:04/11/11 21:14:48
>>739
やっぱ学校は美しさにはこだわってないねん
ま、ほんま汚いプログラになんねやなw

744 :デフォルトの名無しさん:04/11/11 21:27:19
宿題やっててエラーの原因がわからないってのも貼ってよろしいのでしょうか

745 :デフォルトの名無しさん:04/11/11 21:30:04
いいんでない

746 :デフォルトの名無しさん:04/11/11 21:32:00
>>743

課題の意図が理解できない下級高卒プログラマ

747 :697:04/11/11 21:32:41
697です。
遅レスすみません。なにか私の偽者(?)が多く出没しておりますが。。。
2問目の回答ありがとうございました。
1問目のほうもよろしくおねがいします。>>697参照

748 :デフォルトの名無しさん:04/11/11 21:42:42
/* やおやさん */

#include <stdio.h>

#define MONEY 1000;

typedef struct
{
char name[20];
int price;
int rest;
int bought;
} yasai;

int main(void)
{
int roop = 1;
int i;
int money = MONEY;
int num;

yasai ve[] ={
{"ninjin", 100, 5, 0},
{"daikon", 150, 5, 0},
{"retasu", 400, 2, 0},
};

printf("(´・д・`)<へいらっしゃい\n");

749 :744,748:04/11/11 21:44:21
while(roop)
{
printf("残り残金:%d円\n\n", money);
for(i = 0; i < 3; i++)
printf("%d---%s-%d円-%d個持っている-残り%d個/n", i, ve[i].name, ve[i].price, ve[i].bought, ve[i].rest);

printf("何を買いますか? 0:%s 1:%s 2:%s 3:帰る", ve[0].name, ve[1].name, ve[2].name);
scanf("%d", &num);

if(num == 3)
{
printf("(´・д・`)<今後ともごひいきに\n");
break;
}

if(money < ve[num].price)
printf("(´・д・`)<お金が足りないよ\n");
else
{
money -= ve[num].price;
ve[num].rest--;
ve[num].bought++;
}
}

return(0);
}

20,22行目で「ここでは宣言はできない(関数 main )」といわれます

750 :デフォルトの名無しさん:04/11/11 21:47:53
>>749
20,22って何処だよ

751 :744,748:04/11/11 21:49:22
上から20行目と22行目です

752 :デフォルトの名無しさん:04/11/11 21:51:28
#define MONEY 1000;
            ↑

753 :744,748:04/11/11 21:54:04
>>752
(´・д・`)<愛してます
      今後とも ごひいきに

754 :デフォルトの名無しさん:04/11/11 22:08:25
>>752
プリプロセッサの悪いところそのままだね。

755 :デフォルトの名無しさん:04/11/11 22:18:49
以下の練習プログラムを変更して、node1、node2、node3の順にリストを構成して、
その内容を表示するコードを記述してください。 //よろしくおねがいします
#include<stdio.h>

typedef struct NODE{
int num;
struct NODE *pnext;
}NODE;

int main(void){

NODE node1,node2,node3;
NODE *phead,*ptmp;

scanf("%d",&node1.num);
scanf("%d",&node2.num);
scanf("%d",&node3.num);

phead = &node1;
node1.pnext = &node2;
node2.pnext = &node3;
node3.pnext = NULL;

printf("%d\n",phead->num);
printf("%d\n",phead->pnext->num);
printf("%d\n",phead->pnext->pnext->num);

for( ptmp=phead ; ptmp!=NULL ; ptmp=ptmp->pnext)
printf("%d\n",ptmp->num);

return 0;
} //見直しましたがPPTを見て手打ちしたのでスペルミスがあったらすいません

756 :デフォルトの名無しさん:04/11/11 22:30:23
#include <stdio.h>
char output_buf[14];

void flush(void)
{
for (int i = 13; i >= 0; i--){
if (output_buf[i] != 0x00){
putchar(output_buf[i]);
}
}
putchar('\n');
}

void reg(int num, int i)
{
if (i >= 14 && i < 0){
return;
}
if (num != 0 && num != 1){
return;
}
output_buf[i] = num + 0x30;
}

void init(void)
{
for (int i = 0; i < 14; i++){
output_buf[i] = 0x00;
}
}

757 :デフォルトの名無しさん:04/11/11 22:30:58
int main()
{
char buf[256];
int cnt;
unsigned int d;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
int status = sscanf(buf, "%ud", &d);
if (status == 0 || status == EOF) {
continue;
}
if (d > 16383 || d < 0){
continue;
}
cnt = 0;
init();
while (true){
reg(d % 2, cnt++);
d /= 2;
if (d == 1){
reg(d, cnt++);
break;
}
else if(d == 0)
break;
if (cnt >= 14)
break;
}
flush();
}
return 0;
}


758 :デフォルトの名無しさん:04/11/11 22:32:57
>>697
↑とりあえずうごく

759 :デフォルトの名無しさん:04/11/11 22:46:55
>>755
すでにリストになってるし、内容を順に表示してる気がする…

760 :デフォルトの名無しさん:04/11/11 22:57:42
C言語の課題が分からない・・・。どなたかお願いします。

非負の整数を入力する。・・・・@
1桁の整数を入力する。・・・・・A
@で入力した整数のA桁目を表示する。(@に5678,Aに3と入力したら出力結果は6となる)
上記をdo,while使って作成し、終了時に繰返し行なうかを尋ねるプログラミングです。

761 :755:04/11/11 23:10:23
あすいません
問題文が3,2,1の順にリスト構成しろでした

762 :デフォルトの名無しさん:04/11/11 23:11:17
#include<stdio.h>
#include<string.h>

int main(void)
{
 char buf[256];
 int a = 5678;
 int b = 3;
 int len;

 printf("適当な数値を入れてください\n");
 scanf("%d",&a);
 printf("一桁の数値を入れてください\n");
 scanf("%d",&b);

 sprintf(buf, "%d", a);
 len = strlen(buf);

 if ((b > 9 && b < 0) || (len < b)){
  printf("値が不適当");
  return 0;
 }

 printf("%c\n", buf[strlen(buf) - b]);
 return 1;
}

適当に直してくれ

763 :デフォルトの名無しさん:04/11/11 23:12:12
>>760
まず、丸付き数字使うたらあかんよ。そこのコードには本来、文字がないからね。

764 :デフォルトの名無しさん:04/11/11 23:25:13
数値のまま処理。(errorチェックなし)
#include <stdio.h>
int main(void)
{
int x, y, i;
char buf[16];
do{
printf("x >>"); scanf("%d", &x);
printf("y >>"); scanf("%d", &y);
(void)getchar();
for (i = 0; i < y - 1;i++)
x /= 10;
printf("%d\n", x % 10);
printf("continue? ");
fgets(buf, sizeof buf, stdin);
}while(buf[0] == 'Y' || buf[0] == 'y');
return 0;
}

765 :デフォルトの名無しさん:04/11/11 23:36:13
#include<stdio.h>

typedef struct NODE{
 int num;
 struct NODE *pnext;
}NODE;

int main(void){

 NODE node1,node2,node3;
 NODE *phead,*ptmp;

 scanf("%d",&node1.num);
 scanf("%d",&node2.num);
 scanf("%d",&node3.num);

 phead = &node3;  
 node3.pnext = &node2;
 node2.pnext = &node1;
 node1.pnext = NULL;

 printf("%d\n",phead->num);
 printf("%d\n",phead->pnext->num);
 printf("%d\n",phead->pnext->pnext->num);

 for( ptmp=phead ; ptmp!=NULL ; ptmp=ptmp->pnext)
 printf("%d\n",ptmp->num);

 return 0;
}
よく分からんけど、こんなんでいいの?
とりあえず要件は満たしてると思うんだけど

766 :760:04/11/11 23:39:19
>>764
かたじけない・・・。精進します。

767 :デフォルトの名無しさん:04/11/12 01:07:27
>>764 + errorチェック
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#define BUF_MAX 256

int main( void )
{
char *str_end, buf1[BUF_MAX], buf2[BUF_MAX];
int ndigits;
long l, ith_digit;
do {
parameter1_input:
printf( "non-negative integer? " );
if ( fgets( buf1, BUF_MAX, stdin ) == NULL ) {
fprintf( stderr, "ERROR: UNEXPECTED EOF. ABORT.\n" );
return EXIT_FAILURE;
}
l = strtol( buf1, &str_end, 10 );
if ( buf1[0] == '\n' || *str_end != '\n' || l < 0 ) {
printf( " invalid parameter: %s", buf1 );
goto parameter1_input;
} else if ( l == LONG_MAX ) {
printf( " sorry, it is an overflow situation...: %s",
buf1 );
goto parameter1_input;
}
ndigits = str_end - buf1;

768 :デフォルトの名無しさん:04/11/12 01:07:49
parameter2_input:
printf( "a digit? " );
if ( fgets( buf2, BUF_MAX, stdin ) == NULL ) {
fprintf( stderr, " ERROR: UNEXPECTED EOF. ABORT.\n" );
return EXIT_FAILURE;
}
if ( buf2[0] == '0' || buf2[1] != '\n' || ! isdigit( buf2[0] ) ) {
printf( " invalid parameter: %s", buf2 );
goto parameter2_input;
}
ith_digit = (int)strtol( buf2, NULL, 10 );
if ( ith_digit > ndigits ) { printf( " 0\n" ); }
else { printf( " %c\n", *(str_end-ith_digit) ); }
printf( "Wanna play more? (Y/N) " );
if ( fgets( buf1, BUF_MAX, stdin ) == NULL ) {
fprintf( stderr, "ERROR: UNEXPECTED EOF. ABORT.\n" );
return EXIT_FAILURE;
}

} while ( strcmp( buf1, "Y\n" ) == 0 || strcmp( buf1, "y\n" ) == 0 );

return EXIT_SUCCESS;
}

769 :767:04/11/12 01:26:52
あ、インプットが 256 文字以上の時のエラーチェックし忘れた。

770 :デフォルトの名無しさん:04/11/12 02:04:34
ここはエレガントに宿題を片付けるスレなんだが

771 :デフォルトの名無しさん:04/11/12 10:13:27
誰かいますか?

772 :デフォルトの名無しさん:04/11/12 10:48:45
いません

773 :デフォルトの名無しさん:04/11/12 11:02:05
誰か助けてください。
次の関数で0≦x≦2の範囲で、xの値の0,1ごとに
yの値を計算するプログラムを作成せよ。画面にはx、y両方の値を表示す
るようにすること。while文を使うこと。y=x*x−3x+5/4

774 :デフォルトの名無しさん:04/11/12 11:48:24
>>773

double x = 0.0;
while( x <= 2.0 )
std::cout << "x=" << x << " y=" << (x*x-3*x+5.0/4) << std::endl;

775 :774:04/11/12 11:49:13
途中で送信しちゃった
double x = 0.0;
while( x <= 2.0 )
{
std::cout << "x=" << x << " y=" << (x*x-3*x+5.0/4) << std::endl;
x += 0.1;
}


776 :773:04/11/12 13:49:40
ありがとうございます

777 :AA略:04/11/12 14:33:27
>>776
あやまれ!
マルチしたことをこのスレでもあやまれ!

778 :デフォルトの名無しさん:04/11/12 15:29:36
課題が出たのでお願いします。

【質問テンプレ】
[1] 授業単元:プログラミング応用
  使用教科書→問題解決のための Cプログラミング
        佐藤次男、中村理一郎 共著
        コロナ社  \2,600 + Tax
[2] 問題文(含コード&リンク):Nを入力し、Nの階乗を求めるプログラムを再帰的な処理を用いて作成せよ。教科書 p.131 例題5.8 参照
[3] 環境
 [3.1] OS:XPだと思います。
 [3.2] コンパイラ(バージョン):32
 [3.3] 言語:C
[4] 期限:2004年11月13日16:00まで
[5] その他の制限:ヒントとしてこのようなものが与えられました↓教科書 p.131 例題5.8 参照
階乗を求める関数をfact とする
1 の階乗  1
2 の階乗  2 × fact( 1 )
3 の階乗  3 × fact( 2 )
4 の階乗  4 × fact( 3 )
5 の階乗  5 × fact( 4 )
6 の階乗  6 × fact( 5 )
7 の階乗  7 × fact( 6 )

779 :デフォルトの名無しさん:04/11/12 15:37:12
>>778

int fact(int n)
{
if( n<1 )return 0;
if( n==1 )return 1;

return n*fact(n-1);
}

if( n<1 )return 0;
これはちょっと自信ない

780 :デフォルトの名無しさん:04/11/12 15:48:50
入力した文字列データを2次元配列に格納したあと、
逆順に表示するプログラムの表示。
ただし、一文字目に'@'が入力されるとデータ入力を終わる。
データ数は最大20個、また一つの文字列データの
最大長は半角10文字。
おねがいします

実行例
word=sekiyu
word=yasai
word=denwa
word=@
denwa
yasai
sekiyu

781 :デフォルトの名無しさん:04/11/12 15:58:35
int i = 0;
char buf[20][11];

while( i < 20 ) {
printf("word=");
scanf("%s", buf[i]);
if( strcmp(buf[i], "@") == 0 )
break;
++i;
}

while( i > 0 )
printf("%s\n", buf[--i]);

782 :780:04/11/12 16:14:53
strcmpが定義されていませんって出たんですが。

783 :デフォルトの名無しさん:04/11/12 16:16:09
>>782
それくらい自分で調べろよ

784 :773:04/11/12 16:41:15
ほんとにごめんなさい。いままで書き込んだことなくて
ルールよくわかってませんでした。

785 :デフォルトの名無しさん:04/11/12 17:35:37
こんな問題がでました
「HTTPの通信プログラムをC言語で作成する際,改行コードをどのように取り扱えばよいか調査せよ」
教えてエロイ人

786 :デフォルトの名無しさん:04/11/12 17:59:41
ネット環境あるなら・・・とか言ってみるが

しかしどのように取り扱うかというのはまた抽象的でよくわからんな。

787 :デフォルトの名無しさん:04/11/12 18:19:20
>>785
なかなか面白い問題やね。良い先生(もしくは良い大学)かも。
いろいろ試行錯誤するのがええねんけど、そういうスレッドちゃうからいきなり核心に行こか。
HTTPのRFC(RFC 2616)の「2.2 基本ルール」を読んでみ。改行コードの規定のあたり。
あとはそれをCに関連づけて説明すればええ。これで9割5分はもらえるやろ。
http://www.studyinghttp.net/translations#RFC2616

完璧を期すなら、socketをfdopen()したときのテキストモード/バイナリモードについても
触れておくとええんちゃうかな。「Cで作成する際」っていうのが気になるからね。
でもこれは冗長やろな。

788 :デフォルトの名無しさん:04/11/12 18:19:50
>>785
Windowsの改行コードに統一するだけでいい。
ペイロードに乗っている部分の改行はHTTPと無関係。

789 :デフォルトの名無しさん:04/11/12 18:32:27
>>785
なんとなく、和歌山大学け?

790 :デフォルトの名無しさん:04/11/12 19:48:10
ありがトン>>787

791 :デフォルトの名無しさん:04/11/12 19:52:56
数字を対応する序数(英語)に変換する関数
例えば
1 なら first, 2 なら second, 3 なら third

792 :デフォルトの名無しさん:04/11/12 19:58:15
>>791
const char* henkan(unsigned int i)
{
static char* eigo[] = {"first", "second", "third",…};
return eigo[i];
}


793 :デフォルトの名無しさん:04/11/12 19:58:50
>>792
const char* henkan(unsigned int i)
{
static const char* eigo[] = {"first", "second", "third",…};
return eigo[i + 1];
}


794 :デフォルトの名無しさん:04/11/12 19:59:23
-1だろ

795 :デフォルトの名無しさん:04/11/12 20:00:20
そうでしたっ!!テヘ

796 :デフォルトの名無しさん:04/11/12 20:34:17
スレ違いだということはわかってるが言わせてくれ。
俺は今まで、数々の宿題を解いてきてる、いわば大御所ってやつだ。
だから多少の無茶は許されるはずだ。
windows updataすると再起動しなきゃいけないじゃん?
で、めんどいから、すぐには再起動しないんだけど、数分おきに
右下からうにょっと、再起動をうながすウインドウが出て来るんだよな。
あれがうざくてしょうがない。
けどな、お前らよりはうざくないから別にいいよ。
俺が言いたかったのはそれだけ じゃ ノシ

797 :デフォルトの名無しさん:04/11/12 20:40:24
宿題が出る。
煽るやつと、とくやつが出る。
だらだらする。            ←今ここ。
また宿題が出る。
マルチということが判明する。
叩く。
また宿題が出る。


798 :デフォルトの名無しさん:04/11/12 21:03:04
暇なんでエレガントに片付けられそうな宿題投下してください。

799 :デフォルトの名無しさん:04/11/12 21:08:49
エイトクイーン問題を解くプログラムを作ってください

800 :デフォルトの名無しさん:04/11/12 21:10:15
エイトキング問題を解くプログラムを作ってください

801 :デフォルトの名無しさん:04/11/12 21:14:54
>>800
王□□王□□王□
□□□□□□□□
□□□□□□□□
王□□王□□王□
□□□□□□□□
□□□□□□□□
王□□王□□王□
□□□□□□□□
9個置けた。

802 :デフォルトの名無しさん:04/11/12 21:15:31
プログラムの宿題を作るプログラムを作って下さい。

803 :デフォルトの名無しさん:04/11/12 21:16:30
>>799
エイトクイーン昔やったんだけど。
暗算(?)で出来ちゃったよ。
マス書いてクイーン置いてってら出来た。

804 :デフォルトの名無しさん:04/11/12 21:18:45
>>801
一番効率の悪い置き方したらいくつくらいなんだろう?

805 :デフォルトの名無しさん:04/11/12 21:20:20
>>804
4

806 :デフォルトの名無しさん:04/11/12 21:21:16
>>801
一番ゆかいな置き方したらいくつくらいなんだろう?

807 :デフォルトの名無しさん:04/11/12 21:37:36
>>806
256

808 :デフォルトの名無しさん:04/11/12 22:56:23
>>778-779
せっかく提出するならこのぐらい。
int fact(int n){retrurn n?n*fact(n-1):1}


809 :デフォルトの名無しさん:04/11/12 23:21:41
適当な要素数の整数型の 1 次元配列を初期化し、全要素の合計を求めて表示するプログラムを教えてください。
ターミネータを用いる方法と、sizeofを用いる方法の両方をお願いします。

810 :デフォルトの名無しさん:04/11/12 23:26:05
>>809
関数内関数の本領発揮だ!

811 :デフォルトの名無しさん:04/11/12 23:31:06
大原ゆきさんに犯されたい

812 :デフォルトの名無しさん:04/11/12 23:38:49
#include <stdio.h>
int main(void){
int s[] ={1,23,6,38,14,6,3,54,44,3};
int i, n, sum= 0;
n = sizeof(s) / sizeof(int);
for (i = 0; i < n;i++)
sum += s[i];
printf("sum = %d\n", sum);
return 0;
}

813 :デフォルトの名無しさん:04/11/12 23:41:28
>>809
普通にやるとターミネータ(もしくは番兵、sentinel)の個数がsizeof()に含まれてしまうが・・・
その辺はどうなっとるの?

814 :デフォルトの名無しさん:04/11/12 23:43:34
>>809
usingterminator() {
    static int x[] = { 1, 2, -1 }, i, sum;
    for (i = 0; x[i] != -1; i++) sum += x[i];
    printf("sum= %d\n", sum);
}

usingsizeof() {
    static int x[] = { 1, 2 }, i, sum;
    for (i = 0; i < sizeof(x) / sizeof(x[0]); i++) sum += x[i];
    printf("sum= %d\n", sum);
}

main() { usingterminator(); usingsizeof(); }


815 :デフォルトの名無しさん:04/11/12 23:49:27
>>810-814
ありがとうございます。

816 :不明なデバイスさん:04/11/13 02:30:33
>>814
なんでstaticにしてんのかな?
変数が自動的に0に初期化されるから?
int main() {
usingterminator(); usingsizeof();
usingterminator(); usingsizeof();
}
を実行するとどうなる?

817 :816:04/11/13 02:33:11
return 0;
忘れてた… orz

818 :デフォルトの名無しさん:04/11/13 18:56:09

文字列を入力として受け付けて、その文字列中にabcという文字列が含まれていればyesを、
含まれていなければnoを出力せよ。ただし、文字列ライブラリは使ってはならない。

実行例
 ・ugabcftと入力 → yes
 ・abcと入力   → yes
 ・iunhabと入力 → yes

と、問題を出されました。
誰か解いて下さい。月曜夜までに。

819 :818:04/11/13 19:08:56
・iunhabと入力 → no

orz

820 :デフォルトの名無しさん:04/11/13 19:24:51
>>818 力まかせ方だが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=263

821 :デフォルトの名無しさん:04/11/13 19:25:35
strstrで速攻完了

822 :デフォルトの名無しさん:04/11/13 19:26:11
すま、ライブラリ使っちゃいけんのね

823 :デフォルトの名無しさん:04/11/13 19:47:21
>>820
スレタイトルをお読みください。

824 :デフォルトの名無しさん:04/11/13 20:06:06
strstrのソースを提出すれば

825 :818:04/11/13 21:08:20
>>820
ありがとうございます。

えっと、ちょこっとレスされてて何なんですど、結局
strstrっていうのは文字列ライブラリに入るんですか?
何か #include <string.h> が文字列ライブラリだー、
みたいな説明受けたんですが。

もうよくワカンネ('A`)

826 :デフォルトの名無しさん:04/11/13 21:14:54
>>825
文字列を検索するコードを自分で書くのが目的だから
string.hにあるstrstrを使うなってこと。
>>820のはそれを自作してあるから別に
関数名にstrstrが含まれてるからって関係ない。

827 :デフォルトの名無しさん:04/11/13 21:26:41
>>826
あー、なるほどー。
説明どうもです。

828 :デフォルトの名無しさん:04/11/13 21:37:15
C言語です。お願いします。
正整数nを入力するとn以下の正の偶数を計算するプログラムをwhile文とfor文
を用いたものをそれぞれつくれ。



829 :829:04/11/13 21:39:37
define EOF -1
int mojishirabe(char ss[], char str[])
{
int i, j=0, k;
for(;;){
i=0;
while(ss[i] != str[j] && ss[i] != '\0'){
i++;
}
if(ss[i] == '\0'){
return 0;
}
while(ss[i] == str[j] && str[j] != '\0'){
i++;
j++;
}
if(str[j] == '\0'){
return 1;
}
}
}

830 :829続き:04/11/13 21:40:19
int main(void)
{
int i, j, k;
char ss[80], str[80;
printf("入力される文字列中に"abc"が含まれているか判定します。\n");
printf("判定対称文字列を入力してください。\n");
printf("->");gets(ss);
if(mojishirabe(ss, "abc"){
printf("yes\n");
}else{
printf("no\n");
}
return 0;
}

831 :デフォルトの名無しさん:04/11/13 21:42:31
int i;
int n;
scanf("%d",n);
#ifdef WHILE_VER
i = 0;
while(++i <= n)
#else
for(i=1;i<=n;++i)
#endif
printf("%d\n",i);

832 :831:04/11/13 21:43:37
・・・偶数かすまん

833 :デフォルトの名無しさん:04/11/13 21:51:05
>>828
偶数を計算って
全部表示させろってこと?
合計ってこと?

834 :デフォルトの名無しさん:04/11/13 21:56:40
>>833
合計です。よろしくお願いします。

835 :デフォルトの名無しさん:04/11/13 21:59:04
while
#include <stdio.h>

int main(void)
{
int sum = 0, x;
printf("x >> "); scanf("%d", &x);
if (x & 1) x--; /* if (x % 2 != 0)*/
while(x){
sum += x;
x -= 2;
}
printf("sum = %d", sum);
return 0;
}

836 :デフォルトの名無しさん:04/11/13 22:05:56
for
#include <stdio.h>

int main(void)
{
int sum, x;
printf("x >> "); scanf("%d", &x);
if (x & 1) x--; /* if (x % 2 != 0)*/
for(sum = 0; x; x-=2){
sum += x;
}
printf("sum = %d", sum);
return 0;
}

xの値を変えたくなかったら
int main(void)
{
int sum = 0, x, i;
printf("x >> "); scanf("%d", &x);
if (x & 1) x--; /* if (x % 2 != 0)*/
for(i = x; i > 0; i-=2){
sum += i;
}
printf("sum = %d", sum);
return 0;
}


837 :デフォルトの名無しさん:04/11/13 22:08:44
if(x&1)x--; と if(x%2!=0)

って同じ意味ですか?

838 :デフォルトの名無しさん:04/11/13 22:11:39
if(x&1)x--; と if(x%2!=0)x--;ね。
学校じゃ後者の書き方しかしないだろうから一応。


839 :デフォルトの名無しさん:04/11/13 22:15:25
if(x%2) x--; でも同じ意味になりますわな

840 :デフォルトの名無しさん:04/11/13 22:16:18
学校でも x & 0x1 くらいすると思うが

841 :デフォルトの名無しさん:04/11/13 22:17:15
なるほど。あとwhile文の継続条件がxというのはxが0になったら
継続しなくなるということですか?



842 :デフォルトの名無しさん:04/11/13 22:20:28
>>841
そうだ。C では整数型が論理型の役目もする。

843 :デフォルトの名無しさん:04/11/13 22:23:06
はぁ〜。勉強になりました。ありがとうございました。

844 :818:04/11/13 22:53:01
>>829-830
お疲れ様です。ありがとうございます。

一つ注文といっては何ですが、このプログラムを
#include <stdio.h>
int main(void)
の2行から始めるように書き換える事って出来ますか?

845 :デフォルトの名無しさん:04/11/13 23:04:05
出来るけどmainの中が長たらしくて
分かりにくくなるぞ。

846 :デフォルトの名無しさん:04/11/13 23:10:47
エレガントな宿題まだー?

847 :818:04/11/13 23:12:53
>>845
それでも良いのでお願いします。
これが今習ってるスタイルなので。

848 :デフォルトの名無しさん:04/11/14 00:18:23
>>838
きょうび学校でも分岐は減らす方針で教えた方がいいのでは?
x-=(x%2);
x-=(x&1);

849 :デフォルトの名無しさん:04/11/14 00:21:25
>>836
エレガントってほどでもないけど・・・
for(sum=0,i=0; i<x; sum+=i,i+=2){}

850 :デフォルトの名無しさん:04/11/14 00:31:16
だんだん読みにくくなっててってねぇか?

851 :デフォルトの名無しさん:04/11/14 00:35:44
x/=2;

852 :デフォルトの名無しさん:04/11/14 01:00:30
演算子が違うorz
x^=1;

853 :デフォルトの名無しさん:04/11/14 02:34:04
>>828
どうやってwhileを使うのか悩んじゃったよ。いい問題だね。

#include <stdio.h>
int main(int argc,char **argv){
  char *nargv[2];
  char narg[12];
  nargv[1]=narg;
  if(argc !=2 ){
    argc=0;
    do{
      printf("正の数字をいれろ\n");
      scanf("%d",&argc);
    }while(argc<=0);
    argc &= ~1;
    sprintf(narg,"%d",argc);
    printf("%d\n",main(2,nargv));
    exit(0);
  }
  argc = atoi(argv[1]);
  if(argc){
    sprintf(narg,"%d",argc-2);
    return argc + main(2,nargv);
  }
  return 0;
}

854 :829:04/11/14 02:48:34
>>847
それくらい自分で考えろよな。
2chでへたり込んだの初めて

855 :デフォルトの名無しさん:04/11/14 03:06:28
キーボードから入力した整数値を16進数で表示するにはどうしたらいいでしょうか?
(数字の制限有り、二桁までとか)

printfの%Xを使いますよね…ビットのシフト演算子を使用するなんて自分にはさっぱりです。

どなたかエレガントでユーモラスな解答をお願いしますprz

856 :847:04/11/14 04:04:14
>>854
了解
頑張ってみます(´・ω・`)

857 :デフォルトの名無しさん:04/11/14 04:15:17
>>855
キーボードから入力して画面に出力するプログラムのどこにシフト演算を使う必要があるんだ?
scanfとprintfだけで十分だろ。

858 :デフォルトの名無しさん:04/11/14 05:42:51
質問者が _| ̄|○ とか orz とか (´・ω・`) とか (;´Д`) とか使ってるのみると・・・
いや、なんでもない、忘れてくれ。

859 :デフォルトの名無しさん:04/11/14 07:01:28
>>828
その課題だしたやつはアフォ
なんで順番に足すことしか思い付かないんだ?
数列の級数なんか(ry

860 :デフォルトの名無しさん:04/11/14 08:01:47
>>857
問題をそのまま書き出すと

ある二つの数字(10進数)をキーボードから入力させ
16進数として表示する。(0〜15以外の入力はエラーとする)
ビットのシフト演算子を使用すること。

かな?俺もこの問題出されたんだけどわかりません。
シフト演算子を使わないなら大丈夫なんですけど使うとなるとさっぱり。
どなたか教えてください。

861 :デフォルトの名無しさん:04/11/14 08:40:45
>>860
#include <iostream>
int main(int argc, char argv)
{
int d[2];
std::cin >> d[1] >> d[0];
std::cout << (char)(('0' << d[1]) + d[1] + d[0]) << endl;
return 0;
}

862 :デフォルトの名無しさん:04/11/14 09:01:24
>>861
すみません、上記の>>860の問題はC言語なんです。
教えてくださったのはC++ですよね?良ければCのほうを教えていただけないでしょうか?

863 :デフォルトの名無しさん:04/11/14 09:38:37
>>862
といってもほとんど同じだが…。

#include <stdio.h>
int main(int argc, char argv)
{
char buf[16];
int d[2];
fgets(buf,16,stdin);
sscanf(buf, "%d %d",&d[1], &d[0]);
putchar(('0' << d[1]) + d[1] + d[0]);
return 0;
}

864 :デフォルトの名無しさん:04/11/14 09:40:32
> int main(int argc, char argv)
int main(int argc, char **argv)
だな。失礼。

865 :デフォルトの名無しさん:04/11/14 12:52:30
>>863
fgets(buf, 15, stdin);
とかじゃないとバッファが溢れちゃうんじゃないの?

866 :デフォルトの名無しさん:04/11/14 13:37:14
>>865
そこは 16 で問題なし
もっと勉強されたし

867 :857:04/11/14 13:45:04
>>860
おお・・・同志が居ましたか・・・あそこであの問題はわけがわかりませんよね

>>863,864さん
ありがとうございました。 納得いくまでソース見てみます。

868 :デフォルトの名無しさん:04/11/14 14:03:20
マジで聞きたいんですけど、どこで出された問題ですか?

869 :デフォルトの名無しさん:04/11/14 14:08:32
>>801
たぶんネタだと思うが King はもっと置ける
王□□□王□□□
□□王□□□王□
王□□□王□□□
□□王□□□王□
王□□□王□□□
□□王□□□王□
王□□□王□□□
□□王□□□王□


870 :デフォルトの名無しさん:04/11/14 14:11:02
マジックナンバーを置くなと
sizeof(buf)に汁!!

871 :デフォルトの名無しさん:04/11/14 14:33:56
>>866
ほんとだ、ごめんなさい。
精進しますです。

872 :801:04/11/14 14:46:22
>>869
実はネタだったんだが素直にこう置いても個数は同じ。
王□王□王□王□
□□□□□□□□
王□王□王□王□
□□□□□□□□
王□王□王□王□
□□□□□□□□
王□王□王□王□
□□□□□□□□
#すっかり忘れてたよ。

873 :デフォルトの名無しさん:04/11/14 15:04:00
宿題くれ。

874 :デフォルトの名無しさん:04/11/14 15:08:12
>>873
学校に入れ

875 :デフォルトの名無しさん:04/11/14 15:26:34
お願いします。

C言語で作成する問題で、
任意の時刻を○時○分を入力させ、▽分前の時刻を求めるプログラムを作る。
時間は24時間表記で表す。

time.hを使えばいいんでしょうか・・・


876 :デフォルトの名無しさん:04/11/14 15:32:24
>>876
時刻系関数を使うまでもないけど、使ういい訓練にはなるね。

877 :876:04/11/14 15:33:03
>>875だった。

878 :デフォルトの名無しさん:04/11/14 15:37:12
>>876さん
やっぱりそうなんでしょうか。
ヘッダファイル調べてみたんですが、いまいちどの関数が使えるのか
わからんかったです・・・
ここで使ったらいい関数とか教えていただけますか?


879 :デフォルトの名無しさん:04/11/14 15:48:20
struct time_t
time()
localtime()


880 :デフォルトの名無しさん:04/11/14 16:00:15
>> 879さん
ありがとうございます。
なんとかやってみます。


881 :デフォルトの名無しさん:04/11/14 16:19:31
○時○分を入力させて、○分前を求めるのに、time.hの関数をどこに使うの?

882 :デフォルトの名無しさん:04/11/14 16:27:15
>>881
入門書に書いてあるようなことを質問するな

883 :デフォルトの名無しさん:04/11/14 16:41:56
>>881
struct tmに入れた時刻をtime_tに変換し、結果を出力するのに「使える」。
勿論、使わなくても目的は果たせる。

884 :デフォルトの名無しさん:04/11/14 17:40:29
1から6までの数字がそれぞれ記入してある6枚のカードがある。これらを無造作に並べてできる6桁の数が4の倍数になるのは何通りか?計算方法を示せ。

885 :デフォルトの名無しさん:04/11/14 17:40:46
時刻の場合あんまり使う意味ないかものな。
ある日の、何日か前を取得するようなときには有効だけど。

886 :デフォルトの名無しさん:04/11/14 17:48:08
>>884
(1)最初の6桁の数をつくる。
(2)4でわった余りを求める。
(3)余りが0ならば、カウンタをインクリメント。
(4)次の6桁の数を作り(2)へ戻る。
(5)すべての並びでテストをしたら、終了。


887 :デフォルトの名無しさん:04/11/14 17:49:50
>>884
http://search.yahoo.co.jp/bin/query?p=6%b7%e5+%bf%f4+4%a4%ce%c7%dc%bf%f4&hc=0&hs=0

888 :884:04/11/14 17:59:04
答えは全部で192通りらしいのですが、計算方法が分かる方いますか?

889 :デフォルトの名無しさん:04/11/14 18:12:00
>>計算方法
下二桁が四の倍数になるのは
12, 16, 24, 32, 36, 44, 52, 56
の八通り
よって 4!*8

890 :デフォルトの名無しさん:04/11/14 18:16:33
44はありえないだろ。

891 :889:04/11/14 18:24:56
- 44
+ 64

ってか計算方法が知りたいのに何故ム板に…

892 :884:04/11/14 18:29:22
>>答えて下さった方
ありがとうございました。
4!って言うのが分からなかったんですが、
下2桁以外の100の位から10万の位の組み合わせだったんですね。
スレ違いすみませんです。

893 :デフォルトの名無しさん:04/11/14 19:04:45
リア厨が宿題解きたくてきたのかな。

894 :デフォルトの名無しさん:04/11/14 21:28:15
[宿題]で検索するとここが出てくる
まあ礼儀知らずじゃなかったから暖かく見守ってやろうよ


895 :デフォルトの名無しさん:04/11/15 01:04:28
[1] 授業単元:
[2] 問題文(含コード&リンク):

0から100までの総和、偶数和、奇数和を
for文1つのみ使用して同時に求めよ


for( ; ;){
[処理]
}
printf("総和=%d 偶数和=%d 奇数和=%d\n",0,0,0)


[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): CPad for Borland C++Compiler Ver2.31
 [3.3] 言語:C++
[4] 期限:2004年11月15日13:00まで
[5] その他の制限: 特に無し

急ですみません。
当方全くの初心者で特に説明も聞いてないまま作れと言われたものでどうすればさっぱりわかりません。
どうかよろしくお願いします

896 :デフォルトの名無しさん:04/11/15 01:07:37
for( ; ;)
break;
}
printf("総和=%d 偶数和=%d 奇数和=%d\n",5050, 2550, 2500)

897 :デフォルトの名無しさん:04/11/15 01:12:26
>>895
#include <stdio.h>
int main()
{
int sum = 0;
int even_sum = 0;
int odd_sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
if (i % 2 == 0) {
even_sum += i;
} else {
odd_sum += i;
}
}
printf("総和=%d 偶数和=%d 奇数和=%d\n", sum, even_sum, odd_sum);
return 0;
}

> 当方全くの初心者で特に説明も聞いてないまま作れと言われたものでどうすればさっぱりわかりません。

授業聞いたってな。

898 :デフォルトの名無しさん:04/11/15 01:13:14
>>895
#include <stdio.h>
int main()
{
int i,g,k,total;
g = 0;k = 0;total = 0;
for(i = 0; i <= 100; i++)
{if(i & 1) k += i;
else g += i;
total += i;
}
printf("総和=%d 偶数和=%d 奇数和=%d\n",total,g,k);
return 0;
}

899 :デフォルトの名無しさん:04/11/15 01:14:22
リロードすりゃよかった_| ̄|○

900 :デフォルトの名無しさん:04/11/15 01:42:23
>>897-898
ありがとうございます。

答えは出たのですが、以下のようなメッセージも表示されました。
どういう意味なんでしょうか?

>'-askclose'は内部コマンドまたは外部コマンド、
>操作可能なプログラムまたはバッチファイルとして認識されていまません。

901 :デフォルトの名無しさん:04/11/15 01:49:20
>>900
それはCPadが出してるメッセージだろ
CPadの掲示板で聞いてきたら?

902 :デフォルトの名無しさん:04/11/15 01:52:50
質問者レベル

1: ソースを打ち込み、コンパイルできる
2: 生成ファイルを実行し、動作確認できる。
3:: 自分でソースは作成できないが、内容は理解できる。
・・・


903 :デフォルトの名無しさん:04/11/15 07:30:18
実行するだけまし。
普通は実行もせずにコピペを提出する。

904 :デフォルトの名無しさん:04/11/15 10:49:44
const int MAX_TRANS = 15;
class CCheckbook
{
private:
Transaction * transactions[MAX_TRANS];
};
ここでtransactions[MAX_TRANS];をすべてNULLに初期化する方法ですが、
forループを使ってやるとどのようになりますか?

905 :デフォルトの名無しさん:04/11/15 11:19:57
>>904
for (int i=0; i<MAX_TRANS; i++)
  transactions[i] = 0;
じゃないの?

906 :デフォルトの名無しさん:04/11/15 12:52:41
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1100490460
掃き出し法のプログラムを書いていて、2次元配列になっているところを1次元配列
に直したいのですがどのように直せばいいのでしょうか?
よろしくお願いします。

907 :904:04/11/15 13:40:50
Deallocate memory for every dynamically allocated Transaction
whose pointer is stored in the transactions array.

上のtransactions[MAX_TRANS]についてですが、上記の英文通り解決できますでしょうか。
よろしくおねがいします。



908 :デフォルトの名無しさん:04/11/15 13:49:04
Deallocate って書いてるから delete しなきゃ駄目でしょ。

for (int i=0; i<MAX_TRANS; i++) {
  if( transactions[i] ) delete transactions[i];
  transactions[i] = 0;
}


909 :デフォルトの名無しさん:04/11/15 13:53:43
>>906
二次元配列が必要なら一次元配列ではことが足りないのでは?
それとも、単純にa[b][c]をa[b * d + c]にしたいってこと?

910 :デフォルトの名無しさん:04/11/15 14:29:25
区間[0,1)の乱数をn個発生させて、その区間を10分割し、区間ごとの乱数の個数を計算する。
#include <stdio.h>
#include <stdlib.h> /* for rand() srand() */
#include <time.h> /* for time() */
int main(void)
{
int i, n, c[10], j;
double x;
scanf("%d",&n);
srand((unsigned)time(NULL));
for(j=0; j<=9; j++)
     {
c[j] = 0;
for (i=1; i<=n; i++)
{
x = (rand() / (RAND_MAX+1.0));
if(j * (0.1) < x < (j + 1) * 0.1)
c[j]++ ;
}
printf("j=%d",j);
printf(":kosuu=%d\n",c[j]);
}
return 0;
}
と作ってみたんですどこれじゃ上手くいきません…orzどう直せばいいのか教えてもらいたいです。

911 :デフォルトの名無しさん:04/11/15 14:57:57
>>910
二重ループの最内で乱数を更新してるから、そりゃ正確に動かん

あと
j * 0.1 < x < (j + 1) * 0.1 を表現したいなら
(j * 0. 1 < x) & (x < (j + 1) * 0.1)とすべき


912 :デフォルトの名無しさん:04/11/15 15:01:11
>>911
(j * 0. 1 < x) && (x < (j + 1) * 0.1)

913 :910:04/11/15 15:58:27
>>911-912
ありがとうございます。
おかげでできました。

914 :デフォルトの名無しさん:04/11/15 16:53:04
[1] 授業単元:
[2] 問題文(含コード&リンク):
    データ列 ak (k=1,2,3,...10)の中間値を求めるプログラムを作成
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2004年11月16日14:00
よろしくお願いします。

915 :906:04/11/15 18:55:02
>>909
後者の方です。

916 :デフォルトの名無しさん:04/11/15 19:13:06
>>914
授業中に何かアルゴリズムの話はあった?(クイックソートとか)

917 :デフォルトの名無しさん:04/11/15 19:39:03
問 e^-x+x/5=1 (x>0)の解が4.965・・・であることを数値計算法(ニュートン法など)によりプログラムを作り示せ。(CまたはC++環境で)


放射エネルギーがどうのこうのいってました。量子物理の授業です。
プログラムなんか習ってませんよ〜。

よろしくお願いします。

918 :デフォルトの名無しさん:04/11/15 20:08:18
>>917
その程度なら2分法で十分かと思ったのでアルゴリズム事典のを引用・改変
ちなみに出てくる解は
x = 4.965114231744277

#include <stdio.h>
#include <math.h>

double f(double x) { return pow(exp((double)1), -x) + x/5 - 1; }
double bisect(double a, double b)
{
double c, fa, fb, fc;
fa = f(a); fb = f(b);
if (fa == fb) return 0;

while (1) {
c = (a + b) / 2;
if (c <= a || b <= c) break;
fc = f(c); if (fc == 0) return c;
if ((fc > 0) == (fa > 0)){ a = c; fa = fc; }
else{ b = c; fb = fc; }
}
return c;
}

int main()
{
printf("x = %.16g\n", bisect(0, 10));
return 0;
}

919 :デフォルトの名無しさん:04/11/15 20:42:34
>>916
多分やってないと思います。

920 :デフォルトの名無しさん:04/11/15 20:56:19
>>914
データ列ってなに?
中間値ってなに?


921 :デフォルトの名無しさん:04/11/15 21:08:05
連結な無向グラフがオイラー回路を持っていたときにその軌道を実際に見つけ出すプログラムを作れ。
っていう問題なんですけどわかりませんか?
main()
{ (中略)
for (i = 1; i<=N; i++){
printf("\n隣接点リスト%d :", i);
for (p = a[i].start; p != a[i].end; p = p->next)
printf(" -> %d", p->num);
};
printf("\n");
if (i%2==0){
printf("オイラー回路です\n");
ここのプログラムを考えて下さい
}
return 0;
}

922 :917:04/11/15 21:31:10
>>918
ありがとうございます。
Borland C/C++コンパイラをダウンロードしてコンパイルしてみましたが、

警告 W8004 L16:'fb'に代入した値は使われていない(関数 bisect) 

というエラーがでてコンパイルできません。
うう〜。


923 :914:04/11/15 21:35:06
>>920
具体的な例でいうと、
10人のテストの点数が、
68、70、50、88、96、77、91、54、74、81、だったときに
点数順にデータを並べて5番目と6番目になるものを探すプログラムです。

924 :デフォルトの名無しさん:04/11/15 21:36:42
>>922
エラーと警告の違いの区別くらいつけろ

925 :デフォルトの名無しさん:04/11/15 21:40:49
>>921
それ、オイラー回路の判定部分がおかしいんちゃうかな。

926 :918:04/11/15 21:44:13
>>922
ほんとだ… 原典でも使ってないな
警告だし大したミスじゃないから
コンパイル出来てると思うが、嫌なら
b=c; fb=fc;
   ~~~~~~
   ここを消す。

927 :921:04/11/15 21:47:56
>>925さん
そのあたりも含めて訂正お願いできませんか?

928 :デフォルトの名無しさん:04/11/15 21:50:50
プログラム初心者です。あんまり難しい言葉を使わずに解答して
頂きたいです。

モノクロスケールの画像ファイル( JPEG / BMP )を数値化したい
(※.(x,y)座標値で)のですが、プログラミングでファイル入力
する時にどのようなformatで取り込めばファイルの座標と値を取り
こめるんですか? できればCで組みたいんですけど。
初心者には無理・難題?

929 :デフォルトの名無しさん:04/11/15 21:57:40
>>914
#include <stdio.h>
void swap(int* a, int* b)
{
int tmp = *a; *a = *b; *b = tmp;
}
int partition(int* A, int p, int r)
{
int x = A[p], i = p - 1, j = r + 1;
for (;;) {
do { j--; } while (A[j] < x);
do { i++; } while (A[i] > x);
if (i < j) { swap(&A[i], &A[j]); }
else { return j; }
}
}
int select_Ith(int* A, int p, int r, int I)
{
int q, k;
if (p == r) { return A[p]; }
q = partition(A, p, r);
k = q - p + 1;
if (I <= k) { return select_Ith(A, p, q, I); }
else { return select_Ith(A, q + 1, r, I - k); }
}
int main(void)
{
int n = 10, A[] = { 68, 70, 50, 88, 96, 77, 91, 54, 74, 81 };
printf("%d %d\n", select_Ith(A, 0, n - 1, 5), select_Ith(A, 0, n - 1, 6));
return 0;
}


930 :デフォルトの名無しさん:04/11/15 22:02:33
>>928
おまえには無理。

931 :デフォルトの名無しさん:04/11/15 22:03:39
ニュートン法でf(x)=cosx-x^2=0を求めるプログラムがわかりません。
初期値xは1、収束判定値eは1e-5で答えは1回計算するごとに出力できるように
したいんです。どなたか教えていただけないでしょうか。お願いします。

932 :デフォルトの名無しさん:04/11/15 22:04:28
>>921
スタック使ってグラフの経路を全探索してみれば、
↓こんな感じ

struct 経路スタック{
int 始点番号;
int 終点番号;
struct 経路スタック *prep;
}

void 一歩進む(int 節点番号){

if(すべての経路を使った){
printf( "一筆書き完成!:" );
printf( スタックの内容 );
return;
}

if(行き先がない){
printf( "一筆書き失敗!:" );
printf( スタックの内容 );
return;
}

for each 終点番号 connect to 始点番号
if( 経路(始点-終点) is 未使用 ){
経路(始点-終点)をスタックにつむ;
一歩進む(終点);
経路(始点-終点)をスタックから出す;
}
}
}

933 :928:04/11/15 22:04:57
>>930
エレガントだ…。さすがですね、ここの人たちは。

934 :デフォルトの名無しさん:04/11/15 22:08:08
#include <stdio.h>
#include <stdlib.h>
static int numcmp(const void *d1, const void *d2)
{
return *(int *)d1 - *(int *)d2;
}
int main()
{
int ak[] = {68, 70, 50, 88, 96, 77, 91, 54, 74, 81};
int num_ak = sizeof(ak) / sizeof(int);
qsort(ak, num_ak, sizeof(int), numcmp);
if (num_ak % 2 == 0) {
printf("median: %d, %d\n", ak[num_ak / 2 - 1], ak[num_ak / 2]);
} else {
printf("median: %d\n", ak[num_ak / 2]);
}
return 0;
}

935 :デフォルトの名無しさん:04/11/15 22:08:45
934 は 914 への解答。


936 :914:04/11/15 22:10:14
>>929
ありがとうございます。
申し訳ないのですが、下の状態でa1~a10まで
任意の数値を入力して中間値を求める方法を教えていただきたいです。
#include <stdio.h>
#define K 10
    main(void)
   {
       int score[K];
int k;
 for( k=1 ; k<=K ; k++){
 printf("a%d = ", k );
 scanf("%d", &score[k] );
    }
よろしくお願いします。


937 :デフォルトの名無しさん:04/11/15 22:15:58
>>928
×

938 :914:04/11/15 22:17:58
質問の書き方も、プログラムの書き方も下手糞ですみません。
#include <stdio.h>
#define K 10
main(void){
int score[K];
int k;
for( k=1 ; k<=K ; k++){
printf("a%d = ", k );
scanf("%d", &score[k] );
}

これにつながるように中間値を求めるプログラムを作っていただきたいです。
よろしくお願いします


939 :デフォルトの名無しさん:04/11/15 22:20:30
こういう宿題をやってあげてる人はどういう気持ちでやってるのか禿しく知りたい。
皮肉とかじゃなく、ただ純粋に。

940 :デフォルトの名無しさん:04/11/15 22:23:34
お前ら市ね。


941 :デフォルトの名無しさん:04/11/15 22:24:00
>>939
愛 にゃんにゃん

942 :デフォルトの名無しさん:04/11/15 22:24:44
>>939
最近Cのプログラムを書いてないから、ボケ防止に。

943 :デフォルトの名無しさん:04/11/15 22:24:49
>>938
forのカウンタには i を使っていくのが一般的。

>>939
自分の勉強・復習に。

944 :デフォルトの名無しさん:04/11/15 22:26:04
スレタイにあるように
暇つぶし

945 :デフォルトの名無しさん:04/11/15 22:26:57
>>928 == >>933
ここは宿題スレだからな。

946 :914:04/11/15 22:27:17
>>943
そうなんですか。ご教授ありがとうございます。

947 :デフォルトの名無しさん:04/11/15 22:27:24
愛だよー 愛がないとダメなんだよー にゃんにゃん

948 :デフォルトの名無しさん:04/11/15 22:28:02
>>942
禿しく同意

949 :デフォルトの名無しさん:04/11/15 22:29:37
ここは宿題をしてもらうスレじゃなくて
解答者が宿題をさせて頂くスレ


950 :デフォルトの名無しさん:04/11/15 22:30:58
次の宿題まだー?ちんちん

951 :デフォルトの名無しさん:04/11/15 22:31:45
>>950
次スレお願いね。

952 :デフォルトの名無しさん:04/11/15 22:32:12
偽造IPパケットを作成するプログラムを教えろカス!




953 :デフォルトの名無しさん:04/11/15 22:36:15
次スレはどうなるんだろう?

954 :デフォルトの名無しさん:04/11/15 22:38:19
>>952
hackerslab lv10の解答でも見てろカス!

955 :デフォルトの名無しさん:04/11/15 22:39:29
>>947
愛なんてないよー。
愛があるなら、宿題を出された本人にやらせるよー。
教えるにしても誘導程度に留める。

>>949
そんな感じですな。

956 :デフォルトの名無しさん:04/11/15 23:15:14
[1] 授業単元:
[2] 問題文(含コード&リンク):
    データ列 ak (k=1,2,3,...10)の中間値を求めるプログラムを作成
#include <stdio.h>
#define K 10
main(void){
int score[K];
int i;
for( i=1 ; i<=K ; i++){
printf("a%d = ", i );
scanf("%d", &score[i] );
}

これにつながるように中間値を求めるプログラムを作っていただきたいです。
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2004年11月16日14:00
よろしくお願いします

957 :デフォルトの名無しさん:04/11/15 23:18:54
>>931
関数f(x)を考え、関数の適当な点x[0]を定める。
これをニュートン法における初期値とする。
関数f(x)の点x[0]における接線の方程式は
y-f(x[0])=f'(x[0])(x-x[0])

この接線がx軸と交わるときの座標を(x[1],0)とすると
0-f(x[0])=f'(x[0])(x[1]-x[0])
f(x[0])/f'(x[0])=x[1]-x[0]
x[1]=x[0]-f(x[0])/f'(x[0])
同様にして、x[2],x[3],...というふうに繰り返すと
x[n+1]=x[n]-f(x[n])/f'(x[n])
という漸化式が得られる。この漸化式において
|x[n+1]-x[n]|<E
を満たすまで計算を繰り返すとき、Eを収束判定値という。

f(x)=cos(x)-x^2の場合
f'(x)=-sin(x)-2xなので
x[n+1]=x[n]-(cos(x[n])-x[n]^2)/(-sin(x[n])-2x[n])
という漸化式を用いる。(次へ)

958 :デフォルトの名無しさん:04/11/15 23:19:20
…もしかして中央値のことだろうか

959 :デフォルトの名無しさん:04/11/15 23:21:09
957のつづき。実際のソース
#include <stdio.h>
#include <math.h>
int main()
{
const double eps = 1.0e-5;
double x0 = 1.0, x1 = 0.0;
int i;
for(i = 1;; i++)
{
/* 漸化式の計算 */
x1 = x0 - (cos(x0) - x0 * x0) / (-sin(x0) - 2 * x0);
printf("x[%d]=%.10lf\n", i, x1);
printf("|x1-x0|=%.10lf\n", fabs(x1 - x0));
if(fabs(x1 - x0) < eps) break; /* 収束判定 */
x0 = x1; /* x0の更新 */
}
printf("\nx=%.10lf\n", x1); /* 結果の表示 */
return 0;
}
ニュートン法については厳密に書いてないので詳しくはググって

960 :デフォルトの名無しさん:04/11/15 23:24:17
>>958
間違ってました。中央値です。
ごめんなさい。

961 :957:04/11/15 23:26:19
途中式の計算ミスった… orz
f(x[0])/f'(x[0])=x[1]-x[0]
じゃなくて
-f(x[0])/f'(x[0])=x[1]-x[0]

962 :デフォルトの名無しさん:04/11/15 23:29:26
#include <stdio.h>
#define K 10
int main(void)
{
int score[K];
int i, j;
int temp;
for(i = 0; i < K ; i++){
printf("a%d = ", i );
scanf("%d", &score[i] );
}
for (i = 0; i < K - 1; i++){
for (j = i + 1; j < K; j++){
if (score[i] > score[j]){
temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
if (K % 2){
printf("中間値 %d %d\n", score[(K - 1)/ 2]);
}
else {
printf("中間値 %d %d\n", score[K / 2 - 1], score[K / 2]);
}
return 0;
}

963 :デフォルトの名無しさん:04/11/15 23:36:03
間違ってもダディクールなんかにはなりませんように。

964 :デフォルトの名無しさん:04/11/15 23:38:14
>>931
#include <stdio.h>
#include <math.h>
#define INITIAL_X (100.0)
#define E (1.0e-5)
#define LOOP_MAX 10000
double f(double x) { return cos(x) - x*x; }
double dfdx(double x){ return -sin(x) - 2.0 * x;}

int main(int argc, char **argv)
{
double x=INITIAL_X;
double a;
double y;
double tmp;
int i;
for(i=0;i<LOOP_MAX;i++){
printf("%5d: X = %10g\n",i,x);
y = f(x);
tmp = fabs(y);
if(tmp<=E)break;
a = dfdx(x);
tmp = fabs(a);
if(fabs(a) <=E)exit(1);
x -= y / a;
}
printf("\nResult X = %10g\n",x);
return 0;
}

965 :931:04/11/15 23:40:34
>>959
ありがとう。ググってみます。

966 :デフォルトの名無しさん:04/11/15 23:48:32
>>962
ありがとうございました


967 :デフォルトの名無しさん:04/11/15 23:50:37
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1100529847&res=1

[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ(バージョン): wedit
 [3.3] 言語:C
[4] 期限:11月17日まで
[5] その他の制限: なし

考えてみたんですが解りませんでした…
最後のforの中にforを入れ子にするのではないか?と思ったんですが
上手くいきません



968 :デフォルトの名無しさん:04/11/15 23:53:17
>>928
画像のフォーマットの変換が可能ならば、xbmフォーマットにしちゃえば
テキスト形式だから簡単。画像ごとに再コンパイル可能ならば、
さらに簡単。




969 :デフォルトの名無しさん:04/11/16 00:13:59
>>967
次スレに誤爆してしまった。。。ほい。
#include <stdio.h>
int main(void)
{
int i,j,dat,histo[11];

for (i=0;i<=10;i++)
histo[i]=0;

printf("input point\n");
while (scanf("%d",&dat)!=EOF)
histo[dat/10]++;

for(i=0;i<=10;i++) {
printf("%3d :%3d ",i*10,histo[i]);
for(j=0;j<histo[i];j++)
putchar('*');
putchar('\n');
}
return 0;
}

/*あるいは、
while(histo[i]-- > 0) putchar('*');
とか。*/



970 :デフォルトの名無しさん:04/11/16 00:14:41
プログラマー軍団がC/C++の宿題を解決します 34代目
http://pc5.2ch.net/test/read.cgi/tech/1100530682/


971 :デフォルトの名無しさん:04/11/16 00:17:41
while(){
 ひたすら単純化
}

単純化の手法
1.次数が2のノードAは消去する。
  AがノードB,Cに接続していたとして、B,Cにお互いへのパスを追加する。
2.次数が2のノードがなくなったら、始点と終点が同一であり、
  一度通ったノードは二度と通らないループを見つけ、そのループを削除する。
  始点のノードには自分に帰ってくるパスを追加する。

972 :967:04/11/16 00:18:19
>>969
ありがとうございます。
入れ子のforの書き方がまずかったようです

973 :デフォルトの名無しさん:04/11/16 00:18:50
>>928
宿題じゃないだろうから教えてやんない。
>968も一つの解だけどね。
#でも私ならxpm。

>>915
>909がほぼ回答。
20x20のデータなら、a[3][15]をa[3 * 20 + 15]とでもすればいい。
この場合、メモリの確保もmalloc(sizeof(double) * 20 * 20)となる。

974 :デフォルトの名無しさん:04/11/16 01:17:53
>>929
おー、かっこいい、O(N)中間値ね。
アルゴリズムは考えたけど実装はしてなかった。
QuickSortからてきとーに改竄すればいいのかな。

975 :デフォルトの名無しさん:04/11/16 01:25:25
スレ違いかもしれないんですけど
C言語からフローチャートを生成するソフトが
あると聞いたのですが誰かご存知の方いらっしゃいませんか?

976 :デフォルトの名無しさん:04/11/16 01:28:24
>>975
あっても使いものにならない予感

977 :デフォルトの名無しさん:04/11/16 01:38:46
>>976
それはどういう事ですか?

978 :デフォルトの名無しさん:04/11/16 01:41:22
もうそろそろタイトルからC++はずしたら?

979 :デフォルトの名無しさん:04/11/16 01:41:28
例えば
347863000050097003096
347863000100093004095
347863000150092004098
347863000200088003094
347863000250092003096
な感じの数字の羅列から
一桁目と二桁目の数字だけを取り出して出力するのってどうするの?

980 :デフォルトの名無しさん:04/11/16 01:42:34
976とはたぶん全然別の意味だけど
手続き型のプログラムって局所的にはシーケンスだけど
大域的にはツリーやグラフじゃん?
フローチャートってあんま役に立たなくね?

981 :デフォルトの名無しさん:04/11/16 01:43:59
>>979
一桁目と二桁目ってのは上から数えんのか?下から数えんのか?
どっちにしてもやることはあまり変わらんが。

982 :デフォルトの名無しさん:04/11/16 01:45:12
>>978
そんなことしたらSTLとか使えなくなるやん。困る困る…

983 :デフォルトの名無しさん:04/11/16 01:51:33
>>981
上からです。

984 :デフォルトの名無しさん:04/11/16 01:57:31
fgetsとかで一行読んで文字列の[0]と[1]をprintfで%c使って出力。

985 :デフォルトの名無しさん:04/11/16 01:57:51
>>980
ツリーやグラフは使わないプログラムで
フローチャートにしなければならない宿題なんですよ。
ご存知ないですか?

986 :デフォルトの名無しさん:04/11/16 02:00:58
>>979
1行ごと文字列に入れて、strncpyでいいんじゃない

987 :デフォルトの名無しさん:04/11/16 02:02:06
http://www.vector.co.jp/soft/win95/prog/se105857.html?y
4年も前のソフトだが、ぐぐったら一発で出てきたぞ。

988 :デフォルトの名無しさん:04/11/16 02:03:48
>>985
単語の意味で激しくすれ違った予感。
まぁいいか。

989 :デフォルトの名無しさん:04/11/16 02:08:52
>>986
やってみます。


990 :1000:04/11/16 02:10:42
まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )


991 :hage:04/11/16 02:12:15
hage

992 :デフォルトの名無しさん:04/11/16 02:12:52
>>988
知識がなくてすみません。
お手数かけましたm(_ _)m

993 :デフォルトの名無しさん:04/11/16 02:13:54
プ板で1000取りかよ、おめでてぇな

994 :デフォルトの名無しさん:04/11/16 02:15:36
1000取ると何かいいことがあるの?
まじれすきぼん

995 :デフォルトの名無しさん:04/11/16 02:16:34
このスレの住人はいつも1024を取りたいと夢に見てる。
だがその夢が叶うことは決してないのだよ。

996 :デフォルトの名無しさん:04/11/16 02:17:06
幸せとは人それぞれ。

997 :デフォルトの名無しさん:04/11/16 02:18:55
(・w・)

998 :デフォルトの名無しさん:04/11/16 02:19:52
獲りたい奴が獲れ。それが人生。

999 :デフォルトの名無しさん:04/11/16 02:19:55
hello world

1000 :デフォルトの名無しさん:04/11/16 02:20:15
ん?

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

255 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)