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

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

ようかんマンがC/C++の宿題を片付けて見せます 28棹

1 :ようかんマン ◆nup627Y0Gs :04/07/16 19:47
    .__   けっこう失敗も多いようかんマンです
    |・∀・| <NHK教育へ出演目指してC/C++の宿題片付けます
    ト旦ノ.|
 NHK `ゝゝ´スタジオ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10

2 :デフォルトの名無しさん:04/07/16 19:48
あびょびょーん

3 :ようかんマン ◆nup627Y0Gs :04/07/16 19:48
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
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html


4 :デフォルトの名無しさん:04/07/16 19:48
キタ━━━━━━(゚∀゚)━━━━━━!!!!

5 :ようかんマン ◆nup627Y0Gs :04/07/16 19:49
 .__
ヽ|・∀・|ノ ようかんマン#羊羹饅々で 誰でも 
 |__|  ようかんマン ◆nup627Y0Gs になれるよ
  | |

ようかんマン保管庫
http://page.freett.com/schwarzewald/youkan/


6 :デフォルトの名無しさん:04/07/16 19:50
なんのひねりもないよ・・・_| ̄|○

7 :ようかんマン ◆nup627Y0Gs :04/07/16 19:52
ようかんマンかよ、個性もクソもないな

8 :デフォルトの名無しさん:04/07/16 19:52
   |おでん 【▽御田】
   |〔「でん」は「田楽(でんがく)」からという〕
   |豆腐を串(くし)にさして味噌をつけ、火であぶったもの。
   |焼き田楽。
   |また、蒟蒻・里芋などをゆで、
   |串にさして味噌をつけたもの。[季]冬。
   └―y――――――――
   ___        ∧_∧   ヽ△
  l〜・Дl〜    (Д`   )、   ●>
  |___|     /      ヽ  □
   ノ   >     ヽ_つ旦と_ノ  < ヽ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
 . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>1乙。おでんマンも応援だ。

9 :デフォルトの名無しさん:04/07/16 19:53
            ,、-――ー-- 、___,            (ノ
             /   __,ノノノ、  く
          /   / 、_,  、_从 | 乙       ゚_    ,、-
          //l/ / ィ;;;;r  、__!| l|ノ           l」 ,ィ'´
         イ | l|イ! ゙ー' , l;;;j川l       _,、- '"´|   /:::|
         !l川 ノ| " r┐ "川 _,、- ''"´      l /:::::::!
            ノVl|ハト、_ ー'  ノノノ|         |/::::::::::|
                ノノ三彡'´⌒ヽ |         l:::::::::::::|
           /  イ __    | |          |:::::::::::::|_,、-''"´
           _く○___,ノr-‐ 、`ヽ_,ノ |       _,、-‐''"!:::::::::::/
       r'´ /     ( rー¬、_,ノ|  |_,、- ''"´    。:::::::::/
      ⊂| /     `'l    \|   \       + :::::::::/
       У /      ヽ、   \    \    ●/::::::::/       ,ィ >>1
       / /        `'ー--<    \  "∧:::::/ 、____,ノ !
        〈 /     !       \ `ヽ    \/  V  ヽ、    /
       >!      |          ヽ、!     o ゛ / ,   `'ー‐'´
      ゙〜ヾ、   |          //        / ハ      ,、イ
        |`゙ヾ、_,ノ、______ノ/       (__)_,ノ  ヽ、_,、ィ'´ | |
        |   /゙〜〜〜ハ'ーヘ イ´                | |_r、| |
        | "" /     |    |               ヽ、_,ノ| |


10 :デフォルトの名無しさん:04/07/16 20:04
次スレは
C/C++の宿題( ゚v^ ) オイチイ

11 :デフォルトの名無しさん:04/07/16 20:07
乙。次スレは亀甲男でよろしく。

12 :デフォルトの名無しさん:04/07/16 20:43
同じネタを二回使うなよ ぼけ

13 :ぽろじょあ ◆niBmDfC40k :04/07/16 21:41
( .3.) ヌェー そこでボクの出番だYO!

14 :ようかんマン ◆nup627Y0Gs :04/07/16 21:42
よーし。ばっちこい。

15 :デフォルトの名無しさん:04/07/16 21:44
宿題コネー

16 :デフォルトの名無しさん:04/07/16 21:50
漏れが10年以内に彼女が出来るかどうかを判定するプログラムを作りなさい

17 :scanf:04/07/16 21:56
助けて〜
課題
■何個(最大20)かの実数値をscanf()で配列に読み、読んだデータを昇順(添え字が大きく
 なるにつれて値も大きくなるように)に並べ替えその結果を表示するプログラムを作る。
・並べ替えの手法はバブルソートと呼ばれる手法を用いる。



18 :デフォルトの名無しさん:04/07/16 21:57
>>1
ようかんマンでもなんでもいいが、棹はやめろ。代目にしろ。

19 :デフォルトの名無しさん:04/07/16 22:02
int f(void)
{
return rand() / (RAND_MAX + 1);
}

int main(void)
{
srand(time(0));
if (f()) puts("できる");
else puts("できない");
return 0;
}

20 :デフォルトの名無しさん:04/07/16 22:10
_| ̄|○

21 :デフォルトの名無しさん:04/07/16 22:15
2次元座標で、全ての点を含む面積最小の長方形を求めるアルゴリズムを教えてください。


22 :デフォルトの名無しさん:04/07/16 22:28
>>17
#include <stdio.h>
#define swap(type, x, y) do{type t; t = x; x = y; y = t;}while (0)
void bubble(double *s,int n){
int i,j;
for (j = n; j > 0; j--)
for (i = 1; i < j; i++)
if (s[i - 1] > s[i]) swap(double, s[i - 1], s[i]);
}
int main(void)
{
double s[5], i = 0, k;
while(scanf("%lf", &s[i]) != EOF && (++i < 20));
bubble(s, i);
for (k = 0 ; k < i; k++) printf("%f\n", s[k]);
return 0;
}

23 :デフォルトの名無しさん:04/07/16 22:33
s[5]→s[20]
に訂正・・・

24 :ようかんマン ◆nup627Y0Gs :04/07/16 22:35
>>21
X1 = 全ての点で一番小さいX座標
X2 = 全ての点で一番大きいX座標
Y1 = 全ての点で一番小さいY座標
Y2 = 全ての点で一番大きいY座標

長方形の面積 = (X2 - X1) * (Y2 - Y1)

でよろしい?

25 :ようかんマン ◆nup627Y0Gs :04/07/16 22:38
ああ、局座標と直交するとは限らないのか・・・

26 :デフォルトの名無しさん:04/07/16 23:09
>ああ、局座標と直交するとは限らないのか・・・
はい・・・

何か参考になるページや本とかを聞くのはスレ違い?ようかんマン。

27 :デフォルトの名無しさん:04/07/16 23:13
 |「これは羊羹ではないか」
 | 驚いている。小豆の餡を砂糖汁でこね、釜で蒸したものである。
 | 日本の漢音ならヨウコウだが、明音にちかく発音していることに
 |よっても、対明貿易でつたわってきたものであることがわかる。明
 |ではふつう、羊肝餅(ようかんべい)と書き、長江下流付近では、
 |九月九日の重陽の節句のころにつくる。民家でもつくり、寺でもつ
 |くる。日本へは、かの地の禅寺から日本の禅寺へ移ってきたので
 |あろう。
 | いずれにしても、羊羹など、よほど有力な禅寺か、将軍、あるい
 |は貿易に関係のある有徳人(金持)しか、口にしない。それも常時
 |ではない。
 |「京は、たいそうなものだな」
 | 駿河の王ともいうべき今川義忠が、羊羹のひときれでおどろいて
 |しまった。
 └―――y――――――――――――――――――――――――
   ___      ∧_∧
  l〜・Дl〜.   (´Д` )、 <デ、アルカ
  |___|     /      ヽ
   ノ   >     ヽ_つ旦と_ノ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
 . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

28 :デフォルトの名無しさん:04/07/16 23:27
>>21
本当にそれ宿題か…?
課題なら全文載せてくれ。

29 :デフォルトの名無しさん:04/07/16 23:29
>>26
>>24を、座標系?を回転させながら...
いやなんでもない。

30 :デフォルトの名無しさん:04/07/16 23:34
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場


31 :デフォルトの名無しさん:04/07/16 23:37
初代スレがキャラスレでもなんでもないのに、
なぜそんなにキャラクターに拘るのら?

32 :デフォルトの名無しさん:04/07/16 23:47
>>21
まず数学板に行って考え方を聞いて来い。
このスレは数学の問題をといたりするスレではない。
式が分かったらまた来てくれ。

33 :デフォルトの名無しさん:04/07/16 23:49
おお!低脳PGらしいたらい回し法だ。

34 :デフォルトの名無しさん:04/07/16 23:54
PGなら>>29の方法でやっちゃうかな

35 :デフォルトの名無しさん:04/07/17 00:42
この問題をお願いします。ソースの…部にプログラムを入力してください。

複素数計算
ω=0.5+0.866025403784438647iとする。cadd(),csub(),cmul(),cdiv()を
使い,1/ω,ω**2,1+ω+ω**2をそれぞれ計算し,print_complex()を使い表示せ
よ。

#include <stdio.h>
typedef struct complex {
double real;
double imag;
} complexd;

void print_complex( complexd z )
{

}
void cadd( complexd* c, complexd a, complexd b )
{

}

void cdiv( complexd* c, complexd a, complexd b)
{
 …
}

void main()
{
complexd omega = {-0.5, 0.866025403784438647 };

}

36 :デフォルトの名無しさん:04/07/17 00:43
>>21
アルゴリズムは思いついたが説明が面倒だ。
ソース書いてみるよ…
ただ、間違ってると思った時点でやめるわ。

37 :デフォルトの名無しさん:04/07/17 00:50
>>35
void print_complex( complexd z )
{
(´・ω・`);
}
void cadd( complexd* c, complexd a, complexd b )
{
(`・ω・´);
}

void cdiv( complexd* c, complexd a, complexd b)
{
(・ω・` );
}

void main()
{
complexd omega = {-0.5, 0.866025403784438647 };
(・ω・);
}

38 :デフォルトの名無しさん:04/07/17 00:55
>>37
          ,,―‐.                  r-、    _,--,、   .,,,,i''''l,,,,, ,lllllli,  ,,,,,,,,,,,llllllll,,,,,,,,,,, .illllllllllllllllllllllg
     ,―-、 .| ./''i、│  r-,,,,,,,,,,,,,,,,,,,,,,,,―ー.    ゙l, `"゙゙゙゙゙ ̄^   \  l|   ll,l゜ .゙l, l|       l| l| ____l|
    /   \ ヽ,゙'゙_,/   .゙l、         `i、   \ _,,―ー'''/  .,r'"  ll,,,、.,,,,゙’ ,ll, .'゙l, ゙llllllllll′lllllllllll゙ .l| ゙゙゙゙゙゙゙゙゙゙゙゙li゜
.,,,、.,,i´ .,/^'i、 `'i、``     `--‐'''''''''''''''"'''''''''''゙     `゛   .丿  .,/    l″ `` l゙ll″,l"ll illll. lllli、 l|  ll illllllllllllllllll
{ ""  ,/`  ヽ、 `'i、                        丿  .,/`    ll llト.li,、  .,ll’ ll,,,,,,,,, .,,,,,,,,,l|  ll .,,,,,,,,,,,,,,,,ll
.ヽ、 丿    \  .\                      ,/′ 、ヽ,,、   .l ,,, llllli! ill,,, .ll゙゙゙゙゙゙°.゙゙゙゙゙゙゙ll .ll'゙ .゙゙゙゙゙゙゙゙゙゙゙゙゙゙l! 
  ゙'ー'"      ゙'i、  ‘i、.r-、      __,,,,,,,,--、     / .,/\ `'-,、 l| .゚゙` ll    ll illlllllllll" .lllll .lll l,,, .,,,、 ,,,,, .,,,l
           ヽ  .]゙l `゙゙゙゙"゙゙゙゙ ̄ ̄     `'i、  ,/ .,,/   .ヽ  \ ,llll! .'lll!l,,,, ,,,,,l|.!,,,,,,,,,,, .,,,,,、 ,l!`'l .l゙゙l、.゙ll゙ ゙ll`
            ゙ヽ_/ .ヽ_.,,,,--―――――ー-ノ_,/゙,,/′     ゙l   ,".l    l .l| l  .l       .l ill" '゙゙゙゙,,、 .lll,,、
                 `             ゙‐''"`        ゙'ー'" .゙llli lll┛l| l  .゙゙゙゙ll゙゙°l゙゙゙┿゙ .ll    l゙ll,,  .,l′
                                              lla,l  !eill    .'laell゙    .ll*llll゙゙゙゙゙ ゙゙゙lllll

39 :デフォルトの名無しさん:04/07/17 01:06
どなたかお願いいたします
手も足も出ない状態です…


各自が読み込んだ文字をファイルに格納するプログラムを作成せよ。
ただし、低レベルのシステムコールを使うこと

40 :デフォルトの名無しさん:04/07/17 01:40
のどから手が出てるじゃないか

41 :デフォルトの名無しさん:04/07/17 01:41
>>39
K&Rを読もう

42 :ぽろじょあ ◆niBmDfC40k :04/07/17 01:42
( .3.) マルェー ボクなんか出る手も足も無いZO

43 :デフォルトの名無しさん:04/07/17 01:46
>>40
>>42
ワロタ

44 :デフォルトの名無しさん:04/07/17 01:51
>>26
ゲームプログラミングのための3Dグラフィックス数学182ページからの
「境界ボリュームの構築」が多分ずばりそのものだ。
漏れは低脳PGなので、書いてあることよくわからんかったが、
そんな課題の出る学校の生徒さんなら、多分すぐとけるのでしょう。

式の解説してくださったら、Cへの翻訳はやるますよー。

45 :デフォルトの名無しさん:04/07/17 02:04
>>35
簡単すぎて面白くない。
void print_complex( complexd z )
{printf("%lf%+lfi\n", z.real, z.imag);}
void cadd( complexd* c, complexd a, complexd b )
{c->real = a.real + b.real;c->imag = a.imag + b.imag;}
void csub( complexd* c, complexd a, complexd b )
{/* 今回は使う所無し */c->real = a.real - b.real;c->imag = a.imag - b.imag;}
void cmul( complexd* c, complexd a, complexd b )
{c->real = a.real * b.real - a.imag * b.imag;c->imag = a.imag * b.real + a.real * b.imag;}
void cdiv( complexd* c, complexd a, complexd b)
{double r = b.real * b.real + b.imag * b.imag;c->real = (a.real * b.real + a.imag * b.imag) / r;c->imag = (a.imag * b.real - a.real * b.imag) / r;}
void main()
{complexd omega = {-0.5, 0.866025403784438647 }, unit = {1.0, 0.0}, answer, omega2;
printf("ω=");print_complex(omega);
cdiv(&answer, unit, omega);printf("1/ω=");print_complex(answer);
cmul(&omega2, omega, omega);printf("ω**2=");print_complex(omega2);
cadd(&answer, unit, omega);cadd(&answer, answer, omega2);printf("1+ω+ω**2=");print_complex(answer);
}
改行が多すぎるらしいんでこんな形で。imag==0なら実部だけ表示するには自分で工夫しな。

46 :45:04/07/17 02:07
と思ったけど、実装してやった。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=160

47 :デフォルトの名無しさん:04/07/17 02:08
何で学校ってC++教えずにC教えるんだろ?

48 :ぽろじょあ ◆niBmDfC40k :04/07/17 02:13
( .3.) ヌェー 単純に変えるの面倒くさいからと聞いたYO
       所詮、単位の為だけの勉強だYO

49 :デフォルトの名無しさん:04/07/17 03:11
>21 一応できたのであげときます
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=161&fi=no

50 :デフォルトの名無しさん:04/07/17 03:18
>>21
たぶん解けた…
1) ある2頂点を軸にした座標系に全頂点をアフィン変換
2) 変換後の座標系の頂点の中で最小、最大のx、y座標を持つものを取得
3) 最小、最大のx、yで長方形の面積を計算し、最小面積なら結果を保存。
  最小長方形の座標を逆変換し元の座標に戻して保存。
4) 1)に戻って全ての組み合わせを総当りする。
↑説明しづらいけど、文字にしたらこんな感じ。

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


51 :49:04/07/17 03:56
なんか逆に面積増えてるな orz
とりあえず保留...

52 :デフォルトの名無しさん:04/07/17 04:53
>>47
C++を嫌っている人(教官)って結構いるんですよ。難しいから。
これに対してC言語をカリキュラムに組み込むことは同意を得やすい。
それが直接の理由だと思う。

C++って本格的にプログラミングを学ぶには良い言語だと思う。
だが、僕としては、万人向けとは思えない。

53 :デフォルトの名無しさん:04/07/17 05:23
C++じゃ教えるべきことが多すぎるんだろ。

54 :マイク ◆yrBrqfF1Ew :04/07/17 05:55
多くねーよ。

55 :49:04/07/17 06:58
>>21
>>44 の挙げてる本の通り(主成分分析)に実装した(つもり)なのが
>>49 なんだけど、点の集合の形によっては、普通の長方形
(XY軸に直交)より、面積が増えてしまう。
その場合は、普通の長方形を選ぶ(それか他の方法で計算する)
って感じになるんかな。
ちょっと修正したのをあげとく
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=163

56 :デフォルトの名無しさん:04/07/17 07:26
>>21
http://pc5.2ch.net/test/read.cgi/tech/1025264999
>>621 で同じ問題がでていたな・・・

もしかして同一人物?
あの方法に対して、何か問題が見つかったのか?


57 :デフォルトの名無しさん:04/07/17 08:00
ああ、「そんな板orスレッドないです。」なのね・・・
2ch ブラウザ使っているから気づかなかった。
再うpしとくか。

> 621 名前: デフォルトの名無しさん 投稿日: 03/11/23 22:33
> xy 平面上に複数(十個〜数十個程度)の点があるとき、それに外接する最小の長方
> 形を求めるにはどうすればよいか、お教えいただけないでしょうか?
> もちろん、長方形の4辺がxy軸に平行にならなくてもOKです。
>
> 「最小」の定義は、面積が最小、または、4 辺の長さの合計が最小、のどちらでも結
> 構です。(どちらがふさわしいか、今は決めかねているので・・・)
>
> よろしくお願いします。


58 :57:04/07/17 08:01
> 626 名前: デフォルトの名無しん [sage] 投稿日: 03/11/26 16:23
> 凸閉包を求めたらいいと思いますが

> 630 名前: デフォルトの名無しさん 投稿日: 03/11/28 03:28
> >>621
> これでどうよ?
>
> 与えられた点の集合より、凸包を求める。
> 凸包の各辺に対し、
> {
> 与えられた点の集合より、その辺を x 軸座標とした際に、
> min( x ), max( x ), max( y )
> なる点を見つける。
> 発見した点と辺(の1点)より長方形を求め、面積を求める。
> }
> 計算した面積の組の中から最小の組を発見する。


59 :57:04/07/17 08:02
>631 名前: 630 [sage] 投稿日: 03/11/28 03:42
> >与えられた点の集合より、その辺を x 軸座標とした際に、
> あ、ここを「凸包を構成する点の集合」にすれば、多少早くなるか・・・

> 635 名前: 621=624 投稿日: 03/11/28 23:13
> 621です。

> 当方からの反応がしばらく無かったにもかかわらず回答をいただき、ありがとうございま
> す m(. .)m。
>
> >>625
> > 必ずaに投影する、ある2つの投影直線が重なるような気がするから
>
> すみません。イマイチよく理解できないのですが・・・。
> 重なるような投影直線とは、長方形の頂点を通る直線のことを言っておられるのでしょう
> か?
> そうだとすれば、オリジナルの点集合の中に、必ずしも長方形の頂点が含まれるわけでは
> ないので、うまくいかない場合が出てきてしまいます・・・。


60 :57:04/07/17 08:03
> 646 名前: デフォルトの名無しさん [sage] 投稿日: 03/11/29 19:43
> >>636
> >でも、凸包の辺と、解となる長方形の辺とが、全く重ならないような場合(つまり凸包の
> >頂点が長方形の辺に接するだけの場合)というのはありえないのでしょうか?
> 数学板に聞いてみるか・・・
> http://science2.2ch.net/test/read.cgi/math/1069691754/569

> 650 名前: 621=624 [sage] 投稿日: 03/11/30 02:09
> >>646
> おおお、どうもありがとうございます!
>
> 数学板、読んでみました。
> 「辺を共有しない長方形を最小長方形だと仮定すれば矛盾が生じる。ゆえに、最小長方形と
> 凸包は必ず辺を共有する」
> ということですね。
>
> お陰で解決できました。助かりました!


61 :57:04/07/17 08:06
あ、抜けてた。

> 636 名前: 621=624 投稿日: 03/11/28 23:14
> >>626
> ふむ、凸閉包、ですか。
> 626 さんの書き込みを見るまで、このような言葉があることさえ知りませんでした。
> 勉強になります。
>
> >>630
> ふむふむ、なるほど。何だかよさそうですね。
>
> ただ、気になるのは、630 さんの考え方だと、
> 「求める長方形の一辺と、凸包の一辺とが、必ず重なる」
> ことを前提としていますよね。
>
> でも、凸包の辺と、解となる長方形の辺とが、全く重ならないような場合(つまり凸包の
> 頂点が長方形の辺に接するだけの場合)というのはありえないのでしょうか?
>
> そのような場合がありうるのかどうか少し考えてみたのですが、不勉強ゆえ、よくわかり
> ませんでした・・・


62 :デフォルトの名無しさん:04/07/17 09:01
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089361761
上のような、「プログラムを作る」プログラムを作る、という課題を出されたのですが
カードの定義と,定義されたデータベースの操作を行うプログラムとを分離して作成するもの
でしたが、分割しないで、定義と操作をひとつのプログラム内で行えるようにするための方法
を教えて下さい、お願いしますっ!

63 :scanf:04/07/17 11:19
たのんまっせ!
課題
■階乗値を求める関数を作り、それを使用して「組み合わせ」の個数を調べるプログラムを作る。
・階乗値の名前は自由。また、再帰型、非再帰型どちらでもよい。
・nとrをscanf()で読み、nCrの値を計算して表示する。
・nとrの値に関しては非負、非零であること、n>rであること、n<=10であることを確かめ、正しい
 数値を入力させる。
・0!をも扱えるようにする。

64 :デフォルトの名無しさん:04/07/17 11:34
/* >>63 */
#include<stdio.h>

unsigned int fac(unsigned int i)  { return (i==0)?1:i*fac(i-1); }

int main()
{
  int n,r;
  
  printf("n を入力してください >");
  scanf ("%d", &n);
  printf("r を入力してください >");
  scanf ("%d", &r);
  
  if ((n>=0) && (r>=0) && (n>r) && (10>=n))
    printf("%dC%d = %d\n", n, r, fac((unsigned) n) / fac((unsigned)(n-r)));
  
  return 0;
}

65 :デフォルトの名無しさん:04/07/17 12:02
nCrの計算が間違っていないか?

66 :デフォルトの名無しさん:04/07/17 12:13
int c(n, r) int n, int r { return fac(n) / fac(r); } 哉?

67 :デフォルトの名無しさん:04/07/17 12:15
バカばっかり

68 :デフォルトの名無しさん:04/07/17 12:16
/*
(n+1)Cr =nC(r-1)+nCr を利用した再帰バージョン
ただし、実験していないので、動作保障なし。
*/
unsigned int Comb(unsigned int n, unsigned int r)
{
        if( r>n ) throw new Exception();
        if( r=n || r=0) return 1;
        return Comb(n-1,r-1) + Comb(n-1,r);
}

nCr = n! / {r! * (n-r)!} と思われ。

69 :デフォルトの名無しさん:04/07/17 12:16
>>67
>>67

70 :64:04/07/17 12:17
× printf("%dC%d = %d\n", n, r, fac((unsigned) n) / fac((unsigned)(n-r)));
○ printf("%dC%d = %d\n", n, r, fac((unsigned) n) / fac((unsigned) r) / fac((unsigned)(n-r) ));

_| ̄|○

71 :デフォルトの名無しさん:04/07/17 12:19
>>70
そーだね。

72 :デフォルトの名無しさん:04/07/17 15:53
(1)更新、戻る、進む、アドレスバーのついた基本的ブラウザを作る。ただし、タブブラウザ。

73 :ぽろじょあ ◆niBmDfC40k :04/07/17 16:08
( .3.) ヌフフーン 「お願いします」の一言も無いんだNE

74 :72:04/07/17 16:10
>>73
ネタにマジレスカコよすぎて射精しちゃう。

75 :ぽろじょあ ◆niBmDfC40k :04/07/17 16:22
( .3.) ヌェー ヒマな時のマジレスもオツなもんですYO

76 :デフォルトの名無しさん:04/07/17 16:38
カレンダー表示
system("cal");

77 :デフォルトの名無しさん:04/07/17 16:43
そこまで行くと、

#!/usr/bin
cal

でいいじゃんって話にならないか

78 :デフォルトの名無しさん:04/07/17 16:49
>>77
Perl?

79 :デフォルトの名無しさん:04/07/17 16:52
あぁアホなことを…
#!/bin/sh
だった
まあ、環境によって違うけど

80 :デフォルトの名無しさん:04/07/17 17:47
>>72-74
宿題ギレの症状がでてきました。
はやく僕らに宿題をください。


81 :デフォルトの名無しさん:04/07/17 17:54
もう夏休みだろ?

82 :デフォルトの名無しさん:04/07/17 18:03
夏休みの宿題をくれよ

83 :デフォルトの名無しさん:04/07/17 18:08
c++でメモリーリークの発生箇所がわかるように new deleteをオーバーライドせよ

84 :デフォルトの名無しさん:04/07/17 18:08
まずオセロシステムを作ってください。
そしてランダムでうつAIを作ってください。
そしてこれと一万回対戦させて90%以上の勝率
で勝てるようなAIを作成しなさい。



85 :デフォルトの名無しさん:04/07/17 18:10
>>84
ここを見ている香具師らでオセロを作れる人間は
いない。

86 :デフォルトの名無しさん:04/07/17 18:18
>>83
void* operator new(size_t t)
{
//ここで好きなようにかいてくれ
 return (void*)malloc(t);
}

void operator delete(void* p)
{
//ここで好きなように書け
 free(p);
}

87 :デフォルトの名無しさん:04/07/17 18:19
This is a pen.
He has little money.
I am ... ... ... ...
... ... ... ... ... ...
... ... ... ... ... ...

このような英文が english.txtというファイルに存在する場合、
XとYの値を入力したときにX行目のY番目の単語を
表示するC++プログラムは何ですか。

また、この英文中でよく使われている単語ベスト5と
その回数を表示するC++プログラムは何ですか。

88 :デフォルトの名無しさん:04/07/17 18:24
>>86
それだけだったら誰でもわかる。
「好きなように」の部分が大事だと思うんだが。


89 :デフォルトの名無しさん:04/07/17 18:27
課題載せようかと思ったけど、多すぎて載せるのに数時間要するのでヤメた

90 :デフォルトの名無しさん:04/07/17 18:31
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

91 :デフォルトの名無しさん:04/07/17 18:37
>>90
登場するたびにそれじゃぁ
このスレもおしまいだなっ!

92 :デフォルトの名無しさん:04/07/17 18:46
何ですかって何ですか?

93 :ぽろじょあ ◆niBmDfC40k :04/07/17 18:55
 <ω>
  |・ ・|
ノ( .3.)ヽ エルァー AAはバリエーションが命だZO!

94 :デフォルトの名無しさん:04/07/17 19:00
>>79
sh: cal: command not found

95 :デフォルトの名無しさん:04/07/17 19:05
>>93
バリエーションも糞も・・・

96 :デフォルトの名無しさん:04/07/17 19:12
static int specialMemoryLeakCounter = 0;

void* operator new(size_t t)
{
 ++specialMemoryLeakCounter:
 return (void*)malloc(t);
}

void operator delete(void* p)
{
 --specialMemoryLeakCounter:
 free(p);
}



97 :デフォルトの名無しさん:04/07/17 19:23
メモリーリークの発生箇所がわかるように
メモリーリークの発生箇所がわかるように
メモリーリークの発生箇所がわかるように


98 :デフォルトの名無しさん:04/07/17 19:30
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089361761
上のような、「プログラムを作る」プログラムを作る、という課題を出されたのですが
カードの定義と,定義されたデータベースの操作を行うプログラムとを分離して作成するもの
でしたが、分割しないで、定義と操作をひとつのプログラム内で行えるようにするための方法
を教えて下さい、お願いしますっ!

99 :デフォルトの名無しさん:04/07/17 19:34
>「プログラムを作る」プログラムを作る
まで読んだ

