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

このエントリーをはてなブックマークに追加
1ようかんマン ◆nup627Y0Gs
    .__   けっこう失敗も多いようかんマンです
    |・∀・| <NHK教育へ出演目指してC/C++の宿題片付けます
    ト旦ノ.|
 NHK `ゝゝ´スタジオ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

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

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

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

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

【歴代スレは>>2-10
あびょびょーん
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
キタ━━━━━━(゚∀゚)━━━━━━!!!!
 .__
ヽ|・∀・|ノ ようかんマン#羊羹饅々で 誰でも 
 |__|  ようかんマン ◆nup627Y0Gs になれるよ
  | |

ようかんマン保管庫
http://page.freett.com/schwarzewald/youkan/
なんのひねりもないよ・・・_| ̄|○
ようかんマンかよ、個性もクソもないな
   |おでん 【▽御田】
   |〔「でん」は「田楽(でんがく)」からという〕
   |豆腐を串(くし)にさして味噌をつけ、火であぶったもの。
   |焼き田楽。
   |また、蒟蒻・里芋などをゆで、
   |串にさして味噌をつけたもの。[季]冬。
   └―y――――――――
   ___        ∧_∧   ヽ△
  l〜・Дl〜    (Д`   )、   ●>
  |___|     /      ヽ  □
   ノ   >     ヽ_つ旦と_ノ  < ヽ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
 . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>1乙。おでんマンも応援だ。
            ,、-――ー-- 、___,            (ノ
             /   __,ノノノ、  く
          /   / 、_,  、_从 | 乙       ゚_    ,、-
          //l/ / ィ;;;;r  、__!| l|ノ           l」 ,ィ'´
         イ | l|イ! ゙ー' , l;;;j川l       _,、- '"´|   /:::|
         !l川 ノ| " r┐ "川 _,、- ''"´      l /:::::::!
            ノVl|ハト、_ ー'  ノノノ|         |/::::::::::|
                ノノ三彡'´⌒ヽ |         l:::::::::::::|
           /  イ __    | |          |:::::::::::::|_,、-''"´
           _く○___,ノr-‐ 、`ヽ_,ノ |       _,、-‐''"!:::::::::::/
       r'´ /     ( rー¬、_,ノ|  |_,、- ''"´    。:::::::::/
      ⊂| /     `'l    \|   \       + :::::::::/
       У /      ヽ、   \    \    ●/::::::::/       ,ィ >>1
       / /        `'ー--<    \  "∧:::::/ 、____,ノ !
        〈 /     !       \ `ヽ    \/  V  ヽ、    /
       >!      |          ヽ、!     o ゛ / ,   `'ー‐'´
      ゙〜ヾ、   |          //        / ハ      ,、イ
        |`゙ヾ、_,ノ、______ノ/       (__)_,ノ  ヽ、_,、ィ'´ | |
        |   /゙〜〜〜ハ'ーヘ イ´                | |_r、| |
        | "" /     |    |               ヽ、_,ノ| |
次スレは
C/C++の宿題( ゚v^ ) オイチイ
乙。次スレは亀甲男でよろしく。
同じネタを二回使うなよ ぼけ
( .3.) ヌェー そこでボクの出番だYO!
よーし。ばっちこい。
宿題コネー
漏れが10年以内に彼女が出来るかどうかを判定するプログラムを作りなさい
17scanf:04/07/16 21:56
助けて〜
課題
■何個(最大20)かの実数値をscanf()で配列に読み、読んだデータを昇順(添え字が大きく
 なるにつれて値も大きくなるように)に並べ替えその結果を表示するプログラムを作る。
・並べ替えの手法はバブルソートと呼ばれる手法を用いる。

18デフォルトの名無しさん:04/07/16 21:57
>>1
ようかんマンでもなんでもいいが、棹はやめろ。代目にしろ。
int f(void)
{
return rand() / (RAND_MAX + 1);
}

int main(void)
{
srand(time(0));
if (f()) puts("できる");
else puts("できない");
return 0;
}
_| ̄|○
2次元座標で、全ての点を含む面積最小の長方形を求めるアルゴリズムを教えてください。
>>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;
}
s[5]→s[20]
に訂正・・・
>>21
X1 = 全ての点で一番小さいX座標
X2 = 全ての点で一番大きいX座標
Y1 = 全ての点で一番小さいY座標
Y2 = 全ての点で一番大きいY座標

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

でよろしい?
ああ、局座標と直交するとは限らないのか・・・
>ああ、局座標と直交するとは限らないのか・・・
はい・・・

