ようかんマンが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 】
あびょびょーん
キタ━━━━━━(゚∀゚)━━━━━━!!!!
なんのひねりもないよ・・・_| ̄|○
ようかんマンかよ、個性もクソもないな
|おでん 【▽御田】
|〔「でん」は「田楽(でんがく)」からという〕
|豆腐を串(くし)にさして味噌をつけ、火であぶったもの。
|焼き田楽。
|また、蒟蒻・里芋などをゆで、
|串にさして味噌をつけたもの。[季]冬。
└―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年以内に彼女が出来るかどうかを判定するプログラムを作りなさい
助けて〜 課題 ■何個(最大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 本当にそれ宿題か…?
課題なら全文載せてくれ。
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場
初代スレがキャラスレでもなんでもないのに、 なぜそんなにキャラクターに拘るのら?
>>21 まず数学板に行って考え方を聞いて来い。
このスレは数学の問題をといたりするスレではない。
式が分かったらまた来てくれ。
おお!低脳PGらしいたらい回し法だ。
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
どなたかお願いいたします 手も足も出ない状態です… 各自が読み込んだ文字をファイルに格納するプログラムを作成せよ。 ただし、低レベルのシステムコールを使うこと
のどから手が出てるじゃないか
( .3.) マルェー ボクなんか出る手も足も無いZO
>>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なら実部だけ表示するには自分で工夫しな。
何で学校ってC++教えずにC教えるんだろ?
( .3.) ヌェー 単純に変えるの面倒くさいからと聞いたYO 所詮、単位の為だけの勉強だYO
なんか逆に面積増えてるな orz とりあえず保留...
52 :
デフォルトの名無しさん :04/07/17 04:53
>>47 C++を嫌っている人(教官)って結構いるんですよ。難しいから。
これに対してC言語をカリキュラムに組み込むことは同意を得やすい。
それが直接の理由だと思う。
C++って本格的にプログラミングを学ぶには良い言語だと思う。
だが、僕としては、万人向けとは思えない。
53 :
デフォルトの名無しさん :04/07/17 05:23
C++じゃ教えるべきことが多すぎるんだろ。
多くねーよ。
ああ、「そんな板orスレッドないです。」なのね・・・ 2ch ブラウザ使っているから気づかなかった。 再うpしとくか。 > 621 名前: デフォルトの名無しさん 投稿日: 03/11/23 22:33 > xy 平面上に複数(十個〜数十個程度)の点があるとき、それに外接する最小の長方 > 形を求めるにはどうすればよいか、お教えいただけないでしょうか? > もちろん、長方形の4辺がxy軸に平行にならなくてもOKです。 > > 「最小」の定義は、面積が最小、または、4 辺の長さの合計が最小、のどちらでも結 > 構です。(どちらがふさわしいか、今は決めかねているので・・・) > > よろしくお願いします。
> 626 名前: デフォルトの名無しん [sage] 投稿日: 03/11/26 16:23
> 凸閉包を求めたらいいと思いますが
> 630 名前: デフォルトの名無しさん 投稿日: 03/11/28 03:28
>
>>621 > これでどうよ?
>
> 与えられた点の集合より、凸包を求める。
> 凸包の各辺に対し、
> {
> 与えられた点の集合より、その辺を x 軸座標とした際に、
> min( x ), max( x ), max( y )
> なる点を見つける。
> 発見した点と辺(の1点)より長方形を求め、面積を求める。
> }
> 計算した面積の組の中から最小の組を発見する。
>631 名前: 630 [sage] 投稿日: 03/11/28 03:42
> >与えられた点の集合より、その辺を x 軸座標とした際に、
> あ、ここを「凸包を構成する点の集合」にすれば、多少早くなるか・・・
> 635 名前: 621=624 投稿日: 03/11/28 23:13
> 621です。
> 当方からの反応がしばらく無かったにもかかわらず回答をいただき、ありがとうございま
> す m(. .)m。
>
>
>>625 > > 必ずaに投影する、ある2つの投影直線が重なるような気がするから
>
> すみません。イマイチよく理解できないのですが・・・。
> 重なるような投影直線とは、長方形の頂点を通る直線のことを言っておられるのでしょう
> か?
> そうだとすれば、オリジナルの点集合の中に、必ずしも長方形の頂点が含まれるわけでは
> ないので、うまくいかない場合が出てきてしまいます・・・。
> 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 > おおお、どうもありがとうございます!
>
> 数学板、読んでみました。
> 「辺を共有しない長方形を最小長方形だと仮定すれば矛盾が生じる。ゆえに、最小長方形と
> 凸包は必ず辺を共有する」
> ということですね。
>
> お陰で解決できました。助かりました!
あ、抜けてた。
> 636 名前: 621=624 投稿日: 03/11/28 23:14
>
>>626 > ふむ、凸閉包、ですか。
> 626 さんの書き込みを見るまで、このような言葉があることさえ知りませんでした。
> 勉強になります。
>
>
>>630 > ふむふむ、なるほど。何だかよさそうですね。
>
> ただ、気になるのは、630 さんの考え方だと、
> 「求める長方形の一辺と、凸包の一辺とが、必ず重なる」
> ことを前提としていますよね。
>
> でも、凸包の辺と、解となる長方形の辺とが、全く重ならないような場合(つまり凸包の
> 頂点が長方形の辺に接するだけの場合)というのはありえないのでしょうか?
>
> そのような場合がありうるのかどうか少し考えてみたのですが、不勉強ゆえ、よくわかり
> ませんでした・・・
たのんまっせ! 課題 ■階乗値を求める関数を作り、それを使用して「組み合わせ」の個数を調べるプログラムを作る。 ・階乗値の名前は自由。また、再帰型、非再帰型どちらでもよい。 ・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)!} と思われ。
× 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) )); _| ̄|○
(1)更新、戻る、進む、アドレスバーのついた基本的ブラウザを作る。ただし、タブブラウザ。
( .3.) ヌフフーン 「お願いします」の一言も無いんだNE
>>73 ネタにマジレスカコよすぎて射精しちゃう。
( .3.) ヌェー ヒマな時のマジレスもオツなもんですYO
カレンダー表示 system("cal");
そこまで行くと、 #!/usr/bin cal でいいじゃんって話にならないか
あぁアホなことを… #!/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
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
メモリーリークの発生箇所がわかるように メモリーリークの発生箇所がわかるように メモリーリークの発生箇所がわかるように
>「プログラムを作る」プログラムを作る まで読んだ って何回させるねん!
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;}
書き忘れ。 入力は 5 3 等、x座標、y座標で行う。左上が 1 1 。 エラーチェックは行われていないので注意。
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・ω・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場
うん、、、
こ、、、
>>106 そういう宿題が出る学校(学科)の人には教えるわけにはいかないんだよ
純粋に単位が欲しい人のためにあるスレなんだから。
中途半端な知識で社会に出られても困るので。
>>83 ちょっとした発想力さえあれば高卒の俺にでも分かるわけだが・・・
方針すら立たないのか?
素直にわかりませんって言えばいいのに
うん、わかんないから次の問題マダー?
メモリブロックの正当性検査を一式書いてったら結構な量のコードになるな。 newとdeleteだけでいいってんなら、newで控えて、deleteで控えを削除して、 newされっぱなしのブロックのダンプとかできる関数がありゃいいのか。 少し欲を出すなら、new[]とdelete[]のチェックも追加した方がいいだろな。 で、誰かコード書かないの?
109と110が口先だけの人間じゃなければ、すぐにコード書いてくれると思うよ
じゃー、問題出すよー
煽ったらコード書く奴が居ると思ってるなら大間違い。
煽ろうが煽らまいが、書けない奴は書けない。
書ける奴は煽られると書かない
プッの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;
}
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 呼び出し先の関数から,呼び出し元を特定する方法は?
宿題なら,その方法を予め教えられているはず。
じゃなきゃ,そんな環境依存のもの書けねぇよ!
ソート前後の文字列を表示したければ qsort の前後に for( i = 0; i < nNum; i ++ ) printf( "%s\n", strings[ i ] ); を入れといてね
つまんねぇくなりましたな。
さすがに同じような問題ばかりだと飽きるよな
目の醒めるような、とは言わないがたまには目から鱗を落としたいものだ。
>>132 そしてみんな巣立っていくんだ。
こんなスレに常駐するのなんてせいぜい3ヶ月長くても半年だろ。
うろこに覆われすぎて、落ちようもなくなってるのさ君の目は
宿題を出す立場の大学のセンセもそういう意味では飽き飽きだろうな。
研究室配属の学生に添削させるから無問題ですよ
…なんか寂びを感じてしまったよ。
逆におまえらが目の覚めるような問題を考えてみろ。
といっているお方はなぜ自分で(ry
144 :
もう一度…m(_ _)m :04/07/18 00:49
>>142 size==0 のとき,newの挙動がおかしい。
size=1にすべし
ようかんマン ありがとう! 頼りになるね 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 って並び替えろってことか?
> 並び替えろってことか? そうです。 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));
}
>>158 表示するだけでよいです。
ありがとうございました。
OTL
すごく難しいプログラム(問題じゃなくて)ですね。
#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; } なんです。よろしくおねがいします
ありがとうございました。 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回分表示せよ。
ただし、乱数の種はユーザーからの入力を用いること。」
というところかな。
169さん ありがとうございました☆ 問題なく、思った結果が出ました。 感謝です☆
>>170 =161
>問題なく、思った結果が出ました。
ホントに?
>return pow(nrand(), 1 / 3);
これって常に1を戻している気がするんだけど。
ところでさー そろそろ半角スペースを に置き換えてもらうように スクリプトいじってもらわないか?
消えてもた、、 ね
174 :
デフォルトの名無しさん :04/07/18 19:39
ようかんまん、宿題てつだってくだされ〜〜〜 課題1. 四則演算を使ったメモリに関するプログラム(静的なメモリ 関数?) 仕様:次の処理を行うプログラムを使う・・・ @数字入力→演算子入力→数字入力→数字入力→演算子入力→数字入力→= 終了 つまり・・・1+1 1-1=2 という結果になります。 最初の演算子をいれ、次の演算子を入れない限りずっとその演算子を保持するというものです。 A各機能を関数によって分ける 1:数入力 2;四則演算 3:計算・出力結果 Bグローバル変数は使わない C=をいれて、計算結果を出し、終了させる。 んで、エラー処理について・・・ @数字入力のところに、数以外の物を入れたら、エラー表示をし、再度入力させるようにする A演算子入力のところに、数以外の物を入れたら、エラー表示をし、再度入力させるようにする B0除算のエラー処理を施す、 C桁数の処理をほどこす
続き・・・ 課題2:四則演算と、メモリー関数を使い(動的な)いかのものを完成せよ 仕様:次の処理のプログラムを作れ @入力個数を最初にとる(配列はNことる) 例:10といれると数が10個分入る領域をとる Aつまり、 数の領域を確保する→数字入力→演算子入力→数字入力→数字入力→演算子入力→数字入力→= 終了 つまり・・・数の領域4個 → 1+1 1-1=2 という結果になります。 最初の演算子をいれ、次の演算子を入れない限りずっとその演算子を保持するというものです。 A各機能を関数によって分ける 1:数入力 2;四則演算 3:計算・出力結果 Bグローバル変数は使わない C=をいれて、計算結果を出し、終了させる。 エラー処理・・・ 課題1とおなじないよう、 ただし、数入力時に最初にとった個数以上に入力した場合は、必ずエラー処理をする。 つまり、最初の個数2 →1+1 1 =3 とはならず、エラーを返す という課題二つを出されました、もうしわけないですが、お願いします。 長くなってしまって、ごめんなさい。
>>174 演算子は何をサポートするのか?
演算子の優先順位はどうなるのか?
>>176 さん、ありがとうございました。
感謝。
以下のようなプログラムを作っていただけないでしょうか。どなたかお願いします。 ・1から100までの整数を思い浮かべるようにメッセージを出します。 ・次に、3、5、7それぞれで割った余りを入力するようメッセージを出します。 ・3つの余りから思い浮かべた数を当てるプログラム。
あい、
>>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 が書いてた
スマソ
if( i % 3 == a && i % 5 == b && i % 7 == c)
講師が気にいらないなら i % 3 == a && i % 5 == b && i % 7 == c && printf( "%d ", i ); で
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
で基の数字になるはずだよ。
ごめん、ミス (-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);
}
}
>>200 うおー!ありがとー!!!
あなたこそはキングオブようかんマンです!
あう・・・すんません、 僕のも尾根がしますorz もうしわけない
>>174 > つまり・・・1+1 1-1=2 という結果になります。
ぶっちゃけ、ココの意味がわからん。1-1はどういう意味があって入力するの?
>>205 1+1+1-1=2 ってことだろ。
その次の行読んだらわかるじゃん。
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
ありがとうございます、助かりました
216 :
デフォルトの名無しさん :04/07/19 05:00
>>211 明示が無い場合は、回答者がやりやすい方でいいのでは。
>>1 のテンプレに「CかC++かどちらがいいか書きましょう。」
みたいなのがあるといいですけどね。
>>205 さま
ありがとうございます。
一個質問なのですが・・・・・
このソースって、課題2のものとかんがえてよいのですか?
課題1のソースは・・・・・・・
ごめんなさい、このソースがどっちのものかおしえてくだされ・・・・
もし、片方の課題のソースだけでしたら・・・もう片方のかいとうもおねがいおいたしますです。orz
>>213 CまたはC++でやるってスレじゃん,オマエアフォ?
>>219 あれだ、>211は「どっちかに決まってるのか?」って聞きたかったんだよ。
で、>212は「どっちかに決まってるだろ」って言うもんだから、>213で
「それはわかってる」って言いたかったんだよ。
#つーか、あんたら馬鹿?
ヤダヤダヤダ!ようかんマンじゃなきゃヤダー! 〃∩ _, ,_ /) 〃∩ _, ,_ /) ⊂⌒( `Д´)ミ( ⌒ヽつ⊂⌒( `Д´)ミ( ⌒ヽつ `ヽ._つ⊂ノ⊂( ,∀、)つ.`ヽ._つ⊂ノ⊂( ,∀、)つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ミ | 〃 ∩ 。 | ⊂⌒从ヽ从゜o ザバーン | 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
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
日本が不自由
流れにワラタ
>日本が不自由 うんうん日本って不自由だよね! って… んっ?
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*)
>>237 , 240
STL 使いたいんならまずは Effective STL を買って嫁
setに格納しといて、要素数ででるんとちゃう?
>>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++でつか?
型安全性、拡張性あっての C++ だというのに…
馬鹿な
>>235 ですが
>>252 さん、95年刊の本(しかも邦訳)というのは92〜93年頃の
知識に基づいて書かれているはずなんですがそのへんどんなもんなんでしょう
255 :
デフォルトの名無しさん :04/07/19 23:37
基底クラスのデストラクタが仮想関数でない時点で見る気無くした
>>255 どういう環境なのか知らないけど、ファイルから読めてるかどうかは確かめるの簡単だべ。
とりあえず、デストラクタを仮想関数にした、として考えてみてもらえないでしょうか? すみません。環境って意味がわからないのですが、使ってる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); } この関数をどこに入れたらいいかわからないのでよくわかりません。 よろしくお願いします。
>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 あなたの質問がよくわからないのでわかりません。
「どこに入れたらいいか」ってどういう意味?
定義を書く場所?それとも使う場所?
保存する場所だったら冷凍室でいいと思われ。
出力ははっきりしてたorz
269 :
デフォルトの名無しさん :04/07/20 01:31
>>267 すみません…定義を書く場所です。
この関数使って通過日数プログラムを作らなければダメなんです。
>260 たぶん、2文字を数値に直す所に使え、って事だNe!
>>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 出力結果 関数の式が不正です。もう一度入力してください。 不正な式の判定がうまくいきません。 どうがよろしくお願いします。
間違い発見しました。 x^2の係数は 4.6 →x^2の係数は -4.6 どうかよろしくお願いします。
>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; }
>>269 ほんとに定義を書く場所?冗談半分だったんだけど・・・。
とりあえずは#include <stdio.h>のすぐ後に書いてみたら?
不格好かもしれないけどたぶん動くだろう。先長そうだね。ガンガレ。
279 :
デフォルトの名無しさん :04/07/20 01:55
>>277 struct student s[N];
でイインジャネーノ?
よかねーよ
> よかねーよ C++ じゃないの?
ああ、そういうことか。 スマンかったね
int N; cin >> N; struct student s[N]; て出来ない?
>282 struct student s[N]; こんなことやったら、C++でもエラーでしょ。
あれ? 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じゃないかぎり本来ならアウトだね。
工エエェェ(´д`)ェェエエ工 gcc しか使ったことのないヲレって
外側の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;
名前間違えてる。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;}
double k=2; を追加します。
。。。ネタだと思うがあえて質問汁! なぜ二重ループを同じ変数名でやりますか、あなた? 違うになれませんと、ダメ
>>291 【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
問題文などの省きはやめ、エラーなどは適切に書きましょう
全文を書いてしまうか、分かりやすくまとめましょう。
・後になって問題につけたしをするのはやめましょう。
解いてもらっている方に失礼になってしまいます。
・計算問題は必ず数式自体をあげ、どのような計算をするのか
くわしく説明してください。
------------------------------------------------------------
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
漏れが明日のテストが出来なくてで単位落とす確率 1
>違うになれませんと、ダメ >漏れが明日のテストが出来なくてで単位落とす確率 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で回す。
その中で、前の要素と値が違ったらブロック長測定開始。
過去の最長<今測ったブロック長なら更新。
…とまぁ、そのままプログラムにすればいいだけだ。
先日課題を手伝ってくださった方、ありがとうございました。 課題のソースをコンパイルした結果、以下のエラーがでてしまい、実行ファイルが 作成できなかったので、再度伺いたいのですが・・・・よろしくお願いいたします。 課題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 *** *** コンパイル終了 ***
続きです・・・ 課題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
ソース書けボケ
311 :
デフォルトの名無しさん :04/07/20 11:42
>306 プログラムを書いてもらえるとうれしいのですが。。。 というか、書けません。
再度修正、上が課題1でその下が課題2のソースです。 れんかき、すまそ
教えてようかんマン 三角形の三辺を入力し、三角形の形(正三角形、二等辺三角形、直角三角形)を判別し、 さらに面積を求めよ。 ただし、ポインタ変数を引数にもつ関数を使用せよ。 ポインタ変数がよくわかんねっす。orz
>>313 戻り値が判別結果と面積の2つだから、
片方は普通の戻り値、もう片方はポインタ変数で返せ
ってことではないかと推測されます。
構造体を戻り値にするのが好みの人もいるが。
>>314 どちらも一行目よりも上の部分に問題があると思われ
>>317 それにしても警告の行数とソース上の位置が一致しないが?
>>317 ファイル名が untitled.c になっているが、
kadai1.cpp とかにしてみ?
んと、皆さんありがとうございました。 一応コンパイルはうまくいきましたが、実行後新たなる問題が・・・・ @319さんのご指摘どおり、ブロックの先頭で宣言した場合コンパイルは 成功しました。 A実行ファイルが作成され、それを実行し動作確認をしたところ以下の現象が出ました。 1:11と入力した場合、1桁の数字として認識されている。 ※2桁以上の計算ができない・・・ 2:11=と入力した場合、演算子を入力していないのに、+の演算子が保持されている 結果が出る。 という現象が起きていますが・・・自分では解決できないです・・・ 何度も申し訳ないです。
連カキごめんなさい。 もうちょい、自分でもがいてみます・・・・ 皆さんには、お手数をかけてばっかりでごめんなさい。 なんで、プログラムってこんなにむずいんだろう・・・・orz
>>321 おまいさん最初に書いた時、そこのところに触れてないやん?
自分の考えを相手が理解してくれるなんて考えは大間違い。
仕様は細かく書くべし。社会に出る前に覚えておいて損無し。
ついでにプログラマなら機種依存文字なんぞ使うなよ、と。
それはちょっと違う。 わざわざ面倒くさい変換をしてまで妙な文字を使うことはない。
326 :
デフォルトの名無しさん :04/07/20 14:06
宿題で、文字をアルファベットで入力して、それをあるアルファベットの文字を抜いた 文字を表示するっていう問題なんです。 例えば、"ajisainohana"なんていうのを入力して、 この文字列の中の'a'だけを抜いた文字列を表示させる問題らしいです。 for文を使うって、配列を使うっていうのは多分合ってるとは思うのですが、 全然プログラムが書けません。 どうか、お願いします。
c++でお願いします
>>326 あるアルファベットっていうのはキーボードから入力するのか?
それとも固定?ランダムで発?
要求仕様はプログラム完成後に完結する。 基本仕様は完成品を顧客が見てから決定される。 詳細仕様は使用者がプログラムを動かしてから固まる。
>>329 174 は顧客レベルってことを言っているようだが
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"); } }
ありがとうございました!!
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 文字が限度になりますよ。
345さん 申し訳ないのですが、forの所は、うちの先生が始めから作成したものでして、 抜けている所があるから付け足せっていう問題なんです。 なので、自分としては、なぜforから抜けた直後に*b=*aなのかが わかりません。
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場
| う〜ん 最近の小学生は / | シマリがいまいちだな.. / . ____ | |・A・| /⌒⌒ヽ | |\ |`イ ノハぃ) ズポ . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う ズポ 幼 姦 マ ン 登 場
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 にキャストする)
>>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! も格納できるわ。
配列において,同一の値を持ついくつかの連続する要素を,ブロックと呼び, その要素の個数をブロックの長さと呼ぶことにする.整数型配列 data の最初 から n 個の要素に値が入っているとする,この配列のもっとも長さの長いブロ ック(そのようなブロックが複数個ある場合は,添え字の小さい方)の先頭要 素の添え字を返す関数 int longest_block(int data[], int n) を定義せよという問題をといてもらえないですか?
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;
}
>>366さん ありがとうございます。
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
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |^∀^| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 参 上
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 はここ数週間住み着いてる荒らしだからスルーで
あ、'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どうなの?
>>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;
}
>>386 さん
どうもありがとうございました!
たすかりました。
388 :
デフォルトの名無しさん :04/07/20 22:23
>>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 とするには、どうすれば良いのでしょうか?
半角スペースは受け付けなかった…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
かぶった (´・ω・`)ショボーン
>>392 レスありがとうございます。
して、その"16"という数値はどこから来たものなのでしょうか?
適当でよろしいのでしょうか?
>>393 氏もありがとうございます。
バッファの文字数を動的に確保しようと思うのですが、
int *buf;
buf = (int *)malloc(sizeof(int)*(???))
で困っております。
>>394 □⊂('ー' ) オチコマナイデ...
bufの文字数ではなくてbufの領域ですた。 連レス スマソ
bufはchar型やん…もうだめぽ
10^-2は0.01じゃないですか、じゃぁ10^(-2.0+0.4*i)はどうやって表現すれば いいんですか?
>>399 適当…でつか。
動的に確保する場合には、どう記述すればよいのでしょうか?
buf = (char *)malloc(sizeof(char)*(???));
おながいします。
>>401 pow(10, -2.0 + 0.4 * i)
405 :
デフォルトの名無しさん :04/07/20 23:00
>>402 sizeof(char)*はいらない。無意味。
ついでにいうと(char *)もいらない
>>406 390は古いコンパイラを使ってるかも知れんぞ
漏れは合った方がぱっと見わかりやすくていいと思うんだけど…
410 :
デフォルトの名無しさん :04/07/20 23:12
forループで1-MAXまでまわして、 iの値の桁数が 3で割り切れるときは 愛の三乗、 3でわって1あまる時は iの二乗、 それ以外のときはiを sumに足していくプログラムを 教えてください
411 :
デフォルトの名無しさん :04/07/20 23:13
愛の三乗ハァハァ
414 :
デフォルトの名無しさん :04/07/20 23:15
俺も一瞬1引くMAX!?と思った。 1からMAXという意味なんだろうけど。
>>401 君は10^(0.4*i)が具体的にいくらか知ってるかね?
多分ここでiは虚数単位なんだろうけど。
…一応言っておくと、これはプログラムの範囲じゃなくて数学。
s/愛の三乗/iの三倍/; ですた。スマソ。 で桁数の求め方が分からんのよ。 しかもループ毎に求めるとなると、時間がかかるから、そこをどうしたらいいのかさっぱり分からん
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場
>>416 iを文字列に変換して、文字数数えるとか
生徒番号 国語 数学 理科 社会 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増えるだけじゃない?
>のようなプログラムです のような。
>>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;
}
>>424 なるほど常用対数かー。
文字に直すとか10で割った回数を数えるとかするよりは
そっちのほうがスマートで早そうだね。
スレのみんなの愛に感謝
>>426 だからなんで10毎に桁数が増えるんだよ?
>>426 サンクスコ!それだけあればなんとかできると思うです♥
431 :
ねぇ、名乗って :04/07/21 00:05
全然違ったね。Σ(゚д゚lll)ガーン
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |*∀*| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場
すみませんお願いします
>>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の中で*使うのはアリなのか?
先日質問させていただいたのですがスルーされたのでもう一度質問さていただきます。 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型に直して出力する。 ありえない関数の式が入力されたら再入力を促すようにする。
>>440さん すいません。 プログラムに直接点数は入れておいていいんですが…
>>449 ちゃんとsubject.txtのファイル読む処理入ってるだろ!
それぐらいソース読んでから聞けや!
>>449 直接って…ファイル入力って言ったやん。俺もうパス('A`)
>>451 >>434 >>>425
>ファイル入力です。プログラム内に値は入れる。
「ファイルに書き込む」=「ファイル入力」
という意味だったらしい。
みんな親切すぎ
結局みんながやってることって 質問者の成長の為には良くないよな
みんな暇潰しにやってんじゃねーの?質問者の為ってここに投げてる時点で心配するだけ無駄
>>457 成長する気がある人は宿題丸投げなんてしません。
>>459 そんなやつらが情報系の学校卒業して業界に就職してくることを考えると
結局はそいつらの面倒見ないといけなくなって足手まといになるのでは?
>>460 ここにいるのは暇な学生かひきこもりだから関係ないよ
うそを教えて卒業できなくするのが一番いいのかな
>>462 答えのソースもらっても実行確認すらせずに提出するんだろうな・・・
入力された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等辺、全部同じ長さなら正三角形 面積の出し方はヘロンの公式でぐぐれ コードは自分で考えんさい
ケコーンでほとんど全部おしえちまたorz
>>470 それならもっと値打ちのわかる人のいるスレでやった方が。。。
今朝提出の宿題とかないの〜?
前に面倒見た新人、Cプログラミング経験者と言うだけあって試しに関数を作ってもらったらそつなくこなした。 それじゃぁ、ってんでちょっとまとまった分量渡したら待てど暮らせど作ってこない。 進捗を聞いてもどうにもこうにも埒があかない。様子を伺っても端末に向かってはいるものの、 エディタではなくメールソフトに向かっている時間が長い模様。 流石に気になったので問い質したらメールで(彼女曰く)友人に丸投げしていた模様。 ここで丸投げしているような香具師が就職したらこんなもんだろ?
ここでされる質問なんて踏み台だよ。自分もまだまだ初心者だからね。
#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 の宿題は、間違いなくどこかで見かけた。
たぶん前スレ。
三角形の問題、自分でなんとかやってみたんですがなかなか実行ができないです。。。 できれば全部のプログラムを教えて欲しいんですが><
あぁ、問題ちゃんと読んでなかった。 適当にアレンジしてくれ。
ぜんぜんわかんないんです><
ぜんぜんわかんないんですといわれたらこっちもぜんぜんわかんないんです><
490 :
デフォルトの名無しさん :04/07/21 13:27
ぜんぜんわかんないんですじゃなくて、どうして欲しいのか言えば?
省略した部分を全部やってください!!!!!お願いします><
だめでしょうか。。??
main を書いて欲しいとか。 何にも分からないので、すぐコンパイルが通ってそのまま提出しても問題ないようにして欲しいとか。 >省略した部分を全部やってください もっと具体的に 全部って何?
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) いらない
#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がそうなるか分かりませぬ。 計算式を絡めて詳しく教えていただけないでしょうか!?
そうですね^^いろいろありがとうございました!
もういっちゃったかな x if(a+b>c||a+c>b||b+c>a){ o if(a+b>c&&a+c>b&&b+c>a){
>>504 さん
ありがとうございました。納得です。^^;
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場 以降重要な場面に登場致します。
三角形にならないとき表示されないです><
小学生とセックスしてぇ…
そこ直しても変わんないです。。。
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; を書く
1 2 6 とかの時は、「三角形にならない」って表示されるんですが、1 1 6とかにすると、二等辺三角形になるんですよ^^;
頭悪すぎ
なおしました><
>>516 result |= 1; でおかしくならないか?
なんで?-1の時はそこ通らないよ?
Cなんて、誰でもそれなりに勉強すればそれなりに出来るようになる物だと思ってたけど ここを見てると、やっぱ頭が相当悪い奴には無理なんじゃないかと思い始めた。
?
わかんない。。
明日にかけて円ドルレートはどう動くでしょうか?
tick単位では直線で動くと思います
アホというか池沼レベル
ばか!ばか!まんこ!!らめですぅ><
こんどは何がらめなんだよ
535 :
ぽろじょあ ◆niBmDfC40k :04/07/21 16:04
( .3.) ヌェー きっと爪に付いてるんだYO
らめれすぅ・・・おちんぽミルクがいっぱいれちゃいまふぅ><
>>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++といった言語に関するスレがあり、それらの言語の質問スレがあり、
そして隔離されたこのスレがある。
スレの例を三段階挙げたのに、それを解さない貴方が素敵です。
にちゃんねるは、社会の隔離場所
>>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 は使ってもいいんですか?
C言語で、一辺の長さが1の正n角形の面積を、 n=3 から 20 まで表示するプログラムを作ってください。
S=(√(3)/4)*(n^2)
569 :
デフォルトの名無しさん :04/07/21 21:01
_ //レ ∠/ ・!ノ rヘ、!・ <! | < ようかんマン参上!! ヽ」| / |__j/U U
>>568 n→∞ のときに、いくらでも大きくなるんですけど・・・
>>570 一辺の長さが1なら別におかしくないと思われ
それはいいとして、n=4のときに1になるのか?
ポカーン
575 :
デフォルトの名無しさん :04/07/21 21:23
S=sqrt( 3 )/4 * (n*n); じゃん。それがどうかしたの?
576 :
デフォルトの名無しさん :04/07/21 21:24
誰か、一年分のカレンダー表示できるプログラムしらない?
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)); } }
/****************************************************************/ /*メイン関数*/ /*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の式は一体なんだったんだろう…
正直スマンかった 一辺の長さが n の正三角形の面積と読み違えてました ただしくは (S/n)=(1/2)*(1/2sin(pi/n))^2*sin(2pi/n) = <<578 でつ
>581の式は整理したら>578の式になった。 つーか、もう少し整理しろや。 #せめて 0.5 / 2.0 くらい。 で、max = 20;を与えるならfor (n = 3; n <= max; ++n)だね。
あっと、ごめんなさい。
587 = 581です。 さらにごめんなさい。
>>513 さん
遅れましたが、ありがとうございました!!
>>585 >>578 のは整理しすぎだろ。
S=tan(pi/2-pi/n)*n/4 のままの方がPCには優しいでつよ。
C的に書くと,
tan(M_PI*(0.5-1.0/n))*n*0.25
が(・∀・)イイ!!
?
ダメです>< やっぱできません>< なんでできないんでしょう.....??? 誰か教えてええええええええええ!!!
知障だからだろ
595 :
デフォルトの名無しさん :04/07/22 00:47
釣りか。 夏だな。
ネタにつきあう人が多いからだろ
| ああ〜 やっぱ小学生は / | シマリがいいな〜!! / . ____ | |・∀・| /⌒⌒ヽ | |\ |`イ ノハぃ) カク . (( |_|_ィ⌒`」 ‖' 、 ソ| ノ と、_入`_,つ λ う カク 幼 姦 マ ン 登 場 以降重要な場面に登場致します。
局部変数ってなんですかあ?
チンコ->マンコ
どうしてコンストラクタにはvirtualつけちゃいけない仕様なのですか?
ってちょっとまてー! むしろ「つけろ」な仕様だろ! デフォルトで付いてない理由ってんなら、それは単にパフォーマンス上の選択。 すべてのオブジェクトに仮想関数用のオーバーヘッドを背負わせないためでしかない。
何言ってんの?
デストラクタじゃなくてコンストラクタだたーよ。。。漏れのうっかりさん。チョメorz コンストラクタにvirtualつけてどうなるか、よーく考えてみてください。 基底クラスのコンストラクション時に、派生クラスのコンストラクタが自動で呼ばれる動作を 期待しているのかもしれませんが、基底クラスが「自分が派生した何者であるか」なんて、 その時点でわかるはずがありません。 AからB、C、Dの派生が定義されてるときに、virtualつきのコンストラクタでAをコンストラクションしようとして、 AはB、C、D、どのコンストラクタを呼んだらよいのでしょう。
デストラクタだとしても、つけるべきなのは基底クラスのみでわ?
基底につければ、あとは勝手に付くしね。
まあ、いちいち明示的に指定してもいいけど。
>>610 何を言ってるんだかわからんちん。
そもそもコンストラクタを呼びたくないって話でつか?
空のint配列あたりからキャストでもしてみたらどうだろう。
あとはnewをオーバーライドするとか。
何のメリットがあるんだか想像もつかないけど。
しかしなんだ、原理主義者に神の是非を問うような質問だな。
そんな事より宿題まだー?
茄子休みに入ったんじゃねえ?
デスラー総統
>>333 の答えが
>>349 に載ってるんだけど
あの問題って縦型探索と横型探索の両方のプログラムと
結果をそれぞれ出せって言う課題だったんですね。
それに maze.txt という外部ファイルを読み込んで 処理しろっていう仕様だったんです。