って何回させるねん!

100 :デフォルトの名無しさん:04/07/17 20:03
>>98
QEMUのdyngenのソースを読め

101 :デフォルトの名無しさん:04/07/17 20:06
おいこそが101匹わんちゃんげとー

102 :デフォルトの名無しさん:04/07/17 20:11
98は一週間前にも見たけど結局答えって出たんだっけ?

103 :デフォルトの名無しさん:04/07/17 20:21
>>84
7行プログラミングのオセロ。左上の位置に打つのでランダムではないが。
p%9?k():m[p]=9; は通らない環境があるが、その場合は、
if(p%9)k();else m[p]=9; に直すと良い。

#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}

104 :103:04/07/17 20:24
書き忘れ。
入力は 5 3 等、x座標、y座標で行う。左上が 1 1 。
エラーチェックは行われていないので注意。

105 :デフォルトの名無しさん:04/07/17 20:27
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・ω・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場


106 :デフォルトの名無しさん:04/07/17 21:12
>>83はやっぱり皆さんには難しいですか?

107 :デフォルトの名無しさん:04/07/17 21:22
うん、、、

108 :デフォルトの名無しさん:04/07/17 21:22
こ、、、

109 :デフォルトの名無しさん:04/07/17 21:28
>>106
そういう宿題が出る学校(学科)の人には教えるわけにはいかないんだよ
純粋に単位が欲しい人のためにあるスレなんだから。

中途半端な知識で社会に出られても困るので。

110 :デフォルトの名無しさん:04/07/17 21:30
>>83
ちょっとした発想力さえあれば高卒の俺にでも分かるわけだが・・・
方針すら立たないのか?

111 :デフォルトの名無しさん:04/07/17 21:32
素直にわかりませんって言えばいいのに

112 :デフォルトの名無しさん:04/07/17 21:38
うん、わかんないから次の問題マダー?

113 :デフォルトの名無しさん:04/07/17 21:39
メモリブロックの正当性検査を一式書いてったら結構な量のコードになるな。
newとdeleteだけでいいってんなら、newで控えて、deleteで控えを削除して、
newされっぱなしのブロックのダンプとかできる関数がありゃいいのか。
少し欲を出すなら、new[]とdelete[]のチェックも追加した方がいいだろな。

で、誰かコード書かないの?

114 :デフォルトの名無しさん:04/07/17 21:42
109と110が口先だけの人間じゃなければ、すぐにコード書いてくれると思うよ

115 :デフォルトの名無しさん:04/07/17 21:43
じゃー、問題出すよー

116 :デフォルトの名無しさん:04/07/17 21:48
煽ったらコード書く奴が居ると思ってるなら大間違い。

117 :デフォルトの名無しさん:04/07/17 21:58
煽ろうが煽らまいが、書けない奴は書けない。

118 :デフォルトの名無しさん:04/07/17 22:10
書ける奴は煽られると書かない

119 :デフォルトの名無しさん:04/07/17 22:13
>>115
宿題でない問題ってアリなん?!

120 :デフォルトの名無しさん:04/07/17 22:16
>>119
内容次第

121 :デフォルトの名無しさん:04/07/17 22:25
プッのAAを教えてください

122 :デフォルトの名無しさん:04/07/17 22:30
適当な2次元配列にいくつか英単語を入れ、辞書順にクイックソートする関数を作成せよ
英単語は実行時に入れてもプログラム中に書いてもファイルから読み込んでもよい。

文字列ソートなんてさぱーりです。よろしくお願いします。

123 :デフォルトの名無しさん:04/07/17 22:32
毎スレ出てくるな、そのテの質問。

124 :デフォルトの名無しさん:04/07/17 22:33
さぱーりって…比較関数かいてqsortで終わりじゃんか

125 :デフォルトの名無しさん:04/07/17 22:41
ちょいっと長いのですが、Cの宿題を助けていただけませんか?
身長のデータを一行一人分で入力するものとする。
ただし、入力するデータは最大でも100人分と分かっているものとする。
身長データとして負の値を入れた時点でデータ入力の終了と判断するものとする。
データ入力が終了した時点で何人分のデータであったかという人数情報と、平均身長、
ならびに全データの中で最大値と最小値を出力するプログラムを作ってもらえませんか?

なお、データの入力中ゼロを入力すればコレまでの入力データを
入力番号(通し番号)と共に表示し、入力番号を入れれば当該データを削除し
それ以降のデータを上に繰り上げて、再びデータ全体を出力するものとする。
入力番号として0を入れた場合は、データの削除は行われず、データの入力処理を継続するものとする。

なお、プログラムの作成に関してはmain関数以外の関数をひとつ定義して使うという条件があります

126 :デフォルトの名無しさん:04/07/17 22:45
>>122
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
SortStringsCallback( const void* pArg1, const void* pArg2 )
{
    const char* const pStr1 = (const char* const)pArg1;
    const char* const pStr2 = (const char* const)pArg2;

    return strcmp( pStr1, pStr2 );
}

int
main( void )
{
    int i;

    char strings[][ 128 ] =
    {
        { "unko" },
        { "chinko" },
        { "manko" }
    };

    const int nNum = sizeof( strings ) / sizeof( strings[ 0 ] );

    qsort( strings, nNum, sizeof( strings[ 0 ] ), SortStringsCallback );

    return 0;
}

127 :125:04/07/17 22:45
C:\c>height.exe
150.0
170.0
140.0
0.0
データの修正モードに入ります
1:150.0000
2:170.0000
3:140.0000
削除するデータ番号を入力してください:2
データ170.0000を削除しました
1:150.0000
2:140.0000
削除するデータ番号を入力してください:0
修正モードから抜け出します
180.0
-1
データの入力終了と判断しました
人数:3 平均身長:156.6667 最小値:140.0000 最大値:180.0000

この様な実行結果が現れるようにしたいのですが
なかなか難しいでしょうか?力を貸してください、お願いします、ようかんまんさん

128 :デフォルトの名無しさん:04/07/17 22:46
>>83
呼び出し先の関数から,呼び出し元を特定する方法は?
宿題なら,その方法を予め教えられているはず。

じゃなきゃ,そんな環境依存のもの書けねぇよ!

129 :126:04/07/17 22:54
ソート前後の文字列を表示したければ
qsort の前後に

for( i = 0; i < nNum; i ++ )
    printf( "%s\n", strings[ i ] );

を入れといてね

130 :122:04/07/17 23:13
>>129
ありがとうございました。

131 :デフォルトの名無しさん:04/07/17 23:31
つまんねぇくなりましたな。

132 :デフォルトの名無しさん:04/07/17 23:32
さすがに同じような問題ばかりだと飽きるよな

133 :デフォルトの名無しさん:04/07/17 23:36
目の醒めるような、とは言わないがたまには目から鱗を落としたいものだ。

134 :デフォルトの名無しさん:04/07/17 23:39
>>132
そしてみんな巣立っていくんだ。
こんなスレに常駐するのなんてせいぜい3ヶ月長くても半年だろ。

135 :デフォルトの名無しさん:04/07/17 23:39
うろこに覆われすぎて、落ちようもなくなってるのさ君の目は

136 :デフォルトの名無しさん:04/07/17 23:39
>>135
まーね。

137 :デフォルトの名無しさん:04/07/17 23:44
宿題を出す立場の大学のセンセもそういう意味では飽き飽きだろうな。

138 :デフォルトの名無しさん:04/07/17 23:47
研究室配属の学生に添削させるから無問題ですよ

139 :デフォルトの名無しさん:04/07/17 23:50
…なんか寂びを感じてしまったよ。

140 :デフォルトの名無しさん:04/07/17 23:51
逆におまえらが目の覚めるような問題を考えてみろ。