何か参考になるページや本とかを聞くのはスレ違い?ようかんマン。
 |「これは羊羹ではないか」
 | 驚いている。小豆の餡を砂糖汁でこね、釜で蒸したものである。
 | 日本の漢音ならヨウコウだが、明音にちかく発音していることに
 |よっても、対明貿易でつたわってきたものであることがわかる。明
 |ではふつう、羊肝餅(ようかんべい)と書き、長江下流付近では、
 |九月九日の重陽の節句のころにつくる。民家でもつくり、寺でもつ
 |くる。日本へは、かの地の禅寺から日本の禅寺へ移ってきたので
 |あろう。
 | いずれにしても、羊羹など、よほど有力な禅寺か、将軍、あるい
 |は貿易に関係のある有徳人(金持)しか、口にしない。それも常時
 |ではない。
 |「京は、たいそうなものだな」
 | 駿河の王ともいうべき今川義忠が、羊羹のひときれでおどろいて
 |しまった。
 └―――y――――――――――――――――――――――――
   ___      ∧_∧
  l〜・Дl〜.   (´Д` )、 <デ、アルカ
  |___|     /      ヽ
   ノ   >     ヽ_つ旦と_ノ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
 . ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
28デフォルトの名無しさん:04/07/16 23:27
>>21
本当にそれ宿題か…?
課題なら全文載せてくれ。
>>26
>>24を、座標系?を回転させながら...
いやなんでもない。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
初代スレがキャラスレでもなんでもないのに、
なぜそんなにキャラクターに拘るのら?
>>21
まず数学板に行って考え方を聞いて来い。
このスレは数学の問題をといたりするスレではない。
式が分かったらまた来てくれ。
おお!低脳PGらしいたらい回し法だ。
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 };

}
>>21
アルゴリズムは思いついたが説明が面倒だ。
ソース書いてみるよ…
ただ、間違ってると思った時点でやめるわ。
>>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 };
(・ω・);
}
>>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
どなたかお願いいたします
手も足も出ない状態です…


各自が読み込んだ文字をファイルに格納するプログラムを作成せよ。
ただし、低レベルのシステムコールを使うこと
のどから手が出てるじゃないか
>>39
K&Rを読もう
( .3.) マルェー ボクなんか出る手も足も無いZO
>>40
>>42
ワロタ
>>26
ゲームプログラミングのための3Dグラフィックス数学182ページからの
「境界ボリュームの構築」が多分ずばりそのものだ。
漏れは低脳PGなので、書いてあることよくわからんかったが、
そんな課題の出る学校の生徒さんなら、多分すぐとけるのでしょう。

式の解説してくださったら、Cへの翻訳はやるますよー。
>>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なら実部だけ表示するには自分で工夫しな。
4645:04/07/17 02:07
何で学校ってC++教えずにC教えるんだろ?
( .3.) ヌェー 単純に変えるの面倒くさいからと聞いたYO
       所詮、単位の為だけの勉強だYO
>>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
5149: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
多くねーよ。
5549: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
>>21
http://pc5.2ch.net/test/read.cgi/tech/1025264999
>>621 で同じ問題がでていたな・・・

もしかして同一人物?
あの方法に対して、何か問題が見つかったのか?
ああ、「そんな板orスレッドないです。」なのね・・・
2ch ブラウザ使っているから気づかなかった。
再うpしとくか。

> 621 名前: デフォルトの名無しさん 投稿日: 03/11/23 22:33
> xy 平面上に複数(十個〜数十個程度)の点があるとき、それに外接する最小の長方
> 形を求めるにはどうすればよいか、お教えいただけないでしょうか?
> もちろん、長方形の4辺がxy軸に平行にならなくてもOKです。
>
> 「最小」の定義は、面積が最小、または、4 辺の長さの合計が最小、のどちらでも結
> 構です。(どちらがふさわしいか、今は決めかねているので・・・)
>
> よろしくお願いします。
5857: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点)より長方形を求め、面積を求める。
> }
> 計算した面積の組の中から最小の組を発見する。
5957: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つの投影直線が重なるような気がするから
>
> すみません。イマイチよく理解できないのですが・・・。
> 重なるような投影直線とは、長方形の頂点を通る直線のことを言っておられるのでしょう
> か?
> そうだとすれば、オリジナルの点集合の中に、必ずしも長方形の頂点が含まれるわけでは
> ないので、うまくいかない場合が出てきてしまいます・・・。
6057: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
> おおお、どうもありがとうございます!
>
> 数学板、読んでみました。
> 「辺を共有しない長方形を最小長方形だと仮定すれば矛盾が生じる。ゆえに、最小長方形と
> 凸包は必ず辺を共有する」
> ということですね。
>
> お陰で解決できました。助かりました!
6157:04/07/17 08:06
あ、抜けてた。

> 636 名前: 621=624 投稿日: 03/11/28 23:14
> >>626
> ふむ、凸閉包、ですか。
> 626 さんの書き込みを見るまで、このような言葉があることさえ知りませんでした。
> 勉強になります。
>
> >>630
> ふむふむ、なるほど。何だかよさそうですね。
>
> ただ、気になるのは、630 さんの考え方だと、
> 「求める長方形の一辺と、凸包の一辺とが、必ず重なる」
> ことを前提としていますよね。
>
> でも、凸包の辺と、解となる長方形の辺とが、全く重ならないような場合(つまり凸包の
> 頂点が長方形の辺に接するだけの場合)というのはありえないのでしょうか?
>
> そのような場合がありうるのかどうか少し考えてみたのですが、不勉強ゆえ、よくわかり
> ませんでした・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089361761
上のような、「プログラムを作る」プログラムを作る、という課題を出されたのですが
カードの定義と,定義されたデータベースの操作を行うプログラムとを分離して作成するもの
でしたが、分割しないで、定義と操作をひとつのプログラム内で行えるようにするための方法
を教えて下さい、お願いしますっ!
63scanf:04/07/17 11:19
たのんまっせ!
課題
■階乗値を求める関数を作り、それを使用して「組み合わせ」の個数を調べるプログラムを作る。
・階乗値の名前は自由。また、再帰型、非再帰型どちらでもよい。
・nとrをscanf()で読み、nCrの値を計算して表示する。
・nとrの値に関しては非負、非零であること、n>rであること、n<=10であることを確かめ、正しい
 数値を入力させる。
・0!をも扱えるようにする。
/* >>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の計算が間違っていないか?
int c(n, r) int n, int r { return fac(n) / fac(r); } 哉?
バカばっかり
/*
(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)!} と思われ。
7064: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) ));

_| ̄|○
>>70
そーだね。
(1)更新、戻る、進む、アドレスバーのついた基本的ブラウザを作る。ただし、タブブラウザ。
( .3.) ヌフフーン 「お願いします」の一言も無いんだNE
7472:04/07/17 16:10
>>73
ネタにマジレスカコよすぎて射精しちゃう。
( .3.) ヌェー ヒマな時のマジレスもオツなもんですYO
カレンダー表示
system("cal");
そこまで行くと、

#!/usr/bin
cal

でいいじゃんって話にならないか
>>77
Perl?
あぁアホなことを…
#!/bin/sh
だった
まあ、環境によって違うけど
>>72-74
宿題ギレの症状がでてきました。
はやく僕らに宿題をください。
もう夏休みだろ?
夏休みの宿題をくれよ
83デフォルトの名無しさん:04/07/17 18:08
c++でメモリーリークの発生箇所がわかるように new deleteをオーバーライドせよ
まずオセロシステムを作ってください。
そしてランダムでうつAIを作ってください。
そしてこれと一万回対戦させて90%以上の勝率
で勝てるようなAIを作成しなさい。

>>84
ここを見ている香具師らでオセロを作れる人間は
いない。
>>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
それだけだったら誰でもわかる。
「好きなように」の部分が大事だと思うんだが。
課題載せようかと思ったけど、多すぎて載せるのに数時間要するのでヤメた
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
>>90
登場するたびにそれじゃぁ
このスレもおしまいだなっ!
何ですかって何ですか?
 <ω>
  |・ ・|
ノ( .3.)ヽ エルァー AAはバリエーションが命だZO!
>>79
sh: cal: command not found
>>93
バリエーションも糞も・・・
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
メモリーリークの発生箇所がわかるように
メモリーリークの発生箇所がわかるように
メモリーリークの発生箇所がわかるように
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1089361761
上のような、「プログラムを作る」プログラムを作る、という課題を出されたのですが
カードの定義と,定義されたデータベースの操作を行うプログラムとを分離して作成するもの
でしたが、分割しないで、定義と操作をひとつのプログラム内で行えるようにするための方法
を教えて下さい、お願いしますっ!
>「プログラムを作る」プログラムを作る
まで読んだ

って何回させるねん!
>>98
QEMUのdyngenのソースを読め
101デフォルトの名無しさん:04/07/17 20:06
おいこそが101匹わんちゃんげとー
98は一週間前にも見たけど結局答えって出たんだっけ?
>>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;}
104103:04/07/17 20:24
書き忘れ。
入力は 5 3 等、x座標、y座標で行う。左上が 1 1 。
エラーチェックは行われていないので注意。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・ω・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
>>83はやっぱり皆さんには難しいですか?
うん、、、
こ、、、
>>106
そういう宿題が出る学校(学科)の人には教えるわけにはいかないんだよ
純粋に単位が欲しい人のためにあるスレなんだから。

中途半端な知識で社会に出られても困るので。
>>83
ちょっとした発想力さえあれば高卒の俺にでも分かるわけだが・・・
方針すら立たないのか?
素直にわかりませんって言えばいいのに
うん、わかんないから次の問題マダー?
メモリブロックの正当性検査を一式書いてったら結構な量のコードになるな。
newとdeleteだけでいいってんなら、newで控えて、deleteで控えを削除して、
newされっぱなしのブロックのダンプとかできる関数がありゃいいのか。
少し欲を出すなら、new[]とdelete[]のチェックも追加した方がいいだろな。

で、誰かコード書かないの?
109と110が口先だけの人間じゃなければ、すぐにコード書いてくれると思うよ
じゃー、問題出すよー
煽ったらコード書く奴が居ると思ってるなら大間違い。
煽ろうが煽らまいが、書けない奴は書けない。
書ける奴は煽られると書かない
>>115
宿題でない問題ってアリなん?!
>>119
内容次第
プッのAAを教えてください
適当な2次元配列にいくつか英単語を入れ、辞書順にクイックソートする関数を作成せよ
英単語は実行時に入れてもプログラム中に書いてもファイルから読み込んでもよい。

文字列ソートなんてさぱーりです。よろしくお願いします。
毎スレ出てくるな、そのテの質問。
さぱーりって…比較関数かいてqsortで終わりじゃんか
ちょいっと長いのですが、Cの宿題を助けていただけませんか?
身長のデータを一行一人分で入力するものとする。
ただし、入力するデータは最大でも100人分と分かっているものとする。
身長データとして負の値を入れた時点でデータ入力の終了と判断するものとする。
データ入力が終了した時点で何人分のデータであったかという人数情報と、平均身長、
ならびに全データの中で最大値と最小値を出力するプログラムを作ってもらえませんか?

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

なお、プログラムの作成に関してはmain関数以外の関数をひとつ定義して使うという条件があります
>>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;
}
127125: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

この様な実行結果が現れるようにしたいのですが
なかなか難しいでしょうか?力を貸してください、お願いします、ようかんまんさん
>>83
呼び出し先の関数から,呼び出し元を特定する方法は?
宿題なら,その方法を予め教えられているはず。

じゃなきゃ,そんな環境依存のもの書けねぇよ!
129126:04/07/17 22:54
ソート前後の文字列を表示したければ
qsort の前後に

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

を入れといてね
130122:04/07/17 23:13
>>129
ありがとうございました。
つまんねぇくなりましたな。
さすがに同じような問題ばかりだと飽きるよな
目の醒めるような、とは言わないがたまには目から鱗を落としたいものだ。
>>132
そしてみんな巣立っていくんだ。
こんなスレに常駐するのなんてせいぜい3ヶ月長くても半年だろ。
うろこに覆われすぎて、落ちようもなくなってるのさ君の目は
>>135
まーね。
宿題を出す立場の大学のセンセもそういう意味では飽き飽きだろうな。
研究室配属の学生に添削させるから無問題ですよ
…なんか寂びを感じてしまったよ。
逆におまえらが目の覚めるような問題を考えてみろ。
といっているお方はなぜ自分で(ry
>>83 こんな感じでいいか?
            __
          ヽ|・∀・|ノ
          |__|
           | |

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=164
>>142
なぜかおぺらた [] が無い
144もう一度…m(_ _)m:04/07/18 00:49
>>142
size==0 のとき,newの挙動がおかしい。
size=1にすべし
 |>>83 再挑戦だ!
 └―――y――――――――
   ___      ∧_∧
  l〜・Дl〜.   (´Д` )、
  |___|     /      ヽ
   ノ   >     ヽ_つ旦と_ノ
 l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=165
>>147
もはや>>83の事などどうでもよくなっているに一票
14983:04/07/18 09:56
ようかんマン ありがとう! 頼りになるね
C++なので std::map<void*, std::pair<std::string, line> > に、
確保したアドレスと<ファイル名、行番号>のマップを確保したら
と思ったんだけど、このアイデアはどうですか?
で、そのstd::stringの領域確保はどうするんだい?
>>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;



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

それとも違う意味ですか?
>>138
専任教員のばやい,全部自分でやらにゃあかんので大変です。
研究室に学生なんていないもーん。
大学院作成中だもーん。
Fランク大は大変ですね
入力された英単語で、しりとりができるかどうかを判定するアルゴリズムを教えてください。

auto return true other not
ならO.K.

fanction all letter
はダメ。

お願いします。
auto return true other not
これのどの辺がしりとりなの?
CともC++とも指定されなかったらどっちで解けばいいのよ?
157デフォルトの名無しさん:04/07/18 16:15
点数データ(初期値代入)が入った1次元配列のアドレス・人数を受け取って、
その最大、最小点 平均点を求めて返す関数をC++で作成してもらえたら助かります
>>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;
}

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

って並び替えろってことか?
160154: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つから最小値を返す関数を作りたいのですが、いい考えが浮かびません。
賢い皆さんお願いします。
>>161
あなたの考えで間違ったとことか指摘してもらえるし
その失敗したソースを公開したほうがいいと思うよ

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

#include <algorithm>

int minminminmin(int a, int b, int c, int d)
{
return min(min(a, b), min(c, d));
}
165157:04/07/18 17:30
>>158
表示するだけでよいです。
ありがとうございました。
OTL

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

166161: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;
}
なんです。よろしくおねがいします
167162:04/07/18 18:02
ありがとうございました。
algorithmなんてインクルードファイルがあるなんて知らなかった(w
まあ、嫌なら
template <typename T>
min( const T& a, const T& b )
{
    return ( a < b ) ? a : b;
}
でやればいいんだろうけど
>>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回分表示せよ。
 ただし、乱数の種はユーザーからの入力を用いること。」
というところかな。
170161:04/07/18 18:30
169さん
ありがとうございました☆
問題なく、思った結果が出ました。
感謝です☆
>>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桁数の処理をほどこす
175174: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 とはならず、エラーを返す

という課題二つを出されました、もうしわけないですが、お願いします。
長くなってしまって、ごめんなさい。
>>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
以降の行がしりとりをする単語
>>174
演算子は何をサポートするのか?
演算子の優先順位はどうなるのか?
178154:04/07/18 20:34
>>176 さん、ありがとうございました。
感謝。
以下のようなプログラムを作っていただけないでしょうか。どなたかお願いします。

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

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

よろです、orz
>>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;
}
うお、nbsp;で置換してるうちに >>181 が書いてた
スマソ
>>182
己の未熟さを知り感動した。
if( i % 3 == a && i % 5 == b && i % 7 == c)

講師が気にいらないなら
i % 3 == a && i % 5 == b && i % 7 == c && printf( "%d ", i );
187179:04/07/18 21:39
181さん182さんをはじめ、少しでも考えてくださった皆さんありがとうございます。
本当に助かりました。
>>182
for (i = c; i <= 100; i += 7) {
if (i % 3 == a && i % 5 == b) {

これでいいんでないの?
>>179
数式で解こうよこのぐらい。

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

で基の数字になるはずだよ。
190189:04/07/18 21:48
ごめん、ミス
(-a*35+b*21+c*15+105)%105
が正しい。
void 関数()を途中で終了させるのはどうしたらいいですか?
return;
193デフォルトの名無しさん:04/07/18 22:42
10リットル,7リットル,3リットルの3種類の容器があり、
今、10リットルの容器に水が満杯に入っている。
これを、3つの容器を駆使し、5リットルの水を取り出す
手順を表示するプログラムを作成せよ
(容器を傾けて、半分の量を取り出す事は出来ない)

さっぱプーです・・・
よろしくお願いします。
手順を表示するプログラムを作って何になるというのだろうか…?
>>194
アルゴリズムの勉強だろ
ハノイの塔とかと同じ
>>193
10x + 7y + 3z = 5
を満たす x, y, z を出す過程を示せばいいんじゃないの?
あとはシラネ

関係あるか分からないけど、
Aリットル Bリットルの容器から、gcd(A, B) リットル量るのは拡張ユーグリッドのごじょほうで対数時間で解ける.
(Ax + By = gcd(A, B)を満たすx, yを求める)
再帰っぽい気はするんだが、意外と難しいな・・・
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つのデータのうち、最大値を求めるプログラム)

お願いします。

>>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);
}
}
202193:04/07/19 00:05
>>200
うおー!ありがとー!!!
あなたこそはキングオブようかんマンです!
>>200
なるほど
204174:04/07/19 00:15
あう・・・すんません、
僕のも尾根がしますorz

もうしわけない
>>174
> つまり・・・1+1 1-1=2 という結果になります。
ぶっちゃけ、ココの意味がわからん。1-1はどういう意味があって入力するの?
>>205
1+1+1-1=2 ってことだろ。
その次の行読んだらわかるじゃん。
207205:04/07/19 02:37
208205:04/07/19 02:52
209デフォルトの名無しさん:04/07/19 03:14
宿題です。よろしくお願いしますm(__)m 開発環境はLinuxです。

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