141 :デフォルトの名無しさん:04/07/17 23:53
といっているお方はなぜ自分で(ry

142 :ようかんマン ◆nup627Y0Gs :04/07/18 00:00
>>83 こんな感じでいいか?
            __
          ヽ|・∀・|ノ
          |__|
           | |

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

143 :デフォルトの名無しさん:04/07/18 00:12
>>142
なぜかおぺらた [] が無い

144 :もう一度…m(_ _)m:04/07/18 00:49
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089879224

145 :デフォルトの名無しさん:04/07/18 00:55
>>142
size==0 のとき,newの挙動がおかしい。

146 :デフォルトの名無しさん:04/07/18 01:03
size=1にすべし

147 :ようかんマン ◆nup627Y0Gs :04/07/18 09:11
 |>>83 再挑戦だ!
 └―――y――――――――
   ___      ∧_∧
  l〜・Дl〜.   (´Д` )、
  |___|     /      ヽ
   ノ   >     ヽ_つ旦と_ノ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=165

148 :デフォルトの名無しさん:04/07/18 09:37
>>147
もはや>>83の事などどうでもよくなっているに一票

149 :83:04/07/18 09:56
ようかんマン ありがとう! 頼りになるね
C++なので std::map<void*, std::pair<std::string, line> > に、
確保したアドレスと<ファイル名、行番号>のマップを確保したら
と思ったんだけど、このアイデアはどうですか?


150 :デフォルトの名無しさん:04/07/18 09:58
で、そのstd::stringの領域確保はどうするんだい?

151 :デフォルトの名無しさん:04/07/18 10:23
>>150
どういう意味?
std::stringに領域確保なんかいる? 

std::map<void*, std::pair<std::string, int> > m;
void* d_alloc(unsigned int size, const unsigned int line, const char* file){

    ......メモリ確保処理

    std::pair<std::string, int> p;
    p.first = file;
    p.second = line;
    m[(確保したアドレス)] = p;



みたいな感じじゃだめなの?

それとも違う意味ですか?

152 :デフォルトの名無しさん:04/07/18 12:59
>>138
専任教員のばやい,全部自分でやらにゃあかんので大変です。
研究室に学生なんていないもーん。
大学院作成中だもーん。

153 :デフォルトの名無しさん:04/07/18 14:36
Fランク大は大変ですね

154 :デフォルトの名無しさん:04/07/18 15:59
入力された英単語で、しりとりができるかどうかを判定するアルゴリズムを教えてください。

auto return true other not
ならO.K.

fanction all letter
はダメ。

お願いします。

155 :デフォルトの名無しさん:04/07/18 16:04
auto return true other not
これのどの辺がしりとりなの?

156 :デフォルトの名無しさん:04/07/18 16:05
CともC++とも指定されなかったらどっちで解けばいいのよ?

157 :デフォルトの名無しさん:04/07/18 16:15
点数データ(初期値代入)が入った1次元配列のアドレス・人数を受け取って、
その最大、最小点 平均点を求めて返す関数をC++で作成してもらえたら助かります

158 :デフォルトの名無しさん:04/07/18 16:31
>>157
#include <iostream>
#include <algorithm>
#include <numeric>

using namespace std;

void
func( const int* pnScores, int nNum )
{
    cout << "最大 : " << *max_element( &pnScores[ 0 ], &pnScores[ nNum ] ) << endl
           << "最小 : " << *min_element( &pnScores[ 0 ], &pnScores[ nNum ] ) << endl
           << "平均 : " << static_cast< float >( accumulate( &pnScores[ 0 ], &pnScores[ nNum ], 0 ) ) / nNum << endl;
}

int
main()
{
    const int nScores[] = { 0, 10, 20, 40, 80, 100 };

    func( nScores, sizeof( nScores ) / sizeof( nScores[ 0 ] ) );

    return 0;
}

>その最大、最小点 平均点を求めて返す関数
表示するだけにしたんだけど意味違う?

159 :デフォルトの名無しさん:04/07/18 16:33
auto return true other not
      ↓
auto other return not true

って並び替えろってことか?

160 :154:04/07/18 17:09
> 並び替えろってことか?
そうです。

C C++ どちらでもかまいません。
お願いします。

161 :デフォルトの名無しさん:04/07/18 17:14
f(x)=x^2を持つグラフで、それを乱数で表示させたのですが、
条件として、
1.等確率現象のプログラム?0.0〜1.0の実数一様乱数で10行表示させる事。
2.ユーザ関数を使う事。
3.入力した数値を乱数の種に設定する事。
をいれたプログラムをC言語で書きたいのです。
自分なりに考えみたのですが、出力結果が10行全て1.00000と表示されました。
どうかお願いします。

162 :デフォルトの名無しさん:04/07/18 17:22
4つの整数を引数として渡して、その4つから最小値を返す関数を作りたいのですが、いい考えが浮かびません。
賢い皆さんお願いします。

163 :デフォルトの名無しさん:04/07/18 17:25
>>161
あなたの考えで間違ったとことか指摘してもらえるし
その失敗したソースを公開したほうがいいと思うよ

公開場所は>>1読んでね

164 :デフォルトの名無しさん:04/07/18 17:25
>>162

#include <algorithm>

int minminminmin(int a, int b, int c, int d)
{
return min(min(a, b), min(c, d));
}

165 :157:04/07/18 17:30
>>158
表示するだけでよいです。
ありがとうございました。
OTL

すごく難しいプログラム(問題じゃなくて)ですね。



166 :161:04/07/18 17:36
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double trrand(void);
double nrand(void);
int main(void) {
int i, n;
printf("input seed => ");
scanf("%d", &n);
srand(s);
for(i = 0; i < 10; i++)
printf("%f\n", trrand());
printf("\n");
return 0;
}
double trrand(void) {
return pow(nrand(), 1 / 3);
}
double nrand(void) {
return (double)rand() / (double)RAND_MAX;
}
なんです。よろしくおねがいします


167 :162:04/07/18 18:02
ありがとうございました。
algorithmなんてインクルードファイルがあるなんて知らなかった(w

168 :デフォルトの名無しさん:04/07/18 18:10
まあ、嫌なら
template <typename T>
min( const T& a, const T& b )
{
    return ( a < b ) ? a : b;
}
でやればいいんだろうけど

169 :デフォルトの名無しさん:04/07/18 18:15
>>161
> f(x)=x^2を持つグラフで、それを乱数で表示させたのですが、
f(x)=x^2の重みつきの乱数を作れってことでOK?

> 1.0.0〜1.0の実数一様乱数
double nrand(void) {return (double)rand() / (double)RAND_MAX;}
でOKかと
> 2.ユーザ関数を使う事。

> 3.入力した数値を乱数の種に設定する事。
scanf("%d", &n);
srand(s);//s -> nの間違いかと

どういう問題かよくわからんが想像するに
「f(x)=x^2の重みつき乱数(ただし定義域は[0.0〜1.0])を返す関数を作って10回分表示せよ。
 ただし、乱数の種はユーザーからの入力を用いること。」
というところかな。

170 :161:04/07/18 18:30
169さん
ありがとうございました☆
問題なく、思った結果が出ました。
感謝です☆

171 :デフォルトの名無しさん:04/07/18 19:06
>>170=161
>問題なく、思った結果が出ました。
ホントに?

>return pow(nrand(), 1 / 3);
これって常に1を戻している気がするんだけど。

172 :本7:04/07/18 19:14
ところでさー
そろそろ半角スペースを に置き換えてもらうように
スクリプトいじってもらわないか?

173 :本7:04/07/18 19:15
消えてもた、、
&nbsp;ね

174 :デフォルトの名無しさん:04/07/18 19:39
ようかんまん、宿題てつだってくだされ〜〜〜

課題1. 四則演算を使ったメモリに関するプログラム(静的なメモリ 関数?)
仕様:次の処理を行うプログラムを使う・・・
@数字入力→演算子入力→数字入力→数字入力→演算子入力→数字入力→= 終了
つまり・・・1+1 1-1=2 という結果になります。
最初の演算子をいれ、次の演算子を入れない限りずっとその演算子を保持するというものです。
A各機能を関数によって分ける
1:数入力
2;四則演算
3:計算・出力結果
Bグローバル変数は使わない
C=をいれて、計算結果を出し、終了させる。

んで、エラー処理について・・・
@数字入力のところに、数以外の物を入れたら、エラー表示をし、再度入力させるようにする
A演算子入力のところに、数以外の物を入れたら、エラー表示をし、再度入力させるようにする
B0除算のエラー処理を施す、
C桁数の処理をほどこす


175 :174:04/07/18 19:39
続き・・・

課題2:四則演算と、メモリー関数を使い(動的な)いかのものを完成せよ
仕様:次の処理のプログラムを作れ
@入力個数を最初にとる(配列はNことる)
例:10といれると数が10個分入る領域をとる
Aつまり、

数の領域を確保する→数字入力→演算子入力→数字入力→数字入力→演算子入力→数字入力→= 終了
つまり・・・数の領域4個 → 1+1 1-1=2 という結果になります。
最初の演算子をいれ、次の演算子を入れない限りずっとその演算子を保持するというものです。
A各機能を関数によって分ける
1:数入力
2;四則演算
3:計算・出力結果
Bグローバル変数は使わない
C=をいれて、計算結果を出し、終了させる。

エラー処理・・・
課題1とおなじないよう、
ただし、数入力時に最初にとった個数以上に入力した場合は、必ずエラー処理をする。
つまり、最初の個数2 →1+1 1 =3 とはならず、エラーを返す

という課題二つを出されました、もうしわけないですが、お願いします。
長くなってしまって、ごめんなさい。

176 :デフォルトの名無しさん:04/07/18 19:51
>>154
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=262&fi=no
こんなんでどう?
反応はしてね。

使い方は標準入力から
-----
5 10
auto
return
other
true
not
----
こういうフォーマットで流し込んでね。
最初の行の最初の数字が単語数
最初の行の次の数字が文字列の最大長さ + 1
以降の行がしりとりをする単語


177 :デフォルトの名無しさん:04/07/18 20:08
>>174
演算子は何をサポートするのか?
演算子の優先順位はどうなるのか?

178 :154:04/07/18 20:34
>>176 さん、ありがとうございました。
感謝。

179 :デフォルトの名無しさん:04/07/18 20:36
以下のようなプログラムを作っていただけないでしょうか。どなたかお願いします。

・1から100までの整数を思い浮かべるようにメッセージを出します。
・次に、3、5、7それぞれで割った余りを入力するようメッセージを出します。
・3つの余りから思い浮かべた数を当てるプログラム。

180 :174:04/07/18 20:43
あい、>>177

演算子のサポートって、普通に計算するっていうことでOK_?_
演算子の優先順位は、+、-、*、/
という形になっています。
あくまでも、その4種類だけ使った内容になる出巣。

よろです、orz


181 :デフォルトの名無しさん:04/07/18 21:02
>179
入出力部くらいは自分で書いてくれ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=166&fi=no

182 :デフォルトの名無しさん:04/07/18 21:10
>>179
#include <stdio.h>

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

    printf( "%s\n", "1-100 のどれかの数を思い浮かべてください" );
    printf( "%s\n", "その数を 3, 5, 7 で割った余りを入力してください" );

    scanf( "%d %d %d", &a, &b, &c );

    for( i = 1; i <= 100; i ++ )
    {
        if( i % 3 == a )
        {
            if( i % 5 == b )
            {
                if( i % 7 == c )
                {
                    printf( "%d\n", i );
                    break;
                }
            }
        }
    }

    return 0;
}

183 :デフォルトの名無しさん:04/07/18 21:12
うお、nbsp;で置換してるうちに >>181 が書いてた
スマソ

184 :デフォルトの名無しさん:04/07/18 21:12
>>182
己の未熟さを知り感動した。


185 :デフォルトの名無しさん:04/07/18 21:14
if( i % 3 == a && i % 5 == b && i % 7 == c)



186 :デフォルトの名無しさん:04/07/18 21:30
講師が気にいらないなら
i % 3 == a && i % 5 == b && i % 7 == c && printf( "%d ", i );


187 :179:04/07/18 21:39
181さん182さんをはじめ、少しでも考えてくださった皆さんありがとうございます。
本当に助かりました。

188 :デフォルトの名無しさん:04/07/18 21:45
>>182
for (i = c; i <= 100; i += 7) {
if (i % 3 == a && i % 5 == b) {

これでいいんでないの?

189 :デフォルトの名無しさん:04/07/18 21:47
>>179
数式で解こうよこのぐらい。

(a*35+b*21+c*15+105)%105

で基の数字になるはずだよ。

190 :189:04/07/18 21:48
ごめん、ミス
(-a*35+b*21+c*15+105)%105
が正しい。

191 :デフォルトの名無しさん:04/07/18 22:31
void 関数()を途中で終了させるのはどうしたらいいですか?

192 :デフォルトの名無しさん:04/07/18 22:31
return;

193 :デフォルトの名無しさん:04/07/18 22:42
10リットル,7リットル,3リットルの3種類の容器があり、
今、10リットルの容器に水が満杯に入っている。
これを、3つの容器を駆使し、5リットルの水を取り出す
手順を表示するプログラムを作成せよ
(容器を傾けて、半分の量を取り出す事は出来ない)

さっぱプーです・・・
よろしくお願いします。


194 :デフォルトの名無しさん:04/07/18 22:47
手順を表示するプログラムを作って何になるというのだろうか…?

195 :デフォルトの名無しさん:04/07/18 22:55
>>194
アルゴリズムの勉強だろ
ハノイの塔とかと同じ


196 :デフォルトの名無しさん:04/07/18 22:58
>>193
10x + 7y + 3z = 5
を満たす x, y, z を出す過程を示せばいいんじゃないの?
あとはシラネ

関係あるか分からないけど、
Aリットル Bリットルの容器から、gcd(A, B) リットル量るのは拡張ユーグリッドのごじょほうで対数時間で解ける.
(Ax + By = gcd(A, B)を満たすx, yを求める)

197 :デフォルトの名無しさん:04/07/18 22:59
再帰っぽい気はするんだが、意外と難しいな・・・

198 :デフォルトの名無しさん:04/07/18 23:08
A:10 B:7 C:3
A→C
C→B
A→C
C→B
A→C
C→B
B→C
C→A

199 :デフォルトの名無しさん:04/07/18 23:50
#include <stdio.h>
#define SIZE 5

void max_return(int *a, int *max);

int main(void)
{
int d[SIZE], max;

printf("Input 5 numbers:\n");
for(i=0; i<SIZE; i++) scanf("%d", &d[i]);
max_return(d, &max);
printf("max = %d\n", max);

return 0;
}

このプログラムの、関数max_returnを作成し、プログラムを完成させよ。
(このプログラムは5つのデータのうち、最大値を求めるプログラム)

お願いします。



200 :デフォルトの名無しさん:04/07/18 23:51
>193
あまり賢いアルゴリズムではないが。。。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=167&fi=no

201 :デフォルトの名無しさん:04/07/19 00:01
>>199
printf 中の 5 は何?

void max_return(int *a, int *max)
{
int i;
*max=*a;
for(i=1;i<SIZE;i++)
{
if(*max < *(a+i))
*max=*(a+i);
}
}

202 :193:04/07/19 00:05
>>200
うおー!ありがとー!!!
あなたこそはキングオブようかんマンです!

203 :デフォルトの名無しさん:04/07/19 00:08
>>200
なるほど

204 :174:04/07/19 00:15
あう・・・すんません、
僕のも尾根がしますorz

もうしわけない

205 :デフォルトの名無しさん:04/07/19 00:26
>>174
> つまり・・・1+1 1-1=2 という結果になります。
ぶっちゃけ、ココの意味がわからん。1-1はどういう意味があって入力するの?


206 :デフォルトの名無しさん:04/07/19 00:28
>>205
1+1+1-1=2 ってことだろ。
その次の行読んだらわかるじゃん。

207 :205:04/07/19 02:37
>>174
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=168
こんなんでどう?

208 :205:04/07/19 02:52
ちょっと修正
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=169


209 :デフォルトの名無しさん:04/07/19 03:14
宿題です。よろしくお願いしますm(__)m 開発環境はLinuxです。

(1) アルファベットで5人の名前と点数を入力し、mark.txtというファイル名で出力するプログラムを作成しなさい。

(2) さらに、mark.txtという名前のファイルを読み込み、点数順にソートして、最高点、最低点、平均点を求めてranking.txtというファイル名で出力
するプログラムを作成しなさい。

210 :デフォルトの名無しさん:04/07/19 03:30
カプレカ数(Kaprekar Number)と呼ばれるものがある.ぞろ目(各位の数字がすべて同じ)以外で任意のN桁の数を考える.
そのN桁の数に対して各位の数字を入れ替えてできる最大の数と最小の数の差を計算し,
またその結果のN桁の数字に対して・・・,というふうに同じ操作を繰り返す.

792の場合、972-279=693
963-369=594
954-459=495

上の結果から,「495」という数は,この操作をこれ以上繰り返しても変わらないことがわかる.
実は,他の3桁の数字から出発しても,この操作を何回か繰り返すと「495」に到達する.
このとき,「495」を「3桁の場合のカプレカ数」と呼ぶことにする.
さて,それでは「4桁の場合のカプレカ数」はどうなるだろうか?(6174になる)

そこで,「任意の4桁の数(ぞろ目以外)をキーボードから入力すると,上で示したような計算の繰り返しを経て,
最終的にカプレカ数,および入力値からカプレカ数に至るまでの反復回数を出力する」というC言語のプログラムを作成しなさい.

この問題のC言語での解答をどうかお願いします…。

211 :デフォルトの名無しさん:04/07/19 03:31
>>209
言語は?

というか言語の指定がない場合C(またはC++)でやるっていう暗黙の了解とかあるのこのスレ?

212 :デフォルトの名無しさん:04/07/19 03:45
スレタイよく見れ

213 :デフォルトの名無しさん:04/07/19 04:02
>>212
お前こそ

214 :デフォルトの名無しさん:04/07/19 04:24
>>210
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=170

215 :210:04/07/19 04:32
ありがとうございます、助かりました

216 :デフォルトの名無しさん:04/07/19 05:00
>>209
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=171
あ、"ranking.txt"じゃなくてcoutにしちゃったな。

217 :デフォルトの名無しさん:04/07/19 05:50
>>211
明示が無い場合は、回答者がやりやすい方でいいのでは。
>>1のテンプレに「CかC++かどちらがいいか書きましょう。」
みたいなのがあるといいですけどね。

218 :174:04/07/19 08:20
>>205さま
ありがとうございます。

一個質問なのですが・・・・・
このソースって、課題2のものとかんがえてよいのですか?
課題1のソースは・・・・・・・

ごめんなさい、このソースがどっちのものかおしえてくだされ・・・・
もし、片方の課題のソースだけでしたら・・・もう片方のかいとうもおねがいおいたしますです。orz

219 :デフォルトの名無しさん:04/07/19 09:55
>>213
CまたはC++でやるってスレじゃん,オマエアフォ?

220 :デフォルトの名無しさん:04/07/19 10:18
>>219
あれだ、>211は「どっちかに決まってるのか?」って聞きたかったんだよ。
で、>212は「どっちかに決まってるだろ」って言うもんだから、>213で
「それはわかってる」って言いたかったんだよ。

#つーか、あんたら馬鹿?

221 :205:04/07/19 10:52
>>174
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=172
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=173
これで良いかな?
strlen()もalloc()系も使うの初めてだったんで勉強になったよ。

222 :174:04/07/19 10:54
ヤダヤダヤダ!ようかんマンじゃなきゃヤダー!

 〃∩ _, ,_    /)    〃∩ _, ,_    /)      
⊂⌒( `Д´)ミ( ⌒ヽつ⊂⌒( `Д´)ミ( ⌒ヽつ
 `ヽ._つ⊂ノ⊂( ,∀、)つ.`ヽ._つ⊂ノ⊂( ,∀、)つ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|     ミ
                            |    〃 ∩  。
                            |   ⊂⌒从ヽ从゜o ザバーン
                            | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

223 :174:04/07/19 10:57
222おれじゃねーし・・・W

205さま、ありがとうございます。

感謝です〜〜〜orz

224 :デフォルトの名無しさん:04/07/19 10:59
>>220
プラグラマは普段自然言語なんて使わない(Cで会話する)ので、日本語能力が極端に落ちてるんです。許してやってくださsssssssss

225 :デフォルトの名無しさん:04/07/19 11:09
学校で万年カレンダーを作るCが出て、自分なりやってはみたんですが、
実行画面で2週間分を続けて表示する事ができません。ようかんマンさん助けてくださいm(__)m


226 :デフォルトの名無しさん:04/07/19 11:10
225です。続きです。
#include <stdio.h>
int calen(int x,int y);
int days(int n,int g);
int uru(int n);
int calout(int n,int g,int h);
int main(void)
{
int x,y;
printf("年 : ");
scanf("%d",&x);
printf("月 : ");
scanf("%d",&y);
calen(x,y);
}
int calen(int x, int y)
{
int z,i,calout(int n,int g,int h),days(int n,int g);
printf("%d / %d\n",x,y);
printf(" 日 月 火 水 木 金 土");
printf(" 日 月 火 水 木 金 土 \n");
for(i=0 ; i < calout( x, y, 1)*4 ;i++) printf(" ");
for(z=1 ; z <= days(x,y) ; z++){
printf("%4d",z);
if(calout(x,y,z) == 6) printf("\n");
}
printf("\n");
return(0);
}



227 :デフォルトの名無しさん:04/07/19 11:11
225です。226の続きです。
int days(int n,int g)
{
int uru(int n);
if(g == 2){
if(uru(n) == 0) return(28);
else return(29);
}
if(g == 4 || g == 6 || g == 9 || g == 11) return(30);
else return(31);
}
int uru(int n)
{
if((n%4==0&&n%100==0)||(n%400==0)) return(1);
else return(0);
}
int calout(int n,int g,int h)
{
if ( g > 2 ){
g = g -2 ;
g -- ;
}
return (n+n/4-n/100+n/400+(g*13+8)/5+h)%7;
長くなりましたがよろしくお願いしますm(__)m


228 :デフォルトの名無しさん:04/07/19 12:35
>>224の直後に>>225がきたんでネタかと思ったら、マジみたいね。
ホントに日本が不自由な方のようでw

229 :デフォルトの名無しさん:04/07/19 12:38
日本が不自由

230 :デフォルトの名無しさん:04/07/19 13:22
流れにワラタ

231 :デフォルトの名無しさん:04/07/19 14:38
>日本が不自由
うんうん日本って不自由だよね!
って… んっ?

232 :デフォルトの名無しさん:04/07/19 16:32
>>228
あんた最高だよ。

233 :ぽろじょあ ◆niBmDfC40k :04/07/19 16:58
>>228
( .3.) ワロタ

234 :デフォルトの名無しさん:04/07/19 17:53
最大10個の整数をscanfで配列に読み込み、読み込んだ整数が何種類あるかを求める
プログラムを作りなさい。

235 :デフォルトの名無しさん:04/07/19 17:55
>>234
scanf
atoi→配列へ
qsort
forループで隣接二項を比較、違えばカウントを増やす

236 :デフォルトの名無しさん:04/07/19 18:21
c++なら
sort
unique
でOK

237 :デフォルトの名無しさん:04/07/19 18:45
>>234
#include <algorithm>
using namespace std;
int main()
{
#define N 10
    int x[N], i;
    for (i = 0; i < N; i++) {
        printf("i= %d\n", i);
        if (scanf("%d", &x[i]) == 0 || feof(stdin)) {
            break;
        }
    }
    printf("done, i= %d\n", i);
    sort(&x[0], &x[i]);
    printf("%d\n", unique(&x[0], &x[i]) - &x[0]);
    return 0;
}


238 :デフォルトの名無しさん:04/07/19 18:50
unique(&x[0], &x[i]) - &x[0]
これで要素数でるか?
std::distance(&x[0], unique(&x[0], &x[i]) );
だよね普通

239 :デフォルトの名無しさん:04/07/19 18:55
多分出ると思うけど、distance 使わにゃならんと思う

240 :デフォルトの名無しさん:04/07/19 18:58
(unique(&x[0], &x[i]) - &x[0]) / sizeof(int*)

241 :デフォルトの名無しさん:04/07/19 19:00
>>240
やっちゃったよ...

242 :デフォルトの名無しさん:04/07/19 19:02
>>237, 240
STL 使いたいんならまずは Effective STL を買って嫁

243 :デフォルトの名無しさん:04/07/19 19:02
setに格納しといて、要素数ででるんとちゃう?

244 :デフォルトの名無しさん:04/07/19 19:07
>>243
そうだね、バカな>>235とか>>236に引きずられちゃったよ。

245 :デフォルトの名無しさん:04/07/19 19:27
>>243
馬鹿な>>235ですが詳細きぼん

246 :デフォルトの名無しさん:04/07/19 19:38
>>245
#include <set>
using namespace std;
int main()
{
    set<int> x;
    int i, j;
    for (i = 0; i < 10; i++) {
        if (scanf("%d", &j) == 0 || feof(stdin)) {
            break;
        }
        x.insert(j);
    }
    printf("%d\n", x.size());
    return 0;
}


247 :デフォルトの名無しさん:04/07/19 19:38
set には重複したエントリを格納できない

248 :デフォルトの名無しさん:04/07/19 19:40
>>246
馬鹿な>>235ですが最近のC++は分かんないんです、すいません。
そのうち勉強しときます。

249 :デフォルトの名無しさん:04/07/19 19:42
>>248
templateの無い頃のC++でつか?

250 :デフォルトの名無しさん:04/07/19 19:46
>>246
馬鹿な>>235ですがその通りです。
95年刊のC++入門書を読んだっきりなので。

251 :デフォルトの名無しさん:04/07/19 20:10
型安全性、拡張性あっての C++ だというのに…

252 :デフォルトの名無しさん:04/07/19 20:15
>>251
誤爆?

>>250
その頃にはtemplateもfixしてたと思うが。

253 :デフォルトの名無しさん:04/07/19 20:19
馬鹿な>>235ですが>>252さん、95年刊の本(しかも邦訳)というのは92〜93年頃の
知識に基づいて書かれているはずなんですがそのへんどんなもんなんでしょう

254 :デフォルトの名無しさん:04/07/19 20:30
>>253
http://www.pro.or.jp/~fuji/computerbooks/c/cpp.strou.html
もうこんな前なのか...

255 :デフォルトの名無しさん:04/07/19 23:37
初めまして
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090247270&res=1
のプログラムなんですが、
自分でファイル名とファイルに書く込む内容を入力して、読み出すときも自分で入力してやるって
感じのプログラムを作ってみたのですが、
その過程で、書き込む内容だけ派生クラスを経由?して書き込むって感じしたかったのです。
ですが、ファイルに書き込む所なのか、読み込む所なのか、なぜかファイルの内容を
読み出す事ができません。
ですが、書き込むまでの所で、派生クラスのオブジェクトを使うとちゃんと書き込んだ内容が
表示されました。
多分、派生クラスは必要がないとは思うのですが、なぜ派生クラスのオブジェクトを使うと
ちゃんと動作するのかが気になって仕方がないです。
どうか、教えて下さい。お願いします。

256 :デフォルトの名無しさん:04/07/19 23:43
基底クラスのデストラクタが仮想関数でない時点で見る気無くした

257 :デフォルトの名無しさん:04/07/19 23:47
>>255
どういう環境なのか知らないけど、ファイルから読めてるかどうかは確かめるの簡単だべ。

258 :255:04/07/19 23:52
とりあえず、デストラクタを仮想関数にした、として考えてみてもらえないでしょうか?
すみません。環境って意味がわからないのですが、使ってるOSはWinです。Microsoft Visual C++ 6.0を
使ってます。

259 :デフォルトの名無しさん:04/07/20 00:39
一人分のデータが学生番号、前期点数、後期点数で構成される1クラス分
のある科目の成績を入力し、学生毎の前後期の平均点を計算し、次のよう
な表の形で表示するプログラムを作成せよ。学生数は最初に入力するものとする。

学生番号 前期 後期 平均
-----------------------------
2005001 40 70 55.0
2005002 70 80 75.0
2005005 90 80 85.0

ただし、入力する成績を学生番号、前期点数、後期点数で構成される構造体として表すこと。

という課題が出ましたが、まともにできませんでした orz
解答のほうよろしくお願いします

260 :デフォルトの名無しさん:04/07/20 00:43
以下の関数を使って閏年を考えずに1月1日から、例えば4月12日
だったら0412と入力された日(下二桁を日、残りを月と判断させる)
までの日数を計算するプログラムです。
int get_day(void)
{
int i = 0 ,c;
while((c = getchar ()) >='0' && c <= '9'){
c = c -'0';
i = i * 10 + c;
}
return(i);
}
この関数をどこに入れたらいいかわからないのでよくわかりません。
よろしくお願いします。

261 :デフォルトの名無しさん:04/07/20 00:45
>>260
とりあえず冷凍室で3時間。

262 :デフォルトの名無しさん:04/07/20 01:14
>259
この問題って変じゃない?
>ある科目の成績を入力し
とあるから、1つの科目の成績を入力するんでしょ?
なのに、
>学生毎の前後期の平均点を計算し、
とあるけど、平均点なんて計算する必要はないじゃん。

263 :デフォルトの名無しさん:04/07/20 01:17
>259

#include <stdio.h>

struct student {
int zennki, kouki, banngou;
};

int main(void)
{
int N, i;
struct student s;
printf("学生番号 前期 後期 平均\n-----------------------------\n");
scanf("%d", &N);
for(i = 0; i <= N; i++) {
scanf("%d%d%d", &s.banngou, &s.zennki, &s.kouki);
printf("%7d%7d%7d%7.1lf\n", s.banngou, s.zennki, s.kouki, (s.zennki + s.kouki)/2.0);
}

return 0;
}

問題が意味不明。

264 :デフォルトの名無しさん:04/07/20 01:18
>>262
前期と後期の平均じゃないか?
とりあえず構造体を使わせるのが目的なんだろう。
それよりも、どこからどのように入力して、どこに出力するかの方が分からん。

265 :デフォルトの名無しさん:04/07/20 01:19
- for(i = 0; i <= N; i++) {
+ for(i = 0; i < N; i++) {



266 :デフォルトの名無しさん:04/07/20 01:26
>>261
そうですか…orz
まぁきっと初歩の初歩の問題だと思うんですが
さっきからいろいろやってもエラーだらけで
何が間違ってるのかさっぱりわからんので
誰か親切な方を待ってみます。

267 :デフォルトの名無しさん:04/07/20 01:26
>>260
あなたの質問がよくわからないのでわかりません。
「どこに入れたらいいか」ってどういう意味?
定義を書く場所?それとも使う場所?
保存する場所だったら冷凍室でいいと思われ。

268 :264:04/07/20 01:30
出力ははっきりしてたorz

269 :デフォルトの名無しさん:04/07/20 01:31
>>267
すみません…定義を書く場所です。
この関数使って通過日数プログラムを作らなければダメなんです。

270 :デフォルトの名無しさん:04/07/20 01:31
>260 たぶん、2文字を数値に直す所に使え、って事だNe!

271 :259:04/07/20 01:33
>>263
ありがとうございます。参考にさせてもらいますね
>>262 >>264
264さんが言うとおりとりあえず構造体を使ってみるのが目的です。

>それよりも、どこからどのように入力して、どこに出力するかの方が分からん。
これ私もわかりませんでしたorz 問題の書き方が悪いのかもしれないので先生に質問してきます。


272 :デフォルトの名無しさん:04/07/20 01:37
>264
>前期と後期の平均じゃないか?

いや。だって、サンプルの結果表示では、前期と後期の点数が、小数点表示になってるよ。
しかも、平均点の項目は、空白だし。

273 :デフォルトの名無しさん:04/07/20 01:38
>272 もう目が悪杉

274 :デフォルトの名無しさん:04/07/20 01:39
ごめん。なってなかった。

275 :デフォルトの名無しさん:04/07/20 01:39
C++の宿題です。
1〜3次関数の式をキーボードから入力し、各係数をdouble型に直して出力せよ。
係数の入力形式は実数(根号を含むものは除く)
ありえない関数の式が入力されたら再入力を促すようにせよ。
関数の入力は f(x)=ax^3+bx^2+cx+d といった形にする。間にスペースがある場合は無効。

入力した関数の式 f(x)=12x^3-4.6x^2+4/3
出力結果 x^3の係数は 12
x^2の係数は 4.6
xの係数は 0
切片は 1.33333333
入力した関数の式 f(X)=qx^3+3.a
出力結果 関数の式が不正です。もう一度入力してください。

不正な式の判定がうまくいきません。
どうがよろしくお願いします。

276 :275:04/07/20 01:45
間違い発見しました。
x^2の係数は 4.6 →x^2の係数は -4.6
どうかよろしくお願いします。

277 :C++:04/07/20 01:47
>263
#include <stdio.h>

struct student
{  int zennki;
  int kouki;
  int banngou;
};
int main(void)
{
 int N, i;
 struct student *s;
 printf("クラスの生徒数を入力してください");
 scanf("%d",&N);
 s = new student[N];
 if( s == NULL )
 { return(-1);
 }
 for( i=0 ; i<N ; i++ )
 {  printf("学生番号を入力してください");
   scanf( "%d" , &s[ i ].banngou );
   printf("前期の点数を入力してください");
   scanf( "%d" , &s[ i ].zennki );
   printf("後期の点数を入力してください");
   scanf( "%d" , &s[ i ].kouki );
 }
 printf("学生番号 前期 後期 平均\n-----------------------------\n");
 for( i=0 ; i<N ; i++ )
 {  printf("%7d %2d %2d %2.1lf\n", s[ i ].banngou, s[ i ].zennki, s[ i ].kouki, (s[ i ].zennki + s[ i ].kouki)/2.0f );
 }
return 0;
}

278 :267:04/07/20 01:54
>>269
ほんとに定義を書く場所?冗談半分だったんだけど・・・。
とりあえずは#include <stdio.h>のすぐ後に書いてみたら?
不格好かもしれないけどたぶん動くだろう。先長そうだね。ガンガレ。

279 :デフォルトの名無しさん:04/07/20 01:55
>>277
struct student s[N];
でイインジャネーノ?



280 :デフォルトの名無しさん:04/07/20 01:57
よかねーよ

281 :デフォルトの名無しさん:04/07/20 02:09
> よかねーよ
C++ じゃないの?


282 :デフォルトの名無しさん:04/07/20 02:12
ああ、そういうことか。
スマンかったね

283 :デフォルトの名無しさん:04/07/20 02:12
int N;
cin >> N;
struct student s[N];

て出来ない?


284 :C++:04/07/20 02:15
>282
struct student s[N];
こんなことやったら、C++でもエラーでしょ。

285 :282:04/07/20 02:20
あれ?
C では new のところで struct student って書かなきゃ
ならないってことが言いたいんじゃなかったのか?

あと入力された値で struct student s[n] は当然エラーだべ。

286 :デフォルトの名無しさん:04/07/20 02:23
(´・ω・`)ショボーン コンパイル通るけど。

#include <iostream>

struct student {
int a;
};

int main()
{
int N;
cin >> N;
struct student s[N];
return 0;
}


287 :デフォルトの名無しさん:04/07/20 02:29
それ、C99ぢゃ...

288 :デフォルトの名無しさん:04/07/20 02:31
>>286
少なくとも手元のgccでは通ったyo。
でも、可変長配列はC99じゃないかぎり本来ならアウトだね。

289 :286:04/07/20 02:35
工エエェェ(´д`)ェェエエ工
gcc しか使ったことのないヲレって

290 :277:04/07/20 02:59
外側のforがi番目(i=0,1,2,3…)の時、それに対応する内側のforのi番目の最後の要素を取得する方法を教えてください。
内側が微分方程式なので最初の要素から解を求めないといけない。つまりこんな感じ。
kekka_hoge[i] kekka_v[i]
○ ×
○ …×
○ ……×  ○に対応する×を表示させたい。

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

int main(){
double hoge, x, v, t;
int Nsteps1 = 4;
int nsteps2 = 10;
double period = sqrt(1.0)*5
double dt = period/Nstep1

x=1;
v=0;
t=0;


291 :290:04/07/20 03:01
名前間違えてる。orz
290の続きです。

for(i=0; i< Nstep1; i++){
hoge = 5 + 3*i;
for(int i = 0;i<Nstep2;i++){
v += -dt*k+x;
x += dt*v;
t += dt;}
kekka_v[i] = v; // kekka_v[i]に内側で計算した結果を、外側でのi番目に対応させて格納したい
}
kekka_hoge[i]; // kekka_hoge[i]はi=0,1,2…iで格納したい
}
for(i=0; i<Nstep1; i++){
for(i=0; i<Nstep2; i++){
printf("%f, %f\n", kekka_hoge[i], kekka_v[i]);}
}
return0;}

292 :290:04/07/20 03:11
double k=2;
を追加します。

293 :デフォルトの名無しさん:04/07/20 03:47
。。。ネタだと思うがあえて質問汁!
なぜ二重ループを同じ変数名でやりますか、あなた?
違うになれませんと、ダメ

294 :デフォルトの名無しさん:04/07/20 04:03
>>291
【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

295 :デフォルトの名無しさん:04/07/20 05:30
漏れが明日のテストが出来なくてで単位落とす確率 1

296 :デフォルトの名無しさん:04/07/20 08:06
>違うになれませんと、ダメ

>漏れが明日のテストが出来なくてで単位落とす確率 1

嘆かわしいなぁ……
自分の書いたもの読み返していないんだろうか。

297 :290:04/07/20 08:35
外側のforがi番目(i=0,1,2,3…)の時、それに対応する内側のforのj番目の最後の要素を取得する方法を教えてください。
内側が微分方程式なので最初の要素から解を求めないといけない。つまりこんな感じ。
kekka_hoge[i] kekka_v[j]
○ ×
○ …×
○ ……×  ○に対応する×を表示させたい。
お願いします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1

298 :デフォルトの名無しさん:04/07/20 09:11
>>290
もしその問題文のまま宿題がだされているなら、あきらめた方が良い。
オレなら投げ出してるね。

299 :デフォルトの名無しさん:04/07/20 09:32
>>297=290
こういうことか?

hoge[0] ← v[0][0], v[0][1], v[0][2] ... v[0][n]
hoge[1] ← v[1][0], v[1][1], v[1][2] ... v[1][n]

hoge[n]

固定サイズでいいならNstep1/Nstep2をマクロで定義して
double kekka_v[Nstep1][Nstep2];
とでもすれば医院で内科医。

300 :デフォルトの名無しさん:04/07/20 10:08
>290
問題はこれか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090279938

301 :デフォルトの名無しさん:04/07/20 10:50
>>290
羅列。

>外側のforがi番目(i=0,1,2,3…)の時、それに対応する内側のforのj番目の最後の要素を取得する
文意が分からないけど、どういうこと?

>#include <stdio.h>
>#include <math.h>
>#include <iostream>
iostramはどこで使ってんの?あと、C++なら
stdio.h→cstdio math.h→cmath
の変更を推奨する。

>int nsteps2 = 10;
>for(int i = 0;i<Nstep2;i++){
ただの間違い?

>double period = sqrt(1.0)*5
ただの間違い?拡張用? sqrt(1.0) → 1.0

>kekka_hoge[i]; // kekka_hoge[i]はi=0,1,2…iで格納したい
せめてここの使い方をはっきりしてくれると分かるかも知れないけど、
何をしたいの?

302 :たのんます。:04/07/20 11:10
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1
お願いします


303 :たのんます。:04/07/20 11:11
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090289379&res=1
上間違えました。こっちお願いします

304 :デフォルトの名無しさん:04/07/20 11:13
くだらない質問で新しくスレ立てる香具師には教えてあげない

305 :たのんます。:04/07/20 11:24
どうやって貼ればいいのかわからなかった。。。


306 :デフォルトの名無しさん:04/07/20 11:28
>>303
概要だけ。
ブロックのスタート地点をi=0..n-1で回す。
その中で、前の要素と値が違ったらブロック長測定開始。
過去の最長<今測ったブロック長なら更新。

…とまぁ、そのままプログラムにすればいいだけだ。

307 :174:04/07/20 11:36
先日課題を手伝ってくださった方、ありがとうございました。

課題のソースをコンパイルした結果、以下のエラーがでてしまい、実行ファイルが
作成できなかったので、再度伺いたいのですが・・・・よろしくお願いいたします。

課題1:のコンパイル結果

エラー E2140 untitled.c 17: ここでは宣言はできない(関数 main )
警告 W8057 untitled.c 49: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 untitled.c 49: パラメータ 'argv' は一度も使用されない(関数 main )
エラー E2140 untitled.c 54: ここでは宣言はできない(関数 InputNumeric )
エラー E2140 untitled.c 63: ここでは宣言はできない(関数 InputSignal )
エラー E2140 untitled.c 87: ここでは宣言はできない(関数 AnalyzeString )
*** 4 errors in Compile ***
*** コンパイル終了 ***


308 :174:04/07/20 11:36
続きです・・・

課題2のコンパイル結果
エラー E2140 untitled.c 26: ここでは宣言はできない(関数 main )
警告 W8057 untitled.c 59: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 untitled.c 59: パラメータ 'argv' は一度も使用されない(関数 main )
エラー E2140 untitled.c 64: ここでは宣言はできない(関数 InputNumeric )
エラー E2140 untitled.c 78: ここでは宣言はできない(関数 InputSignal )
エラー E2140 untitled.c 108: ここでは宣言はできない(関数 AnalyzeString )
*** 4 errors in Compile ***
*** コンパイル終了 ***

以上です。
コンパイラはBorland C++ 5.5.1 for Win32 を使用しています。
このエラーを処理し正常にコンパイルさせる方法が自分ではわからず、
再度お願いしたいのですが・・・・
ソースを作っていただき、勝手をいって申し訳ないのですが・・・・
よろしくお願いします。orz


309 :デフォルトの名無しさん:04/07/20 11:39
ソース書けボケ

310 :174:04/07/20 11:41
あ、ソースですね・・・
ごめんなさい。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=172
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=173

です。申し訳ない。

311 :デフォルトの名無しさん:04/07/20 11:42
>306
プログラムを書いてもらえるとうれしいのですが。。。
というか、書けません。

312 :174:04/07/20 11:43
再度修正、上が課題1でその下が課題2のソースです。


れんかき、すまそ


313 :デフォルトの名無しさん:04/07/20 11:44
教えてようかんマン

三角形の三辺を入力し、三角形の形(正三角形、二等辺三角形、直角三角形)を判別し、
さらに面積を求めよ。
ただし、ポインタ変数を引数にもつ関数を使用せよ。

ポインタ変数がよくわかんねっす。orz

314 :174:04/07/20 11:45
れんかき、ごめん。
課題1:が
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=172

課題2
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=173

になります。
何度もスレ汚して、ごめん。

315 :デフォルトの名無しさん:04/07/20 11:53
>>313
戻り値が判別結果と面積の2つだから、
片方は普通の戻り値、もう片方はポインタ変数で返せ
ってことではないかと推測されます。

構造体を戻り値にするのが好みの人もいるが。


316 :デフォルトの名無しさん:04/07/20 11:59
>>314
どちらも一行目よりも上の部分に問題があると思われ

317 :174:04/07/20 12:38
えと、
先ほどのソースが修正後のもので・・・・以下が修正前のやつです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=169
んで、修正前のものには、インクルードされてるものが入っていました。
以下のものがインクルードで宣言されています。
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
上記のインクルードの宣言をいれて、>>341のURLにあるソースに
付け加えた場合、>>307-308のコンパイルエラーが発生します。

長々と、居座ってしまい申し訳ないですが、よろしくお願いします。


318 :デフォルトの名無しさん:04/07/20 12:47
>>317
それにしても警告の行数とソース上の位置が一致しないが?

319 :デフォルトの名無しさん:04/07/20 12:57
>>317
変数の宣言位置
ANSI C 標準に準拠している C 言語でのローカル変数の宣言は
かならず、関数などのブロックの先頭で宣言しなければいけません
http://black.sakura.ne.jp/~third/programming/cpp/cpp3.html

320 :デフォルトの名無しさん:04/07/20 13:05
>>317
ファイル名が untitled.c になっているが、
kadai1.cpp とかにしてみ?

321 :174:04/07/20 13:21
んと、皆さんありがとうございました。
一応コンパイルはうまくいきましたが、実行後新たなる問題が・・・・

@319さんのご指摘どおり、ブロックの先頭で宣言した場合コンパイルは
成功しました。
A実行ファイルが作成され、それを実行し動作確認をしたところ以下の現象が出ました。
1:11と入力した場合、1桁の数字として認識されている。
※2桁以上の計算ができない・・・
2:11=と入力した場合、演算子を入力していないのに、+の演算子が保持されている
結果が出る。

という現象が起きていますが・・・自分では解決できないです・・・
何度も申し訳ないです。


322 :174:04/07/20 13:23
連カキごめんなさい。

もうちょい、自分でもがいてみます・・・・
皆さんには、お手数をかけてばっかりでごめんなさい。

なんで、プログラムってこんなにむずいんだろう・・・・orz

323 :デフォルトの名無しさん:04/07/20 13:42
>>321
おまいさん最初に書いた時、そこのところに触れてないやん?
自分の考えを相手が理解してくれるなんて考えは大間違い。
仕様は細かく書くべし。社会に出る前に覚えておいて損無し。


324 :デフォルトの名無しさん:04/07/20 13:48
ついでにプログラマなら機種依存文字なんぞ使うなよ、と。

325 :デフォルトの名無しさん:04/07/20 13:55
それはちょっと違う。
わざわざ面倒くさい変換をしてまで妙な文字を使うことはない。

326 :デフォルトの名無しさん:04/07/20 14:06
宿題で、文字をアルファベットで入力して、それをあるアルファベットの文字を抜いた
文字を表示するっていう問題なんです。
例えば、"ajisainohana"なんていうのを入力して、
この文字列の中の'a'だけを抜いた文字列を表示させる問題らしいです。
for文を使うって、配列を使うっていうのは多分合ってるとは思うのですが、
全然プログラムが書けません。
どうか、お願いします。

327 :326:04/07/20 14:07
c++でお願いします

328 :デフォルトの名無しさん:04/07/20 14:16
>>326
あるアルファベットっていうのはキーボードから入力するのか?
それとも固定?ランダムで発?

329 :デフォルトの名無しさん:04/07/20 14:29
要求仕様はプログラム完成後に完結する。
基本仕様は完成品を顧客が見てから決定される。
詳細仕様は使用者がプログラムを動かしてから固まる。


330 :デフォルトの名無しさん:04/07/20 14:29
>>328
argv です


331 :デフォルトの名無しさん:04/07/20 14:31
>>329
174 は顧客レベルってことを言っているようだが


332 :326:04/07/20 14:55
328さん、キーボードからの入力です。まだランダムのやり方は習っていないので・・・。
でも、できたらそのプログラムも教えてもらえたら嬉しいです。

333 :デフォルトの名無しさん:04/07/20 15:12
Cで宜しくお願いします
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090303815&rm=50

334 :デフォルトの名無しさん:04/07/20 15:30
>>326
#include <iostream.h>
main(){
char str[100] ;
char check[2] ;
cout<<"文字列を入力して下さい。>>" ;
cin >> str ;
cout<<"抜き出す文字を入力して下さい。>>" ;
cin >>check ;
for(int i=0 ; str[i]!='\0'; i++){
if(str[i] != check[0]) cout<<str[i] ;
}
return 0 ;
}

335 :デフォルトの名無しさん:04/07/20 15:36
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define MAXBUF 256

void main(void)
{
  char buf[MAXBUF];
  char ch;
  char *ptr;

  srand((unsigned)time(NULL));

  while(1){
    printf("文字列を入力してください[a-z]: ");
    fgets(buf, MAXBUF, stdin);
    if(buf[0] == '\n')
      break;
    buf[MAXBUF - 1] = '\0';
    ch = rand()%25 + 97;
    printf("'%c'を除去\n", ch);
    ptr = buf;
    while(*ptr){
      if(*ptr != ch)
        printf("%c", *ptr);
      ptr++;
    }
    printf("\n");
  }
}


336 :326:04/07/20 15:44
ありがとうございました!!


337 :再提出( ◆n/z3fbXm8E :04/07/20 16:00
うまくいったように見えますが、key となる科目の点数が移動した
だけです。20人の学生の他の科目も一緒に整列しないと、各学生の
点数が変わってしまいます。このプログラムの考え方は、data[][]
の内容を変えずに、data[][]をもとにsptr[]を並び替えることによ
り、整列させようというものです。



338 :再提出( ◆n/z3fbXm8E :04/07/20 16:01
/* 挿入ソート insertionsort.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N_MAX 30 /* 学生の最大数 */
#define S_MAX 10 /* 科目の最大数 */
void insertionsort(int [][S_MAX], int, int [], int key);

void main(void)
{
int data[N_MAX+1][S_MAX];
char name[N_MAX+1][20];
int nstudent, nsubject, sptr[N_MAX+1];
int key,i,j;
FILE *fp;

if((fp=fopen("data2.txt","r")) == NULL) {
printf("data2.txt を開くことができません\n");
exit(1);
}
fscanf(fp,"%d",&nstudent);
fscanf(fp,"%d",&nsubject);
for (i=1; i<=nstudent; i++) {
if (fscanf(fp,"%s",name[i]) == EOF) exit(1);
for (j=0; j<nsubject; j++) {
if (fscanf(fp,"%d",&data[i][j]) == EOF) exit(1);
}
sptr[i] = i;


339 :再提出( ◆n/z3fbXm8E :04/07/20 16:01
}
fclose(fp);
// @ data[0][j]の初期値の設定
data[0][j] = 0;
printf("key (0〜%d)を入力> ", nsubject-1); scanf("%d",&key);
insertionsort(data, nstudent, sptr, key);
for (i=1; i<=nstudent; i++) {
printf("%10s : ",name[sptr[i]]);
for (j=0; j<nsubject; j++) printf("%3d",data[sptr[i]][j]);
printf("\n");
}
}

/*========= 挿入ソート =========*/
void insertionsort(int a[][S_MAX], int n, int sptr[], int key)
{

// A挿入ソートの手続き
void swap(int *, int *);
int i, j, v;

for(i=2; i<=n; i++) {
v = a[sptr[i]][key]; j = i;
while( j>1 && a[sptr[j-1]][key]>v){
a[sptr[j]][key] = a[sptr[j-1]][key]; j--;
}
a[sptr[j]][key] = v;


}
}


340 :再提出( ◆n/z3fbXm8E :04/07/20 16:03
ラスト課題…まじわからんっす(##)
ようかんマン助けてぇ〜

341 :デフォルトの名無しさん:04/07/20 16:30
#include <iostream.h>
void sai(const char *a, char *b){
for(; *a; a++){
if(*a != 'b'){
*b = *a;
b++;
}
}
    cout << b << endl; //ここもです!!
}
void ai(char *a){
char b[5];
sai(a, b);
cout << b << endl;  //ここです!!
}
int main(){
char a[12];
cin >> a;
ai(a);
return 0;
}

てな感じのプログラムなんですが、動作はするんですけど、
出力の所で、'b'を除いたは出力されるんですけど、その後に辺な文字とかが出てきてしまうんです。
これをどう解決したらいいのか、教えて下さい。
お願いしまーすっ

342 :デフォルトの名無しさん:04/07/20 16:34
>for(; *a; a++){
文字列終端が、ループ抜けの条件としては有効に使われてるけど、
それもふくめて配列 b に移さないといかんでしょう。
でなきゃ先に配列を初期化しておく。

343 :デフォルトの名無しさん:04/07/20 16:35
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・ω・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

344 :デフォルトの名無しさん:04/07/20 16:45
342さん
えっと、なんとなくですけど、わかりました。
けど、どう書いたらいいのか、わからないです〜
つまり、ヌルが無いからダメって事なんでしょうか?

345 :デフォルトの名無しさん:04/07/20 16:58
>>344
そうです。
for 内と同じく for 後で *b = *a; とすれば、
*b は次の文字が入るべき位置、
*a はヌル値を表します(for を抜ける条件であり、成立した直後である)から、
とりあえず目的は達するでしょう。

ちなみに、配列の大きさは大丈夫ですかね。
b[5] なら表示される文字数にして 4 文字が限度になりますよ。

346 :344:04/07/20 17:11
345さん
申し訳ないのですが、forの所は、うちの先生が始めから作成したものでして、
抜けている所があるから付け足せっていう問題なんです。
なので、自分としては、なぜforから抜けた直後に*b=*aなのかが
わかりません。

347 :デフォルトの名無しさん:04/07/20 17:38
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

348 :デフォルトの名無しさん:04/07/20 18:23
 | う〜ん 最近の小学生は    /
 |    シマリがいまいちだな..  /
.   ____
   | |・A・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) ズポ
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 ズポ


  幼 姦 マ ン 登 場

349 :ようかんマン ◆nup627Y0Gs :04/07/20 18:38
>>333
    ,.、  ,r.、
    ,! ヽ,:'  ゙;.
.    !  ゙;;  }
     ゙;  ii ,/
    ,r'      `ヽ、
   ,i"   _    _ :
   !.  ・     ・,!
   ゝ_    )-( . ,!_
    /`''''''''''''  .ノ∀・|ノ
   .!    二つ__|
    ゙''::r--、::---|-|
      ゙'ー-‐゙ー-゙'           _
再帰もスタックの一種・・・かな?  |・/

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

350 :デフォルトの名無しさん:04/07/20 18:41
点数データ(初期値代入)が入った1次元配列のアドレス・人数を受け取って、
その最大点、最小点 平均点を求めて返す関数を作成してもらえたら助かります
前はC++で作成してもらったのですが、今度はC言語で解かないといけなくなりました。
提出日が今日までなのでお分かりの方いましたらお願いいたします。



351 :デフォルトの名無しさん:04/07/20 18:43
以下のプログラムはnCrでn=50、r=1〜50を求めるために作ったのですが
これを実行すると途中で計算が狂います。原因と解決する方法を教えてください

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

int main(void)
{
int n = 50, m, A, S = 1;
int r;
int P = 1;
int k;

for(r = 1; r <= 51; r++)
{

for( k=n-r+1; k<=n; k++ ) P *= k;
for( m = 1; m <= r; m++ ) S *= m;
A = P / S;
printf("%d, %d, %d\n", n, r, A);
P = 1; S = 1;
}
return 0;
}

352 :デフォルトの名無しさん:04/07/20 18:54
/************************************************************/
/*与えられたデータ数、点数から最高、最低、平均点を求める*/
/*void Func(int, int*, int*, int*, double*)*/
/*引数:intデータ数*/
/*:int*点数データ*/
/*:int*最高点格納アドレス*/
/*:int*最低点格納アドレス*/
/*:double*平均点格納アドレス*/
/************************************************************/
void Func(int numData, int *Point, int *Max, int *Min, double *Average)
{
inti;

// 値の初期化
*Max = *Min = 0;
*Average = 0.0;

for(i=0; i<numData; i++){
*Average += *(Point + i) / numData;
if(*Point > *Max){
*Max = *Point;
}
if(*Point < *Min){
*Min = *Point;
}
Point++;
}

return;
}

いかがでしょうか。採点願います。

353 :デフォルトの名無しさん:04/07/20 18:57
>>350

int max(int* data, int size) {
  int i,m;
  
  if (size <= 0)  return 0;
  
  for (i=0,m=*data; i<size; i++,data++)
    if (*data > m)  m = *data;
  return m;
}

int min(int* data, int size) {
  int i,m;
  
  if (size <= 0)  return 0;
  
  for (i=0,m=*data; i<size; i++,data++)
    if (*data < m)  m = *data;
  return m;
}

int average(int* data, int size) {
  int i,m;
  
  if (size <= 0)  return 0;
  
  for (i=0,m=0; i<size; i++,data++)
    m+= *data;
  return m/size;
}

354 :デフォルトの名無しさん:04/07/20 18:59
>>352
int *Point は const に
Average は Point が int なので numData で割るのは一番最後にする(このとき double にキャストする)

355 :350:04/07/20 19:09
>>352-353
お早い回答に感謝いたします。
ですが350さんのプログラムでやらせていただきますと最初にビルドしてエラーが
出たのでinti;をint i;でもう一度ビルドしたところ
error LNK2001: 外部シンボル "_main" は未解決です
Debug/prog21.exe : fatal error LNK1120: 外部参照 1 が未解決です。
のようなエラーが出てしまいました。
351さんのプログラムでやらせていただきますと上と同じようなエラー
error LNK2001: 外部シンボル "_main" は未解決です
Debug/prog21.exe : fatal error LNK1120: 外部参照 1 が未解決です
がでてきました。

356 :デフォルトの名無しさん:04/07/20 19:29
>>351
int型じゃそんなでかい数は扱えないぜ

357 :デフォルトの名無しさん:04/07/20 19:33
intのサイズが32bitと誰が決めたのか〜♪

358 :デフォルトの名無しさん:04/07/20 19:44
>>357
あぁ、スマン。たしかに int型 が 215Bit 以上なら 50! も格納できるわ。

359 :デフォルトの名無しさん:04/07/20 19:45
>>351
アルゴリズム変えないと無理だっぺよ

360 :初心者:04/07/20 20:01
配列において,同一の値を持ついくつかの連続する要素を,ブロックと呼び,
その要素の個数をブロックの長さと呼ぶことにする.整数型配列 data の最初
から n 個の要素に値が入っているとする,この配列のもっとも長さの長いブロ
ック(そのようなブロックが複数個ある場合は,添え字の小さい方)の先頭要
素の添え字を返す関数
int longest_block(int data[], int n)
を定義せよという問題をといてもらえないですか?




361 :デフォルトの名無しさん:04/07/20 20:05
>>360
>>303
>>306

362 :質問です:04/07/20 20:08
Cでの文字列処理について質問させて下さい。

char yymmdd[9];
として、yymmdd に8桁の日付を入れてあります(20040720 等)。
ここから先頭の2文字を削除して、
040720 にする方法をご存知でしたら教えて下さい。

363 :デフォルトの名無しさん:04/07/20 20:10
&yymmdd[2]

364 :質問です362:04/07/20 20:12
>>363さん
ありがとうございます!
出来ました!!

365 :教えてください!:04/07/20 20:14
終端記号 END == -1 をもつ、整数型配列のデータを、逆順に並べ替える関数
void reverse(int data[])
を作れという問題なんですがわからないので教えてください。


366 :デフォルトの名無しさん:04/07/20 20:15
>>360
mainとかは>>303を使ってくれ。
int longest_block(int *data, int n)
{
int i, j, length, max;
max = 0;
for(i = 0; i < n - max; i++) {
if(i == 0 || data[i -1] != data[i]) {
for(j = i + 1; data[i] == data[j]; j++);
length = j - i;
if(length > max) max = length;
i = j;
}
}

return max;
}


367 :360:04/07/20 20:17
>>366さん
ありがとうございます。

368 :デフォルトの名無しさん:04/07/20 20:20
test

369 :C言語初心者:04/07/20 20:25
整数の素因数分解をする関数 factor_integer を作れという問題を
宿題でだされました。このもんだいをとける方がいればお教えして
もらえませんか?

370 :ねぇ、名乗って:04/07/20 20:54
>>369

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

void factor_integer(int n)
{
int i;
int sqrt_n = (int) sqrt(n);
for(i = 2; i <= sqrt_n; i++) {
while(!(n % i)) {
n /= i;
printf("%d ", i);
}
sqrt_n = (int) sqrt(n);
}

if(n != 1)
printf("%d", n);

printf("\n");
}


371 :ねぇ、名乗って:04/07/20 20:56
0, 1 は素因数分解できないっていう定義でOK?

372 :C言語初心者:04/07/20 20:58
>>370さん
どうもありがとうございました。

373 :デフォルトの名無しさん:04/07/20 21:12
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |^∀^| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 参 上

374 :デフォルトの名無しさん:04/07/20 21:14
昨日、質問したんですが、誰も解いてくださいませんでした。ようかんマンさんお願いします。
2週間づつ表示したんですが、どうしてもできないんです(>_<)ソースは以下です。
#include <stdio.h> int calen(int x,int y); int days(int n,int g);
int uru(int n);int calout(int n,int g,int h);
int main(void){
int x,y;
printf("年 : "); scanf("%d",&x);
printf("月 : "); scanf("%d",&y);
calen(x,y);}
int calen(int x, int y){
int z,i,calout(int n,int g,int h),days(int n,int g);
printf("%4d / %d\n",x,y); printf(" 日 月 火 水 木 金 土"); printf(" 日 月 火 水 木 金 土\n");
for(i=0 ; i < calout(x, y, 1)*4 ;i++) printf(" ");
for(z=1 ; z <= days(x,y) ; z++){ printf("%4d",z);
if(!((z)%14)){ printf("\n");} } printf("\n"); return(0); }
int days(int n,int g){
int uru(int n); if(g == 2){ if(uru(n) == 0) return(28); else return(29); }
if(g == 4 || g == 6 || g == 9 || g == 11) return(30); else return(31); }
int uru(int n){ if((n%4==0&&n%100==0)||(n%400==0)) return(1); else return(0); }
int calout(int n,int g,int h){
if(g>2) g=g-2; else{ n=n-1; g=g-10;}
return ((n+n/4-n/100+n/400+(int)(2.6*g-0.195)+h)%7); }

375 :デフォルトの名無しさん:04/07/20 21:24
>>346
そんならはじめからそう書きなさいな。0から全部書けって宿題も少なくないんだから、
あなたの場合は書いたとこまでは分かってて書いたんだなと思っちゃったよおじさんは。
ヌルとかなんとか要点抑えてるし。

char *b ははじめここを指してる

謎謎謎謎謎謎・・・・(関数呼び元の配列サイズに関係なくメモリ領域は延々続く)

char *a はここ

abc\0・・・・(これも同様だが一応ヌルが終端)

a が指しているところから順に格納していくと

   *b
abc謎謎謎・・・・
   *a
abc\0・・

ここまできたところで for の継続条件(*a が ヌルでない)が成立しなくなり、
*b の指しているところは初期化されていない謎の文字のまま関数が終了してしまう。
転送処理がもうワンステップ要る。(その前後、++ する必要はない)OK?

376 :デフォルトの名無しさん:04/07/20 21:25
>>374はここ数週間住み着いてる荒らしだからスルーで

377 :375:04/07/20 21:29
あ、'b' は除くんだっけか。そのつもりで文字列 abc にしたのに。
いいや分かるね。うん。

378 :デフォルトの名無しさん:04/07/20 21:40
a[16],b[16],c[16]をint型の配列とし初期値としてaとbの各要素には0又は1を格納しておく
。aとbに格納されたビット列を整数の2の補数表現と解釈し
aとbの和の二進数表現をcに格納し
a、b、cの内容を表示するプログラムを作成せよ

よろしくお願いします

379 :デフォルトの名無しさん:04/07/20 21:42
log10で変換後の式が 10の(-2.0+0.4*i)乗 の場合、log10で変換する前の式を
求めるにはどうすればよいですか?

380 :デフォルトの名無しさん:04/07/20 21:45
配列[3][100]にn<=100人の数学、物理、英語のテストの結果を読み込み
三教科の合計点が最も高い人の番号と
その得点を表示するプログラムを作成せよ
ただし、入力データはあらかじめファイルに作成しておき、リダイレクションを用いて
入力させること

よろしくお願いします

381 :デフォルトの名無しさん:04/07/20 22:05
整数型配列 data の data[0] から data[n-1] の要素を順番に見たとき,
何回値が変化するかを返す関数 int count_change(int data, int n) を作れ。
という問題です。
おねがいします。

382 :デフォルトの名無しさん:04/07/20 22:07
int count_change(int* data, int n)
じゃなくて?

383 :デフォルトの名無しさん:04/07/20 22:08
>376 お前に質問してんじゃねぇって感じ。じゃな〜い?>375どうなの?

384 :381:04/07/20 22:10
>>382さん
int count_change(int* data, int n)
でした。。。

385 :デフォルトの名無しさん:04/07/20 22:12
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |^q^| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 参 上

386 :デフォルトの名無しさん:04/07/20 22:19
>>381

int count_change(int* data, int n)
{
int i;
int count = 0;
for(i = 0; i < n - 1; i++)
if(data[i] != data[i + 1])
count++;

return count;
}

387 :381:04/07/20 22:22
>>386さん
どうもありがとうございました!
たすかりました。

388 :デフォルトの名無しさん:04/07/20 22:23
>>380
入出力のフォーマットが分からない。
具体例を挙げて。

>>379
変換て何?



389 :デフォルトの名無しさん:04/07/20 22:29
>>379
log10(x) == 10の(-2.0+0.4*i)乗 を満たすxを求めるって意味なら
pow(10, 10の(-2.0+0.4*i)乗)

390 :デフォルトの名無しさん:04/07/20 22:30
#include<stdio.h>

int main(){
int n, k=10;

for(n=8; n<12; n++){
printf("aa\t%dAAA%d\n",k,n);
}

return 0;
}

これをコンパイル、実行すると
aa 10AAA8
aa 10AAA9
aa 10AAA10
aa 10AAA11

となります。これを
aa 10AAA8
aa 10AAA9
aa 10AAA10
aa 10AAA11

とするには、どうすれば良いのでしょうか?


391 :390:04/07/20 22:33
半角スペースは受け付けなかった…orz

10, 11になると、8, 9より一つお尻が出てしまう状態です。
これを、10AAAごと1つ前にずらして、左から見て最後の桁をそろえたいのです。
おながいします。

392 :デフォルトの名無しさん:04/07/20 22:38
#include<stdio.h>

int main(){
int n, k=10;
char buf[16];
for(n=8; n<12; n++){
sprintf(buf, "%dAAA%d",k,n);
printf("aa\t%7s\n", buf);
}

return 0;
}


393 :デフォルトの名無しさん:04/07/20 22:42
>>391
どうだろう

#include<stdio.h>

int main(void)
{
int n, k=10;
char buf[256];
for(n=8; n < 12; n++) {
sprintf(buf, "%dAAA%d", k, n);
printf("aa%9s\n", buf);
}
return 0;
}


394 :デフォルトの名無しさん:04/07/20 22:44
かぶった (´・ω・`)ショボーン

395 :390:04/07/20 22:45
>>392
レスありがとうございます。
して、その"16"という数値はどこから来たものなのでしょうか?
適当でよろしいのでしょうか?

396 :390:04/07/20 22:47
>>393氏もありがとうございます。
バッファの文字数を動的に確保しようと思うのですが、
int *buf;

buf = (int *)malloc(sizeof(int)*(???))
で困っております。

397 :デフォルトの名無しさん:04/07/20 22:47
>>394
□⊂('ー' ) オチコマナイデ...

398 :390:04/07/20 22:48
bufの文字数ではなくてbufの領域ですた。
連レス スマソ

399 :392:04/07/20 22:51
>>395
うん、てきとー

400 :390:04/07/20 22:53
bufはchar型やん…もうだめぽ

401 :379:04/07/20 22:54
10^-2は0.01じゃないですか、じゃぁ10^(-2.0+0.4*i)はどうやって表現すれば
いいんですか?

402 :390:04/07/20 22:54
>>399
適当…でつか。
動的に確保する場合には、どう記述すればよいのでしょうか?

buf = (char *)malloc(sizeof(char)*(???));
おながいします。

403 :デフォルトの名無しさん:04/07/20 22:57
>>401
>>389よくみろ

>>402
strlen()使えばいんじゃないかな

404 :デフォルトの名無しさん:04/07/20 22:57
>>401
pow(10, -2.0 + 0.4 * i)

405 :デフォルトの名無しさん:04/07/20 23:00
>>402
sizeof(char)*はいらない。無意味。

406 :デフォルトの名無しさん:04/07/20 23:02
ついでにいうと(char *)もいらない

407 :デフォルトの名無しさん:04/07/20 23:04
>>406
390は古いコンパイラを使ってるかも知れんぞ

408 :デフォルトの名無しさん:04/07/20 23:05
漏れは合った方がぱっと見わかりやすくていいと思うんだけど…

409 :デフォルトの名無しさん:04/07/20 23:05
>>406
いやC++かもしれないぞ。
>>402
まじめにそうならnew使えよ。

410 :デフォルトの名無しさん:04/07/20 23:12
forループで1-MAXまでまわして、
iの値の桁数が 3で割り切れるときは 愛の三乗、
3でわって1あまる時は iの二乗、
それ以外のときはiを sumに足していくプログラムを 教えてください

411 :デフォルトの名無しさん:04/07/20 23:13
愛の三乗ハァハァ

412 :デフォルトの名無しさん:04/07/20 23:13
>>410
MAXは負の値で定義されてますか?

413 :デフォルトの名無しさん:04/07/20 23:15
>>412
1からMAXまでって意味だと思うよ。

414 :デフォルトの名無しさん:04/07/20 23:15
俺も一瞬1引くMAX!?と思った。 1からMAXという意味なんだろうけど。

415 :デフォルトの名無しさん:04/07/20 23:20
>>401
君は10^(0.4*i)が具体的にいくらか知ってるかね?
多分ここでiは虚数単位なんだろうけど。

…一応言っておくと、これはプログラムの範囲じゃなくて数学。

416 :410:04/07/20 23:24
s/愛の三乗/iの三倍/; ですた。スマソ。

で桁数の求め方が分からんのよ。
しかもループ毎に求めるとなると、時間がかかるから、そこをどうしたらいいのかさっぱり分からん

417 :デフォルトの名無しさん:04/07/20 23:24
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

418 :デフォルトの名無しさん:04/07/20 23:25
>>416
iを文字列に変換して、文字数数えるとか

419 :デフォルトの名無しさん:04/07/20 23:31
>>410
愛の三乗って素敵やん

420 :味のり:04/07/20 23:34
生徒番号 国語 数学 理科 社会
1001 85 74 63 90
1002 78 65 70 62
1003 89 92 88 76
1004 32 48 66 25
1005 92 76 81 98

評価法: 平均点    評価
     80以上    A
     70〜79 B
     60〜69    C
     それ以下   D

実行結果
NO Kokugo Sugaku Rika Syakai Ave. Eva.
1001 85 74 63 90 78.00 B
1002 78 65 70 62 68.75 C
1003 89 92 88 76 86.25 A
1004 32 48 66 25 42.75 D
1005 92 76 81 98 86.75 A

のようなプログラムです。お願いします。
あと、生徒番号は1次元配列、点数には2次元配列を使ってください。








421 :ねぇ、名乗って:04/07/20 23:36
1 から MAX まで、インクリメントが1なら、桁数は
1桁から log10MAX まで10毎に1増えるだけじゃない?



422 :デフォルトの名無しさん:04/07/20 23:37
>のようなプログラムです

のような。


423 :デフォルトの名無しさん:04/07/20 23:38
>>421
10毎とは?

424 :デフォルトの名無しさん:04/07/20 23:38
>>416
桁数は、愛>=1 に限定すれば、(int)log10(愛) + 1 でも求められる

425 :デフォルトの名無しさん:04/07/20 23:58
>>420
生徒データはキーボード入力かファイル入力か。
でもって言語は?

426 :ねぇ、名乗って:04/07/21 00:00
>>410
確認宜しく
#include <stdio.h>
int main()
{
int i;
int sum = 0;
int MAX = 10;
int r = 1;
for(i = 1; i <= MAX; i++) {
switch(r % 3) {
case 0: sum += i * i * i;
break;
case 1: sum += i * i;
break;
case 2: sum += i;
break;
}
if(!(i % 10)) { r++; }
}
printf("%d\n", sum);
return 0;
}


427 :410:04/07/21 00:02
>>424
なるほど常用対数かー。
文字に直すとか10で割った回数を数えるとかするよりは
そっちのほうがスマートで早そうだね。

スレのみんなの愛に感謝

428 :デフォルトの名無しさん:04/07/21 00:03
>>426
だからなんで10毎に桁数が増えるんだよ?

429 :410:04/07/21 00:04
>>426
サンクスコ!それだけあればなんとかできると思うです♥

430 :デフォルトの名無しさん:04/07/21 00:05
>>427
スマートだが遅いよ

431 :ねぇ、名乗って:04/07/21 00:05
全然違ったね。Σ(゚д゚lll)ガーン

432 :デフォルトの名無しさん:04/07/21 00:06
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |*∀*| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

433 :378:04/07/21 00:07
すみませんお願いします

434 :420:04/07/21 00:20
>>425
ファイル入力です。プログラム内に値は入れる。

あと、言語はCです。

よろしくお願いします。

435 :デフォルトの名無しさん:04/07/21 01:03
Cの問題です。
文字列stringの長さを返す関数int strlen(const char *string);を作成しなさい。
1)関数の本体で配列演算子[]を使わずに作成しなさい。
2)関数の本体で参照演算子*を使わずに作成しなさい。