(2) さらに、mark.txtという名前のファイルを読み込み、点数順にソートして、最高点、最低点、平均点を求めてranking.txtというファイル名で出力
するプログラムを作成しなさい。
カプレカ数(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言語での解答をどうかお願いします…。
>>209
言語は?

というか言語の指定がない場合C(またはC++)でやるっていう暗黙の了解とかあるのこのスレ?
スレタイよく見れ
213デフォルトの名無しさん:04/07/19 04:02
>>212
お前こそ
215210: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にしちゃったな。
>>211
明示が無い場合は、回答者がやりやすい方でいいのでは。
>>1のテンプレに「CかC++かどちらがいいか書きましょう。」
みたいなのがあるといいですけどね。
218174:04/07/19 08:20
>>205さま
ありがとうございます。

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

ごめんなさい、このソースがどっちのものかおしえてくだされ・・・・
もし、片方の課題のソースだけでしたら・・・もう片方のかいとうもおねがいおいたしますです。orz
>>213
CまたはC++でやるってスレじゃん,オマエアフォ?
>>219
あれだ、>211は「どっちかに決まってるのか?」って聞きたかったんだよ。
で、>212は「どっちかに決まってるだろ」って言うもんだから、>213で
「それはわかってる」って言いたかったんだよ。

#つーか、あんたら馬鹿?
221205:04/07/19 10:52
222174:04/07/19 10:54
ヤダヤダヤダ!ようかんマンじゃなきゃヤダー!

 〃∩ _, ,_    /)    〃∩ _, ,_    /)      
⊂⌒( `Д´)ミ( ⌒ヽつ⊂⌒( `Д´)ミ( ⌒ヽつ
 `ヽ._つ⊂ノ⊂( ,∀、)つ.`ヽ._つ⊂ノ⊂( ,∀、)つ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|     ミ
                            |    〃 ∩  。
                            |   ⊂⌒从ヽ从゜o ザバーン
                            | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
223174:04/07/19 10:57
222おれじゃねーし・・・W

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

感謝です〜〜〜orz
>>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
>>224の直後に>>225がきたんでネタかと思ったら、マジみたいね。
ホントに日本が不自由な方のようでw
日本が不自由
流れにワラタ
>日本が不自由
うんうん日本って不自由だよね!
って… んっ?
>>228
あんた最高だよ。
>>228
( .3.) ワロタ
234デフォルトの名無しさん:04/07/19 17:53
最大10個の整数をscanfで配列に読み込み、読み込んだ整数が何種類あるかを求める
プログラムを作りなさい。
>>234
scanf
atoi→配列へ
qsort
forループで隣接二項を比較、違えばカウントを増やす
c++なら
sort
unique
でOK
>>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;
}
unique(&x[0], &x[i]) - &x[0]
これで要素数でるか?
std::distance(&x[0], unique(&x[0], &x[i]) );
だよね普通
多分出ると思うけど、distance 使わにゃならんと思う
(unique(&x[0], &x[i]) - &x[0]) / sizeof(int*)
>>240
やっちゃったよ...
>>237, 240
STL 使いたいんならまずは Effective STL を買って嫁
setに格納しといて、要素数ででるんとちゃう?
>>243
そうだね、バカな>>235とか>>236に引きずられちゃったよ。
>>243
馬鹿な>>235ですが詳細きぼん
>>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;
}
set には重複したエントリを格納できない
>>246
馬鹿な>>235ですが最近のC++は分かんないんです、すいません。
そのうち勉強しときます。
>>248
templateの無い頃のC++でつか?
>>246
馬鹿な>>235ですがその通りです。
95年刊のC++入門書を読んだっきりなので。
型安全性、拡張性あっての C++ だというのに…
>>251
誤爆?

>>250
その頃にはtemplateもfixしてたと思うが。
馬鹿な>>235ですが>>252さん、95年刊の本(しかも邦訳)というのは92〜93年頃の
知識に基づいて書かれているはずなんですがそのへんどんなもんなんでしょう
255デフォルトの名無しさん:04/07/19 23:37
初めまして
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1090247270&res=1
のプログラムなんですが、
自分でファイル名とファイルに書く込む内容を入力して、読み出すときも自分で入力してやるって
感じのプログラムを作ってみたのですが、
その過程で、書き込む内容だけ派生クラスを経由?して書き込むって感じしたかったのです。
ですが、ファイルに書き込む所なのか、読み込む所なのか、なぜかファイルの内容を
読み出す事ができません。
ですが、書き込むまでの所で、派生クラスのオブジェクトを使うとちゃんと書き込んだ内容が
表示されました。
多分、派生クラスは必要がないとは思うのですが、なぜ派生クラスのオブジェクトを使うと
ちゃんと動作するのかが気になって仕方がないです。
どうか、教えて下さい。お願いします。
基底クラスのデストラクタが仮想関数でない時点で見る気無くした
>>255
どういう環境なのか知らないけど、ファイルから読めてるかどうかは確かめるの簡単だべ。
258255:04/07/19 23:52
とりあえず、デストラクタを仮想関数にした、として考えてみてもらえないでしょうか?
すみません。環境って意味がわからないのですが、使ってるOSはWinです。Microsoft Visual C++ 6.0を
使ってます。
一人分のデータが学生番号、前期点数、後期点数で構成される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);
}
この関数をどこに入れたらいいかわからないのでよくわかりません。
よろしくお願いします。
>>260
とりあえず冷凍室で3時間。
>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;
}

問題が意味不明。
>>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
まぁきっと初歩の初歩の問題だと思うんですが
さっきからいろいろやってもエラーだらけで
何が間違ってるのかさっぱりわからんので
誰か親切な方を待ってみます。
>>260
あなたの質問がよくわからないのでわかりません。
「どこに入れたらいいか」ってどういう意味?
定義を書く場所?それとも使う場所?
保存する場所だったら冷凍室でいいと思われ。
268264:04/07/20 01:30
出力ははっきりしてたorz
269デフォルトの名無しさん:04/07/20 01:31
>>267
すみません…定義を書く場所です。
この関数使って通過日数プログラムを作らなければダメなんです。
>260 たぶん、2文字を数値に直す所に使え、って事だNe!
271259:04/07/20 01:33
>>263
ありがとうございます。参考にさせてもらいますね
>>262 >>264
264さんが言うとおりとりあえず構造体を使ってみるのが目的です。

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

いや。だって、サンプルの結果表示では、前期と後期の点数が、小数点表示になってるよ。
しかも、平均点の項目は、空白だし。
>272 もう目が悪杉
ごめん。なってなかった。
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
出力結果 関数の式が不正です。もう一度入力してください。

不正な式の判定がうまくいきません。
どうがよろしくお願いします。
276275:04/07/20 01:45
間違い発見しました。
x^2の係数は 4.6 →x^2の係数は -4.6
どうかよろしくお願いします。
277C++: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;
}
278267:04/07/20 01:54
>>269
ほんとに定義を書く場所?冗談半分だったんだけど・・・。
とりあえずは#include <stdio.h>のすぐ後に書いてみたら?
不格好かもしれないけどたぶん動くだろう。先長そうだね。ガンガレ。
279デフォルトの名無しさん:04/07/20 01:55
>>277
struct student s[N];
でイインジャネーノ?

よかねーよ
> よかねーよ
C++ じゃないの?
ああ、そういうことか。
スマンかったね
int N;
cin >> N;
struct student s[N];

て出来ない?
284C++:04/07/20 02:15
>282
struct student s[N];
こんなことやったら、C++でもエラーでしょ。
285282: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;
}
それ、C99ぢゃ...
>>286
少なくとも手元のgccでは通ったyo。
でも、可変長配列はC99じゃないかぎり本来ならアウトだね。
289286:04/07/20 02:35
工エエェェ(´д`)ェェエエ工
gcc しか使ったことのないヲレって
290277: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;
291290: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;}
292290:04/07/20 03:11
double k=2;
を追加します。
。。。ネタだと思うがあえて質問汁!
なぜ二重ループを同じ変数名でやりますか、あなた?
違うになれませんと、ダメ
>>291
【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

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

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

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
漏れが明日のテストが出来なくてで単位落とす確率 1
>違うになれませんと、ダメ

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

嘆かわしいなぁ……
自分の書いたもの読み返していないんだろうか。
297290: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
>>290
もしその問題文のまま宿題がだされているなら、あきらめた方が良い。
オレなら投げ出してるね。
>>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];
とでもすれば医院で内科医。
>>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
303たのんます。:04/07/20 11:11
くだらない質問で新しくスレ立てる香具師には教えてあげない
305たのんます。:04/07/20 11:24
どうやって貼ればいいのかわからなかった。。。
>>303
概要だけ。
ブロックのスタート地点をi=0..n-1で回す。
その中で、前の要素と値が違ったらブロック長測定開始。
過去の最長<今測ったブロック長なら更新。

…とまぁ、そのままプログラムにすればいいだけだ。
307174: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 ***
*** コンパイル終了 ***
308174: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
ソース書けボケ
310174:04/07/20 11:41
311デフォルトの名無しさん:04/07/20 11:42
>306
プログラムを書いてもらえるとうれしいのですが。。。
というか、書けません。
312174:04/07/20 11:43
再度修正、上が課題1でその下が課題2のソースです。


れんかき、すまそ
教えてようかんマン

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

ポインタ変数がよくわかんねっす。orz
314174:04/07/20 11:45
>>313
戻り値が判別結果と面積の2つだから、
片方は普通の戻り値、もう片方はポインタ変数で返せ
ってことではないかと推測されます。

構造体を戻り値にするのが好みの人もいるが。
>>314
どちらも一行目よりも上の部分に問題があると思われ
317174: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のコンパイルエラーが発生します。

長々と、居座ってしまい申し訳ないですが、よろしくお願いします。
>>317
それにしても警告の行数とソース上の位置が一致しないが?
>>317
変数の宣言位置
ANSI C 標準に準拠している C 言語でのローカル変数の宣言は
かならず、関数などのブロックの先頭で宣言しなければいけません
http://black.sakura.ne.jp/~third/programming/cpp/cpp3.html
>>317
ファイル名が untitled.c になっているが、
kadai1.cpp とかにしてみ?
321174:04/07/20 13:21
んと、皆さんありがとうございました。
一応コンパイルはうまくいきましたが、実行後新たなる問題が・・・・

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

という現象が起きていますが・・・自分では解決できないです・・・
何度も申し訳ないです。
322174:04/07/20 13:23
連カキごめんなさい。

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

なんで、プログラムってこんなにむずいんだろう・・・・orz
>>321
おまいさん最初に書いた時、そこのところに触れてないやん?
自分の考えを相手が理解してくれるなんて考えは大間違い。
仕様は細かく書くべし。社会に出る前に覚えておいて損無し。
ついでにプログラマなら機種依存文字なんぞ使うなよ、と。
それはちょっと違う。
わざわざ面倒くさい変換をしてまで妙な文字を使うことはない。
326デフォルトの名無しさん:04/07/20 14:06
宿題で、文字をアルファベットで入力して、それをあるアルファベットの文字を抜いた
文字を表示するっていう問題なんです。
例えば、"ajisainohana"なんていうのを入力して、
この文字列の中の'a'だけを抜いた文字列を表示させる問題らしいです。
for文を使うって、配列を使うっていうのは多分合ってるとは思うのですが、
全然プログラムが書けません。
どうか、お願いします。
327326:04/07/20 14:07
c++でお願いします
>>326
あるアルファベットっていうのはキーボードから入力するのか?
それとも固定?ランダムで発?
要求仕様はプログラム完成後に完結する。
基本仕様は完成品を顧客が見てから決定される。
詳細仕様は使用者がプログラムを動かしてから固まる。
>>328
argv です
>>329
174 は顧客レベルってことを言っているようだが
332326:04/07/20 14:55
328さん、キーボードからの入力です。まだランダムのやり方は習っていないので・・・。
でも、できたらそのプログラムも教えてもらえたら嬉しいです。
333デフォルトの名無しさん:04/07/20 15:12
>>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 ;
}
#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");
  }
}
336326: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'を除いたは出力されるんですけど、その後に辺な文字とかが出てきてしまうんです。
これをどう解決したらいいのか、教えて下さい。
お願いしまーすっ
>for(; *a; a++){
文字列終端が、ループ抜けの条件としては有効に使われてるけど、
それもふくめて配列 b に移さないといかんでしょう。
でなきゃ先に配列を初期化しておく。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・ω・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
344デフォルトの名無しさん:04/07/20 16:45
342さん
えっと、なんとなくですけど、わかりました。
けど、どう書いたらいいのか、わからないです〜
つまり、ヌルが無いからダメって事なんでしょうか?
>>344
そうです。
for 内と同じく for 後で *b = *a; とすれば、
*b は次の文字が入るべき位置、
*a はヌル値を表します(for を抜ける条件であり、成立した直後である)から、
とりあえず目的は達するでしょう。

ちなみに、配列の大きさは大丈夫ですかね。
b[5] なら表示される文字数にして 4 文字が限度になりますよ。
346344:04/07/20 17:11
345さん
申し訳ないのですが、forの所は、うちの先生が始めから作成したものでして、
抜けている所があるから付け足せっていう問題なんです。
なので、自分としては、なぜforから抜けた直後に*b=*aなのかが
わかりません。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
 | う〜ん 最近の小学生は    /
 |    シマリがいまいちだな..  /
.   ____
   | |・A・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) ズポ
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 ズポ


  幼 姦 マ ン 登 場
>>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言語で解かないといけなくなりました。
提出日が今日までなのでお分かりの方いましたらお願いいたします。

以下のプログラムは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;
}
/************************************************************/
/*与えられたデータ数、点数から最高、最低、平均点を求める*/
/*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;
}

いかがでしょうか。採点願います。
>>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;
}
>>352
int *Point は const に
Average は Point が int なので numData で割るのは一番最後にする(このとき double にキャストする)
355350: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 が未解決です
がでてきました。
>>351
int型じゃそんなでかい数は扱えないぜ
intのサイズが32bitと誰が決めたのか〜♪
>>357
あぁ、スマン。たしかに int型 が 215Bit 以上なら 50! も格納できるわ。
>>351
アルゴリズム変えないと無理だっぺよ
360初心者:04/07/20 20:01
配列において,同一の値を持ついくつかの連続する要素を,ブロックと呼び,
その要素の個数をブロックの長さと呼ぶことにする.整数型配列 data の最初
から n 個の要素に値が入っているとする,この配列のもっとも長さの長いブロ
ック(そのようなブロックが複数個ある場合は,添え字の小さい方)の先頭要
素の添え字を返す関数
int longest_block(int data[], int n)
を定義せよという問題をといてもらえないですか?


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

char yymmdd[9];
として、yymmdd に8桁の日付を入れてあります(20040720 等)。
ここから先頭の2文字を削除して、
040720 にする方法をご存知でしたら教えて下さい。
&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;
}
367360:04/07/20 20:17
>>366さん
ありがとうございます。
test
369C言語初心者: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?
372C言語初心者:04/07/20 20:58
>>370さん
どうもありがとうございました。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |^∀^| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 参 上
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); }
>>346
そんならはじめからそう書きなさいな。0から全部書けって宿題も少なくないんだから、
あなたの場合は書いたとこまでは分かってて書いたんだなと思っちゃったよおじさんは。
ヌルとかなんとか要点抑えてるし。

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

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

char *a はここ

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

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

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

ここまできたところで for の継続条件(*a が ヌルでない)が成立しなくなり、
*b の指しているところは初期化されていない謎の文字のまま関数が終了してしまう。
転送処理がもうワンステップ要る。(その前後、++ する必要はない)OK?
>>374はここ数週間住み着いてる荒らしだからスルーで
377375:04/07/20 21:29
あ、'b' は除くんだっけか。そのつもりで文字列 abc にしたのに。
いいや分かるね。うん。
a[16],b[16],c[16]をint型の配列とし初期値としてaとbの各要素には0又は1を格納しておく
。aとbに格納されたビット列を整数の2の補数表現と解釈し
aとbの和の二進数表現をcに格納し
a、b、cの内容を表示するプログラムを作成せよ

よろしくお願いします
log10で変換後の式が 10の(-2.0+0.4*i)乗 の場合、log10で変換する前の式を
求めるにはどうすればよいですか?
配列[3][100]にn<=100人の数学、物理、英語のテストの結果を読み込み
三教科の合計点が最も高い人の番号と
その得点を表示するプログラムを作成せよ
ただし、入力データはあらかじめファイルに作成しておき、リダイレクションを用いて
入力させること

よろしくお願いします
381デフォルトの名無しさん:04/07/20 22:05
整数型配列 data の data[0] から data[n-1] の要素を順番に見たとき,
何回値が変化するかを返す関数 int count_change(int data, int n) を作れ。
という問題です。
おねがいします。
int count_change(int* data, int n)
じゃなくて?
383デフォルトの名無しさん:04/07/20 22:08
>376 お前に質問してんじゃねぇって感じ。じゃな〜い?>375どうなの?
384381:04/07/20 22:10
>>382さん
int count_change(int* data, int n)
でした。。。
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |^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;
}
387381:04/07/20 22:22
>>386さん
どうもありがとうございました!
たすかりました。
388デフォルトの名無しさん:04/07/20 22:23
>>380
入出力のフォーマットが分からない。
具体例を挙げて。

>>379
変換て何?

>>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

とするには、どうすれば良いのでしょうか?
391390:04/07/20 22:33
半角スペースは受け付けなかった…orz

10, 11になると、8, 9より一つお尻が出てしまう状態です。
これを、10AAAごと1つ前にずらして、左から見て最後の桁をそろえたいのです。
おながいします。
#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
かぶった (´・ω・`)ショボーン
395390:04/07/20 22:45
>>392
レスありがとうございます。
して、その"16"という数値はどこから来たものなのでしょうか?
適当でよろしいのでしょうか?
396390:04/07/20 22:47
>>393氏もありがとうございます。
バッファの文字数を動的に確保しようと思うのですが、
int *buf;