なるべくシンプルなものでお願い致します。

436 :デフォルトの名無しさん:04/07/21 01:15
>>435
1)と2)を同時に満たすものを作れと?


437 :デフォルトの名無しさん:04/07/21 01:18
>>435
1)
int strlen(const char *p)
{
    int i;
    for (i = 0; *p++; i++);
    return i;
}

2)
int strlen(const char *p)
{
    int i;
    for (i = 0; p[i]; i++);
    return i;
}


438 :デフォルトの名無しさん:04/07/21 01:20
>>436
bool isnull(const char *p)
{
    return (*p=='\0') ? true : false;
}

int strlen(const char *string)
{
    int nLen=0;

    while(!isnull(string++))
        nLen++;

    return nLen;
}

こんなのはだめだろうか…?

439 :デフォルトの名無しさん:04/07/21 01:24
>>438
isnullの中で*使うのはアリなのか?

440 :425:04/07/21 01:25
>>420
でけたよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=175


441 :デフォルトの名無しさん:04/07/21 01:27
>>436
あ、いえ、別々です。

442 :275:04/07/21 01:43
先日質問させていただいたのですがスルーされたのでもう一度質問さていただきます。
C++の宿題です。
1〜3次関数の式をキーボードから入力し、各係数をdouble型に直して出力せよ。
係数の入力形式は実数(根号を含むものは除く)
ありえない関数の式が入力されたら再入力を促すようにせよ。
関数の入力は f(x)=ax^3+bx^2+cx+d といった形にする。間にスペースがある場合は無効。

入力した関数の式 f(x)=12x^3-4.6x^2+4/3
出力結果 x^3の係数は 12
x^2の係数は -4.6
xの係数は 0
切片は 1.33333333
入力した関数の式 f(X)=qx^3+3.a
出力結果 関数の式が不正です。もう一度入力してください。

不正な文字列の判定がややこしくて方針が立ちません。
プログラム書くのめんどくせーよと思ったらプログラムの流れだけでもよいので
教えてもらえるとうれしいです。
どうかよろしくお願いします。


443 :デフォルトの名無しさん:04/07/21 01:44
アンカーだけでいいだろボケ

444 :デフォルトの名無しさん:04/07/21 01:48
row行5列の2次元整数配列aに含まれる要素のうち最大値を返す関数int max(const int a[][5],int row);を作成してください。例えば下記の例では、出力は"max=78"となる。

#include<stdio.h>

int main()
{
const int a[][5] = {{2, -80, -44, -98, 14},
{18, 74, -8, 78, -67},
{48, -54, -1, -39, 45};
printf("max = %d\n",max(a,sizeof(a)/sizeof(a[0])));
return 0;
}

1)関数の本体で参照演算子*を使わずに作成しなさい。
2)関数の本体で配列演算子[]を使わずに作成しなさい。

445 :デフォルトの名無しさん:04/07/21 01:49
↑あ、こちらもなるべくシンプルなものでお願い致します。

446 :デフォルトの名無しさん:04/07/21 01:50
プログラムの流れ

1〜3次関数の式をキーボードから入力し、各係数をdouble型に直して出力する。
ありえない関数の式が入力されたら再入力を促すようにする。


447 :デフォルトの名無しさん:04/07/21 01:50
>>437
ありがとうございます!

448 :デフォルトの名無しさん:04/07/21 01:52
>>444-445
それくらい自分で出来るでしょ?

449 :420:04/07/21 01:56
>>440さん
すいません。
プログラムに直接点数は入れておいていいんですが…

450 :デフォルトの名無しさん:04/07/21 02:01
>>449
ちゃんとsubject.txtのファイル読む処理入ってるだろ!
それぐらいソース読んでから聞けや!