buf = (int *)malloc(sizeof(int)*(???))
で困っております。
>>394
□⊂('ー' ) オチコマナイデ...
398390:04/07/20 22:48
bufの文字数ではなくてbufの領域ですた。
連レス スマソ
399392:04/07/20 22:51
>>395
うん、てきとー
400390:04/07/20 22:53
bufはchar型やん…もうだめぽ
401379:04/07/20 22:54
10^-2は0.01じゃないですか、じゃぁ10^(-2.0+0.4*i)はどうやって表現すれば
いいんですか?
402390:04/07/20 22:54
>>399
適当…でつか。
動的に確保する場合には、どう記述すればよいのでしょうか?

buf = (char *)malloc(sizeof(char)*(???));
おながいします。
>>401
>>389よくみろ

>>402
strlen()使えばいんじゃないかな
>>401
pow(10, -2.0 + 0.4 * i)
405デフォルトの名無しさん:04/07/20 23:00
>>402
sizeof(char)*はいらない。無意味。
ついでにいうと(char *)もいらない
>>406
390は古いコンパイラを使ってるかも知れんぞ
漏れは合った方がぱっと見わかりやすくていいと思うんだけど…
>>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
愛の三乗ハァハァ
>>410
MAXは負の値で定義されてますか?
>>412
1からMAXまでって意味だと思うよ。
414デフォルトの名無しさん:04/07/20 23:15
俺も一瞬1引くMAX!?と思った。 1からMAXという意味なんだろうけど。
>>401
君は10^(0.4*i)が具体的にいくらか知ってるかね?
多分ここでiは虚数単位なんだろうけど。

…一応言っておくと、これはプログラムの範囲じゃなくて数学。
416410:04/07/20 23:24
s/愛の三乗/iの三倍/; ですた。スマソ。

で桁数の求め方が分からんのよ。
しかもループ毎に求めるとなると、時間がかかるから、そこをどうしたらいいのかさっぱり分からん
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
>>416
iを文字列に変換して、文字数数えるとか
>>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増えるだけじゃない?

>のようなプログラムです

のような。
>>421
10毎とは?
>>416
桁数は、愛>=1 に限定すれば、(int)log10(愛) + 1 でも求められる
>>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;
}
427410:04/07/21 00:02
>>424
なるほど常用対数かー。
文字に直すとか10で割った回数を数えるとかするよりは
そっちのほうがスマートで早そうだね。

スレのみんなの愛に感謝
>>426
だからなんで10毎に桁数が増えるんだよ?
429410:04/07/21 00:04
>>426
サンクスコ!それだけあればなんとかできると思うです♥
>>427
スマートだが遅いよ
431ねぇ、名乗って:04/07/21 00:05
全然違ったね。Σ(゚д゚lll)ガーン
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |*∀*| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場
433378:04/07/21 00:07
すみませんお願いします
434420:04/07/21 00:20
>>425
ファイル入力です。プログラム内に値は入れる。

あと、言語はCです。

よろしくお願いします。
Cの問題です。
文字列stringの長さを返す関数int strlen(const char *string);を作成しなさい。
1)関数の本体で配列演算子[]を使わずに作成しなさい。
2)関数の本体で参照演算子*を使わずに作成しなさい。


なるべくシンプルなものでお願い致します。
>>435
1)と2)を同時に満たすものを作れと?
>>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;
}
>>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;
}

こんなのはだめだろうか…?
>>438
isnullの中で*使うのはアリなのか?
440425:04/07/21 01:25
>>436
あ、いえ、別々です。
442275: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
出力結果 関数の式が不正です。もう一度入力してください。

不正な文字列の判定がややこしくて方針が立ちません。
プログラム書くのめんどくせーよと思ったらプログラムの流れだけでもよいので
教えてもらえるとうれしいです。
どうかよろしくお願いします。
アンカーだけでいいだろボケ
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)関数の本体で配列演算子[]を使わずに作成しなさい。
↑あ、こちらもなるべくシンプルなものでお願い致します。
プログラムの流れ

1〜3次関数の式をキーボードから入力し、各係数をdouble型に直して出力する。
ありえない関数の式が入力されたら再入力を促すようにする。
>>437
ありがとうございます!
>>444-445
それくらい自分で出来るでしょ?
449420:04/07/21 01:56
>>440さん
すいません。
プログラムに直接点数は入れておいていいんですが…
>>449
ちゃんとsubject.txtのファイル読む処理入ってるだろ!
それぐらいソース読んでから聞けや!
451425:04/07/21 02:04
>>449
直接って…ファイル入力って言ったやん。俺もうパス('A`)
>>420みたいな香具師って…
>>451
  >>434
  >>>425
  >ファイル入力です。プログラム内に値は入れる。

「ファイルに書き込む」=「ファイル入力」
という意味だったらしい。
454425:04/07/21 02:33
>>449
パスって言ったけど取り合えずやっておいた。情報は小出しにせず正確に書いてくれ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=176
みんな親切すぎ
>>455
自己顕示欲が強いだけだよ
結局みんながやってることって
質問者の成長の為には良くないよな
みんな暇潰しにやってんじゃねーの?質問者の為ってここに投げてる時点で心配するだけ無駄
>>457
成長する気がある人は宿題丸投げなんてしません。
>>459
そんなやつらが情報系の学校卒業して業界に就職してくることを考えると
結局はそいつらの面倒見ないといけなくなって足手まといになるのでは?
>>460
ここにいるのは暇な学生かひきこもりだから関係ないよ
うそを教えて卒業できなくするのが一番いいのかな
>>462
答えのソースもらっても実行確認すらせずに提出するんだろうな・・・
464ヘルプ:04/07/21 04:21
入力された3値を辺に持つ三角形の種類およびその面積を表示するプログラムを作成せよ。ただしポインタ変数を引数にもつ関数を作成、使用する。
このプログラム教えて欲しいです!!!!!! この問題が全然わからないんでお願いします。
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);
}
3辺の長さを収めた配列へのポインタを引数にする関数にしろってことじゃないの?
double a[3] = {8,3,4};
void triangle( double *d );//とか

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

コードは自分で考えんさい
>>464-465
直角二等辺三角形についても考慮するように
ケコーンでほとんど全部おしえちまたorz
>>465
微妙に間違えてるな
自己顕示欲が強いだけなので,
本人の意思無視でC++ Template付き標準入力な
>>420 を書きますた。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=177
>>470
それならもっと値打ちのわかる人のいるスレでやった方が。。。
今朝提出の宿題とかないの〜?
前に面倒見た新人、Cプログラミング経験者と言うだけあって試しに関数を作ってもらったらそつなくこなした。
それじゃぁ、ってんでちょっとまとまった分量渡したら待てど暮らせど作ってこない。
進捗を聞いてもどうにもこうにも埒があかない。様子を伺っても端末に向かってはいるものの、
エディタではなくメールソフトに向かっている時間が長い模様。
流石に気になったので問い質したらメールで(彼女曰く)友人に丸投げしていた模様。

ここで丸投げしているような香具師が就職したらこんなもんだろ?
>>473
丸投げしても答えが返って来るだけマシ
ここでされる質問なんて踏み台だよ。自分もまだまだ初心者だからね。
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;
}
>>476
*s = sqrt( s*(s-a)*(s-b)*(s-c) );
早くここ直せ
*s = sqrt( ss*(ss-a)*(ss-b)*(ss-c) );
>>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))//これで茶を濁す

あとは桁落ちして==が成立しない場面が出てこないことを祈ろう
in.datの中身

1:afo
2:baka
3:manuke

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

out.datの中身

afo
baka
manuke

のようなout.datを作成
お願いします;;
>>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;
}
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);
>>464の宿題は、間違いなくどこかで見かけた。
たぶん前スレ。
>>481
そのまま出てくるんですけど・・・
>>482
ここの >>313
485ヘルプ:04/07/21 13:06
三角形の問題、自分でなんとかやってみたんですがなかなか実行ができないです。。。
できれば全部のプログラムを教えて欲しいんですが><
>>485
なにがどうだめか言え
あぁ、問題ちゃんと読んでなかった。
適当にアレンジしてくれ。
488ヘルプ:04/07/21 13:24
ぜんぜんわかんないんです><
ぜんぜんわかんないんですといわれたらこっちもぜんぜんわかんないんです><

490デフォルトの名無しさん:04/07/21 13:27
ぜんぜんわかんないんですじゃなくて、どうして欲しいのか言えば?
492ヘルプ:04/07/21 13:33
省略した部分を全部やってください!!!!!お願いします><

493ヘルプ:04/07/21 13:37
だめでしょうか。。??
>>493
答えでてるじゃん
>>476-478
main を書いて欲しいとか。
何にも分からないので、すぐコンパイルが通ってそのまま提出しても問題ないようにして欲しいとか。

>省略した部分を全部やってください
もっと具体的に
全部って何?
496ヘルプ:04/07/21 14:04
visual C++でそのまま実行できるようにしてほしいです。
>>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;
}
#define ABS(x) (x)>0?(x):-(x)
いらない
499ヘルプ:04/07/21 14:28
#define ABS(x) (x)>0?(x):-(x)はなくてもいいんですか?
なくてもいいです
プログラム中で使ってないでしょう?
突然ですが、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
そうですね^^いろいろありがとうございました!
>>501
スレ違い
>>501

2*2
4*4
16*16