451 :425:04/07/21 02:04
>>449
直接って…ファイル入力って言ったやん。俺もうパス('A`)

452 :デフォルトの名無しさん:04/07/21 02:07
>>420みたいな香具師って…

453 :デフォルトの名無しさん:04/07/21 02:08
>>451
  >>434
  >>>425
  >ファイル入力です。プログラム内に値は入れる。

「ファイルに書き込む」=「ファイル入力」
という意味だったらしい。


454 :425:04/07/21 02:33
>>449
パスって言ったけど取り合えずやっておいた。情報は小出しにせず正確に書いてくれ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=176

455 :デフォルトの名無しさん:04/07/21 03:12
みんな親切すぎ

456 :デフォルトの名無しさん:04/07/21 03:17
>>455
自己顕示欲が強いだけだよ

457 :デフォルトの名無しさん:04/07/21 03:20
結局みんながやってることって
質問者の成長の為には良くないよな


458 :デフォルトの名無しさん:04/07/21 03:27
みんな暇潰しにやってんじゃねーの?質問者の為ってここに投げてる時点で心配するだけ無駄

459 :デフォルトの名無しさん:04/07/21 03:30
>>457
成長する気がある人は宿題丸投げなんてしません。

460 :デフォルトの名無しさん:04/07/21 03:38
>>459
そんなやつらが情報系の学校卒業して業界に就職してくることを考えると
結局はそいつらの面倒見ないといけなくなって足手まといになるのでは?


461 :デフォルトの名無しさん:04/07/21 03:39
>>460
ここにいるのは暇な学生かひきこもりだから関係ないよ

462 :デフォルトの名無しさん:04/07/21 03:59
うそを教えて卒業できなくするのが一番いいのかな

463 :デフォルトの名無しさん:04/07/21 04:05
>>462
答えのソースもらっても実行確認すらせずに提出するんだろうな・・・


464 :ヘルプ:04/07/21 04:21
入力された3値を辺に持つ三角形の種類およびその面積を表示するプログラムを作成せよ。ただしポインタ変数を引数にもつ関数を作成、使用する。
このプログラム教えて欲しいです!!!!!! この問題が全然わからないんでお願いします。

465 :デフォルトの名無しさん:04/07/21 04:39
int hogehoge(double *s, double a, double b, double c)
{
int result = 0; // 1:正三角形, 2:二等辺三角形, 3:直角三角形

double ss = (a + b + c) / 2.0;
*s = sqrt(s * (s - a) * (s - b) * (s - c));

if(a == b || b == c || c == a){
if(a == b && b == c){
result = 1;
}else{
result = 2;
}
}else{
if(ピタゴラスの定義か余弦定理あたりを使って自分で考えれ){
result = 3;
}
}

return(result);
}


466 :デフォルトの名無しさん:04/07/21 04:41
3辺の長さを収めた配列へのポインタを引数にする関数にしろってことじゃないの?
double a[3] = {8,3,4};
void triangle( double *d );//とか

関数内では引数を値の小さい順に並べなおしてa<=b<=c
で、a*a+b*b==c*cなら直角参加系,>なら鈍角、<なら鋭角
2つ等しい値があれば2等辺、全部同じ長さなら正三角形
面積の出し方はヘロンの公式でぐぐれ

コードは自分で考えんさい

467 :デフォルトの名無しさん:04/07/21 04:42
>>464-465
直角二等辺三角形についても考慮するように


468 :デフォルトの名無しさん:04/07/21 04:44
ケコーンでほとんど全部おしえちまたorz

469 :デフォルトの名無しさん:04/07/21 04:47
>>465
微妙に間違えてるな

470 :デフォルトの名無しさん:04/07/21 05:09
自己顕示欲が強いだけなので,
本人の意思無視でC++ Template付き標準入力な
>>420 を書きますた。

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

471 :デフォルトの名無しさん:04/07/21 06:16
>>470
それならもっと値打ちのわかる人のいるスレでやった方が。。。


472 :デフォルトの名無しさん:04/07/21 07:19
今朝提出の宿題とかないの〜?

473 :デフォルトの名無しさん:04/07/21 08:05
前に面倒見た新人、Cプログラミング経験者と言うだけあって試しに関数を作ってもらったらそつなくこなした。
それじゃぁ、ってんでちょっとまとまった分量渡したら待てど暮らせど作ってこない。
進捗を聞いてもどうにもこうにも埒があかない。様子を伺っても端末に向かってはいるものの、
エディタではなくメールソフトに向かっている時間が長い模様。
流石に気になったので問い質したらメールで(彼女曰く)友人に丸投げしていた模様。

ここで丸投げしているような香具師が就職したらこんなもんだろ?

474 :デフォルトの名無しさん:04/07/21 08:23
>>473
丸投げしても答えが返って来るだけマシ

475 :デフォルトの名無しさん:04/07/21 08:57
ここでされる質問なんて踏み台だよ。自分もまだまだ初心者だからね。

476 :あっているといいな:04/07/21 09:23
#define ABS(x) (x)>0?(x):-(x)

int fugafuga(double *s, double a, double b, double c)
{
int result = 0; //1:直角, 2:二等, 3:直角二等, 4:正
double ss;

if(a+b <= c || c <= ABS(a-b))//三角形成立条件a+b>c>|a-b|を満たさないとき
throw new Exception();
ss = (a+b+c) * 0.5;
*s = sqrt( s*(s-a)*(s-b)*(s-c) );
if(a==b && a==c)
result = 4;
else if(a==b || b==c || c==a)
result = 2;
if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)//これで茶を濁す
result &= 4;
return result;
}


477 :デフォルトの名無しさん:04/07/21 09:59
>>476
*s = sqrt( s*(s-a)*(s-b)*(s-c) );
早くここ直せ
*s = sqrt( ss*(ss-a)*(ss-b)*(ss-c) );


478 :デフォルトの名無しさん:04/07/21 10:04
>>476

result &= 4;

result |= 1;

if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)//これで茶を濁す

if(a*a==(b*b+c*c) || b*b==(a*a+c*c) || c*c==(a*a+b*b))//これで茶を濁す

あとは桁落ちして==が成立しない場面が出てこないことを祈ろう


479 :デフォルトの名無しさん:04/07/21 10:50
in.datの中身

1:afo
2:baka
3:manuke

のようなin.datファイルを読み込んで

out.datの中身

afo
baka
manuke

のようなout.datを作成
お願いします;;

480 :デフォルトの名無しさん:04/07/21 11:48
>>479
#include <stdio.h>
#include <string.h>
int main(void)
{
const struct { const char *x, *y; } a[] = {
{ "1:afo\n", "afo\n", },
{ "2:baka\n", "baka\n", },
{ "3:manuke\n", "manuke\n", },
};
FILE *in, *out;
char buf[10];
int i;
if ((in = fopen("in.dat", "r")) && (out = fopen("out.dat", "w")))
for(i = 0; i < sizeof a / sizeof a[0] && fgets(buf, sizeof buf, in) &&
!strcmp(buf, a[i].x) && fputs(a[i].y, out) != EOF; ++i);
return 0;
}

481 :デフォルトの名無しさん:04/07/21 11:53
const char *src_path = "in.dat";
const char *dst_path = "out.dat";

int c;
FILE *src_file;
FILE *dst_file;

src_file = fopen(src_path, "r");
dst_file = fopen(dst_path, "w");

if (src_file && dst_file) {
while ((c = getc(src_file)) != EOF)
putc(c, dst_file);
}

if (src_file) fclose(src_file);
if (dst_file) fclose(dst_file);


482 :デフォルトの名無しさん:04/07/21 12:55
>>464の宿題は、間違いなくどこかで見かけた。
たぶん前スレ。

483 :デフォルトの名無しさん:04/07/21 12:56
>>481
そのまま出てくるんですけど・・・

484 :デフォルトの名無しさん:04/07/21 12:57
>>482
ここの >>313

485 :ヘルプ:04/07/21 13:06
三角形の問題、自分でなんとかやってみたんですがなかなか実行ができないです。。。
できれば全部のプログラムを教えて欲しいんですが><

486 :デフォルトの名無しさん:04/07/21 13:09
>>485
なにがどうだめか言え

487 :デフォルトの名無しさん:04/07/21 13:09
あぁ、問題ちゃんと読んでなかった。
適当にアレンジしてくれ。

488 :ヘルプ:04/07/21 13:24
ぜんぜんわかんないんです><


489 :デフォルトの名無しさん:04/07/21 13:26
ぜんぜんわかんないんですといわれたらこっちもぜんぜんわかんないんです><



490 :デフォルトの名無しさん:04/07/21 13:27
ぜんぜんわかんないんですじゃなくて、どうして欲しいのか言えば?

491 :デフォルトの名無しさん:04/07/21 13:27
>>479
リサイクル品
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=178


492 :ヘルプ:04/07/21 13:33
省略した部分を全部やってください!!!!!お願いします><



493 :ヘルプ:04/07/21 13:37
だめでしょうか。。??

494 :デフォルトの名無しさん:04/07/21 13:40
>>493
答えでてるじゃん
>>476-478


495 :デフォルトの名無しさん:04/07/21 13:46
main を書いて欲しいとか。
何にも分からないので、すぐコンパイルが通ってそのまま提出しても問題ないようにして欲しいとか。

>省略した部分を全部やってください
もっと具体的に
全部って何?

496 :ヘルプ:04/07/21 14:04
visual C++でそのまま実行できるようにしてほしいです。


497 :デフォルトの名無しさん:04/07/21 14:22
>>496
#include <stdio.h>
#include <math.h>
#define ABS(x) (x)>0?(x):-(x)
int fugafuga(double *s, double a, double b, double c)
{
int result = 0; //1:直角, 2:二等, 3:直角二等, 4:正
double ss;
if(a+b>c||a+c>b||b+c>a){
ss = (a+b+c) * 0.5;
*s = sqrt( ss*(ss-a)*(ss-b)*(ss-c) );
if(a==b && a==c)result = 4;
else if(a==b || b==c || c==a)result = 2;
if(a*a==(b*b+c*c) || b*b==(a*a+c*c) || c*c==(a*a+b*b))result |= 1;
}
return result;
}
int main()
{
double a,b,c,s;
printf("三辺 ( a b c) > ");
scanf("%lf %lf %lf",&a,&b,&c);
printf("a=%f b=%f c=%f\n",a,b,c);
switch(fugafuga(&s,a,b,c)){
case 1:printf("直角三角形 面積%f\n",s);break;
case 2:printf("二等辺三角形 面積%f\n",s);break;
case 3:printf("直角二等辺三角形 面積%f\n",s);break;
case 4:printf("正三角形 面積%f\n",s);break;
default:puts("三角形にならない");break;
}
return 0;
}

498 :デフォルトの名無しさん:04/07/21 14:23
#define ABS(x) (x)>0?(x):-(x)
いらない


499 :ヘルプ:04/07/21 14:28
#define ABS(x) (x)>0?(x):-(x)はなくてもいいんですか?


500 :デフォルトの名無しさん:04/07/21 14:30
なくてもいいです
プログラム中で使ってないでしょう?

501 :デフォルトの名無しさん:04/07/21 14:31
突然ですが、Cの超初心者です。
#include <stdio.h>

int func(int x)
{
int i;
for(i=1;i<=3;i++)
x*=x;
return x;
}

main()
{

int a=1,b=2;
a=func(b);
printf("a=%d,b=%d\n",a,b);
}

を実行するとa=256,b=2と云う答えになります。
なんでaがそうなるか分かりませぬ。
計算式を絡めて詳しく教えていただけないでしょうか!?

502 :ヘルプ:04/07/21 14:32
そうですね^^いろいろありがとうございました!

503 :デフォルトの名無しさん:04/07/21 14:35
>>501
スレ違い

504 :デフォルトの名無しさん:04/07/21 14:36
>>501

2*2
4*4
16*16

256