256
もういっちゃったかな
x if(a+b>c||a+c>b||b+c>a){
o if(a+b>c&&a+c>b&&b+c>a){
506501:04/07/21 14:41
>>504さん
ありがとうございました。納得です。^^;
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。
508ヘルプ:04/07/21 14:46
三角形にならないとき表示されないです><
小学生とセックスしてぇ…
511志村、後ろ、後ろ:04/07/21 14:49
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の必要はない。
>>508
> 三角形にならないとき表示されないです><

じゃなくて、普通の三角の時何も表示されないの間違いじゃないの?
>>512
具体的にどんな値を入力したときどんな出力がでるか書かないと対処できない
あと、入力はスペース区切りで3つ書いてからENTERキーを押してる?
>>512
int result = 0;
じゃなくて
int result = -1;
に直す

if(a+b>c||a+c>b||b+c>a){
の次の行に
result=0;
を書く
あとmain関数内の
case 1:〜〜〜
の前に
case 0:printf("面積%f\n",s);break;
を書く
518ヘルプ:04/07/21 15:07
1 2 6 とかの時は、「三角形にならない」って表示されるんですが、1 1 6とかにすると、二等辺三角形になるんですよ^^;
>>518
>>505
ほんとにこれ直したか
頭悪すぎ
521ヘルプ:04/07/21 15:29
なおしました><
>>505
>>516
>>517
を直したら1 1 6 の時にちゃんと「三角形にならない」って出るけど?

いまどんなソースになってるか
http://ime.nu/do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
にあげてみ
>>516
result |= 1; でおかしくならないか?
なんで?-1の時はそこ通らないよ?
Cなんて、誰でもそれなりに勉強すればそれなりに出来るようになる物だと思ってたけど
ここを見てると、やっぱ頭が相当悪い奴には無理なんじゃないかと思い始めた。
526ヘルプ:04/07/21 15:38

527ヘルプ:04/07/21 15:44
わかんない。。
>>527
いまVC++でコンパイルしたプログラムをここに書き込んでください
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088


だんだんこのアホっぷりが心地よくさえ感じてきた俺は…_| ̄|○
明日にかけて円ドルレートはどう動くでしょうか?
tick単位では直線で動くと思います
アホというか池沼レベル
>>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
ばか!ばか!まんこ!!らめですぅ><
こんどは何がらめなんだよ
535ぽろじょあ ◆niBmDfC40k :04/07/21 16:04
( .3.) ヌェー きっと爪に付いてるんだYO
536ヘルプ:04/07/21 16:06
らめれすぅ・・・おちんぽミルクがいっぱいれちゃいまふぅ><
>>532
三辺 ( a b c) > 1 1 1
a=1.000000 b=1.000000 c=1.000000
正三角形 面積0.433013
>ヘルプ
どこがらめなのか言ってくれないと何がらめかわからないんだ
>>537
もしかして

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

のこと?
1から100までの和を出力、和が100を超えたら(100を超えました)と
一回だけそれを出力。というプログラムを教えてください。
>>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;
}
>>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次元の場合どうすればいいんだろう?
ふむ。
>>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ばっかでしょ。
内容も子供騙しだろ。
ハイハイよかったね(棒読み)
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本だしてばかっぷりを晒してる作者。
しかも、自覚してないから、さらに凄い!
さっさとキティな商売は諦めて、マトモな仕事しれよ
またキチガイが暴れてる・・・なんでかなぁ
そもそもこのスレ、宿題丸投げの受け皿・隔離場所だしなー
で、お決まりの質問だが
「じゃあ、まともなスレはどこよ?」
>>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;
}

配列の値が全て負である場合も考慮すべきだと思います。
『w』や『ゲラ』ラや『藁』を連呼してるやつらは
私はあなたたちとは違うレベルにいるのですよ!
ということを表現したいかわいそうな人たち。

残念ながら連呼すると馬鹿に見えます。
もっと客観的に自分を見つめ直しましょう。

>>552
CやC++といった言語に関するスレがあり、それらの言語の質問スレがあり、
そして隔離されたこのスレがある。
http://pc5.2ch.net/test/read.cgi/tech/1089863973/
↑のスレで聞くとなぁ、↑が隔離所だって言うんだ。
スレの例を三段階挙げたのに、それを解さない貴方が素敵です。
にちゃんねるは、社会の隔離場所
>>557
じゃ、質問スレでないC/C++の言語に関するスレを
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
以外で教えて。
>>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();
}
>>550
#include <stdio.h>
int main(){
int wa = 5050; // = 100 * (100 + 1 ) / 2;
printf("%d",wa);
if(wa>100)printf("(100を超えました)");
return 0;
}
このスレでオナニー見せられるほど気分悪いものは無いね。
>>351なんですが、
long int 使ってもダメだったんですが、何使えば良いのでしょう?
scanf は使ってもいいんですか?
>>563
int4096_t i4096;
>>563
ttp://www5c.biglobe.ne.jp/~MOGI/algorithm/algorithm01.htm#SEC1
みたいな感じちゃうん?または多桁計算か。
C言語で、一辺の長さが1の正n角形の面積を、
n=3 から 20 まで表示するプログラムを作ってください。
S=(√(3)/4)*(n^2)
569デフォルトの名無しさん:04/07/21 21:01
      _
    //レ
   ∠/ ・!ノ
  rヘ、!・ <! | < ようかんマン参上!!
  ヽ」|  /
   |__j/U
    U
>>568
n→∞ のときに、いくらでも大きくなるんですけど・・・
>>570
何か問題でも?
>>570
一辺の長さが1なら別におかしくないと思われ
それはいいとして、n=4のときに1になるのか?
ポカーン
575デフォルトの名無しさん:04/07/21 21:23
S=sqrt( 3 )/4 * (n*n);
じゃん。それがどうかしたの?
576デフォルトの名無しさん:04/07/21 21:24
誰か、一年分のカレンダー表示できるプログラムしらない?
>>576
cal
S = n / (4 * tan(pi/n))
#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));
}
}
580570:04/07/21 21:33
>>571-572
ほんとだ。おかしくないや。ありがとう!
/****************************************************************/
/*メイン関数*/
/*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);
}
iは使ってませんでした。すいません。
max = 20位にしてください。

一応4角形の時に1が出るからいいと思うんだけどなぁ。
取り敢えず>578の式で(面積が自明な)n=3,4,6のときに正しいことは確認した。
>568,575の式、>579の式は一体なんだったんだろう…
584568:04/07/21 21:51
正直スマンかった
一辺の長さが n の正三角形の面積と読み違えてました

ただしくは
(S/n)=(1/2)*(1/2sin(pi/n))^2*sin(2pi/n) = <<578
でつ
585583:04/07/21 21:56
>581の式は整理したら>578の式になった。
つーか、もう少し整理しろや。
#せめて 0.5 / 2.0 くらい。

で、max = 20;を与えるならfor (n = 3; n <= max; ++n)だね。
586570:04/07/21 21:57
587583:04/07/21 21:57
あっと、ごめんなさい。
587 = 581です。
さらにごめんなさい。
589501:04/07/21 23:22
>>513さん
遅れましたが、ありがとうございました!!
>>585
>>578のは整理しすぎだろ。
S=tan(pi/2-pi/n)*n/4 のままの方がPCには優しいでつよ。

C的に書くと,

tan(M_PI*(0.5-1.0/n))*n*0.25

が(・∀・)イイ!!
?
592ヘルプ:04/07/22 00:39
ダメです><
やっぱできません><
なんでできないんでしょう.....???
誰か教えてええええええええええ!!!
>>592
どうダメなのか書かないからだろ
知障だからだろ
595デフォルトの名無しさん:04/07/22 00:47
釣りか。
夏だな。
ネタにつきあう人が多いからだろ
 | ああ〜 やっぱ小学生は    /
 |    シマリがいいな〜!! /
.   ____
   | |・∀・| /⌒⌒ヽ
   | |\  |`イ  ノハぃ) カク
.  (( |_|_ィ⌒`」 ‖' 、 ソ|
    ノ と、_入`_,つ λ う
 カク


  幼 姦 マ ン 登 場

以降重要な場面に登場致します。
598ヘルプ:04/07/22 00:58
局部変数ってなんですかあ?
>>598
チンコマンコだよ
チンコ->マンコ
>>548
>>553
ありがとうございます・・・!
もっと勉強します
どうしてコンストラクタにはvirtualつけちゃいけない仕様なのですか?
ってちょっとまてー!
むしろ「つけろ」な仕様だろ!

デフォルトで付いてない理由ってんなら、それは単にパフォーマンス上の選択。
すべてのオブジェクトに仮想関数用のオーバーヘッドを背負わせないためでしかない。
何言ってんの?
>>603
デストラクタじゃなくて?
デストラクタじゃなくてコンストラクタだたーよ。。。漏れのうっかりさん。チョメorz


コンストラクタにvirtualつけてどうなるか、よーく考えてみてください。
基底クラスのコンストラクション時に、派生クラスのコンストラクタが自動で呼ばれる動作を
期待しているのかもしれませんが、基底クラスが「自分が派生した何者であるか」なんて、
その時点でわかるはずがありません。
AからB、C、Dの派生が定義されてるときに、virtualつきのコンストラクタでAをコンストラクションしようとして、
AはB、C、D、どのコンストラクタを呼んだらよいのでしょう。
デストラクタだとしても、つけるべきなのは基底クラスのみでわ?
基底につければ、あとは勝手に付くしね。
まあ、いちいち明示的に指定してもいいけど。
>>606
呼ばない ってことをしたい
>>610
何を言ってるんだかわからんちん。
そもそもコンストラクタを呼びたくないって話でつか?
空のint配列あたりからキャストでもしてみたらどうだろう。
あとはnewをオーバーライドするとか。
何のメリットがあるんだか想像もつかないけど。

しかしなんだ、原理主義者に神の是非を問うような質問だな。
そんな事より宿題まだー?
茄子休みに入ったんじゃねえ?
デスラー総統
>>333 の答えが
>>349 に載ってるんだけど
あの問題って縦型探索と横型探索の両方のプログラムと
結果をそれぞれ出せって言う課題だったんですね。
それに maze.txt という外部ファイルを読み込んで
処理しろっていう仕様だったんです。