505 :デフォルトの名無しさん:04/07/21 14:39
もういっちゃったかな
x if(a+b>c||a+c>b||b+c>a){
o if(a+b>c&&a+c>b&&b+c>a){


506 :501:04/07/21 14:41
>>504さん
ありがとうございました。納得です。^^;

507 :デフォルトの名無しさん:04/07/21 14:42
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。

508 :ヘルプ:04/07/21 14:46
三角形にならないとき表示されないです><


509 :デフォルトの名無しさん:04/07/21 14:46
小学生とセックスしてぇ…

510 :デフォルトの名無しさん:04/07/21 14:47
>>508
>>505

511 :志村、後ろ、後ろ:04/07/21 14:49
>>509
>>505

512 :ヘルプ:04/07/21 14:50
そこ直しても変わんないです。。。


513 :デフォルトの名無しさん:04/07/21 14:50
>>501
for (i=1;i<=3;i++)
x*=x;
iが1から3になるまで(つまり3回)次のx*=x; を行えということだ。(ただ単純に3回ループしたいなら普通for (i=0;i<3;i++)の場合が多いが)
1回目ののとき、2で初期化したbが、xの中に入っている。x*=x;はx=x*x;と同じことで、つまりx=2*2;となってxには4が入る。
2回目はxには4が入っているからx=4*4;の計算がされてxは16。最後も同様で16*16の256がxに代入される。
そしてそれがreturn x;で返され、それがaに代入される。
ちなみにa=func(b);の時点で1行前で初期化した1は捨てられているからわざわざ=1の必要はない。

514 :デフォルトの名無しさん:04/07/21 14:56
>>508
> 三角形にならないとき表示されないです><

じゃなくて、普通の三角の時何も表示されないの間違いじゃないの?


515 :デフォルトの名無しさん:04/07/21 14:57
>>512
具体的にどんな値を入力したときどんな出力がでるか書かないと対処できない
あと、入力はスペース区切りで3つ書いてからENTERキーを押してる?

516 :デフォルトの名無しさん:04/07/21 14:59
>>512
int result = 0;
じゃなくて
int result = -1;
に直す

if(a+b>c||a+c>b||b+c>a){
の次の行に
result=0;
を書く


517 :デフォルトの名無しさん:04/07/21 15:01
あとmain関数内の
case 1:〜〜〜
の前に
case 0:printf("面積%f\n",s);break;
を書く


518 :ヘルプ:04/07/21 15:07
1 2 6 とかの時は、「三角形にならない」って表示されるんですが、1 1 6とかにすると、二等辺三角形になるんですよ^^;

519 :デフォルトの名無しさん:04/07/21 15:19
>>518
>>505
ほんとにこれ直したか


520 :デフォルトの名無しさん:04/07/21 15:27
頭悪すぎ

521 :ヘルプ:04/07/21 15:29
なおしました><


522 :デフォルトの名無しさん:04/07/21 15:32
>>505
>>516
>>517
を直したら1 1 6 の時にちゃんと「三角形にならない」って出るけど?

いまどんなソースになってるか
http://ime.nu/do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
にあげてみ

523 :デフォルトの名無しさん:04/07/21 15:34
>>516
result |= 1; でおかしくならないか?

524 :デフォルトの名無しさん:04/07/21 15:37
なんで?-1の時はそこ通らないよ?


525 :デフォルトの名無しさん:04/07/21 15:38
Cなんて、誰でもそれなりに勉強すればそれなりに出来るようになる物だと思ってたけど
ここを見てると、やっぱ頭が相当悪い奴には無理なんじゃないかと思い始めた。

526 :ヘルプ:04/07/21 15:38



527 :ヘルプ:04/07/21 15:44
わかんない。。


528 :デフォルトの名無しさん:04/07/21 15:46
>>527
いまVC++でコンパイルしたプログラムをここに書き込んでください
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088


だんだんこのアホっぷりが心地よくさえ感じてきた俺は…_| ̄|○


529 :デフォルトの名無しさん:04/07/21 15:48
明日にかけて円ドルレートはどう動くでしょうか?

530 :デフォルトの名無しさん:04/07/21 15:49
tick単位では直線で動くと思います

531 :デフォルトの名無しさん:04/07/21 15:50
アホというか池沼レベル

532 :デフォルトの名無しさん:04/07/21 15:53
>>527
見たよ…

x if(a+b>c&&a+c>b&&b+c>a)
  result=0;{

o if(a+b>c&&a+c>b&&b+c>a)
  {result=0;

ここに貼ったから…
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=180&fi=no


この感情は…恋か…
_| ̄|○

533 :ヘルプ:04/07/21 15:56
ばか!ばか!まんこ!!らめですぅ><

534 :デフォルトの名無しさん:04/07/21 15:59
こんどは何がらめなんだよ

535 :ぽろじょあ ◆niBmDfC40k :04/07/21 16:04
( .3.) ヌェー きっと爪に付いてるんだYO

536 :ヘルプ:04/07/21 16:06
らめれすぅ・・・おちんぽミルクがいっぱいれちゃいまふぅ><

537 :デフォルトの名無しさん:04/07/21 16:08
>>532
三辺 ( a b c) > 1 1 1
a=1.000000 b=1.000000 c=1.000000
正三角形 面積0.433013

538 :デフォルトの名無しさん:04/07/21 16:14
>ヘルプ
どこがらめなのか言ってくれないと何がらめかわからないんだ


539 :デフォルトの名無しさん:04/07/21 16:16
>>537
もしかして

三辺 ( a b c) > 1 1 1.41421356
a=1.000000 b=1.000000 c=1.414214
二等辺三角形 面積0.500000

のこと?

540 :デフォルトの名無しさん:04/07/21 17:14
1から100までの和を出力、和が100を超えたら(100を超えました)と
一回だけそれを出力。というプログラムを教えてください。

541 :デフォルトの名無しさん:04/07/21 17:18
>>540
なんか、意味不明だよ。1から100までの和:5050を出力
和が100を超える(14辺り?)と100を超えたと出力とは・・・
1 3 6 10 .................. 105(100を超えました) 121 138 ... 4950 5050
ということ?

542 :デフォルトの名無しさん:04/07/21 17:23
#include <stdio.h>
int main()
{
int s=0,i;
for(i=1;i<=100;i++){
s+=i;
if(s>=100&&s-i<100)puts("(100を超えました)");
}
return 0;
}

543 :デフォルトの名無しさん:04/07/21 17:53
>>444
の(1)をやってみました。

int max(const int a[][5],int row)
{
int i,j,highnumber = 0;
for(i=0;i<=row-1;i++)
for(j=0;j<=4;j++)
if(a[i][j]>highnumber)
highnumber=a[i][j];
return highnumber;
}

これはできたんですが(2)がわかりません。オフセット表記でやれってことですよね?
2次元の場合どうすればいいんだろう?

544 :デフォルトの名無しさん:04/07/21 17:58
ふむ。
>>444
qsortを二段に使ってみるとよさげ

545 :デフォルトの名無しさん:04/07/21 17:59
このスレで質問しているヤツらって
「Cに習熟している釣り師」と「数学嫌いのC初心者」でしょ?(藁

Cの構文も理解しようとせず いきなり結果だけ欲しがるヤツは
普段の生活でも完全に思考停止しているんだろうね(藁
たぶん自分が何を解ってないのかも解ってないんだろうよ(ゲラゲラ

どの問題も1〜2日程度Cの入門書で学習すれば簡単に解ける
ような問題ばかりじゃないの!(藁

とりあえず、入門書を買う時は「簡単!」とか「一日でマスター!!」っていう書籍は止めとけ。
さすがにCを1日で しかも簡単にマスター出来るヤツなんてこの世に存在しない(藁

なるべく厚くて自分にフィーリングが合う書籍を選んだほうがいいですよ(藁
つまり、立ち読みしてから買えってことです。

546 :デフォルトの名無しさん:04/07/21 18:03
というよりも、Cの本を買う時点で痛いと思う。
実際、Cの本なんか出してるとこって、DQNばっかでしょ。
内容も子供騙しだろ。

547 :デフォルトの名無しさん:04/07/21 18:03
ハイハイよかったね(棒読み)

548 :デフォルトの名無しさん:04/07/21 18:04
int max(const int a[][5],int row)
{
int i,j,highnumber = 0;
for(i=0;i<=row-1;i++)
for(j=0;j<=4;j++)
if(*(*(a+i)+j)>highnumber)
highnumber=*(*(a+i)+j);
return highnumber;
}

WRRRRRYYYYYY!!!!

と無駄に叫びながら

549 :デフォルトの名無しさん:04/07/21 18:06
なんだっけ。DQN本だしてばかっぷりを晒してる作者。
しかも、自覚してないから、さらに凄い!
さっさとキティな商売は諦めて、マトモな仕事しれよ

550 :デフォルトの名無しさん:04/07/21 18:09
またキチガイが暴れてる・・・なんでかなぁ

551 :デフォルトの名無しさん:04/07/21 18:19
そもそもこのスレ、宿題丸投げの受け皿・隔離場所だしなー

552 :デフォルトの名無しさん:04/07/21 18:20
で、お決まりの質問だが
「じゃあ、まともなスレはどこよ?」

553 :デフォルトの名無しさん:04/07/21 18:23
>>543

int max(const int a[][5],int row)
{
int mmax = **a;
int mindex1;
int mindex2;
mindex1 = 0;
while (mindex1 < row) {
mindex2 = 0;
while (mindex2 < 5) {
//a[mindex1][mindex2] == *(*(a + mindex1) + mindex2));
if (mmax < *(*(a + mindex1) + mindex2)) mmax = *(*(a + mindex1) + mindex2);
mindex2++;
}
mindex1++;
}
return mmax;
}

配列の値が全て負である場合も考慮すべきだと思います。

554 :デフォルトの名無しさん:04/07/21 19:22
『w』や『ゲラ』ラや『藁』を連呼してるやつらは
私はあなたたちとは違うレベルにいるのですよ!
ということを表現したいかわいそうな人たち。

残念ながら連呼すると馬鹿に見えます。
もっと客観的に自分を見つめ直しましょう。



555 :デフォルトの名無しさん:04/07/21 19:24
>>552
CやC++といった言語に関するスレがあり、それらの言語の質問スレがあり、
そして隔離されたこのスレがある。

556 :デフォルトの名無しさん:04/07/21 19:25
http://pc5.2ch.net/test/read.cgi/tech/1089863973/
↑のスレで聞くとなぁ、↑が隔離所だって言うんだ。

557 :デフォルトの名無しさん:04/07/21 19:28
スレの例を三段階挙げたのに、それを解さない貴方が素敵です。

558 :デフォルトの名無しさん:04/07/21 19:29
にちゃんねるは、社会の隔離場所

559 :デフォルトの名無しさん:04/07/21 19:34
>>557
じゃ、質問スレでないC/C++の言語に関するスレを
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
以外で教えて。

560 :デフォルトの名無しさん:04/07/21 19:55
>>540
#include<iostream>

const char*const message="(100を超えました)";
template <int i> struct A{
static const int sum=i+A<i-1>::sum;
static void print(){
A<i-1>::print();
std::cout<<sum;
if(A<i-1>::sum <= 100 && 100 < sum ) std::cout<<message;
std::cout<<" ";
}
};
struct A<0> {
static const int sum=0;
static void print(){}
};
int main(){
A<100>::print();
}

561 :デフォルトの名無しさん:04/07/21 20:05
>>550
#include <stdio.h>
int main(){
int wa = 5050; // = 100 * (100 + 1 ) / 2;
printf("%d",wa);
if(wa>100)printf("(100を超えました)");
return 0;
}

562 :デフォルトの名無しさん:04/07/21 20:12
このスレでオナニー見せられるほど気分悪いものは無いね。

563 :デフォルトの名無しさん:04/07/21 20:15
>>351なんですが、
long int 使ってもダメだったんですが、何使えば良いのでしょう?

564 :デフォルトの名無しさん:04/07/21 20:27
scanf は使ってもいいんですか?


565 :デフォルトの名無しさん:04/07/21 20:30
>>563
int4096_t i4096;

566 :デフォルトの名無しさん:04/07/21 20:49
>>563
ttp://www5c.biglobe.ne.jp/~MOGI/algorithm/algorithm01.htm#SEC1
みたいな感じちゃうん?または多桁計算か。

567 :デフォルトの名無しさん:04/07/21 20:57
C言語で、一辺の長さが1の正n角形の面積を、
n=3 から 20 まで表示するプログラムを作ってください。


568 :デフォルトの名無しさん:04/07/21 20:59
S=(√(3)/4)*(n^2)

569 :デフォルトの名無しさん:04/07/21 21:01
      _
    //レ
   ∠/ ・!ノ
  rヘ、!・ <! | < ようかんマン参上!!
  ヽ」|  /
   |__j/U
    U

570 :デフォルトの名無しさん:04/07/21 21:05
>>568
n→∞ のときに、いくらでも大きくなるんですけど・・・


571 :デフォルトの名無しさん:04/07/21 21:15
>>570
何か問題でも?

572 :デフォルトの名無しさん:04/07/21 21:18
>>570
一辺の長さが1なら別におかしくないと思われ

573 :デフォルトの名無しさん:04/07/21 21:22
それはいいとして、n=4のときに1になるのか?

574 :デフォルトの名無しさん:04/07/21 21:23
ポカーン

575 :デフォルトの名無しさん:04/07/21 21:23
S=sqrt( 3 )/4 * (n*n);
じゃん。それがどうかしたの?

576 :デフォルトの名無しさん:04/07/21 21:24
誰か、一年分のカレンダー表示できるプログラムしらない?


577 :デフォルトの名無しさん:04/07/21 21:25
>>576
cal

578 :デフォルトの名無しさん:04/07/21 21:27
S = n / (4 * tan(pi/n))

579 :デフォルトの名無しさん:04/07/21 21:30
#include<stdio.h>
#include<math.h>

#definePI3.141592653589793238462643383279502884197169399

doublens(int n)
{
return(sin(2.0 * PI / (double)n) * (double)n / 2.0);
}

voidmain(void)
{
for(int i = 3; i <= 10000; i++){
printf("n = %08d, s = %20.15lf\n", i, ns(i));
}
}


580 :570:04/07/21 21:33
>>571-572
ほんとだ。おかしくないや。ありがとう!

581 :デフォルトの名無しさん:04/07/21 21:43
/****************************************************************/
/*メイン関数*/
/*intmain(void)*/
/*引数:NONE*/
/*戻り値:int0, 正常-1異常*/
/****************************************************************/
#definePAI3.14159256358979323846264
int main(void)
{
doubleTotalAngle;// 正n角形の内角の和
double Angle;// rad
int n;// 角形
const int max = 1000;// 最大20角形
doubleS;// 面積
inti;

for(n=3; n<max; n++){
TotalAngle = PAI / 2.0 * (n - 2);
Angle = TotalAngle / (double)n;
S = 0.5 * tan(Angle) * n / 2.0;
printf("正%d角形の面積は%f\n", n, S);
}

printf("何かキーを押してください");
while(!kbhit()){
// キーボード入力まで待つ
}

return(0);
}

582 :デフォルトの名無しさん:04/07/21 21:46
iは使ってませんでした。すいません。
max = 20位にしてください。

一応4角形の時に1が出るからいいと思うんだけどなぁ。

583 :デフォルトの名無しさん:04/07/21 21:47
取り敢えず>578の式で(面積が自明な)n=3,4,6のときに正しいことは確認した。
>568,575の式、>579の式は一体なんだったんだろう…

584 :568:04/07/21 21:51
正直スマンかった
一辺の長さが n の正三角形の面積と読み違えてました

ただしくは
(S/n)=(1/2)*(1/2sin(pi/n))^2*sin(2pi/n) = <<578
でつ

585 :583:04/07/21 21:56
>581の式は整理したら>578の式になった。
つーか、もう少し整理しろや。
#せめて 0.5 / 2.0 くらい。

で、max = 20;を与えるならfor (n = 3; n <= max; ++n)だね。

586 :570:04/07/21 21:57
ttp://www.sist.ac.jp/~suganuma/learn/problem/13_sho/p_13_1/p_13_1.htm

587 :583:04/07/21 21:57
あっと、ごめんなさい。

588 :デフォルトの名無しさん:04/07/21 22:00
587 = 581です。
さらにごめんなさい。

589 :501:04/07/21 23:22
>>513さん
遅れましたが、ありがとうございました!!

590 :デフォルトの名無しさん:04/07/22 00:02
>>585
>>578のは整理しすぎだろ。
S=tan(pi/2-pi/n)*n/4 のままの方がPCには優しいでつよ。

C的に書くと,

tan(M_PI*(0.5-1.0/n))*n*0.25

が(・∀・)イイ!!

591 :デフォルトの名無しさん:04/07/22 00:05
?

592 :ヘルプ:04/07/22 00:39
ダメです><
やっぱできません><
なんでできないんでしょう.....???
誰か教えてええええええええええ!!!

593 :デフォルトの名無しさん:04/07/22 00:40
>>592
どうダメなのか書かないからだろ

594 :デフォルトの名無しさん:04/07/22 00:41
知障だからだろ

595 :デフォルトの名無しさん:04/07/22 00:47
釣りか。
夏だな。

596 :デフォルトの名無しさん:04/07/22 00:47
ネタにつきあう人が多いからだろ

597 :デフォルトの名無しさん:04/07/22 00:56
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。

598 :ヘルプ:04/07/22 00:58
局部変数ってなんですかあ?

599 :デフォルトの名無しさん:04/07/22 01:02
>>598
チンコマンコだよ

600 :デフォルトの名無しさん:04/07/22 01:05
チンコ->マンコ

601 :デフォルトの名無しさん:04/07/22 01:26
>>548
>>553
ありがとうございます・・・!
もっと勉強します

602 :デフォルトの名無しさん:04/07/22 01:27
どうしてコンストラクタにはvirtualつけちゃいけない仕様なのですか?

603 :デフォルトの名無しさん:04/07/22 01:35
ってちょっとまてー!
むしろ「つけろ」な仕様だろ!

デフォルトで付いてない理由ってんなら、それは単にパフォーマンス上の選択。
すべてのオブジェクトに仮想関数用のオーバーヘッドを背負わせないためでしかない。

604 :デフォルトの名無しさん:04/07/22 01:37
何言ってんの?

605 :デフォルトの名無しさん:04/07/22 01:38
>>603
デストラクタじゃなくて?

606 :デフォルトの名無しさん:04/07/22 01:39
デストラクタじゃなくてコンストラクタだたーよ。。。漏れのうっかりさん。チョメorz


コンストラクタにvirtualつけてどうなるか、よーく考えてみてください。
基底クラスのコンストラクション時に、派生クラスのコンストラクタが自動で呼ばれる動作を
期待しているのかもしれませんが、基底クラスが「自分が派生した何者であるか」なんて、
その時点でわかるはずがありません。
AからB、C、Dの派生が定義されてるときに、virtualつきのコンストラクタでAをコンストラクションしようとして、
AはB、C、D、どのコンストラクタを呼んだらよいのでしょう。

607 :デフォルトの名無しさん:04/07/22 01:41
デストラクタだとしても、つけるべきなのは基底クラスのみでわ?

608 :デフォルトの名無しさん:04/07/22 01:50
基底につければ、あとは勝手に付くしね。

609 :デフォルトの名無しさん:04/07/22 01:52
まあ、いちいち明示的に指定してもいいけど。

610 :デフォルトの名無しさん:04/07/22 02:02
>>606
呼ばない ってことをしたい

611 :デフォルトの名無しさん:04/07/22 03:53
>>610
何を言ってるんだかわからんちん。
そもそもコンストラクタを呼びたくないって話でつか?
空のint配列あたりからキャストでもしてみたらどうだろう。
あとはnewをオーバーライドするとか。
何のメリットがあるんだか想像もつかないけど。

しかしなんだ、原理主義者に神の是非を問うような質問だな。

612 :デフォルトの名無しさん:04/07/22 06:23
そんな事より宿題まだー?

613 :デフォルトの名無しさん:04/07/22 06:30
茄子休みに入ったんじゃねえ?

614 :デフォルトの名無しさん:04/07/22 08:30
デスラー総統

615 :デフォルトの名無しさん:04/07/22 09:12
>>333 の答えが
>>349 に載ってるんだけど
あの問題って縦型探索と横型探索の両方のプログラムと
結果をそれぞれ出せって言う課題だったんですね。


616 :デフォルトの名無しさん:04/07/22 09:13
それに maze.txt という外部ファイルを読み込んで
処理しろっていう仕様だったんです。


617 :デフォルトの名無しさん:04/07/22 10:03
そうですか。

618 :デフォルトの名無しさん:04/07/22 11:02
ヘルプたんハァハァ(*´Д`*)
どうなって欲しいとこがどうなっちゃてるのかちゃんと書いてね


619 :デフォルトの名無しさん:04/07/22 11:22
>>610
スレ違いだしおまえにはこれがお似合いだ
class A{
protected:
 struct Dummy{};
 A(const Dummy& dummy){}
};
class B:public A{
public:
 B():A(Dummy());
};


620 :デフォルトの名無しさん:04/07/22 12:20
>>615
あのさ、答えってのは勝手に沸いてくるものじゃないんだけど、君は何か勘違いしてない?

621 :デフォルトの名無しさん:04/07/22 13:28
構造体の線形リストについて聞きたいのですが。
サンプルプログラムを移して実行したのですが、エラーがでてしまい
だめです。何度も見直しましたが、間違いはなく、資料の誤植ではない
かと思うのですが、どこが間違ってるのかわかりません。

間違ってると思われる部分がありましたら指摘お願いします。
以下ソースです。改行が多いといわれたので分割します。

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

#define MAX 5

typedef struct data Data;
typedef struct data *DataP;

struct data{
int val;
DataP prev;
};

DataP add_data( int i, DataP last);
void print_data(DataP last);
void free_list( DataP last);

622 :デフォルトの名無しさん:04/07/22 13:29
int main()
{
int i;
DataP last=(DataP)NULL;

for( i=0; i < MAX; ++i){
printf("input data %d\n",i);
last=add_data(i,last);
}

print_data( last);
free_list( last);
exit(0);
}

DataP add_data( int i, DataP last)
{
DataP new;

if((new = (DataP)malloc( sizeof(Data))) == (DataP) NULL){
fprintf( stderr,"data allocation error !\n");
exit (1);
}
new -> val = i;
new -> prev = last;
return new;
}

623 :デフォルトの名無しさん:04/07/22 13:29
void print_data( DataP last)
{
while( last != (DataP)NULL){
printf("output data %d\n",last -> val);
last = last -> prev;
}
}

void free_list( DataP last)
{
DataP olast;

while( last != (DataP) NULL){
olast = last;
last = last -> prev;
free( olast);
}
}

以上です。よろしくお願いします。

624 :デフォルトの名無しさん:04/07/22 13:34
こっちの環境(VC++6)じゃ問題ないけどコンパイルエラーが出るってこと?
だったら
/*
typedef struct data Data;
typedef struct data *DataP;

struct data{
int val;
DataP prev;
};
*/
を↓
typedef struct tagdata{
int val;
struct tagdata* prev;
}Data,*DataP;


625 :デフォルトの名無しさん:04/07/22 13:40
/*から*/の部分を
typedef struct tagdata{
int val;
struct tagdata* prev;
}Data,*DataP;

に変更するんですよね?それでビルドしてみたんですが、やっぱりエラーでした。

626 :デフォルトの名無しさん:04/07/22 13:45
どんなエラーがでる?
デバッグ実行してみて

627 :デフォルトの名無しさん:04/07/22 13:49
ちょっと待て、ソース見直してて気付いたんだけど
C++コンパイルしてないか


628 :デフォルトの名無しさん:04/07/22 13:57
構文エラーとして、->や;
また、構文エラー:';'が'new'の前にありません
とでます。

629 :デフォルトの名無しさん:04/07/22 13:58
やっぱりか;
ソースの拡張子をCPPからCに替えてプロジェクト作り直すが正解



630 :デフォルトの名無しさん:04/07/22 14:24
どうもありがとうございました。
拡張子を変えるというのがよくわからないので調べてみます。

631 :デフォルトの名無しさん:04/07/22 14:27
まさか拡張子表示してないとか、、、
だったら拡張子のことは忘れて
'new'ってところを'p'にでも書き換えすればいいよ、、、


632 :デフォルトの名無しさん:04/07/22 14:30
俺はOSインストールしたら、真っ先に拡張子を表示させる

633 :デフォルトの名無しさん:04/07/22 14:32
ところでも前らヘッダファイルの拡張子は何にしてる?
.h?.hpp?

634 :デフォルトの名無しさん:04/07/22 14:37
hxx
hh

635 :デフォルトの名無しさん:04/07/22 14:41
>>633
えっち一筋

636 :デフォルトの名無しさん:04/07/22 16:29
先ほどのものですが、実行することができました。
が、

DataP add_data( int i, DataP last)
{
DataP new;

if((new = (DataP)malloc( sizeof(Data))) == (DataP) NULL){
fprintf( stderr,"data allocation error !\n");
exit (1);
}
new -> val = i;
new -> prev = last;
return new;
}

この関数がなにをやっているのか全然わかりません。解説してもらえないでしょうか?

637 :デフォルトの名無しさん:04/07/22 16:31
しっかしキモい空白あけだな

638 :デフォルトの名無しさん:04/07/22 16:42
>>636
add_dataって関数名から察しろ。

639 :デフォルトの名無しさん:04/07/22 17:53
>>636
つまり、↓こーゆーことをやってる。

d5 → d4 → d3 → d2 → d1 → d0 → sentinel

新しいデータを作ってリストの先頭に入れている。

640 :デフォルトの名無しさん:04/07/22 18:45
キーボードから入力した実数データを10個を配列xに格納してその最大値を求めるのですが。。。
これでは出来ませんでした。どなたかアドバイスをお願いします。
できないというのは、最大値と表示される値があきらかに間違っているということです。
↓↓↓↓↓↓
#include <stdio.h>
int main(void)
{
int x[10];
int max=x[0],j,i;
for (i=0;i<=9;i++){
scanf("%d",x[i]);
}
for(j=1;j<=9;j++){
if (x[j]>max){
x[j]=max;
}
}
printf("最大値は%d",max);
return 0;
}

641 :デフォルトの名無しさん:04/07/22 18:46
×
if (x[j]>max){
x[j]=max;
}


if (x[j]>max){
max=x[j];
}


642 :デフォルトの名無しさん:04/07/22 18:47
>>640
x[j]=max;→max=x[j];

643 :デフォルトの名無しさん:04/07/22 18:48
>>640
int max = x[0] ←x[0]の内容は不定

644 :デフォルトの名無しさん:04/07/22 18:48
j いらないし x[j]=ってやってるしさすがにネタか?

645 :デフォルトの名無しさん:04/07/22 18:49
>>640
あと、これも
scanf("%d",x[i]);

scanf("%d",&x[i]);

646 :デフォルトの名無しさん:04/07/22 18:55
あと、実数データならdouble

647 :デフォルトの名無しさん:04/07/22 18:56
>>640
あと、これも
scanf("%d",x[i]);

scanf("%d",&i[x]);

648 :デフォルトの名無しさん:04/07/22 19:04
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。

649 :デフォルトの名無しさん:04/07/22 19:05
…と、あまりにも間違いが多いんで全部訂正してやった。 >> 640
#include <stdio.h>
int main(void)
{
double x[10], max;
int i;
for (i = 0;i != 10; i++){
scanf("%lf", &x[i]);
}
max = x[0];
for(i = 1; i != 10; i++)
if (x[i] > max)max = x[i];
printf("最大値は%lf\n", max);
return 0;
}


650 :デフォルトの名無しさん:04/07/22 19:11
printf()に%lfってあったっけ?

651 :デフォルトの名無しさん:04/07/22 19:16
>>639
ありがとうございました。

だいぶ宿題のほうも進んできたのですが、>>623
void print_data( DataP last)
{
while( last != (DataP)NULL){
printf("output data %d\n",last -> val);
last = last -> prev;
}
}

この部分はデータを逆に表示していき、出力は4,3,2,1,0と出力されました。
これをすべてを出力するのではなく、例えば3以下の3,2,1,0を出力するよう
にするにはどうすればいいでしょうか?

652 :デフォルトの名無しさん:04/07/22 19:20
>>650
間違う人間があまりにも多いので、これが動く処理系もある。

653 :デフォルトの名無しさん:04/07/22 20:39
>>651
基準がわからんな。
単純に3以下なら

if (last->val <= 3) printf("output data %d\n",last->val);

で良いんじゃまいか。

654 :デフォルトの名無しさん:04/07/22 20:53
>>653
未だ格闘中なんですが、それでもだめでした。
逆順表示がまったくされませんでした。

655 :デフォルトの名無しさん:04/07/22 21:02
>>654
じゃ、どんな風に表示されたの?

656 :デフォルトの名無しさん:04/07/22 21:03
>>654
last = last -> prev; もifの中に入れちゃってるんじゃないの?

657 :デフォルトの名無しさん:04/07/22 21:06
>>622
for( i=0; i < MAX; ++i){
printf("input data %d\n",i);
last=add_data(i,last);
}
この部分のみの表示で、
input data 0
input data 1
input data 2
input data 3
input data 4

になりました。


658 :デフォルトの名無しさん:04/07/22 21:09
>>656
あ、その通りです。やり直してみたらうまくいきました。
これをうまく利用して宿題のほうに挑戦してみます。
どうもありがとうございました。

659 :デフォルトの名無しさん:04/07/22 21:23
>>694有難うございました
なんてお礼したら良いやら・・・・。。

660 :デフォルトの名無しさん:04/07/22 21:26
>>659
お前……

661 :デフォルトの名無しさん:04/07/22 21:28
>>694が幼姦マンだったらどうするよ

662 :デフォルトの名無しさん:04/07/22 21:30
>>661
振るな、振るなw

663 :デフォルトの名無しさん:04/07/23 00:19
ちんちん

664 :デフォルトの名無しさん:04/07/23 01:03
レポート提出期間ラッシュ終了


665 :デフォルトの名無しさん:04/07/23 01:17
ただいま>>694の座席を巡って混雑が生じておりますが、
今しばらくお待ちください。


666 :デフォルトの名無しさん:04/07/23 01:42
        まもなくここは 乂694取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ <  694取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )


667 :デフォルトの名無しさん:04/07/23 02:16
                     __
                ,,r‐''"~~´:::::::::::::゙~''''‐-、,
              ,,r''´::::::::::::::::::::::::::::::::::::::::::::::::::゙丶、
            /:::::::::::::::::::::::::::::,r、::::::::::::::::::::::::::::::::\
           / ......::::::::::::ィ::::::::// ヽ:::::ト、::::::::::::::::........ヽ
           /:::::::::::,r::::::/ |:::::/ /  ゙、::l ヽ:::::::::、::::::::::::::゙、
           /:::::::::::/i::::/,,,,l:::/ /   ヽト‐-、:::::|',::::::::::::::::i
          i::::::i:::::/'|::/  |/  /     !  ヽ::|ヽ:::::i:::::::::l
         l:::::::|:::/ .i/              ヽ:| ゙、::::i:::::::::|
           |:::::::|/                 ゙'! ヽ,!:::::::::|
         |::::::;;;;i  ━┳        ━┳    |;;;;::::::::| 
          |::::::;;;;;|                        |;;;;:::::::::|
        |::::::::;;;;l                    l;;;;:::::::::|
         |:::::::;;;;;|                       |;;;;::::::::|美貴が694取るよ
     _,,,r-┴、::;;;;ヽ、                   ノ;;;:::::-‐-、
    / 、  、 ヽヽ-,;;;゙ヽ、     \/       ,,,イr/´/ ,r  ゙'ヽ、
 ̄ ̄\,,,ヽ、,,i、,,,i、ノ' ̄ ゙゙̄'''‐- ...,,,,,,,,,,,,,,,,,,.... -‐'''~  ̄(,,しL,/,,,r'~,,,-‐' ̄ ̄

668 :デフォルトの名無しさん:04/07/23 02:31
丸なげで申し訳ないんですが

・入力された文字列の中に、 英字(大文字 AからZ および 小文字 aからz)
、 数字(0から9)、その他の文字(空白、記号、等)が、
各々何個含まれているかを数えるプログラムを作成せよ。
・出力結果としては、英字、数字、その他、合計の文字数を表示すること

よろしくお願いします。



669 :だいこん:04/07/23 02:48
#include<stdio.h>
int main(void)
{
int a,b,c;
printf("3辺a,b,cを入力");
scanf("%d,%d,%d",&a,&b,&c);
if(a+b<=c||b+c<=a||c+a<=b)
puts("三角形ではない");
else if(a==b==c)
puts("正三角形");
else if(a*a+b*b==c*c||b*b+c*c==a*a||c*c+a*a==b*b)
puts("直角三角形");
else if(a==b||b==c||c==a)
puts("二等辺三角形");
else if(a==b&&a*a+b*b==c*c||b==c&&b*b+c*c==a*a||c==a&&c*c+a*a==b*b)
puts("直角二等辺三角形");
return (0);
}

プログラミング初心者です。ここまで組んでみたんですが、あと三角形の
面積が表示されるようにしてもらっていいですか??できたらポインタ変
数をつかうとどうなるかもおねがいします。


670 :从*・ 。.・从:04/07/23 02:50
>>668
#include <stdio.h>
#include <ctype.h>

int main(void)
{
int c;
int alpha = 0;
int number = 0;
int other = 0;

while((c = getchar()) != '\n') {
if(isalpha(c)) { alpha++; }
else if(isdigit(c)) { number++; }
else { other++; }
}

printf("alphabet %d\nnumber %d\nother %d\nsum %d\n", alpha, number, other, alpha + number + other);

return 0;
}


671 :デフォルトの名無しさん:04/07/23 02:54
C言語に直接は関係ないのですが、下のリンクの絵のフォントは、
なんというフォントなのかわかりますでしょうか?
ttp://up.isp.2ch.net/up/0595be745de0-s.JPG

672 :デフォルトの名無しさん:04/07/23 02:56
http://up.isp.2ch.net/up/0595be745de0.JPG
すいません間違いました(汗。これです。

673 :デフォルトの名無しさん:04/07/23 02:56
( ゚д゚)ポカーン

674 :デフォルトの名無しさん:04/07/23 03:06
>>671-672
teminal


675 :デフォルトの名無しさん:04/07/23 03:07
>>669
例えば、
直角二等辺三角形が入力されたら、直角三角形条件を満たして終了じゃない?


676 :デフォルトの名無しさん:04/07/23 03:12
>>674
どうもです。。

677 :668:04/07/23 03:14
>>670
有難うございます!

678 :デフォルトの名無しさん:04/07/23 03:14
>>676
「Terminal」は違うみたいだ・・・
当方Windows2000で「OCRB」というフォントがあるが
それの24ポイントのものが一番近いんだが、それでも
数字の「0」に斜線が入っていない。


679 :だいこん:04/07/23 03:19
ん???

680 :672:04/07/23 03:26
>>678
Terminalじゃなかったぴたいですね・・・ではこのフォントはいったいなんだろう。
結構よく見るフォントだと思ったのですが

681 :デフォルトの名無しさん:04/07/23 03:27
>>669
>>675
>>679

このスレの前の方を嫁

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


682 :デフォルトの名無しさん:04/07/23 03:31
>>679
三辺が整数となる直角二等辺三角形は存在しない気がするのは気のせいかな?

- scanf("%d,%d,%d",&a,&b,&c);
+ scanf("%d%d%d",&a,&b,&c);


683 :デフォルトの名無しさん:04/07/23 03:34
三辺は整数限定なの?

684 :デフォルトの名無しさん:04/07/23 03:38
> 三辺は整数限定なの?
プログラムを見る限りでは、int 限定だけどどうなんだろう?


685 :デフォルトの名無しさん:04/07/23 03:39
>>670
漢字入力しても大丈夫?


686 :だいこん:04/07/23 03:42
整数限定ではないです。

687 :デフォルトの名無しさん:04/07/23 03:45
>>684
たぶん >>313 , >>464 あたりが初出だと思われるのですが、
double で話が進んでいたようです。


688 :だいこん:04/07/23 03:49
おそらく同じだと思います。669のを使っていてもらえないでしょうか??


689 :从*・ 。.・从:04/07/23 03:53
> 漢字入力しても大丈夫?
漢字とは認識しないだけでそのまま処理するので問題ないと思う。
矢口真里 が4文字に見えるのは気のせい。

echo -n "矢口真里" | wc
0 1 8


690 :デフォルトの名無しさん:04/07/23 03:58
>>668
蛇足だが各文字の出現回数表示バージョン

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


691 :デフォルトの名無しさん:04/07/23 04:08
>>689
矢口真里
いれたら全部0なんですけど、正常ですよね?

692 :691:04/07/23 04:11
「8」が「0」に見えてた。
ごめん _| ̄|○


693 :从*・ 。.・从:04/07/23 04:11
矢口真里
いれたら全部0なんですけど、正常ですよね?

echo "矢口真里" | ./a.out
alphabet 0
number 0
other 8
sum 8

正常です。

694 :デフォルトの名無しさん:04/07/23 04:26
で、だいこんさんはどうなったの?
なにをすればいいの?
だれかなんかやってる?

695 :デフォルトの名無しさん:04/07/23 04:28
>>681
三辺 ( a b c) >1 1 1.41421356
直角二等辺三角形のresult=3がないからさ

#define EPS 1e-8
else if( a==b&& a*a+b*b-c*c<EPS || b==c&&b*b+c*c-a*a<EPS ||c==a&&c*c+a*a-b*b<EPS)result =3;

ってしたんだけど問題ない?


696 :デフォルトの名無しさん:04/07/23 04:31
>>681のソースの関数fugafugaの中で
result |= 1;
ってあるけどこれってなにしてるんですか?

697 :デフォルトの名無しさん:04/07/23 04:32
>>696
resultの1ビット目を1にしている。
逆はresult&=~1;

698 :デフォルトの名無しさん:04/07/23 04:39
>>478
>あとは桁落ちして==が成立しない場面が出てこないことを祈ろう


699 :デフォルトの名無しさん:04/07/23 04:45
あのさ、

a = 1
b = 1
c = 1.41421356

a^2 + b^2 != c^2

で、

a = 1
b = 1
c = √2

a^2 + b^2 = c^2

なんの問題も無さそうだけど。



700 :デフォルトの名無しさん:04/07/23 04:49
>>699
そこで排他的論理和をとる意味がわからん

701 :デフォルトの名無しさん:04/07/23 04:56
>>700
お前……

702 :デフォルトの名無しさん:04/07/23 05:11
だれかはやく>>700に突っ込まないと…


703 :デフォルトの名無しさん:04/07/23 05:27
排他的論理和
x ^= y;


704 :デフォルトの名無しさん:04/07/23 05:35
それは排他的論理和+代入

705 :デフォルトの名無しさん:04/07/23 05:37
はやく
>>695
を評価してやってよ

706 :695:04/07/23 05:52
そうか入力が

a = 1
b = 1
c = 1.41421356

a^2 + b^2 != c^2

でダメポか。

ただ、printfで表示するとc*c=2.000000
だったのに

else if( (a==b && a*a+b*b==c*c )|| (b==c && b*b+c*c==a*a) || (c==a && c*c+a*a==b*b) )result =3;

>>681のfugafugaにいれてもうまくいかないです…
ちゅうかスレ違いでした…
すんません。。



707 :デフォルトの名無しさん:04/07/23 06:07
>>706
>ただ、printfで表示するとc*c=2.000000
>だったのに

%f -> %20.15f

くらいにしたら下の桁が出てくる



708 :デフォルトの名無しさん:04/07/23 06:14
c(%f) = 1.414214
c(%20.15f) = 1.414213560000000
c*c(%f) = 2.000000
c*c(%20.15f) = 1.999999993287874


709 :695:04/07/23 06:21
ということは
c*c(%20.15f) = 1.999999993287874
とa^2+b^2=1+1=2.000000
を比べてるので等しくならないというわけですね。
どうもありがとうございます。


710 :デフォルトの名無しさん:04/07/23 06:29
>700に突っ込んでみた

 | ああ〜 やっぱ>>700は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク

711 :デフォルトの名無しさん:04/07/23 06:29
>>709
そのために
#define EPS 1e-8
を導入したんとちゃうの?

712 :デフォルトの名無しさん:04/07/23 09:42
>>695
あほかおまいは
result|=1 は'直角'をつけるためについてるんだよ
普通の三角形だった場合は直角三角形になって
二等辺三角形の場合は直角二等辺三角形になる

713 :デフォルトの名無しさん:04/07/23 10:58
まだ三角形やってんのか

714 :デフォルトの名無しさん:04/07/23 11:04
ヘルプたん…

715 :デフォルトの名無しさん:04/07/23 11:21
文字型配列を、"OKINAWA" を初期値として宣言し、文字型を反転させて、"AWANIKO" と出力するプログラムはどう作ればいいのでしょうか。どなたか教えていただけませんでしょうか。

716 :デフォルトの名無しさん:04/07/23 11:28
char str[] = "OKINAWA";
int len = strlen(str);
while (len-- > 0) putchar(str[len]);


717 :デフォルトの名無しさん:04/07/23 11:35
#include <algorithm>
#include <string>
int main()
{
std::string s="OKINAWA";
std::reverse(s.begin(),s.end());
std::cout << s << std::endl;
return 0;
}

718 :デフォルトの名無しさん:04/07/23 11:40
文字型配列

719 :デフォルトの名無しさん:04/07/23 11:47
#include <algorithm>
#include <string>

void revput(const char* s)
{
std::string str(s);
std::reverse(s.begin(),s.end());
std::cout << s << std::endl;
}
int main()
{
char s="OKINAWA";
revput(s);
return 0;
}

720 :デフォルトの名無しさん:04/07/23 11:52
>>715
こんな感じのを作って欲しそうな気がした。
strlenて strings.h だっけ?
#include <stdio.h>
#include <strings.h>

void reverse(char* str);

int main(void)
{
char s[] = "OKINAWA";
reverse(s);
printf("%s\n", s);

return 0;
}

void reverse(char* str)
{
int c, i;
int length = strlen(str);

for(i = 0; i < length / 2; i++) {
c = str[i];
str[i] = str[length - i - 1];
str[length - i - 1] = c;
}
}


721 :デフォルトの名無しさん:04/07/23 11:56
#include <iostream>
#include <algorithm>
#include <string.h>

using namespace std;

int main()
{
char s[] = "OKINAWA";
reverse(&[0]s, &s[strlen(s)]);
cout << s << endl;

return 0;
}


722 :デフォルトの名無しさん:04/07/23 12:09
やあ

723 :715:04/07/23 12:15
例題はこのような問題となっています
『初期値が「tokyo」である文字型配列strを宣言し、その文字列を出力するとともに、そのときの配列の各要素がどのような値になるかを出力する。
次に、4番目の要素に「'\0'」を代入し、再度文字列と各要素を出力させるプログラムを作りなさい。
各要素は、その値を「(要素名)=」に続けて16進数で出力する事。』
#include <stdio.h>
int main(void)
{
char str[6] = "tokyo";
int i;
printf("\n%s\n", str);
for (i = 0; i < 6; i++)
printf("str[%d]=%x\n", i, str[i]);
str[3] = '\0';
printf("\n%s\n", str);
for (i =0; i < 6; i++)
printf("str[%d]=%x\n", i, str[1]);
return 0;
}
この例題から さっきの問題にもっていきたいんですが、どうすればよろしいのでしょうか。

724 :デフォルトの名無しさん:04/07/23 12:21
/* >>175 再帰型 */

#include<stdio.h>


void reverse(char* str) {
    if (*str != '\0') {
        reverse(str+1);
        putchar(*str);
    }
}


int main() {
    char* s = "OKINAWA";
    
    reverse(s);
    return 0;
}

725 :デフォルトの名無しさん:04/07/23 12:28
>>175 って、どんな問題だっけ?

726 :デフォルトの名無しさん:04/07/23 13:45
>>715-716

char str[] = "OKINAWA";
int len = strlen(str);
while (len-- > 0) putchar(str[len]);

これ動作が変なんですけど・・・


727 :デフォルトの名無しさん:04/07/23 13:50
当たり前じゃん。バッファをガンガン破壊してるんだから。

728 :デフォルトの名無しさん:04/07/23 13:53
バッファを破壊してる?

729 :デフォルトの名無しさん:04/07/23 13:57
動作が変?

730 :デフォルトの名無しさん:04/07/23 13:58
putchar(str[len-1]);

731 :デフォルトの名無しさん:04/07/23 13:59
おいおい、デクリメントしてさらに-1するのか?

732 :デフォルトの名無しさん:04/07/23 14:00
>>730
len-- の副作用は無視ですか?

733 :デフォルトの名無しさん:04/07/23 14:01
( ゚д゚)ポカーン

734 :デフォルトの名無しさん:04/07/23 14:08
なんでこんなに頭悪いの

735 :デフォルトの名無しさん:04/07/23 14:08
>>726
動作変って具体的な症状は?

736 :デフォルトの名無しさん:04/07/23 14:54
お願いします。

フィナボッチ数列Fnは、Fo=0、F1=1、Fn=Fn-1+Fn-2、
のように帰納的に定義される数列である。
フィナボッチ数列のn番目の値を計算する関数int fib(int n)を再帰的に定義し、
この関数を利用してフィナボッチ数列の最初の10個を表示するプログラムを作成せよ。

737 :デフォルトの名無しさん:04/07/23 14:59
>>736
template <int N, int P = 1, int Q = 0, int A = 1, int B = 0>
struct fib {
enum { value = ((N & 1) == 1) ? 0 + fib<N-1,P,Q,A*(P+Q)+P*B,P*A+Q*B>::value : fib<(N>>1),P*P+2*P*Q,P*P+Q*Q,A,B>::value };
};

template <int P, int Q, int A, int B>
struct fib<0, P, Q, A, B>{
enum { value = B };
};


738 :デフォルトの名無しさん:04/07/23 15:02
#include <stdio.h>

int fib(int n)
{
if(n == 0)
return0;
else if(n == 1)
return1;
else
return (fib(n - 1) + fib(n - 2));
}

void main(void)
{
for(int i = 0; i < 10; i++){
printf("fib[%d] = %d\n", i, fib(i));
}
}


739 :デフォルトの名無しさん:04/07/23 15:16
みんな>>659-662をわすれてたのかな

740 :デフォルトの名無しさん:04/07/23 15:23
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。

741 :デフォルトの名無しさん:04/07/23 15:25
フィナボッチ

742 :デフォルトの名無しさん:04/07/23 15:39
>>738
; In function `fib':
6:`return0' undeclared(first use in this function)
6:(each undeclared identifier is reported only once
6:for each function it appears in.)
8:`return1'undeclared(first use in this function)
: In function `main'
15:parse error before `int'
15:`i'undeclared(first use in this function)
15:parse error before `)'
14:warning:return type of `main' is not `int'

と出ました…

743 :デフォルトの名無しさん:04/07/23 15:41
>>742
ひょっとするとreturn0;が通るコンパイラもあるのかとドキドキしてしまった。

744 :デフォルトの名無しさん:04/07/23 15:43
>>742
その程度の間違いくらい自分で直せ。

#include <stdio.h>

int fib(int n)
{
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return (fib(n - 1) + fib(n - 2));
}

void main(void)
{
int i;
for(i = 0; i < 10; i++){
printf("fib[%d] = %d\n", i, fib(i));
}
}


745 :デフォルトの名無しさん:04/07/23 15:43
スペースくらい自分で入れろ

746 :デフォルトの名無しさん:04/07/23 15:45
なんだと

747 :デフォルトの名無しさん:04/07/23 15:49
私を抱いて!
Make me a woman!

彼を私の体の奥深くで感じたくてたまらなかった。
I ached to feel him deeper within me.

「アー、いきそう」「オレもだ」
"Aaagh I'm coming! I'm coming!" "I'm coming too, baby!"

オレの指が彼女の胸をなでたとき、彼女はほんのかすかに聞こえるくらいの低いあえぎ声を出した。
As my fingers passed over her breasts, she let out a low moan which was just barely audible.

セックスが楽しくないなら、夫はいつか自然とそのことに気付く。
If you are uncomfortable with sex, it's bound to surface sooner or later.

私がデートした男性のほとんどは3回目のデートまでにセックスをしたがった。
Most of the men I've dated want sex within the first three dates.

私の夫はインポになり、その原因は私がセックスしたがらないからだと言う。
My husband suffers from impotence and blames me for not wanting to have sex.

http://homepage3.nifty.com/edp/seiji1.htm

748 :デフォルトの名無しさん:04/07/23 15:57
                |
                |
                |
                |
               /V\
              /◎;;;,;,,,,ヽ
           _ ム::::(;;`Д')::| パクッ
          ヽツ.(ノ::::::::::.:::::.:..|)
            ヾソ:::::::::::::::::.:ノ
             ` ー U'"U'


749 :デフォルトの名無しさん:04/07/23 15:58
なんか凄いネタにされてる余寒です

>>744
:In function `main':
14:warning: return type of `main' is not `int'

と出ました…
あと、
void main(void)
{
int i;
for(i = 0; i < 10; i++){
printf("fib[%d] = %d\n", i, fib(i));
}
return 0;(←これいるんじゃないんですかね?入れてもエラーが出ましたが…)
}

750 :デフォルトの名無しさん:04/07/23 15:59
>>749
英語くらい読め

751 :デフォルトの名無しさん:04/07/23 15:59
>>749
mainをvoidにするようなヘタレ回答者に当たった事を呪えよ・・・。

752 :デフォルトの名無しさん:04/07/23 16:08
int main(void)ですねorz

お騒がせしました

753 :デフォルトの名無しさん:04/07/23 16:52
問題マダー?(チンチン


754 :デフォルトの名無しさん:04/07/23 16:56
三角形の問題なんですけど、いいですか?

755 :デフォルトの名無しさん:04/07/23 16:58
いいですよ。


756 :デフォルトの名無しさん:04/07/23 16:59
だめです。

757 :デフォルトの名無しさん:04/07/23 17:00
CRC32を取得する関数GetCRC32を実装せよ。
CRC32の仕様についてはRFC1952を参照する事。

//const unsigned char* bytes …CRCを計算するバイト列
//size_t size …CRCを計算するバイト列のサイズ
//戻り値としてCRC32を返す。
char* bytes
unsigned int GetCRC32(const unsigned char* bytes, size_t size);

おながいします。

758 :sage:04/07/23 17:01
>>757
zlibのソース嫁

759 :デフォルトの名無しさん:04/07/23 17:25
↑よりは一見親切なおれ。

http://www.efg2.com/Lab/Mathematics/CRCc.ZIP

でもひろいものだよ。

760 :デフォルトの名無しさん:04/07/23 17:29
過去ログにあったような。

761 :デフォルトの名無しさん:04/07/23 18:57
同じフォルダ内にある 1.txt や 2.txt といったファイルを次々に読み込み、
out.txtというファイルに追加して一つにまとめるプログラム。

また読み込む際は
./matomeru.exe 1 2 4 5

として読み込むファイルをコマンドラインで指定する。
上のコマンドラインの意味は1.txtと2.txtと4.txtと5.txtを読み込むという意味。

お願いします。


762 :デフォルトの名無しさん:04/07/23 19:08
MD5を取得する関数cryptを実装せよ。

extern char *crypt(char *passwd, char *salt);

おながいします。


763 :デフォルトの名無しさん:04/07/23 19:13
>>761
./matomeru.exe 1.txt 2.txt 4.txt 5.txt
と与える仕様の方がワイルドカードを使えて便利だと思うのです


764 :デフォルトの名無しさん:04/07/23 19:16
>>763
それで?

765 :デフォルトの名無しさん:04/07/23 19:29
system("cat 1.txt 2.txt 3.txt > out.txt");

みたいな書き方しても良いのでしょうか?


766 :デフォルトの名無しさん:04/07/23 19:45
(・д・)ポカーン

767 :デフォルトの名無しさん:04/07/23 19:46
0−1ナップサック問題で,分枝限定法
(再帰関数を使用して)で最適解を求め
るプログラムを教えてください.

768 :デフォルトの名無しさん:04/07/23 19:48
>>762
戻り値と引数はそれぞれどんな意味ですか?
先生に聞いて来て下さい。

769 :从*・ 。.・从 ◆StreamX47c :04/07/23 19:50
>>761
私の環境には、フォルダはないので確認してない。
エラーチェックもしてない。
./matomeru.exe 1.txt 2.txt 4.txt 5.txt と読み込む。
あとは、がんばってくれ。
#include <stdio.h>
void Write(FILE* in, FILE* out);
int main(int argc, int** argv)
{
FILE* out = fopen("out.txt", "wb");
FILE* in;
int i;
for(i = 1; i < argc; i++) {
in = fopen((char*)argv[i], "rb");
Write(in, out);
fclose(in);
}
fclose(out);
return 0;
}

void Write(FILE* in, FILE* out)
{
int c;
while((c = fgetc(in)) != EOF) { fputc(c, out); }
}


770 :デフォルトの名無しさん:04/07/23 20:03
wb -> ab+


771 :デフォルトの名無しさん:04/07/23 20:04
なんでバイナリモードなの?

772 :从*・ 。.・从<さゆなの:04/07/23 20:05
从*・ 。.・从<すでにあったら、追加なのね。

773 :从*・ 。.・从<さゆなの:04/07/23 20:07
> なんでバイナリモードなの?
知りません。
"全ての POSIX 準拠システムでは、この ``b'' は無視される"ので私の環境ではどうでもいいことです。

774 :デフォルトの名無しさん:04/07/23 20:12
こういう場合はcatのソース嫁でいいんじゃないか

775 :从*・ 。.・从 ◆StreamX47c :04/07/23 20:13
Mステ ハピサマ
キタ━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(゚  )━(∀゚ )━(゚∀゚)━!!!!

776 :デフォルトの名無しさん:04/07/23 20:13
>>774
catのソースってどこでダウンロードできますか?
検索しても出てきません。
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=shift_jis&q=cat%82%cc%83%5c%81%5b%83X

777 :从*・ 。.・从 ◆StreamX47c :04/07/23 20:17
>>776
GNU 行け

778 :761:04/07/23 20:41
>769様
ほんまありがとうございました!


779 :デフォルトの名無しさん:04/07/23 20:57
>>778
./matomeru.exe 1.txt 2.txt 4.txt 5.txt
になってるから注意な


780 :761:04/07/23 20:59
>>779
おーけーです!ども!

781 :デフォルトの名無しさん:04/07/23 21:37
>>767 誰かやってる?
0−1ナップサック問題と分枝限定法の意味がが分からないんだけど。
説明キボン

782 :デフォルトの名無しさん:04/07/23 21:48
getche()関数のヘッダファイルって何ですか?

783 :デフォルトの名無しさん:04/07/23 21:48
>>781
それがわからないなら学部から消えろってぐらい専門性の高いとこだから無視していいよ

784 :デフォルトの名無しさん:04/07/23 21:57
>>782
conio.h

785 :デフォルトの名無しさん:04/07/23 22:11
#include <stdio.h>
int main(void)
{
int mg[16][16], i, j, k, n;
printf("15以下の奇数を入力してください!\n");
scanf("%d", &n);
j = (n + 1) /2;
i = 1;
mg[i][j] = 1;
for (k = 2; k <= n * n; k++){
if (k % n ==1)
i++;
else if (i == 1){
i = n;
j++;
}
else if (j == n){
i--;
j = 1;
}

786 :785:04/07/23 22:12
else {
i--;
j++;
}
mg[i][j] = k;
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++)
printf("%5d", mg[i][j]);
printf("\n");
}
return 0;
}
魔方陣のプログラムです。このプログラムでは、偶数が入力されると正しい結果が得られません。これを防止するために、 偶数が入力された場合には入力をやり直させるにし、
15を超える数または1未満の数が入力されたときも再入力させるようなプログラムをつくりたいのですが、
どのように変更したらよろしいのでしょうか。どなたか教えていただけませんか?


787 :デフォルトの名無しさん:04/07/23 22:22
>>781
漏れも分からん。
ま、どうせ俺は動的計画法でアホみたいにしか解けんから
向こうから断られるんだろうけどorz

788 :デフォルトの名無しさん:04/07/23 22:25
>>786
printf("15以下の奇数を入力してください!\n");
scanf("%d", &n);

 ↓

n=0;
while(n>15||n<1||!(n%2)){
printf("15以下の奇数を入力してください!\n");
scanf("%d", &n);
}

789 :デフォルトの名無しさん:04/07/23 22:25
ぶんえだげんていほうって、貧欲アルゴリズムで枝刈りしつつ検索かな?
と考えてみる。けど、再帰?
動的計画法以外にはこれしか知らない。

あと、0-1 が付いたナップザックもんだいって何だろう?

790 :デフォルトの名無しさん:04/07/23 22:33
>>789
これっぽい
でもモノとその価値が分からん標準問題としてこの表の値が用いられてるのかな?
http://hp.vector.co.jp/authors/VA016496/glps/sample5.html

791 :デフォルトの名無しさん:04/07/23 22:38
線形に解く感じかな?

792 :767:04/07/23 22:39
>781
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
ここに,自分で作ってみたソースを貼り付けました.

0は荷物をとらないと考える,1は荷物をとると考える.
ナップサックの重さを完全列挙して,重さが上限を超え
た時点でバックトラック法で次の処理に移るものと考えています.
自分で考えたのですがうまくいきません.
よろしくお願いします.

793 :785:04/07/23 22:45
>>788
ありがとうございますm(__)m

15以下の奇数を入力してください!
3
 8  1  6 | 15
 3  5  7 | 15
 4  9  2 | 15

↑の図のように、横の合計も出力させるにはどのようにすればよろしいのでしょうか。

794 :デフォルトの名無しさん:04/07/23 22:48
>>792
dat.txtもくれるかな?
それとさらっと見た感じで文法エラー酷いね

795 :767:04/07/23 22:52
http://mimi.aist-nara.ac.jp/lecture/alg04/alg-bd-dp.pdf
のしらみつぶし法が0-1ナップサック問題の定義になっています.

>794
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
にdat.txtをアップしておきました.

文法エラーってどの部分ですか?
すみませんでした.稚拙なプログラムで.
VC++6でコンパイルしたんですけど,エラーも警告も出ませんでした.
よろしくお願いします.

796 :デフォルトの名無しさん:04/07/23 22:53
>>793
int mg[16][16], i, j, k, n;
 ↓
int mg[16][16], i, j, k, n,sum;



///////////////////////////
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++)
printf("%5d", mg[i][j]);
printf("\n");
}
//////////////////////////
 ↓
//////////////////////////////
for (i = 1; i <= n; i++) {
sum=0;
for (j = 1; j <= n; j++){
printf("%5d", mg[i][j]);
sum+=mg[i][j];
}
printf(" | %5d\n",sum);
}
//////////////////////////////

797 :デフォルトの名無しさん:04/07/23 23:01
>>795
よくでなかったね.
dat.txtの個数の部分いらないっしょ?

798 :797:04/07/23 23:02
あ,そうそうエラーは例えばコレ

status = fscanf(fp, "%d %d",
&temp_size, &temp_value, &temp_kosu);


temp_value, temp_kosuが宣言されてません,だとよ

799 :767:04/07/23 23:20
>797
>798
すみませんでした.
その通りでした.
kosuの所は削除してください.

#define STRSIZE 32
&temp_kosu

はいりませんでした.

800 :デフォルトの名無しさん:04/07/23 23:21
なんで3つあるの?

801 :767:04/07/23 23:24
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

にソースとデータを直したものをアップしました.
よろしくお願いします.

802 :767:04/07/23 23:58
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

何度もすみません.
新しく書いたソースを上げました.
今度は,コンパイルエラーが無く,PCに負担を
かけないようにしました.
VC++6とBCCでコンパイルしましたが,今度は
エラーがなくなりました.

このプログラムを綺麗に書く方法を教えていただけないでしょか?

803 :デフォルトの名無しさん:04/07/24 00:03
>>802
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

どれよ?

804 :767:04/07/24 00:08
>803
リンク先が間違っていました.

たびたびすみません.
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
ここです.

805 :デフォルトの名無しさん:04/07/24 00:09
>>804
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

ここか?

806 :767:04/07/24 00:14
>>803
はい,そうです.
よろしくお願いします.

807 :デフォルトの名無しさん:04/07/24 02:19
作りたいプログラムの極一部なのですが

#include <iostream>
using namespace std;

int main()
{
char c_name[10][5]={"林 ","田中","那須","菊地","徳永","鈴木","今野","松井","森崎","大塚"};
char c_base[10][6][7];

for(int i=0;i<10;i++){
c_base[i]=c_name[i];
cout<<c_base[i]<<endl;
}
return 0;
}

とすると、左辺値が必要というエラーが出るのですが、どうすれば解消されるでしょうか?
よろしくお願いします。

808 :デフォルトの名無しさん:04/07/24 02:33
>>807
#include <iostream>
using namespace std;

int main()
{
//char c_name[10][5]={"林 ","田中","那須","菊地","徳永","鈴木","今野","松井","森崎","大塚"};
//char c_base[10][6][7];

//for(int i=0;i<10;i++){
//c_base[i]=c_name[i];
//cout<<c_base[i]<<endl;
//}
return 0;
}


809 :デフォルトの名無しさん:04/07/24 02:38
>>807
Cでは配列に配列を代入できません。
一要素づつ代入するかstrncpyまたはmemcpyでコピーしてください。

しかし実際職場でこんなコード見たとしたら、>>808の処置は至極真当だw

810 :デフォルトの名無しさん:04/07/24 02:45
つかそもそも代入してる配列の次元ちがうじゃん

811 :デフォルトの名無しさん:04/07/24 02:51
c_base[i] … char**型
c_name[i] .… char*型

812 :デフォルトの名無しさん:04/07/24 05:01
>>807
どういう意図かよく分からんがこれじゃだめか?
#include <iostream>
#include "string.h"
using namespace std;

int main(void)
{
const char c_name[10][5]={"林 ","田中","那須","菊地","徳永","鈴木","今野","松井","森崎","大塚"};
char c_base[10][6];

for(int i=0;i<10;i++){
strcpy(c_base[i],c_name[i]);
cout<<c_base[i]<<endl;
}
return 0;
}

813 :デフォルトの名無しさん:04/07/24 08:15
つーか、C++とも思えないような志の低いコードだな。

814 :デフォルトの名無しさん:04/07/24 08:19
iostream使うような低脳がC++を使いこなせるとも思えん。

815 :デフォルトの名無しさん:04/07/24 08:28
ハァ?

816 :デフォルトの名無しさん:04/07/24 11:10
>>813-814

過去にカキコされたソースコード見て空白をあけなさいとかあけるなとか
おっしゃっていた方ですか?


817 :デフォルトの名無しさん:04/07/24 11:37
>>807
>作りたいプログラムの極一部なのですが
>(略)
>char c_name[10][5]={"林 ","田中","那須","菊地","徳永","鈴木","今野","松井","森崎","大塚"};
>(略)
>char c_base[10][6][7];
>(略)
>c_base[i]=c_name[i];

ヤシがやりたいことは、元の配列c_nameに属性を増やしたいということではないのか?
だれか構造体かクラスについて教えてやってくれ。


818 :デフォルトの名無しさん:04/07/24 11:47
エスパーさんはすごいと思うが、予想の大外しをしてしまうと
途方も無い方向に逝ってしまうという諸刃の剣

819 :813:04/07/24 11:55
>>816
私は空白のような枝葉末節を指摘したりはしない。
必要なら私に代わってエディタが勝手に整形してくれるし。

820 :デフォルトの名無しさん:04/07/24 12:03
志ってなんだろー?と思ったがそれは置いといて、

iostreamになんかトラウマがあるですか


821 :672:04/07/24 13:53
672のフォントの件なのですが、オリジナルのフォントらしいです。
販売なども行っていないらしいです。。。うーーん。欲スィ

822 :デフォルトの名無しさん:04/07/24 14:37
>>817
つまりこういう事?
#include <iostream>
using namespace std;
class name {
char namestr[5];
void init(void) { memset(namestr, 0, sizeof(namestr)); }
public:
void set(char const *p) { strncpy(namestr, p, sizeof(namestr)); namestr[4]=0;}
char const * get(void) const { return namestr; }
name(void) { init(); }
name(char const *p) { init(); set(p); }
};
class base : public name {
char addstr[7];
void init(void) { memset(addstr, 0, sizeof(addstr)); }
public:
void set_addstr(char const *p) { strncpy(addstr, p, sizeof(addstr)); addstr[6]=0;}
base operator = (name const &n) { set(n.get()); return *this; }
base(void): name() { init(); }
base(char const *p, char const *a=""): name(p) { init(); set_addstr(a);}
};
int main()
{
name c_name[10] = { "林 ", "田中", "那須", "菊地", "徳永", "鈴木", "今野", "松井", "森崎", "大塚" };
base c_base[10];
for (int i = 0; i < 10; i++) {
c_base[i] = c_name[i];
cout << c_base[i].get() << endl;
}
return 0;
}

823 :デフォルトの名無しさん:04/07/24 14:41
あの画像って裏写りしててなんかの問題用紙のようにみえるね。


824 :デフォルトの名無しさん:04/07/24 15:39
>>822
左辺値が必要というエラーが出なければなんでもよかった。

825 :デフォルトの名無しさん:04/07/24 15:49
sw[N][N]を一次元配列にするにはどうしたらいいんですか?
よろしくお願いします。


826 :デフォルトの名無しさん:04/07/24 15:50
sw[N*N]

827 :デフォルトの名無しさん:04/07/24 15:51
C++を勉強し始めた者ですが、
どうも、ウィンドウ表示とシーン管理をよういてゲームを作ることが
苦手なのですが・・。
どなたかC++でウィンドウ表示&シーン管理ができている簡単なゲームの
ソースを見せてくれませんか?(つд`)
いまいち流れ的なものがわからなくて、オブジェクト指向というのも
未だによく理解できずにいます。誰か助けてください・・・orz

828 :デフォルトの名無しさん:04/07/24 15:52
宿題?

829 :デフォルトの名無しさん:04/07/24 15:56
>>827
↓ここで探せばたくさん手に入るよ。
ttp://www.google.co.jp/

830 :デフォルトの名無しさん:04/07/24 15:58
さて、次スレはだれが宿題を片付けてくれるの?
そろそろ決めないと。

831 :デフォルトの名無しさん:04/07/24 15:59
ゑゑゑで

832 :デフォルトの名無しさん:04/07/24 15:59
>>827
>よういて
わざとか?わざとだよな?

833 :デフォルトの名無しさん:04/07/24 16:00
>>830
よういて がお答えします

834 :825:04/07/24 16:03
>>826
ありがとうございます。


835 :デフォルトの名無しさん:04/07/24 17:07
  ∧ ∧     ┌──────────────────
  ( ´ー`)   < 次スレは シラネーヨ がお答えします。
   \ <     └───/|──────────────
    \.\______//
      \       /
       ∪∪ ̄∪∪

836 :デフォルトの名無しさん:04/07/24 17:09
まじかよ、全然宿題片付かなさそうだな…

837 :デフォルトの名無しさん:04/07/24 17:13
λ... <次スレは、とぼとぼマンがお答えします

838 :デフォルトの名無しさん:04/07/24 17:27
○| ̄|_ OTL orz <次スレは漏れが解決できずにガックリします

839 :デフォルトの名無しさん:04/07/24 18:09
void CMatrix::deter(double b[])
{double sgn,ww,det;int j,k,p,q,max;double*r=new double [n];double*t=new double [n];det=1.0;
for(k=0;k<N;k++){ww=b[k*k];max=k;for(q=k;q<N;q++){
if(fabs(b[q*N+k])>ww){max=q;ww=b[q*N+k];}}
if(max!=k){for(j=0;j<N;j++){t[j]=b[max*N+j];b[max*N+j]=b[k*N+j];b[k*N+j]=t[j];}
sgn=-1.0;}else sgn=1.0;ww=b[k*k];r[k]=ww;det=det*r[k]*sgn;
if(ww==0){det=0.0;goto finish;}
pivot(k,k,b);printf("掃き出し%d 回目 \n",k+1);
for(q=0;q<N;q++){for(p=0;p<N;p++){printf("%16.8e",b[q*N+p]);}putchar('\n');}
printf(" r[ %d ]= %f \n",k,r[k]);}finish:return det;}

で、'CMatrix::deter(double *)' は値を返せない(関数 CMatrix::deter(double *) )
と出るのですが、どうしたら値を返せるようにできるのでしょうか。
よろしくお願いします。


840 :デフォルトの名無しさん:04/07/24 18:11
>>839
嫌がらせはこっちで。
C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/

841 :デフォルトの名無しさん:04/07/24 18:12
次スレでは、ひとまずようかんマンに退場して頂きたい。なんか彼の必死さが嫌い。

842 :デフォルトの名無しさん:04/07/24 18:39
荒れそうですが、面白そうなの。

アソパソマソ
D・V・D D・V・D
山岡士郎

843 :デフォルトの名無しさん:04/07/24 18:54
>>839
-void CMatrix::deter(double b[])
+double CMatrix::deter(double b[])

844 :デフォルトの名無しさん:04/07/24 19:00
>>829
ソースがあって解説してくれるようなものがあるとは思えませんが・・。
あるのなら教えて頂きたいのですが。

845 :デフォルトの名無しさん:04/07/24 19:06
前スレでも言ったが、次スレは c言語侍 がいい
まじで頼む!!こっちは決め台詞を決めてて、
宿題といたときに言いたくてうずうずしてるんだからさぁ〜


846 :デフォルトの名無しさん:04/07/24 19:08
>>845
950あたりになったら自分で立てるがいい
今のうちに1のテンプレ等作っておきなされ

847 :デフォルトの名無しさん:04/07/24 19:12
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

848 :845:04/07/24 19:24
えっと実際にスレをたてるとなると
とてつもなく恐縮してきました(汗
勇気がでたら立てます。
さて宿題どぞー

849 :デフォルトの名無しさん:04/07/24 19:32
【注意点】 -------------------------------------------------
・言語は必ず書きましょう(C/C++)

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。


850 :デフォルトの名無しさん:04/07/24 19:38
RSA暗号に使用するのに素数を求めるんですが、いざ10桁の素数求めて
10×10の数を出したら一瞬で素因数分解されてしまいました。
できるだけ桁数増やしたいんですがどうすれば良いのでしょうか。
おねがいします。

851 :デフォルトの名無しさん:04/07/24 19:39
インドの学者が最近素数を完全に求める式を編み出してなかった毛か?

852 :デフォルトの名無しさん:04/07/24 20:13
>>844
ほれ。
ttp://www.gamedev.net/

853 :デフォルトの名無しさん:04/07/24 20:33
>>849
>エラーは、その行とエラーの詳細を書きましょう。
これは
  エラーメッセージが出た場合はそのままコピーしてください。
を追加した方がいいかと。

>言語は必ず書きましょう(C/C++)
これも >827 とか見る限り
  使用する言語(C/C++)や環境(CUI/ANSI とか GUI/Windows32bitAPI など)は必ず書きましょう
とかの方がいい予感。

854 :从*・ 。.・从 ◆StreamX47c :04/07/24 20:34
>>850
素数を,素因数分解をするのと本質的に同じ方法で求めていたら
その積を素因数分解されてしまうのは当然.

というか,10桁の素数はすぐにもとめられるじゃん.

从*・ 。.・从<フェルマーテストとか Miller-Rabin 法とかを勉強汁

> インドの学者が最近素数を完全に求める式を編み出してなかった毛か?
素数判定を deterministic polynomial に求められることしめしたんじゃなかったっけ?
从*・ 。.・从<AKSアルゴリズムとかを検索汁

855 :デフォルトの名無しさん:04/07/24 21:09
>>854
>> インドの学者が最近素数を完全に求める式を編み出してなかった毛か?
>素数判定を deterministic polynomial に求められることしめしたんじゃなかったっけ?

確率的なものだYo

856 :从*・ 。.・从 ◆StreamX47c :04/07/24 21:19
> 確率的なものだYo
http://www.cse.iitk.ac.in/news/primality.html
>>> have discovered a polynomial time deterministic algorithm
>>> to test if an input number is prime or not.

http://ja.wikipedia.org/wiki/AKS素数判定法

けっていてきたこうしきじかんだYO

857 :デフォルトの名無しさん:04/07/24 21:19
10桁って32bitそこらしかないよね。そりゃ簡単に解かれるわ。

858 :デフォルトの名無しさん:04/07/24 21:33
【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。


859 :デフォルトの名無しさん:04/07/24 21:56
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ 幼女しか興味のない幼姦マンがC/C++の宿題片付けます
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク

【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10


860 :デフォルトの名無しさん:04/07/24 21:56
C言語で逆ポーランド法の計算を解くプログラムをつくらなくてはいけないのです。
コマンドラインから
>rpol.exe 1 2 + 3 4 + *

Answer 21

>

のようになればいいのですが、どうしたらいいのかわかりません。
処理系はBorlandのコンパイラbcc32使ってます。
どうか教えてください。

861 :デフォルトの名無しさん:04/07/24 22:21
>>860
ソースを貼れ.
Windows の shell は * を展開しないのか?




862 :デフォルトの名無しさん:04/07/24 22:22
>>861
しないよ

863 :デフォルトの名無しさん:04/07/24 22:24
ごめん.
ソースは貼れないね.

864 :デフォルトの名無しさん:04/07/24 22:25
じゃあカエレ

865 :860:04/07/24 22:36
860です。
ソースを張れといわれましても、問題文は
下の実行例を参考に逆ポーランド法の計算を解くプログラムをつくれ。
で、実行例は上にあげた通りでした。

触れられていないところは好きに作ってよいとのことなのですが。

数字、数字、演算子
ってパターンを見つけてそれを計算結果に直してくりかえせばいいのかな。
とも思うんですが、どこから手をつけていいのかさっぱりなのです。

866 :デフォルトの名無しさん:04/07/24 22:39
>>865
逆ポーランド自体は知ってるのか?

867 :デフォルトの名無しさん:04/07/24 22:39
>>860
はいよ。逆ポーランドのメリットは簡単に書けることだ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

double stack[1024];
double *sp = stack;

void xadd(void) { --sp; sp[-1] += sp[0]; }
void xsub(void) { --sp; sp[-1] -= sp[0]; }
void xmul(void) { --sp; sp[-1] *= sp[0]; }
void xdiv(void) { --sp; sp[-1] /= sp[0]; }
void (*func[])() = { xadd, xsub, xmul, xdiv };

int main(int argc, char *argv[])
{
    for (int i = 1; i < argc; i++) {
        const char op[] = "+-*/";
        char *p = strchr(op, argv[i][0]);
        if (p) {
            func[p - op]();
        } else {
            *sp++ = atof(argv[i]);
        }
    }
    printf("%f\n", sp[-1]);
    
    return 0;
}


868 :860:04/07/24 22:42
はい。逆ポーランド自体は知っております。
()の要らない計算方法で、○ △ + で○+△になると。

869 :デフォルトの名無しさん:04/07/24 22:48
ありがとうございます。
早速学校へいったら試してみます。

870 :デフォルトの名無しさん:04/07/24 22:54
今試せよw

871 :デフォルトの名無しさん:04/07/24 23:26
WinSock2を使って
非同期処理のサーバープログラムを作成しなさい。
プロトコルはUDPとする。
データを受信した場合は、関数void x_read(char str)を呼び出すようにしなさい。(char strの中には受信したデータを入れなさい。)

よろしくお願いします。

872 :デフォルトの名無しさん:04/07/24 23:30
char strじゃ返せないよ・・・

873 :デフォルトの名無しさん:04/07/24 23:37
>>871
ソレもつっこみ所がある仕様だが、下のサイトにソースが少しある
http://x68000.q-e-d.net/~68user/net/
ココに書いている内容はおすすめはできないが。

874 :デフォルトの名無しさん:04/07/24 23:37
>>872
内部で何を受信したか表示するだけで良いみたいです。
ようするに非同期処理を出来るかどうかの問題らしいです。


875 :デフォルトの名無しさん:04/07/24 23:38
>>873
どうもありがとうございました。


876 :デフォルトの名無しさん:04/07/24 23:47
    ,,w,,
   ,,ミ;゚∋゚ミ 。 <>>1ボクガイルカギリ教育テレビ出演ハムリポ
  ノ  JB ヽ  ゚。
  ミ     つ)  
  ∪  ミ ミ ミ    
 ミヽ、、__、、ノ    
   ノ,,,ノヽ,,,
           

877 :875:04/07/25 00:15
度々すみません。
どうもWinsock2で実装されたWSA系の非同期処理を使わなくてはいけないようです。。。
WSARecvfrom()でイベント通知ではなく関数を呼び出すようにせよ と言う意図からとの事です。

878 :デフォルトの名無しさん:04/07/25 00:18
>>877
そんな事はわかってる。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
とかHELPとか本とか読みましょう。

879 :デフォルトの名無しさん:04/07/25 03:06
NHK教育どころじゃねえよ

880 :デフォルトの名無しさん:04/07/25 04:18
ギルガメッシュナイトにもあやういですね


881 :デフォルトの名無しさん:04/07/25 09:27
スレタイ:
C/C++の宿題はヘーベルハウスが片付けます 29代目

本文:
殺伐としたこのスレにヘーベルハウスが!!

       /|
       |/__
       ヽ| l l│<ハーイ
       ┷┷┷

【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10

882 :デフォルトの名無しさん:04/07/25 10:26
注意点の下側の棒がないのは仕様ですか?


883 :デフォルトの名無しさん:04/07/25 10:38
>>950までに付いてればよろしいかと。

884 :デフォルトの名無しさん:04/07/25 10:51

羊羹まん、お願いします
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=264

885 :デフォルトの名無しさん:04/07/25 10:52
どなたかお助けください
【課題】

テキストファイルに、1〜nまでの素数を書き込む関数fileSosu()を作成せよ。

void fileSosu( char *fileName, int n )

・fileName : 素数を書き込むファイル名
・n : 素数を求める最大数

上記の関数を以下のプログラムで実行し1〜100までの素数がファイルに出力されたか動作を確認せよ。

#include <stdio.h>

//ここにfileSosu()関数を書く。

void main()
{
//ファイル名を格納する文字列
char wFileName[20];

printf("素数を出力するファイル名=");
//ファイル名をキーボードから入力する
scanf("%s", wFileName );
fileSosu( wFileName, 100 );
}

886 :デフォルトの名無しさん:04/07/25 10:53
age忘れた…

887 :デフォルトの名無しさん:04/07/25 10:56
幼姦マンさまよろしくお願いします
をつけろ


888 :デフォルトの名無しさん:04/07/25 11:38
クイックソートで以下のデータ列の並び方によっては暴走するみたいなのですが、その並べ方と理由を教えてください。
a[]={41,24,76,11,45,64,21,69,19,36}

ようかんマンさんよろしくお願いしま!

889 :デフォルトの名無しさん:04/07/25 11:40
並べ方:どんな場合でもありえる。
理由:作り方がおかしい

890 :デフォルトの名無しさん:04/07/25 11:42
>>887
いつの間にそんな決まりが_| ̄|○

>>885
追加
ようかんマン様お願いします

891 :デフォルトの名無しさん:04/07/25 12:01
用干満ってデフォルトの名無

892 :デフォルトの名無しさん:04/07/25 12:10
http://p11.aaacafe.ne.jp/~jhydf/cgi-bin/img/komo079.jpg
キーボードから入力した10個の配列データdに格納し、小さい順(昇順)に並び替えて出力するプログラムを、流れ図(URLの画像)を参考にしてつくりなさい。
ただし、データの入力と出力の部分は省略して示してある。
という問題が出されました。どなたか教えていただけませんか?お願いします

893 :デフォルトの名無しさん:04/07/25 12:13
>>892
その流れずがあって作れないのなら終わってるな

894 :デフォルトの名無しさん:04/07/25 12:14
スレ違いだけど、実際にプログラム組む時>>892みたいなフローチャート書く人って実在するの?

895 :デフォルトの名無しさん:04/07/25 12:17
>>894
妙な教授に当たった学生さんくらい。

896 :デフォルトの名無しさん:04/07/25 12:30
洋館マン様よろしくお願いします

区間−1〜1の一様乱数を発生する関数
double randNorm2(void)
を作成せよ。この関数を使って、配列にn個の一様乱数を代入する以下の関数を作成せよ。
void randVector2(double noise[],int nn)
さらに、配列n個の要素のうち、最小値を求める関数xmin()を作成せよ。
double xmin(double xx[],int nn)
上記の関数を使い、randNorm2()で発生させたn個(n<100)の要素の最小値を求めるメイン関数を作成し、動作を確認せよ。

noise[ ]=配列名
nn=配列の要素の数
xx[ ]=配列名
戻り値=配列の最小値

897 :ようかんマン ◆nup627Y0Gs :04/07/25 13:00
#include<stdio.h>

unsigned int seed = 1;

double randNorm2(void) {
    seed = seed * 69069 + 1;
    return ((double)seed / 0x100000000 * 2) - 1;
}

void randVector2(double noise[],int nn) {
    int i;
    
    for (i=0; i<nn; i++)
        noise[i] = randNorm2();
}

double xmin(double xx[],int nn) {
    double min;
    int i;
    
    for (min=xx[0], i=0; i<nn; i++)
        if (min > xx[i]) min = xx[i];
    
    return min;
}

898 :ようかんマン ◆nup627Y0Gs :04/07/25 13:00
int main()
{
    double n[10];
    int i;
    
    randVector2(n, 10);
    
    for (i=0; i<10; i++)
        printf("%lf\n", n[i]);
    
    printf("最小値 %lf\n", xmin(n,10));
    
    return 0;
}

899 :888:04/07/25 13:15
追記:ようかんマン様よろしくお願いします。

以下ソースです
#include<stdio.h>
#define N 10
void quick(int *a, int b,int c);
main(){
/*static int a[]={41,24,76,11,45,64,21,69,19,36};*/
static int a[]={76,69,64,45,41,36,24,21,19,11};
int k;
quick(a,0,N-1);
for(k=0; k<N ; k++) printf("%4d",a[k]);
printf("\n");
}


900 :888:04/07/25 13:16
void quick(int a[],int left, int right){
int s,t,i,j,k;
if( left < right ){
s = a[left];
i = left; j = right + 1;
while(1){
while(a[++i]<s);
while(a[--j]>s);
if(i >= j )break;
t=a[i]; a[i]=a[j];a[j]=t;
}
a[left]=a[j]; a[j]=s;
quick(a,left,j-1);
quick(a,j+1,right);

}
}


901 :デフォルトの名無しさん:04/07/25 13:17
いちいち n なんか DEFINE すんな
quick の定義はどこ?

902 :デフォルトの名無しさん:04/07/25 13:46
左端の数を C として、
それよりおっきいのとちっちゃいのを LLL C RRRRR て言う風に
ならべ、LLL と RRRRR それぞれだけでまたやるのが quick ソートなわけだが
左端が一番おっきいもしくはちっちゃいと
>while(a[++i]<s);
こういうとこで 0〜N-1 の範囲を超えた場所まで検索してしまう
超えた場所ってのは不定な値が入っているとか他のプログラムの領域とか
とにかく触っちゃならんところであるからそこを表してしまっている a[i] などに対して
>t=a[i]; a[i]=a[j];a[j]=t;
こんなことすると危ないわなそりゃぁ

903 :デフォルトの名無しさん:04/07/25 15:14
関数を呼び出すとyかn以外を入力されるまで入力を繰り返すプログラムを作る課題なのですが、yとn以外を入力している間ループするのはできたのですが、yとnどちらを入力しても正解とでるようになったのですが、どの辺りが間違っているのでしょうか。
素人過ぎてごめんなさい

#include<stdio.h>

int answer(void)
{
int c;
do
{
c = getchar();
} while( c != 'y' && c != 'n' );
return c;
}

void main(void)
{
int ans;

printf("鯨は動物ですか?\n");
printf("Yesならyを、noならnを入力してください。\n");
ans = answer();
if( ans == 'y' || 'Y'){
printf("正解です。\n");
}else{
printf("間違いです。\n");
}
}

904 :デフォルトの名無しさん:04/07/25 15:19
>>903
if( ans == 'y' || 'Y'){ /* ←これは常に真 */

905 :デフォルトの名無しさん:04/07/25 15:36
あーもう
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
↑使え。すこぶるみにくいんじゃ!

906 :デフォルトの名無しさん:04/07/25 16:05
#include <stdio.h>

int main (void){
 int x,y,z,hi,mid,low;

 printf("整数1::");
 scanf("%d",&x);

 printf("整数2:");
 scanf("%d",&y);

 printf("整数3:");
 scanf("%d",&z);

 if(x>=y){
  if(x<=z){
   hi =z;
   mid=x;
   low=y;
  }
<<中略>>

 prontf("小さい順に並べると %d %d %d になります",hi,mid,low);

 return(0);
}


中略の部分を埋めて、3つの入力された整数を小さい順に並び替えるプログラムを作ってください。
おねがいします

907 :デフォルトの名無しさん:04/07/25 16:27
宿題でWinSockを使うのなんて、どこが出してるんだよ。
痛すぎな学校だな。退学した方が身のため

908 :デフォルトの名無しさん:04/07/25 16:28
else if (y>=z) { hi=x; mid=y; low=z;}
else { hi=x; mid=z; low=y;}
} else {
if (z>=y) { hi=z; mid=y; low=x;}
else if (x>=z) { hi=y; mid=x; low=z;}
else { hi=y; mid=z; low=x;}
}

909 :デフォルトの名無しさん:04/07/25 17:35
>>905
脳内変換できないならエディタなりビューティファイヤ使えばいいじゃん。

910 :デフォルトの名無しさん:04/07/25 18:01
この二つのプログラムって何をするプログラムなのでしょか?

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=266&fi=no
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=267&fi=no

教えてようかんマソ先生

911 :デフォルトの名無しさん:04/07/25 18:09
>>908
さんくすです

912 :デフォルトの名無しさん:04/07/25 18:14
>>910
上: ax^2 + bx + c = 0の二次方程式の解を求める。実解が無い場合には虚数解を求める
下: ん?

913 :デフォルトの名無しさん:04/07/25 18:20
上が数学的に整然としているのに対し、下のほうは支離滅裂な印象を受けた。
これ、ちゃんと完成してるの?なんとなく複素平面での座標変換みたいな感じが
あるけど。

914 :デフォルトの名無しさん:04/07/25 18:38
前半は区間[0,1]の間で一様な乱数を5回求める
後半は1以上6以下の乱数を5回求める

915 :デフォルトの名無しさん:04/07/25 18:42
>>914
[0,1]は閉区間だから0を含んじゃいけないよね、そのへんの処理がなされてない。
(0,1)とするか例外処理を入れるか

916 :914:04/07/25 18:43
あと RAND_MAX は定義が無いのでよくわからんが
おそらく実行される処理系での rand() の戻り値に使われる
整数型のとりうる最大値をしめすのではないかと

917 :デフォルトの名無しさん:04/07/25 18:44
>>915
閉区間なら含むんだが?

918 :デフォルトの名無しさん:04/07/25 18:45
>>916
stdlib.hに定義されてる

919 :デフォルトの名無しさん:04/07/25 18:45
開区間がa < x < bで閉区間がa <= x <= bか、スマソ
ちなみに、RAND_MAXの定義はこんな感じだった
#defineRAND_MAX0x7FFF

920 :デフォルトの名無しさん:04/07/25 18:47
表示から推測するに、一様乱数とそれに対応するさいころの目を
並べて表示するつもりだったのかも。

921 :C言語侍:04/07/25 19:28
>>906
>中略の部分を埋めて、3つの入力された整数を小さい順に並び替えるプログラムを作ってください。

って言うじゃな〜い♪

>prontf("小さい順に並べると

に な っ て ま す か ら 残 念 っ !
プロントエフ 斬 りぃっ!

拙者こうみえても中略の部分はつくれませんから
切 腹ぅ っ!





922 :デフォルトの名無しさん:04/07/25 19:43
うんこ

923 :デフォルトの名無しさん:04/07/25 19:59
うんこまん

924 :デフォルトの名無しさん:04/07/25 20:00


925 :デフォルトの名無しさん:04/07/25 20:00
ーまん

926 :69:04/07/25 20:08
九九の表示を元に↓を使って
for(i=1;i<=9;i++){
a1 = 1*i;
for(j=1;j<=9;j++){
a2 = 2*j;
}
}
i列,j列を
1,2
2,4
3,6
:,:(略)
9,18のように計算結果を表示するにはどうすればいいのですか?


927 :デフォルトの名無しさん:04/07/25 20:20
>>926
バカ!バカ!まんこ!!
ちゃんとお礼言ってきんしゃい。

928 :910:04/07/25 20:52
ありがとう ようかんマンたち

929 :デフォルトの名無しさん:04/07/25 21:17
このスレってJAVAは駄目ですか?

930 :デフォルトの名無しさん:04/07/25 21:19
>>929
Java の宿題ここで答えます。
http://pc5.2ch.net/test/read.cgi/tech/1089527630/

931 :デフォルトの名無しさん:04/07/25 21:21
アルゴリズム関連は共通だからOK
ただし、C/C++でしか通用しない回答が飛び出す可能性きわめて高し。

932 :929:04/07/25 21:23
回答ありがとうございます。

933 :デフォルトの名無しさん:04/07/25 21:42
質問なんですが、クラスのコンストラクタってどんな時に使うのでしょうか?
て、言っても本とかを見ると、”初期化をする時”なんて書いてるのですが、
実際、プログラムなどの仕事ではどういう時に使用するのでしょうか?
えっと、できれば、詳しく初心者でも理解できるような内容でお願いします。

934 :デフォルトの名無しさん:04/07/25 21:46
何かを始める時、準備するだろ?

いきなり突っこまずにまず濡らしてから、な

935 :デフォルトの名無しさん:04/07/25 21:56
クラスを使わなければいきなり突っ込める。

痛い思いをするかも知れんが、達成感がたまらない。

936 :デフォルトの名無しさん:04/07/25 21:57
>>934-935
下品すぎ

937 :デフォルトの名無しさん:04/07/25 21:59
>>933
初期化は初期化だよ.
メモリを初期化したり窓の大きさでシステムのデフォルト値を使ったり
そのクラスを使うに当たって前準備すべき作業(初期化)

938 :デフォルトの名無しさん:04/07/25 22:01
>>935
クラス使ってて言ったでしょ!子供生まれたら責任持ってよ!

939 :デフォルトの名無しさん:04/07/25 22:06
なるほど〜☆
やっぱり初期化で使うんですね!理解しました!!
ありがとうございました!!

940 :デフォルトの名無しさん:04/07/25 22:07
>>936
何言ってんだハゲチンポ

941 :デフォルトの名無しさん:04/07/25 22:08
>>936
          || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
          || あらしは   。    ∧_∧  いいですね。
          ||   無視!  \ (゚ー゚*)
          ||________⊂⊂ |
  ∧ ∧    ∧ ∧    ∧ ∧    | ̄ ̄ ̄ ̄|
  (  ∧ ∧ (   ∧ ∧ (  ∧ ∧ |      |
〜(_(  ∧ ∧ __(  ∧ ∧__(   ∧ ∧ ̄ ̄ ̄
  〜(_(  ∧ ∧_(  ∧ ∧_(   ∧ ∧  は〜い、先生。
    〜(_(   ,,)〜(_(   ,,)〜(_(   ,,)
      〜(___ノ  〜(___ノ   〜(___ノ


942 :デフォルトの名無しさん:04/07/25 22:12
>>934-935
たしかに荒らしだが、真理を伴なう荒らしではあった。

943 :デフォルトの名無しさん:04/07/25 22:14
へー、あれを荒らしと感じるのか。糞カマトト女なのか何なのか

944 :デフォルトの名無しさん:04/07/25 22:19
そろそろ新スレ準備中(はぁと

945 :デフォルトの名無しさん:04/07/25 22:24
栄冠は誰に?
>>835
>>859
>>876
>>881

946 :デフォルトの名無しさん:04/07/25 22:26
ヘーベルハウスはキャラが立たないな

947 :デフォルトの名無しさん:04/07/25 22:31
やっぱり幼姦マンだろ

948 :デフォルトの名無しさん:04/07/25 22:31
個人的にはヘーベルハウスきぼん

949 :デフォルトの名無しさん:04/07/25 22:34
  ./  ̄/〃__〃   /  ̄/       /
    ―/  __ _/   ./ ―― / /
    _/   /   /   _/    _/ /_/ がC/C++の宿題を片づけて見せます。
    /\___/ヽ
   /''''''   '''''':::::::\       ---- 【注意点】 ---------------------------------------------------
  . |(●),   、(●)、.:| +    ・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
  |   ,,ノ(、_, )ヽ、,, .::::|.      ・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
.   |   `-=ニ=- ' .:::::::| +     ・計算問題は必ず数式自体をあげ、どのような計算をするのか
   \  `ニニ´  .:::::/     + ・エラーは、その行とエラーの詳細を書きましょう。
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.      エラーメッセージが出た場合はそのままコピーしてください。
:   |  '; \_____ ノ.| ヽ i     ・後になって問題につけたしをするのはやめましょう。
    |  \/゙(__)\,|  i |      解いてもらっている方に失礼になってしまいます。
    >   ヽ. ハ  |   ||   -----------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10

950 :デフォルトの名無しさん:04/07/25 22:35
いけね、注意点の下の線がずれた・・・。

951 :デフォルトの名無しさん:04/07/25 22:42
拙者C言語侍がC/C++の宿題を斬って斬って斬りまくります!
     \∧_ヘ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     / \〇ノゝ∩   /  C/C++道
    /三√ ゚Д゚) / <
     /三/| ゚C゚|\   |    壱 宿題を斬って斬って斬りまくれ!
      U (::::::::::)    |    弐〜拾 歴代スレである!
      //三/|三|\   \  参 誰もが侍になれるぞ!
      ∪  ∪      \________________

【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

------------------------------------------------------------


952 :デフォルトの名無しさん:04/07/25 22:42
>>951
ワラタ これいこコレ

953 :デフォルトの名無しさん:04/07/25 22:45
1000以下の完全数を求めるプログラムなのですが、うまくいかないです。
ご教授お願いします。
#include<stdio.h>
int main(void){
int x,y,wa;

for(x=0;0<=x && x<=1000;x=x+1){
for(y=1;0<=y && y<=x;y=y+1) {

if(x%y==0)
wa=wa+y;
if(x*2==wa)
printf("kanzensuu:%d",wa);
return(0);
}
}
}

954 :デフォルトの名無しさん:04/07/25 22:47
NHK教育の大スターJBがC/C++の宿題を片づけます
    ,,w,,
   ,,ミ;゚∋゚ミ 。 <カタヤキソバ〜カタヤキソバ〜アポォウ゛ァナナ!
  ノ  JB ヽ  ゚。
  ミ     つ)  
  ∪  ミ ミ ミ    
 ミヽ、、__、、ノ    
   ノ,,,ノヽ,,,
【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html


955 :デフォルトの名無しさん:04/07/25 22:51
>>953
#include<stdio.h>

int main(void){
int x,y,wa;

  for(x=0; x<=1000; x++){
    wa = 0;
    for(y=1; y < x; y++) {
      if(x % y == 0)
        wa += y;
      if(x == wa) {
        printf("kanzensuu: %d\n", wa);
        break;
      }
    }
  }
  return 0;
}


はい。後は調べてね:Dインクリメントとかその他諸々

956 :955:04/07/25 22:52
って、おかしいジャン。やり直す

957 :955:04/07/25 22:56
#include<stdio.h>

int main (void) {
int x,y,wa;

  for (x=1; x<=1000; x++){
    wa = 0;
    for (y=1; y < x; y++) {
      if (x % y == 0)
        wa += y;
@
    }
    if (x == wa)
      printf("kanzensuu: %d\n", wa);
  }
  return 0;
}

これで正常動作する。多少最適化したければ@に
      if (x < wa)
        break;
を追記する

958 :デフォルトの名無しさん:04/07/25 22:57
スレタイ:
C/C++の宿題はヘーベルハウスが片付けます 29代目

本文:
       /|
       |/__
       ヽ| l l│<ハーイ
       ┷┷┷  (訳:私がC/C++の宿題を片付けます)

【注意点】 -------------------------------------------------
・使用する言語(C/C++)や環境(CUI/ANSIとか
 GUI/Windows32bitAPI など)は必ず書きましょう。

・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、全文を書きましょう。

・計算問題は必ず数式自体をあげ、どのような計算をするのか
 くわしく説明してください。

・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10



959 :デフォルトの名無しさん:04/07/25 23:07
950こえてるし、テンプレはどうでもいいからはよたてれ。

960 :955:04/07/25 23:08
もう少しアグレッシブな最適化をしてみた。10000まで計算して大体3倍程度違いが出る。

#include<stdio.h>

int main (void) {
  int x,y,wa;

  for (x=2; x<=10000; x++) {
    wa = 1;
    for (y=2; y < (x / 2) + 1; y++) {
      if (x % y == 0)
        wa += y;
      if (x < wa)
        break;
    }
    if (x == wa)
      printf("kanzensuu: %d\n", wa);
  }
  return 0;
}

961 :デフォルトの名無しさん:04/07/25 23:11
これからヘーベルで次スレ立ててきます。

962 :デフォルトの名無しさん:04/07/25 23:12
トリップも考えとけよ

963 :デフォルトの名無しさん:04/07/25 23:13
失敗しますた。ほかの方どうぞ。

964 :デフォルトの名無しさん:04/07/25 23:14
キーボードから文字を入力し、アルファベットでなかった場合"input error"と表示し、終了関数exit(0)を呼び出して終了させるようにするには、
条件文はどうすればいいのでしょうか?
おながいします。

965 :デフォルトの名無しさん:04/07/25 23:16
じゃ、立てます

966 :955:04/07/25 23:17
たまにチューニング出来そうなものを見つけて調子に乗ってるが
>>960を奇遇判定して偶数なら予めx/2をwaに加えておくようにすると
更に計算量を3/4程度に出来るはず。そうすると後で辻褄合わせが
必要になるのでそこらへんの計算コストは多少上がるけど。

967 :デフォルトの名無しさん:04/07/25 23:17
c = getchar();
if (c<A || c>z) {
printf("input error");
exit(0);
}

968 :デフォルトの名無しさん:04/07/25 23:19
新スレ乙

969 :964:04/07/25 23:19
>>967
アスキーコード表を見ると、Zとaの間に記号があるのですが・・・

970 :デフォルトの名無しさん:04/07/25 23:20
>>967
それはあんまりだ。

971 :デフォルトの名無しさん:04/07/25 23:21
C/C++の宿題は拙者が斬る! 29代目
http://pc5.2ch.net/test/read.cgi/tech/1090765027/

972 :デフォルトの名無しさん:04/07/25 23:21
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> // 存在しない環境もあるので注意

int main()
{
    int ch;
    for(;;){
        ch = getch();
        if(isalpha(ch)) putchar(ch);
        else {
            printf("\ninput error");
            exit(0);
        }
    }
    return 0;
}

973 :デフォルトの名無しさん:04/07/25 23:22
#include <ctype.h>を忘れた

974 :964:04/07/25 23:27
>>972
スミマセン…
conio.hやctype.hなどは習っていなくて、習っていないものはテストでは使えないので、
stdio.hとstdlib.hのみを使ってお願いします。

975 :デフォルトの名無しさん:04/07/25 23:34
int c = getchar();

if(!('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) {
fprintf(stderr, "input error\n");
exit(0);
}


976 :デフォルトの名無しさん:04/07/25 23:39
>>975
!(…) || !(…)

!((…) || (…))
にしないとまずくないか?

977 :デフォルトの名無しさん:04/07/25 23:41
>>974
char alphabet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int c;
char *p;

c=getchar();

for(p=alphabet; *p != 0; p++)
{
    if(*p == c)
        break;
}
if(*p == 0)
{
    fprintf(stderr, "input error\n");
    exit(0);
}


978 :デフォルトの名無しさん:04/07/25 23:43
if(!(('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'))) {
か,
if(!('a' <= c && c <= 'z') && !('A' <= c && c <= 'Z')) {


979 :964:04/07/25 23:51
出来ました!ありがとうございました。


980 :デフォルトの名無しさん:04/07/25 23:56
return 0;
じゃなくて,
exit(0);
にする宗教上の理由を知っている人はいる?

981 :デフォルトの名無しさん:04/07/26 00:00
強制終了って分かりやすいからじゃないの?

982 :デフォルトの名無しさん:04/07/26 00:02
main()以外の関数で終了させるとか main()を再帰呼び出ししているとか…(想像)


983 :デフォルトの名無しさん:04/07/26 00:05
その課題の場合じゃないの?


984 :デフォルトの名無しさん:04/07/26 00:07
非零を返せとも思う.

985 :デフォルトの名無しさん:04/07/26 00:33
使用言語はCです。
かなりの初心者なので複雑なことは出来ません。
配列がかろうじて出来る程度です。その程度でお答えください。
オネガイします。
1、キーボードから入力した10個の実数データを配列xに格納し、その中の最大値と最小値を求め出力するプログラム
2、キーボードから入力した10個の実数データを配列xに格納し、そのデータを小さい順に出力するプログラム
3、文字型配列を、”OKINAWA”と初期値として宣言し、文字列を反転させて”AWANIKO”と表示するプログラム
4、要素の数が40の文字列配列str1、str2、str3を、初期値なしで宣言する。その後、str1に”Let's”を、str2に”Study”を、str3に”programming”を代入し、これらの文字をつなげて出力するプログラムをstrcat関数を使わない場合と使った場合の2種類のプログラム

(-m-)おねがいします

986 :デフォルトの名無しさん:04/07/26 00:36
相乗平均を出したいのですが、Cでの出し方が分かりません。
辞書にはn個の数について、その相乗積のn乗根とあるのですが、どうやるのでしょうか?

987 :デフォルトの名無しさん:04/07/26 00:38
>>986
1分ぐらい悩んだが、対数使えばいいんじゃないか?

988 :デフォルトの名無しさん:04/07/26 00:42
powで1.0/n乗するのは

989 :デフォルトの名無しさん:04/07/26 00:45
今更だが、完全数。

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

int IsPrime(int n)
{
int i;
if(n == 2) return 1;
if(n % 2 == 0) return 0;
for(i = 3; i <= sqrt(n); i += 2)
if(n % i == 0) return 0;
return 1;
}

int main()
{
int i, m, p;
for(i = 2, m = 3;; i++, m |= m << 1){
if(!IsPrime(i)) continue;
p = m * (m + 1) / 2;
if(p > 1000) break; // ここで最大数の調整
printf("%d\n", m * (m + 1) / 2);
}
return 0;
}

990 :デフォルトの名無しさん:04/07/26 00:50
素因数分解をやるわけか。計算量はどっちが多くなるんだろう。
ぱっと見じゃ分からんな。
O(N * O(N^(1/2)))ぐらい?

991 :デフォルトの名無しさん:04/07/26 00:50
あ。
printf(..., m * (m + 1) / 2);
      ↓
printf(..., p);

992 :デフォルトの名無しさん:04/07/26 01:01
main内のintはunsignedにした方がよかったかな。
100000まで求めて、1msかからなかった。(Cel300MHz/測定:GetTickCount)

993 :デフォルトの名無しさん:04/07/26 01:17
>>767 >>792 >>795 >>802
お馬鹿な俺は分枝限定法など知らんが,適当にお手軽最適化した。
分枝限定法がお手軽最適化に一致してりゃ良いがね。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090589788&res=6&fi=no

994 :986:04/07/26 01:21
>>988
あ、なんかそれっぽいですね。
試してみます。

995 :デフォルトの名無しさん:04/07/26 02:13
>>992
なにげに鬼速だな

996 :デフォルトの名無しさん:04/07/26 02:16
exit(0); のためだけに stdlib.h 読んでるん?

997 :デフォルトの名無しさん:04/07/26 02:32
.hといっても型の宣言だけでしょ

998 :955:04/07/26 02:34
>>989
メチャクチャはえー。なんでこんなに速いのか分からない。
素数判定部で計算量が削られてたり、その後のループ回しが巧妙だったり

うーん、もうしばらく読んでみますわ

999 :デフォルトの名無しさん:04/07/26 02:44
よゆーの999


1000 :デフォルトの名無しさん:04/07/26 02:45
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

264 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)