[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/07 07:44 / Filesize : 167 KB / Number-of Response : 621
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

前スレ
C/C++の宿題片付けます 135代目
pc12.2ch.net/test/read.cgi/tech/1269438098/

304 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 17:03:20 ]
>>298
malloc()/realloc()/free() のラッパを書いて確認してみました。
codepad.org/5lqkATcO
ただ、ラッパ自身も malloc() / free() を使っているので、これが正しいかどうかを検証する方法がわからない。
ラッパのラッパを書くしかないのか‥‥‥。


305 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:10:54 ]
>>302
宿題を丸投げする人は、このスレのお客様。
むしろコード書く人、そのコードを読む人が主人公かなあ。
さらしたコードを叩くな、という人がいますが、むしろコードを読んで叩いてくれる人がいるからこそ、書きがいがあるというものです。

306 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:19:29 ]
ただで駄目なところ指摘してくれたり、より効率的な方法教えてくれるんだから
ありがたいもんだよな。
変にプライドの高い人は逆ギレしちゃうけど。

307 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:29:51 ]
>>306
コードさらす人は、意識していないかもしれませんが、そのプライドを自分で潰しに来ている、といっていいわけですから、コードをかかない人よりよっぽどましかと。

308 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:42:20 ]
そうそう。ここでコード晒す側も
所詮、暇つぶしなんで、波風立たない方が嬉しいにこしたことはない。

ここ100レス余りの流れで宿題がこないから、
mixiの宿題コミュまで覗っちゃったじゃないか!


309 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:45:23 ]
>>258

310 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:13 ]
>>308
mixiのあのコミュはなにかしら投稿するとsock(ryとかいう人に叩かれるw

311 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 18:55:52 ]
>>307
いいからお前はトリップを全部の発言につけろw

312 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:23:23 ]
>>304
ラッパがバグってるっぽい



313 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:25:49 ]
最近は嫌がらせ半分のふざけたコードに突っ込む人いなくなったなぁ。
そのまま提出した学生がその後どうなったのか気になるところだが。

314 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:28:52 ]
>>313
他人をむやみに信用することの愚かさを痛感し、
自分で判断できる力を身につけようと努力し、偉人になったとか。

315 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:39:53 ]
>>284ですが、型が違うみたいでエラーがでます。
そこで少し変えたんですが、なんか違うようです。

316 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:40:36 ]
#include<stdio.h>

main(void)
{
int test[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int i,j;
int score;

for (i=0;i<30;i++) {

score = 0;

do {

printf("成績を入力しろ");
scanf("%d",&score);

} while (score < 0 || 100 < score);

test[score / 10]++;

}

317 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:42:10 ]
for (i=0; i < 11;i++) {
printf("点:");
for (j=0; j<test[i];j++) {
printf("*");
}
}

return 0;
}

318 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:57:10 ]
>>315
#pragma warning(disable:4996) // これを追加する 
#include<stdio.h>
main(void)
{


319 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:05:19 ]
早くお客様こないかなー

320 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:07:14 ]
>>318
ありがとうございます。


321 名前:デフォルトの名無しさん [2010/06/05(土) 20:17:04 ]
すいません>>320です。
問題文に「0〜9点, ・・・, 90〜99点, 100点」と書いてありました。
大変申し訳ないです。
0〜9点:***



100点:** とするには、どう手を加えればいいのですか?

322 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:19:11 ]
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10649.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 無期限




323 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:21:51 ]
>>321
for(i=0; i<11; i++) {
if(i==10) printf("100点:");
else printf("%d〜%d点:", i * 10 + i * 10 + 9);

324 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:25:11 ]
>>321
「printf("点:");」→「if (i == 10) { printf("100点:"); } else {printf("%d〜%d", i*10, i*10+9);}」

325 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:28:09 ]
>>322
2-A:char**
2-B:char[][MAXLENGTH]
2-C:char**day
2-D:char day[][MAXLENGTH]

326 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 20:31:07 ]
>>323-324
ありがとうございます。
何度もすいませんでした。


327 名前: ◆QZaw55cn4c mailto:sage [2010/06/05(土) 21:50:30 ]
>>312
ご指摘感謝。free() のラッパがバグっていました。最後のひとつを開放するときにリンクをはずせていなかった。
codepad.org/91IVlXJH

328 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:26:34 ]
>>325
ありがとうございます。

329 名前:デフォルトの名無しさん [2010/06/05(土) 22:33:28 ]
文字と演算子を入力して四則計算するプログラムってどうやります?
例えば
3←入力
+←入力
4←入力
−←入力
・←入力



(計算結果)

330 名前:329 [2010/06/05(土) 22:36:29 ]
#include<stdio.h>
int main(void){
int a,b;
char c;
while(a != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c = '+')b += a;
else b -= a;
}
}

うまくいきません。

331 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 22:56:11 ]
>>329
ideone.com/PMcBO
逆ポーランド 電卓とかでググってみてくれ

332 名前:329 [2010/06/05(土) 22:58:00 ]
>>331
そんな難しいのじゃなくていいです・・
とりあえずwhileとか使って
数字入力 演算子入力 数字入力・・・・=答え
みたいなのが作りたい。



333 名前:デフォルトの名無しさん [2010/06/05(土) 23:51:35 ]
>>258です。ポインタを用いないバージョンもできないでしょうか。

334 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 23:55:00 ]
>>332
こんなんでどう?
codepad.org/b68KtrqB

335 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 00:04:36 ]
scanf()はエラーも返すんだよね。

336 名前: ◆/91kCCQXBo mailto:sage [2010/06/06(日) 00:14:15 ]
#include<stdio.h>
int main(void){
  int a=0, b=0, plus=1;
  char buf[80];

  while(buf[0] != '='){
  //  fgets(buf,100,stdin);
    gets(buf);
    if(buf[0] == '+'){
      plus = 1;
      b = a;
    }
    else if(buf[0] == '-'){
      plus = -1;
      b = a;
    }
    else
      sscanf(buf, "%d", &a);
  }
  b = b + plus * a;
  printf("ans=%d\n", b);
}
/*
3
-
6
=
ans=-3
*/

337 名前:デフォルトの名無しさん [2010/06/06(日) 01:34:19 ]
こんなソフト作ってください(お代は払います)ってな感じのスレどっかにあったかなぁ?
アイデアはあるけどオツムがないからどうしようもなく放置したまま早1年。
発注するから誰か受注して って頼みたいんだけど?

338 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 01:53:31 ]
>>337
pc12.2ch.net/test/read.cgi/software/1251624598/l50
なんてどう?

339 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 02:09:42 ]
サンクス

340 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 02:37:30 ]
>>258
>>333
codepad.org/K6MwzaHX

341 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:39:09 ]
>>333
#include <stdio.h>

int main(void)
{
char a[256], b[256];
int i, j, flg = 0;

printf("文字列を入力してください。");
scanf("%s", a);
printf("検索文字列を入力してください。");
scanf("%s", b);

printf("文字列「%s」は", b);
for(i=0; a[i]; i++) {
for(j=0; b[j]; j++) if(a[i+j]!=b[j]) break;
if(b[j]=='\0') {
if(flg++) printf(",");
printf("%d文字目から%d文字目", i, i + j - 1);
}}

printf("%s\n", flg ? "に存在します" : "は存在しません");

return 0;
}

342 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:45:21 ]
>>333
折角書いたけど>>341の方がスマートでくやしい
#include <stdio.h>

int main()
{
    char str[256], search[256];
    int strIdx = 0, searchIdx = 0, found = 0;
    printf("文字列を入力してください。\n");
    scanf("%s", str);
    printf("検索文字列を入力してください。\n");
    scanf("%s", search);
    while(str[strIdx]){
        if(str[strIdx] == search[searchIdx]){
            found = strIdx + 1;
            while(search[++searchIdx]){
                if(str[++strIdx] != search[searchIdx]){
                    found = 0;
                    break;
                }
            }
            if(found) break;
        }
        ++strIdx;
    }
    if(found == 0) printf("文字列「%s」は存在しません。\n",search);
    else printf("文字列「%s」は%d文字目から%d文字目に存在します。\n",search, (found - 2), (found - 2) + (searchIdx-1));
}



343 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 10:47:15 ]
しかもバグ入りという...

344 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 12:03:14 ]
>>329
ちゃんとつくると難しいです。たとえばこんな感じになります。
codepad.org/ODg132aP

345 名前:デフォルトの名無しさん [2010/06/06(日) 16:10:45 ]
何故>>330
はダメなのでしょうか?

>>344
ちゃんとつくらなくても>>336のプログラムの中身がすでに
理解できないんですが・・・>>336より簡単にできないんですか?
どんなプログラムも付け足せば何とかなるんですよね。

buf[]とstdin, fgetsなど全く意味がわかりません。
一応プログラム自体実行したら正しくいきます。
ただ宿題なので、今まで習ったことでやるしかないんです。

一応C言語です。

346 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:15:25 ]
>>345
そういうのは最初に全部テンプレ使って言え

347 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:23:51 ]
>>345

#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else b -= a;
}
}
これでどうだ

348 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:25:40 ]
>>345
ちがった
#include<stdio.h>
int main(void){
int a,b = 0;
char c=' ';
while(c != '='){
scanf("%d",&a);
scanf("%c",&c);
if (c == '+')b += a;
else if(c == '-')b -= a;
}
printf("%d\n", b);
}

こうかな。

349 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:41:12 ]
>>345なぜダメかという理由を書くと

1.while(a != '=')となっている点。
aは数字だろ?演算子はcに入れたいんだろ?だからwhile(c!='=')が正しい。

2.if(c='-')となっている点。
=は代入。比較なら==を使う。たまに見かけるバグだな。

3.int a,b;となっていて、bを初期化していない点。
bに結果を入れたいのだろうが、最初に0で初期化していない。
初期化しないと値は不定。何が入ってるか分からないというわけ。
つまりコンパイラとしてはbに最初から0xCDCDCDCDを入れておいても仕様違反ではないというわけだ。
vc++のデバッグビルドならそうなる。
そこにプラスマイナスしても正しくならないよな。

4.else b-=a;となっている点。
これだと'='が来たときも引き算してしまう。だからese if(c=='-')にしないといけない。

5.whileに最初に入った時点でcは不定。
だから万が一cが'='だったらすぐ抜けてしまう。ここでは' 'を入れておけば絶対に問題が起きないのでおk。
現実問題として、滅多に起きないが、社会にでたらこれは立派なバグとして扱われるぞ。

350 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:42:02 ]
こいつに理解させるのはまず無理だと思うけどな

351 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:53:45 ]
俺に聞けスレで諦めた一人ですな

352 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:55:49 ]
>>348
12+12=0…



353 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 16:58:45 ]
だからscanf()で文字を読むときは改行文字に気をつけろって言っただろ

354 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 17:01:25 ]
int a=0 ,b=0;
char c=0;
scanf("%d%*c",&b);
while(scanf("%c%*c",&c) && c != '='){
scanf("%d%*c",&a);
if (c == '+')b += a;
else if(c == '-') b -= a;
else ;
}
printf("%d\n",b);
それを修正してとなると↑のようになる(scanf削って縮めたいんだが、俺には限界)

355 名前:349 mailto:sage [2010/06/06(日) 17:03:34 ]
ああ、ごめん。
実際に動かしてみたら色々問題がまだあるね

scanf("%c", &c);は改行コードを拾ってしまうな。

356 名前:4 [2010/06/06(日) 18:52:56 ]
>>350
>>351
ひどすぎワロタww
命かけて頑張ってんだよ、茶化さんで。

357 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 18:56:00 ]
>>356
命がけ、というのであれば、それを見せてほしいですね。現状では伝わってこないんです。

358 名前:4 [2010/06/06(日) 18:58:23 ]
>>354
優しすぎ、ありす。
まじで感謝してる。プログラミングの単位たぶん落とすと思うけど
2学期には間に合うようにするわ。


359 名前:デフォルトの名無しさん [2010/06/06(日) 19:02:36 ]
熟練のマである>>355でもエラー出すC言語ってどんだけむずいんだよ。
もっと簡単で寛容なC言語はないんかね。

360 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 19:03:51 ]
いろいろと突っ込みどころがあるな

361 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 19:44:23 ]
>>359
ちょっと上の方でコテが散々やっつけられていたのを見ましたか?
簡単で寛容な、というのは期待しないほうがいいかと。

362 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:20:28 ]
宿題というか、既存のプログラムのバグ消しのお願いです
AviUtlという画像編集・エンコソフトを使っているですが、
そのソフト用にNL-Means Filterというものが出ています。
ですがそのフィルターを使うとソフトがフリーズしてしまいます。なんとか解決できませんか?
症状としては、そのフィルターをオンにすると、AviUtlを終了しようとした時にフリーズします。
GPU支援を使う、計算モード3のときのみ起こります。お願い致します

kishibe.dyndns.tv/index.php?%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%2FNL-Means%20filter
からダウンロードするとソースらしきものもついてきます



363 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 20:56:36 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10650.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2010年6/8まで
[5] その他の制限:なし
2問ありますが、よろしくお願いします。

364 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:06:03 ]
>>363
<課題2>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, k, n;
double *x, temp;

scanf("%d", &n);

x = malloc(n * sizeof(double));

for(i=0; i<n; i++) scanf("%lf", x + i);

for(i=n-1; i; i=k) {
for(j=k=0; j<i; j++) {
if(x[j] > x[j+1]) {
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
k = j;
}}}

for(i=0; i<n; i++) printf("%f\n", x[i]);

free(x);

return 0;
}

365 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:30:33 ]
>>363
<課題1>
codepad.org/i9GSGdcP

366 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 21:36:06 ]
>>363
codepad.org/XdsWKbxa
codepad.org/qynZDN0h

367 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:44:36 ]
ぐだぐだ言い訳されるのわかってても突っ込みたくなるなw

368 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:45:38 ]
>>367
どうぞどうぞ突っ込んでくださいな。楽しみにしています。

369 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:48:51 ]
実数と整数の区別もつかないアホ
ソート部分がクソ

370 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:55:59 ]
>>363です
ありがとうございます

371 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:56:08 ]
>>363
2番目の課題を訂正します。
codepad.org/qgboBPOZ
>>369
普通のバブルソートですが、何か問題でも?

372 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 21:57:51 ]
だからそれはバブルソートじゃないって言っただろw



373 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:02:21 ]
>>372
あれ?私は en.wikipedia.org/wiki/Bubble_sort を参照したんですけれどもね。

374 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:09:35 ]
それが言いたくてわざわざ効率の悪いほう使ったのかw

375 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:10:08 ]
>>373
バブルソートは

for(j=0;j<n-1;j++){
for (i = 0; i < n - 1; i++) {
if (x[i] > x[i + 1]) {
t = x[i];
x[i] = x[i + 1];
x[i + 1] = t;
}
}
}
だろ。わざわざdo{} while()にしても比較回数が減ることはない。


376 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:16:38 ]
>>373
だから全部読めって前も言ったよな?
Optimizing bubble sortのところで何でn := newn + 1ってなってると思ってるんだ?

377 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:17:08 ]
>>375
そうですよね。>>375 であげていただいたやり方もバブルソートといいますよね。
でも >>372 はお気に召さないようなんですよ。
確かに日本語版 wiki やドイツ語 wiki では、幾分効率をあげたものが採用されているようですが、
どうオプティマイズしても計算オーダーはΟ(n^2) で変わらないのですけれども、>>372 は計算オーダーの概念がよくわかっていないらしい。
pc12.2ch.net/test/read.cgi/tech/1269438098/706 のように、ある一種のバブルソートの実装にこだわっているんです。

378 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:18:14 ]
>>376
Optimizing のところでは、長さを縮めていますが、そうでない実装も、やっぱり bubble sort でしょう?

379 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:21:35 ]
計算オーダーが同じでも明らかに効率悪い方に拘る意味が分からんw

380 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:24:12 ]
こだわっているんではなくて、計算効率がちょびっとよくなるか悪くなるかの差で、バブルソートとよんだりよばなかったりするのはおかしいといっているのです。
英語版 wiki にのっている実装もバブルソート、 >>375 のやりかたもバブルソートなんですよ。無論私のもバブルソート。

381 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:42:15 ]
ん、バブルソートですね

382 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:48:20 ]
知識とコードのアンバランスさから見て、どっかの大学講師かな。
実務経験があるようには見えないし、頭堅いのにプライドだけは高いし。



383 名前: ◆QZaw55cn4c mailto:sage [2010/06/06(日) 23:20:44 ]
>>382
今は助教というのですよ。現在の大学教員の序列を知らないところから見ると、高校生かな?

384 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:21:28 ]
高校生に負ける助教って・・・

385 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:29:08 ]
どうりで高校生なら計算オーダーの話は理解できなくてもしかたありませんね。でも重要ですからよく勉強しておくように。

386 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:29:24 ]
日本語まともに読めないクズの分際で、
なんで自分より下しか想像できないんだろうw


387 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:31:46 ]
バブルソートでも色々あるんですよ。ひとつのパターンだけ決め付けてこれはバブルソート、あれは違う、などと見識の狭いことをいってはいけません。
もっと広い感覚で物事を理解することです。

388 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:32:52 ]
実数と整数の区別もつかない盲が何言ってんだw

389 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:35:12 ]
というか本当に助教なの?せいぜい院生くらいかと思ってたんだけど。
日本語の読めなさはやばいってレベルじゃねーだろw

390 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:35:43 ]
小さなミスはその都度修正すれば済むこと。でもバブルソートがなにかを理解していなければ、ヒープソート、シェルソート、クィックソート、マージソート
その他いろいろなソートでもつまづきますよ。これらの理論では計算オーダーが重要ですからよく勉強しておくことです。

391 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:39:51 ]
なんで相手がそれらのソートを知らないことになってんだよw

392 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:02 ]
>>382
で講師だろうといっていたくせに、
>>389
で院生くらいだとおもっていた、
とは随分とおっしゃることがころころかわるのですね。日本語が読める読めないというより、日本語を使って思考できないのではないですか?



393 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:32 ]
ちょ、同一人物認定されたw

394 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:40:43 ]
>>391
計算オーダーを理解していないようですからね。

395 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:54:27 ]
すいません、できたら>>362お願い致します
流石に無理ですかね・・・

396 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:55:50 ]
>>395
スレ違いな上に、金取るぞってレベルの話なんだがw

397 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:57:10 ]
>>395
無理に決まってるだろw

398 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:57:21 ]
やっぱり無理ですよねw
じゃあだめもとで他当たってきます
ありがとうございました

399 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:58:06 ]
>>395
作者に直接言ってみれば
もちろん、単にエラーが出るとだけ。
ttp://twitter.com/_kenkun

400 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:59:34 ]
大体フィルタだろ?
フィルタのソースはAviUtilの作者とは違うだろ。

401 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:00:30 ]
>>399
いや、AviUtlに問題があるわけではなくて
このフィルタに問題があるんですよね
フィルタの作者はAviUtlの作者ではないんで・・
でももしかしたらAviUtl側でなんとかできるかもしれませんね
ありがとうございます。


402 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:01:58 ]
関係ないフィルタの不具合を報告されても困るだろw



403 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:18:46 ]
まぁここはご覧の通り高校生レベルの議論なんで・・

404 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:19:12 ]
高校生以下のおじさんもいるけどね

405 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 02:09:08 ]
高校生だったころに戻りたいな

406 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 04:04:49 ]
中学レベルの英語力すらない人が多いみたいだけどね

407 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 06:55:32 ]
that's too mad.

408 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 12:38:44 ]
>>395
せっかちだなぁ

409 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 19:02:23 ]
>>406
んじゃ、そのあんたのレスを英語で頼む

410 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 19:09:19 ]
all your base are belong to us

411 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:02:34 ]
ポインタを使い1〜12までの数字を入力すると英語で月の名前が出力され、
そうでない場合はunknown month と出力されるプログラム作りで困ってます。
入力例
3
5
13
11
出力例
March
May
unknown month
November

ヒントでは、
char *month_name(int n)を書き入れる事
month_name(6)はJuneである事
static char *months[] = { "January","February","March",
"April","May","June",
"July","August","September",
"October","November","December"};
を用いる事が書かれてます。

暇な人が居たらお願いします。

412 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:16:30 ]
>>411
char *month_name(int n)
{
if (n < 1 || 12 < n) {
return "unknown month";
}
return months[n-1];
}



413 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:20:27 ]
staticだから関数内にmonths[]置くんじゃないの?

414 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 20:24:16 ]
じゃあそれで

415 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:12:44 ]
途中経過を…プログラミングは下手ですがっ
#include <stdio.h>

static char *months[] = { "January","February","March",
"April","May","June",
"July","August","September",
"October","November","December"};
int main(void)
{
int n;
char *month_name(int n)
{if (n < 1 || 12 < n) {
return "unknown month";
}return months[n-1];
}
scanf("&lf",&n);
printf("%s",*months);
return(0);
}
これでやるとどんな数字入れても出力がJanuaryになってしまうのですが、
どこらへんを変えればいいでしょうか?

416 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:14:17 ]
>>415
&lf ってなんだよ

417 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:15:40 ]
scanf("%d", &n);


418 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:18:19 ]
つーか関数内に関数置くな

419 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:21:46 ]
>>415
なんという残念な使い方w

420 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:24:05 ]
>>415
ideone.com/kEyhc

scanf("&lf",&n);
printf("%s",*months); の一連の流れをおかしいと思わなかったのはまずい

421 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:31:08 ]
残念な頭なのでmonth_nameの中に
*months入れるのは思いつきませんでした…orz

422 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 21:37:19 ]
>>421
慣れ、馴れ。数書くうちに体にしみこむ。



423 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:08:57 ]
ケチ付けるわけではないけどif文はmainの中のほうがunkownのとき
関数を呼ばなくていいんじゃなかろうか。

424 名前: [2010/06/07(月) 22:11:27 ]
【質問テンプレ】
[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク):2つの正の整数(aとb)の最大公約数をユークリッドの互除法を用いて表示するプログラムを作成せよ。ただし、0<b≦a≦32767とする。
               ≪ユークリッドの互除法≫
               ユークリッドの互除法による最大公約数(GREATEST COMMON DIVISOR:GCD)は、次のように求める。
               @2数(aとb)の中で大きい値をl、小さい値をmとする。
               Alをmで割り、あまりをrとする。
                      r=0ならば、mが最大公約数となる。
                      r≠0(0<r<m)ならばl←m、m←r として再びAの処理を行う。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:main.c Visual Studio 2008
 [3.3] 言語:C++
[4] 期限:2010年6月18日17:00まで
[5] その他の制限:(まだ本当に初心者なので)do文やif文、for文まで習いました。


期限までは時間がありますが…宜しくお願いしますm(_ _)m


425 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:29:12 ]
#include <iostream>

int main()
{
int a, b, r;

std::cin >> a >> b;

while(r = a % b) a = b, b = r;

std::cout << b;
}

426 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:09:24 ]
>>423
逆にその関数として、不正な値が渡された時はどういう挙動にしようか

427 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:10:21 ]
for(i = 0 ; i < 5 ; i++){
printf("%d,", i );
}
これで出力したら
1,2,3,4,5,
みたいに最後にもカンマがついちゃうんでfor文の外側に
printf("\b\n");
を付け加えたんだけどうまく最後のカンマが消えません
その理由とどうすればいいのか教えてください

428 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:21:48 ]
\bは書き込む位置が1文字分戻るだけだから
スペースで上書きする必要がある
printf("\b \n");

429 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:23:30 ]
なるほど
d

430 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:25:03 ]
>>427
端末側がバックスペースをサポートしていない、と思われる。
仕方がないから、
#include <stdio.h>
#define N 5
int main()
{
int i;
for (i = 1; i <= N - 1; i++)
printf("%d, ", i);
printf("%d\n", i);
return 0;
}
でごまかすしかない。

431 名前:430 mailto:sage [2010/06/07(月) 23:29:20 ]
>>428
そのような手があったんですね。これでうまくいきました。(cygwin)
#include <stdio.h>
#define N 5
int main()
{
int i;
for (i = 0; i < N; i++)
printf("%d, ", i);
printf("\b\b \n");
return 0;
}

432 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:32:36 ]
>>424
#pragma warning(disable:4996)
#include <stdio.h>
int main(void){
  int a, b, l, m, r;

  printf("整数 a と b を入力して下さい > ");
  scanf("%d %d", &a, &b);
  if(a>b) l=a, m=b; else l=b, m=a;
  while(r = l % m) l=m, m=r;
  printf("GCD = %d", m);
}



433 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:46:04 ]
>>426
#include <stdio.h>
char *month_name(int n){
static char *months[]={"January","February","March",
"April","May","June","July","August","Septmber",
"October","November","December"};
return months[n-1];}
int main(void)
{
int n;
scanf("%d",&n);
if (n<1||n>12)printf("unkown month\n");
else printf("%s\n",month_name(n));
return 0;
}
不正な値が行く場合がわかりませんので教えて下さい。

434 名前:430 mailto:sage [2010/06/07(月) 23:53:41 ]
>>433
できている、と思うのですが。

435 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:12 ]
しっかし無駄なstaticだ

436 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:25 ]
>>433
関数をライブラリとして提供した場合に、使う側に対して値チェックを強制するべきか、
それとも不正な値を渡された場合にunknown monthを返却する仕様とするのかという話。

で、使用者に対して値チェックを強制した場合、使用者の不手際により
不正な値が渡されることを考慮しなければならない。
その際、メモリアクセス違反で落ちるライブラリでよしとするのか?ということ。

例外機構があれば例外を投げるのも手だけれど、Cではどうするのか。
型をboolにし、out引数を追加するのもありだよね。
でも今回はプロトタイプが指定されている。

その上での考えを教えてほしい。

437 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:57:16 ]
NULLを返却するのは?
結局関数の中で範囲チェックすることになるけど。

438 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:58:00 ]
>>435
これstatic消したら関数抜けた時に戻り値のアドレスが破棄されるんじゃないの?

439 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:00:30 ]
>>438
リテラルのアドレスが返るから問題ない

440 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:11:50 ]
>>438
sizeof(months) == sizeof(char *) * 12

441 名前:デフォルトの名無しさん [2010/06/08(火) 00:16:14 ]
[1] 授業単元: 情報数学
[2] 問題文(含コード&リンク):
次の連立一次方程式をガウスザイデル法とSOR法で解け
{2 , -1 , 0} {x1} {-1}
{-1 , 2 , -1} * {x2} = {2}
{0 , -1 , 2} {x3} {1}
なお、反復回数を20、x1-3の初期値x1-3^0を0、SOR法の・をそれぞれ1.2と1.5で計算せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日中、出来ればお昼までにお願いします。

442 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:20:40 ]
>>440
要するに、予約語staticをつけなくとも、
monthsはその各々の要素が文字列リテラルの先頭へのポインタであるから
静的領域に確保されると。




443 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:27:51 ]
それって規格で決まってたっけ?
そうでなくても、いちいち呼ばれるたびに確保するような処理系なさそうだけどさ。

444 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:35:16 ]
>>436
いろいろとありがとうございました。
今回は不正な値を渡された場合にunknown monthを返却する仕様のつもりです。
使用者に対しての値チェックのやり方はどれがいいかまだよくわかりません。
難しいですね。

445 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:58:11 ]
>>442-443
文字列リテラルがstatic const char[]か?ならYes 6.4.5 文字列リテラル
文字列リテラルを指すポインタ非可変長配列がstaticか?ならchar const * const []であってもNo 6.2.4 オブジェクトの記憶域期間

446 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 01:03:04 ]
>442>443
横レスだけど
months自体は自動変数だから、スタックに置かれるよ。関数が返しているのは
スタック変数を指すポインタではなく、静的領域に置かれている文字列リテラルの
ポインタ。

447 名前:443 mailto:sage [2010/06/08(火) 01:34:03 ]
>>445
d


448 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:57:28 ]
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10651.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月9日12時まで
[5] その他の制限:

libstation.aが無いのでやりずらいかもしれませんが、形だけでもお願いします。



449 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:20:42 ]
>>441をお願いします。

450 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:44:00 ]
>>449
とりあえずガウスザイデル法のみ

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10652.txt

451 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:08:42 ]
>>449
SOR法

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10653.txt

452 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 12:04:27 ]
>>451
ありがとうございます。



453 名前:デフォルトの名無しさん [2010/06/08(火) 13:17:45 ]

[1] 授業単元: 上級プログラミング
[2] 問題文(含コード&リンク):

1、VisualC++2008のWindowsフォームアプリケーションのプロジェクトを作成し、DataGridViewを作成なさい。列は
A,B,C の3列とする。
2、列Aに入力された4桁の数値を日付形式に変換し表示する様にしなさい(○月○日)。
3、sample.txtの内容を読み取り、その内容を使って列Bにオートコンプリートを実装しなさい。

sample.txtの内容は
あいうえお
abcde
12345
と言う様に、1行に1単語とする。

[3] 環境
[3.1] OS: Windows
[3.2] VC++2008
[3.3] 言語: C/C++
[4] 期限: 6/12
[5] その他の制限:とくに制限はありません

1はできますが2以降がよくわかりません。
2はプロパティでCellStyleを設定しましたが動いてくれませんでした。
3は調べてみたのですが、C++での実装はのっていなかったので・・・
よろしくお願いします。



454 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:21:57 ]
C++/CLIの宿題スレってないの?

455 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:43:20 ]
>>448
適当に見繕ってttp://codepad.org/Hzoa3JtQ

456 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:00:14 ]
(1) 【main 関数のみ】
int型配列 x[101] を定義し、キーボードから人数 N と N 人分の点数を入力し、平均点と
偏差値を計算し、結果を画面に出力するプログラムを作成せよ。
◆ 条件
 人数 N に負の値や101以上の値が入力されたときには、再入力するものとす
る。
 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力する
ものとする。
◆ 偏差値 Ti の計算式
10( xi   )
Ti   50

ただし
N
1
x
 i
N i 1
N
1
 (x
  )2
i
N i 1
ここに、N :データの数 xi :個々の点数 μ:平均 σx:標準偏差


457 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:01:04 ]
実行例
Input N (0<N<101):0 ← 入力エラー
Input N (0<N<101):5
Input x[1] (0<=x<=100):200 ← 入力エラー
Input x[1] (0<=x<=100):30
Input x[2] (0<=x<=100):50
Input x[3] (0<=x<=100):-1 ← 入力エラー
Input x[3] (0<=x<=100):60
Input x[4] (0<=x<=100):80
Input x[5] (0<=x<=100):90
平均点 62.0
No. 1 点数 30 偏差値 35.0
No. 2 点数 50 偏差値 44.4
No. 3 点数 60 偏差値 49.1
No. 4 点数 80 偏差値 58.4
No. 5 点数 90 偏差値 63.1


458 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:02:48 ]
(2) 【平均点と偏差値を計算する関数の作成】
(1)のプログラムにおいて、平均点と学力偏差値を計算する部分を関数 seiseki に改
めたプログラムを作成せよ
◆ 条件
 データの入力と結果の出力はmain関数で行う。
 人数 N に負の値や101以上の値が入力されたときには、再入力するものと
する。
 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力す
るものとする。
 main関数から関数seisekiに
データの数 N
N人分の点数 x[]
を渡し、関数seisekiからmain関数に
平均点 μ
偏差値 T[]
を受け渡す。
ただし、平均点は戻り値を用いて返す。



459 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:06:09 ]
3)【ポインタを用いた平均点と偏差値の計算】
(2)で作成したプログラムの関数 seiseki の中
次のプログラム例を参考にして、
の配列要素をポインタを用いて表すプログラムを作成せよ。
#include <stdio.h>
float average( int N, float *h);
int main(void){
float ave, height[101];
int i,N;
printf("Input N:");
scanf("%d",&N);
for(i=1; i<=N; i++){
printf("身長 ");
scanf("%f",&height[i]);
}
ave = average(N,height);
printf("平均 %6.1f \n",ave);
return 0;
}
float average( int N, float *h){
int i;
float av, total=0.0;
for(i=1; i<=N; i++){
total = total + *(h+i);
}
av = total/N;
return av;
}



460 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:35:27 ]
>>456
wakaran

461 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:42:29 ]
>>459
問題文が日本語になっていない
コードも直接貼ってるから読みにくい

462 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:51:41 ]
>>448
ありがとうございます。
セグメンテーション違反になりましたが、ここからは自分で頑張ってみます。



463 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:31:47 ]
>>456-458
codepad.org/JjTL3Zwl

(1)は input と main_q1関数だけ。
実行するときは、main_q1はmainに関数名を直すのが必要です。

(2)は コピペでも動く。main_q1関数は不要なので、消しても良い。

・偏差値はわからないから、wikipediaのを参考に。
・stdevの求め方は、2乗の平均 - 平均の2乗にした。
・データ入力の際に、avgも求められるが、題意から分けた。

464 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:38:36 ]
配列サイズが101だから、iは1からなんじゃね?

465 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:50:30 ]
>>463
Fortranな先生かな。
ttp://codepad.org/wUR2oqj6

466 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 16:10:08 ]
勝手に例の表記や条件を変えるヤツってなんなの?

467 名前:デフォルトの名無しさん [2010/06/08(火) 17:23:12 ]
>>354
すげぇ、てか制御式の中にscanf入れることできるのかー。
>>348
の人は何故だめなのかな。

468 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:30:20 ]
>>348
scanf("%c",&c);
で改行をよみこんでしまうから
後の条件式を総スルーしちゃう。
よってbは0で初期化されたまま

あと実際に動かすと
1
+
1
=
1
となってしまう。
これは
1
+
は計算するように書かれているけど
1
=
は計算するように書かれてないから。

469 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:44:47 ]
>>348を書き直すと
#include<stdio.h>
int main(void){
int a=0,b = 0;
char c=' ';
char prevc=' ';
while(c != '='){
scanf("%d%*c",&a);
scanf("%c",&c);
if (c == '+'){b += a; prevc='+';}
else if(c == '-'){b -= a; prevc='-';}
else if (c == '=')
{
if(prevc == '+' || prevc == ' ') b+=a;
else if(prevc == '-' || prevc == ' ') b-=a;
}

}
printf("%d\n", b);
}

470 名前:デフォルトの名無しさん [2010/06/08(火) 18:00:42 ]
>>468
頭良すぎワロタww
何故そのような分析ができるんだ。
C言語難しすぎ、どんだけ繊細なんだよ。

471 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:18:23 ]
お前がバカすぎるだけだってまだわからないのかw

472 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:19:08 ]
それほどでもないけどね



473 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:25:51 ]
>>468はいろいろ間違ってるぞw

474 名前:デフォルトの名無しさん [2010/06/08(火) 18:28:05 ]
prevcってなんだ?見たことも聞いたこともない。
苦し紛れの技巧か?

あと='';

''の中は空白だな。

475 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:36:20 ]
>>454
C#宿題スレに書きこんでみるか?

476 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:39:34 ]
#include <stdio.h>

int main(void)
{
int sum = 0, temp;
char ch = '+';

do {
scanf("%d", &temp);
if(ch == '+') sum += temp;
else if(ch == '-') sum -= temp;
scanf(" %c", &ch);
}while(ch != '=');

printf("%d\n", sum);

return 0;
}

477 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:46:02 ]
あげて古いの蒸し返してるのは:4 ◆nNHcoCEvyoだろ
こいつに何かを理解させるのは無理だって

478 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:06 ]
>>474
一個前のを取っておきたかったんだと思うよ。技巧ってほどじゃない

479 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:07 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):オイラーの定理の仮証明
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:visual c++
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:初心者なので。。。

互いに素なnとaについてオイラーの定理が成り立つか確かめる。
とりあえずnは1以上5以下の数とし、aは1以上n以下とする。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10654.txt
これを実行すると何故か一部でエラーが出るんですが(プログラミング的な意味ではなく)
その理由と解決方法を教えてください

480 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:17:35 ]
>>479
count = 1;の位置がおかしい

481 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:19:22 ]
>>480
なにがココまではおkなんだか・・・
ありがとうございます

482 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:21:07 ]
関係ないけどそのままだと数が大きくなるとオーバーフローしてしまう。
oira *= a;
oira %= n;
ってすれば数が大きくなっても対応可能。



483 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:23:02 ]
>>482
まじでそこを聞こうと思ってたところです
ありがとうございます

484 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:46:03 ]
>>482
度々悪いんですけど
なぜそうすればいいのか教えてもらえませんか?
自分で考えてもわかりませんでした

わからないのは
なぜ数が大きくなっても対応出来るのかではなく
なぜこの計算方法でも正しい結果が得られるのかです

485 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:00:30 ]
めんどくさいからパス

486 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:08:13 ]
そか(’・ω・`)
oiraにnで割った余りを入れちゃったら
次a倍すると意図しない値になっちゃいそうなんだ
少なくとも俺のない頭はそう思っちゃうorz

一回一回a倍とnで割った余りをいれようとした根拠とか考え方とかをご教授願いたかった(’;ω;`)

487 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:19:18 ]
これって高校数学の範囲じゃねーの?

488 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:22:42 ]
もしかして俺の勘違いかもしれん

>>482って
if(i == a){
printf("n = %2d, a = %2d", n, a);
oira = 1;
for(j = 0 ; j < count ; j++){
oira *= a;
oira %= n;
}
if((oira - 1) % n == 0){
printf(": verified\n");
}
else{
printf(": error\n");
}
}
みたいに直せって事だよな?


489 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:33:16 ]
もしかして俺のバカさ加減に呆れてますか?(;ω;`)

490 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:55:42 ]
少なくとも処理結果は正しいの?

491 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:58:49 ]
a = n * b + cの形に変形してかけて見ればわからない?

a * a = (n * b + c) * (n * b + c)
=(n*b)^2 + 2 * n * b + c^2

(n*b)^2と2*n*bは明らかにnで割り切れるから、
a*aをnで割った余りはc^2をnで割った余りになる

492 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:07:13 ]
それがoira-1をnで割ったあまりにどう応用できるのか、俺もわからないので>>489は一人で泣かなくていい



493 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:19 ]
>>491
解説ありがとう
なんとなく考え方はわかったがまだしっくりこないのでもうちょい粘ってみる

>>492
気が楽になった

494 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:30 ]
oira-1がnで割り切れる=oiraをnで割った余りが1

495 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:35:01 ]
#include <stdio.h>

#define NUMBER 5

int gcd(int a, int b) { return a % b ? gcd(b, a%b) : b; }

int main(void)
{
int i, j, c, n, a, oira;

for(n=1; n<=NUMBER; n++) {
for(a=1; a<n; a++) {
if(gcd(n, a)==1) {
printf("n=%2d,a=%2d:", n, a);
for(i=1,c=0; i<n; i++) if(gcd(n, i)==1) c++;
for(i=0,oira=1; i<c; i++) {
oira *= a;
oira %= n;
}
if(oira == 1) printf("verified\n");
else printf("error\n");
}}}

return 0;
}

496 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:37:49 ]
まだ関数と{? : }は習ってないから使っちゃいけないんだ
あくまで標準入出力とfor, while, if だけで

497 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:39:35 ]
使っちゃいけないという思い込み。
本当に使うなといわれた?

498 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:43:13 ]
思い込みだな
使っちゃいけないことは無いだろうが使わないでできるならそれに越したことはないかと

499 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:49:33 ]
そんなことしてる間に
>>491>>494のおかげで理解できました
理解できただけで次似たようなコード書くとき思いつくかどうかは別だけど

500 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:52 ]
countを求めるのはnとaが互いに素であることがわかってからの方がいい。

501 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:58:04 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int plot(int x,int y,int c);は座標(x,y)に色cを設定する関数である。
これが与えられているものとして
コマンドラインから(x,y)の形で座標値が何個か与えられた時
(0<=x,y<=10000)これらに異なる色(選択は自由)を与える。
0<=x,y<=10000を満たす座標の各点についてその点から
最も近い点の色をその点に設定する(2つ以上の点から等距離
にある場合は、これらの点の中でコマンドラインで最初に指定
された点の色を設定)
この処理を行うプログラムを記述する

[3] 環境
 [3.1] OS:Windows XP(Service pack 3)
 [3.2] コンパイラ名とバージョン:visual c++.net 2005
 [3.3] 言語:C++
[4] 期限:6/11迄
[5] その他の制限:
 ヘッダファイルは使わない。extern宣言でplot関数を宣言した
のちにpaint関数のコードを記述すること。
0<=x,y<=10000と仮定して良い。
plot関数を適当な名前の整数ファイルの1024*y+(x % 1024)番目
のレコードに値を設定する実装としたドライバコードを使って
テストするとよい。

502 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:00:43 ]
#include<stdio.h>
#define NUMBER 5
int main(void)
{
int n, a, oira, c, i, j, k;

for(n=1; n<=NUMBER; n++) {
for(a=1; a<n; a++) {
for(i=n, j=a; k=i%j; i=j, j=k);
if(j!=1) continue;
printf("n = %2d a = %2d :", n, a);
for(c=oira=1; c<n; c++) {
for(i=n, j=c; k=i%j; i=j, j=k);
if(j!=1) continue;
oira *= a;
oira %= n;
}
if(oira==1) printf("verified\n");
else printf("error\n");
}}

return 0;
}



503 名前:501 mailto:sage [2010/06/08(火) 22:00:45 ]
問題文がちょっと抜けてました。訂正させてください。

○この処理を行うプログラムのメイン処理を行う関数
void paint( int argc,char **argv);
を記述する

×この処理を行うプログラムを記述する

504 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:01:35 ]
>>500
助言d
それはその方が無駄にφ(n)(=count)を求めなくて済むからか?
だとしたらその通りかもしれないから今後の参考にするわ

505 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:11:30 ]
あくまで好みだからそんなの自分の好きにしろとか言われるかもだが
プログラム書くときスペースとか改行ってどのタイミングで入れてる?

学校では a = a + 1 って書く奴がいれば a=a+1 って書く奴もいるし
for(i=0;i<5;i++)って書く奴がいれば
for(i = 0 ; i < 5 ; i++)って書く奴もいるし

こうしたほうが効率がいいとか後で見やすいってのがあるなら参考にしたい
今なら癖とかないから変えられるし

506 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:12:55 ]
>>504
そう。
できるだけ必要のない無駄な処理はしないってのが大事。

507 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:02 ]
>>505
どうぞ
google-styleguide.googlecode.com/svn/trunk/cppguide.xml


508 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:50 ]
何のIDE使ってるか知らないけど
vs2008使ってる俺は適当に書いてから「編集→詳細→選択範囲のフォーマット」で整形してる

509 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:20:58 ]
www.textdrop.net/google-styleguide-ja/cppguide.xml
あえてこっちを載せないことに悪意を感じる

510 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:25:31 ]
>>509
知らなかったんだごめんよ

511 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:39:58 ]
>>502が理解できない
てか発想が秀逸すぎて手に負えない

512 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:43:14 ]
最大公約数をループで求めてるだけ



513 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:50:13 ]
とりあえず褒めとけばいいと思ってない?

514 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:52:00 ]
>>501
0<=x,y<=10000を満たす座標の各点についてその点から
最も近い点の色をその点に設定する
ってあるけど

各々の座標の色はどう初期化するべきなの?
なにかしら初期化しておかないと最も近い点の色もなにもないと思うんだけど。

515 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:09:33 ]
引数で与えられた点の色はこっちで好きに決めていいんだろ

516 名前:430 mailto:sage [2010/06/08(火) 23:12:01 ]
>>505
K&R にしておけば後ろ指をさされることはないかと。
ただし私は

int main() {
...
}

とかえている。
emacs(xyzzy) ではこのほうが便利だから。

517 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:54:47 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10656.txt
  プログラムと問題文が書いてあります
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2010年6月9日中に提出
[5] その他の制限: 特にありません

よろしくお願いします。


518 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:13:20 ]
[1] 授業単元:プログラミング演習
[2] 問題文:整数nを入力し、以下のようにサイズnの“N型の図形”を、奇数目入力では”*”、偶数目入力では”+”で表示で表示されるプログラムを作成しなさい。なお、処理の終了はnが0以下の時とする。複合条件やスイッチを用いて作製なさい。
実行例
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10658.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4]期限:6/9日PM10:00
[5]その他制限: printf int while scanf float for のみの使用
なお、||、break、return,は使用禁止
プログラム形式はサンプル風にお願いします
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt

519 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:19:59 ]
上の実行例の訂正です
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10661.txt

520 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:41:51 ]
#include <stdio.h>

int main(void)
{
int i, j, n;

while(scanf("%d", &n)==1 && n > 0) {
printf("n=%d\n", n);
for(i=0; i<n; i++) for(j=0; j<=n; j++) printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n');
}

return 0;
}

521 名前: [2010/06/09(水) 10:07:40 ]
>>432
すごいです!!…学校で習った感じに少し、
書き直させて頂きました(>_<)
こんなに早く出来ると思ってなかったので
びっくりしました。
本当に助かりました!有難う御座いました☆


522 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:43:14 ]
シルエット
カーディガン
レントゲン
サンドイッチ



523 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 11:01:34 ]
>>501
ideone.com/EtsT0
作ってみたけどなんか違うから、だれか直してくれ

524 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:11:42 ]
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10662.txt
[3] 環境
 [3.1] OS:特に指定なし
 [3.2] gcc 3.2
 [3.3] 言語: (C)
[4] 期限: ([2010年6月10日15:00まで] )
[5] その他の制限: なし

よろしくお願いします。

525 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:45:36 ]
>>524

おまえ、5つの数字の列の取りうる範囲は0~99999の100,000個だぞ。
だから入れるバケツの大きさは100,000の配列にしてそこへ2000個のデータを
5桁の数字に対応するバケツに次々入れて、終わったら番号の小さいバケツから順番に
数字を取り出すようにしないとダメだぞ。


526 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:47:15 ]
void sort(char data[][LENGTH+1], int size)
{
int *p = calloc(100000, sizeof(int));
int i, j, k;
for(i=0; i<size; i++) p[atoi(data[i])]++;
for(i=j=0; i<100000; i++) for(k=0; k<p[i]; k++) sprintf(data[j++], "%05d", i);
free(p);
}

527 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 17:46:55 ]
void sort(char data[][SLENGTH+1], int size) {
  int i, j=0, k;
  char p5[6];
  int *p = calloc(100000, sizeof(int));

  for(i=0; i<size; i++)
    p[atoi(data[i])]++;
  for(i=0; i<100000; i++) {
    if(p[i]) {
      sprintf(p5, "%05d", i);
      for(k=0; k<p[i]; k++)
        strncpy(data[j++], p5, 5);
    }
  }
  free(p);
}

528 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 18:23:29 ]
>>522
申し訳ないですが、
||と条件文の中にさらに条件文は使用禁止なんです。
説明足りなくてスミマセン。
[printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); ココと]
[while(scanf("%d", &n)==1 && n > 0)ココの部分です]

529 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:11:45 ]
>>528
これなら大丈夫だろw
ideone.com/lGet1

530 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:27:49 ]

5つの数字が全部0って可能性はないのかな?
もし0が入る可能性があるのならallocateされた領域の初期値が0じゃまずいかも。

531 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:28:55 ]
data[000000]++;

532 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:39:49 ]
>>530
お前は何をいってるんだ



533 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:07:46 ]
>>529
何度もすみません
さっきの説明が分かりにくかったですね;
forの中にscanfとかを入れるのがダメなんです。
1行に付きscanf、forなどは1つです。
printf
int
while
scanf
float
for
のみの使用です。

それ以外は使用禁止です。
return
||
else
if
は使用禁止です。




534 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:09:59 ]
>>528
誰が禁止って言ったの?

535 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:21:51 ]
>>531-532

わはははは、javaやりながらここ見てたから勘違いだ。笑えwwwww


536 名前:デフォルトの名無しさん [2010/06/09(水) 20:33:58 ]
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次の仕様を満たすプログラムを作成せよ
「xy 平面内に任意の電荷量の点電荷を複数個配置する.xy 平面内の原点Oを中心とする4 m 四方(±2 m)の領域内において,位置r(x, y)に形成される電界Erや電位Φrを計
算する.」複数個の点電荷で形成される電界Erや電位Φrを,任意の位置r で計算する際は,重ね合わせの原理を用います
電界ベクトルの計算は, x 成分とy 成分に分けて行います
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:6月11日
[5] その他の制限: 特になし

537 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 20:54:43 ]
学校でやってないところは使うなと
先生に言われました;;

538 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:01:58 ]
エスパー無理

539 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:03:14 ]
>>537
学校と先生を教えてくれるかな?w

540 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:04:30 ]
>>537
誰だお前は

541 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:11:04 ]
学校でやってないこと 使うなと
講師の先生(せんせ)に 言われたよ
――痴楽 綴り方教室

542 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:13:19 ]
≫538
例ですと
前回の課題の
問題文:整数nを入力し、以下のようになサイズnの”Z型の図形”を”*”で表示するプログラムを作成しなさい。
ただし、図形を表示するためのnの値は3以上とし、2以下の値が入力された場合は処理を終了する様にしなさい。
[実行例]
3      <-n入力
n=3
***
 *
***
4 <-n入力
n=4
****
   *
  *
****  
8 <-n入力
n=8
********
         *
        *
       *
     *
   *
  *
********
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt
はこうなりました。



543 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:21:14 ]
エスパーできないって言ってるんだが

544 名前:537 542 mailto:sage [2010/06/09(水) 21:27:23 ]
≫534
すみません!!
番号うつの忘れてました。
ホントすみません;;

545 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:35:42 ]
>>536
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10664.txt
詰めは自分でやってくれ

546 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:00:30 ]
<iostream>とか<studio.h>って何が違うんですか?

547 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 22:03:59 ]
>>546
STanDard InputOutput Headerな
定義されてる関数群がちがう。

548 名前:デフォルトの名無しさん [2010/06/10(木) 00:33:37 ]
もう本当に挫折しそうです。
関数を二つ pen()とqen()として作って
int main()の中に呼びたいんですが
この時pen()の実引数をqen()にしたいんですが
これがうまくいきません、どうしたらいいですか?
レス代行なので長いプログラムは書けません・すいません。
int main(void)
a=pen();
qen(a);
としてもpen()とqen()が別個に呼び出されるだけで一つの作業と
なりません。

549 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 02:48:35 ]
>>548
penの引数をqenの引数にしようとしているようには見えないので、いろいろおっちょこちょいな人なのかな。
関数ポインタをキーワードにいろいろ調べてみてください。

550 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:07:31 ]
pen()の実引数をqen()にするなら
pen(qen);
だろ。

551 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 06:46:15 ]
pen(void (*p)(void)); かなシグネチャは

pen()の中で (*p)(); もしくは p(); として呼び出す

552 名前:デフォルトの名無しさん [2010/06/10(木) 07:52:36 ]
>>550
double a;
qen(a);
pen(qen);
ですか?普通に無理でしたが・・
pen(qen);だけでもまぁ無理でした。
>>551
pen((*p)(qen(a));ってことですか?これも無理でした。



553 名前:デフォルトの名無しさん [2010/06/10(木) 07:55:25 ]
関数ポインタってのあるんですが、馬鹿でした。で
int mainの中で
p= pen;
qen((*p)pen());とかごちゃごちゃ色々なとこ変えて、
付け足して
90回くらい思考錯誤したけど全部だめした......
ちなみにpen()、qen()自体はそれぞれsin関数とcos関数
です。ポインタ関数理解したいのでこのままの構造でい
きたいと思ってます。

554 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 07:59:47 ]
何がしたいのかさっぱり伝わってこない

555 名前:430 mailto:sage [2010/06/10(木) 08:09:29 ]
>>553
#include <stdio.h>
#include <math.h>
double p(double (*f)(double), double a)
{
return sin((*f)(a));
}

double q(double a)
{
return cos(a);
}

int main()
{
double a, b;
a = 3.1415926;
b = p(q, a);
printf("%f\n", b);
return 0;
}
/* end */

556 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:12:37 ]
cos()の返り値をsin()の引数にするってw

557 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:21:43 ]
関数を関数の引数にするってことを理解できてないようにみえる

558 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:23:28 ]
>>554
関数を2つ呼び出して、一つの関数をもうひとつの関数の
引数にしたいんです。ただそれだけです。

559 名前:デフォルトの名無しさん [2010/06/10(木) 08:23:50 ]
>>555
わざわざありがとうございます、doubleじゃなくてfloatでした。
この時も関数ポインタはfですね?
あとretrunっているのですか?どういう役割なのかなぁ....
それとa=3.1415926..とは?
色々ややこしいなぁ、簡単なプログラムなのにこんな複雑だとは....


560 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:25:31 ]
>>558
もしかして
sin(cos(a));
か?この式に何の意味があるのかは不明だが

561 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:27:38 ]
>>559
問題を適切に抜き出す能力が足りないだけ
少なくとも俺は>>558読んでもさっぱりわからん

562 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:28:07 ]
>>560
それでオッケーなら>548でもオッケーだろ



563 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:30:26 ]
こういう自分の勝手な解釈で嵌ってくアホ見ると、
余計なことしないで教科書のサンプルでも打ち込んでろって思うな

564 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:38:27 ]
マゾなんだろ
簡単な事をわざわざ複雑怪奇に書いて苦しみ悶える事に快感を覚えるタイプ

565 名前:デフォルトの名無しさん [2010/06/10(木) 08:39:27 ]
>>561
いやめちゃくちゃ単純なんですが・・
合成関数のプログラムですよ。
sin(cos(a))ですよ。
関数が二つあるんだから、二つの関数呼び出す必要ありますよね。
全然意味不明じゃないですが・・・

566 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:44:22 ]
x=cos(a);
y=sin(x);
変数と代入から勉強だな。

567 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:18 ]
>>565
それはcos(a)の返り値をsin()の実引数にするといい、
cos()をsin()の実引数にするとは言わない。
正しく用語を使えてないから、他人に正しく伝わらない。

568 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:47:37 ]
>>565
まだわからない。
double sincos(double a)
{ return sin(cos(a)); }
ではどうだめなのか。

569 名前:デフォルトの名無しさん [2010/06/10(木) 08:51:53 ]
>>567
すいません。その通りです。返却値をsin()の実引数の実引数にしたいんです。

>>568
あぁ絶対言うかと思いました。
別に合成関数のプログラム作りたいわけじゃなくて、関数の呼び出しという
構造を学びたいだけで。それなら僕も考えてました。複雑なプログラムはそれ
じゃ無理です。



570 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:55:31 ]
お前に複雑なプログラムの何がわかるってんだよw

571 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 08:58:56 ]
っと、>>569はなりすましか

572 名前:553 mailto:sage [2010/06/10(木) 09:00:44 ]
このスレにいる人は全員低脳ばっかりですね。



573 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:01:44 ]
・質問者はなりすましを防ぐため、トリップを使ってください。
名前欄に、「好きな数字#...」に続けて任意の文字列

574 名前:デフォルトの名無しさん [2010/06/10(木) 09:02:36 ]
>>567
以後気をつけますんで、お願いします、どうしたらいいでしょう....
>>570
少し複雑になったら関数が必要だから。別にプログラムの何もわからないが。


575 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:03:29 ]
>>574
日本語でおk

576 名前: ◆mDrzcbRHP2 [2010/06/10(木) 09:04:48 ]
>>573
すいません。

>>569>訂正
実引数の実引数にしたい。→実引数にしたい。

577 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:06:22 ]
>>576
おまい誰だよ

578 名前: [2010/06/10(木) 09:09:20 ]
再び、お願いします(_ )

【質問テンプレ】
[1] 授業単元:C言語 演習問題4-14
[2] 問題文(含コード&リンク):身長と標準体重を表示するプログラムを作成せよ。
               なお、表示する身長の範囲(開始値、終了値、増分)は、整数値として読み込み、
               標準体重は小数点以下2桁だけ表示すること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: main.c Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 22年6月18日17:00まで
[5] その他の制限: do文やif文、for文までです

file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html

一応上記まで作り、実行も出来たのですが
実行時エラーで問題のように上手くいきません。
多分、水色で示したところが間違っているのだと
思うのですが…(p‥`)

手直し(?)という形で宜しくお願いします、

579 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:10:47 ]
>>578

>file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html

ふざけてんの?

580 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:15:44 ]
aikaって名前?

581 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:25:42 ]
>>580
>file:///C:/Users/aika/Desktop/マークアップ言語/c.html
pc12.2ch.net/test/read.cgi/tech/1274827528/424


582 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:29:11 ]
スーパーハカーでもなきゃ、あんたのPCの中身はわからんよw



583 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:33:03 ]
>>581
それはわかってんよ
実行時エラーとか水色で示した部分がこちらは知りたいわけ

584 名前:566 ◆/91kCCQXBo mailto:sage [2010/06/10(木) 10:23:24 ]
>>548 >>552 >>559
#include <stdio.h>
#include <math.h>
/*  double sin( double x ); */
/*  double sin( double x ); */
float r(double (*p)(double), double (*q)(double), float a)
{
  return (*p)((*q)(a));
}

int main()
{
  printf("%f\n", r(sin, cos, 1.0));
  return 0;
}

585 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:29:07 ]
>578 は、AKBオタ。

586 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:34:42 ]
仲間が見つかってよかったねw

587 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 10:53:59 ]
>>616
% Prolog (その一)

バケツソート(_整列されたならび) :-
    abolish('$temp'/2),
    findall(S,(for(1,_,2000),ランダムな文字列の発生(S)),L),
    バケツソート(L,_整列されたならび),!.

バケツソート(L,_整列されたならび) :-
    バケツに吐き出す(L),
    findall(X,(鍵候補値を昇順に発生させる(S),バケツから拾い上げる(S,X)),_整列されたならび).

数値文字候補ならび(['0','1','2','3','4','5','6','7','8','9']).

鍵候補値を昇順に発生させる(S) :-
    数値文字候補ならび(L),
    member(A,L),member(B,L),member(C,L),member(D,L),member(E,L),
    concat_atom([A,B,C,D,E],S).

ランダムな文字列の発生(S) :-
    数値文字候補ならび(L),
    findall(A,(for(1,_,5),M is (random mod 10) + 1,list_nth(M,L,A)),L2),
    concat_atom(L2,S),!.


588 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:02:44 ]
>>587
なるほど、よくわかりました

589 名前: [2010/06/10(木) 11:13:51 ]



すみません…どう書いたらいいのか
よく分からなかったもので。

#include <stdio.h>

int main(void)
{
int i;
int low, high, step;

printf( "何cmから:" ); scanf( "%d", &low );
printf( "何cmまで:" ); scanf( "%d", &high);
printf( "何cmごと:" ); scanf( "%d", &step);

for(i=low; i<=high; i+=step) {
printf( "%dcm %.2fkg\n", low, ((low += step <= high) - 100) * 0.9);
printf( "%dcm\n", low += step);
}

return( 0 );
}

上記のfor{文}のところです。。。


本当にすみませんでした、
また宜しくお願いします。


590 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:23:54 ]
589 の for 内 printf 1発目
副作用関連で鼻から悪魔コード じゃない? (関数引数での , は副作用完了点じゃないよな?)

591 名前:587 mailto:sage [2010/06/10(木) 11:33:47 ]
ごめんなさい。誤爆です。行方不明だと思ったらこんなところに書き込んでいたか。

592 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:42:47 ]
>>590
本当やね

low2 = ((low += step <= high) - 100) * 0.9;
printf( "%dcm %.2fkg\n", low, low2);

とすればうまくいくはず



593 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 11:44:26 ]
あ、だめだ

low2 = ((low + step <= high) - 100) * 0.9;
printf( "%dcm %.2fkg\n", low, low2);
low += step <= high;

か?

594 名前:581 ◆/91kCCQXBo mailto:sage [2010/06/10(木) 11:51:26 ]
#include <stdio.h>

int main(void)
{
  int i;
  int low, high, step;

  printf( "何cmから:" ); scanf( "%d", &low );
  printf( "何cmまで:" ); scanf( "%d", &high);
  printf( "何cmごと:" ); scanf( "%d", &step);

  for(i=low; i<=high; i+=step) {
    printf( "%dcm 標準体重=%.2fkg BMI(22)=%.2fkg\n", i, (i - 100) * 0.9, 22.0*i/100*i/100);
  }
  return 0;
}

595 名前:デフォルトの名無しさん [2010/06/10(木) 18:59:06 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
以下のようにmain関数を定義し、mainの引数を合計するプログラムsumを作成せよ。ただし、引数の数は未定であり、実行時に決定されるものとする。
int main(int argc, char *argv[])
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月15日まで
[5] その他の制限:
端末上で
./sum 3.2 1.9 2.3
と入力すると
7.4000
と出力されるようにする。

596 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:27:07 ]
#include <stdio.h>
int main(int argc, char *argv[])
{
  int i;
  float tmp, sum=0;

  for(i=1; i<argc; i++){
    sscanf(argv[i], "%f", &tmp);
    sum += tmp;
  }
  printf("%g\n", sum);
}

597 名前:デフォルトの名無しさん [2010/06/10(木) 19:56:13 ]
#include <stdio.h>
int main(int argc, char *argv[])
{
printf(argv[1])
printf(argv[2])
}
のようにするとき,コマンドからargv[]にデータを入れないとエラーがでます。
配列argv[]の初期値はどのように設定すればよいのでしょうか?

598 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:08:21 ]
if(argc<=1) exit(1);

599 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:00:42 ]
2つの自然数aとbの最大公約数gcd(a, b)を求め、それを出力するプログラムを作成せよ。
なお、m = a % b としたとき、gcd(a, b) は m≠0 の場合 gcd(b, m) に等しく、 m=0 の場合 b に等しい。


2つの自然数aとbを入力させ、a 人から b 人を選ぶ組み合わせ comb(a, b)を求め、それを出力するプログラムを作成せよ。
なお、comb(a, b) = comb( a-1, b) + comb( a-1, b-1) であり、 b==0 もしくは b==a のとき comb(a, b) = 1 である。


今週は2つありますが。。。よろしくお願いしますorz

600 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 21:16:32 ]
>>597
argc == 1 の時はargvを調べないようにする

601 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 22:50:26 ]
>>599

なお~~。の部分はプログラムのテストに使うくらいで、実際の問題とはなんの関連もないわな。

602 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:41:09 ]
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10665.txt
[3] 環境
 [3.1] OS: (特になし)
 [3.2] gcc
 [3.3] 言語: (C)
[4] 期限: ([2010年6月14日00:00まで])

よろしくお願いします。



603 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:42:17 ]
すいません。書き忘れましたが、・・・・の部分がわからないので教えていただけないでしょうか?

604 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 23:46:28 ]
>>501,523
ボロノイ図の問題かな?
AREA_SIZEを必要に応じて(10000などに)書き換えて下さい。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10666.cpp

605 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 00:22:35 ]
>>599
2番目だけ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10667.c

606 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:44:03 ]
統計学で言うモードに相当するプログラムを書いてます
まだ途中ですが次のように書いていました
ですが書いている途中にエラーがででコンパイルできません
Visual C++ でやってます

エラーの理由とその解決方法を教えてください
#include<stdio.h>

int main(void)
{
int score[101], score, number;

printf("input of number is ");
scanf("%d", &number);

for (int j = 0; j < 101; j++) {
score[j] = 0;
}
for (int i = 0; i < number; i++) {
scanf("%d", &score);
if (0 <= score && score <= 100) {
score[score]++;
}else {
break;
}
}
return 0;
}

607 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:52:35 ]
score って変数を二つ宣言してるからじゃ?

608 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:52:39 ]
エラーメッセージ書いておいてくれないと回答面倒だよ

609 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 12:56:24 ]
scoreはscore[0]を表すってことを忘れてました
すみません

610 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:28:28 ]
(゚Д゚ )ハァ?

611 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:30:46 ]
違うの?
配列名は配列の先頭要素のアドレスを表すってあるけど
ポインタを詳しく理解してないからアドレスとはなんぞやって聞かれてもクエスチョンマークだけど

612 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:38:11 ]
「配列名は配列の先頭要素のアドレスを表す」を
「配列名は配列の先頭要素を表す」こう解釈したんだろうけど
知らない言葉を無視して前後をくっつけて理解した気になってたら
しょっちゅうトラブル起こるよ



613 名前: [2010/06/11(金) 13:44:44 ]
>>594

そうですね!!ありがとうございます!
理解出来ましたm(_ _)m

本当にありがとうございます!!!



614 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 13:49:40 ]
BASIC上がりか

615 名前:デフォルトの名無しさん [2010/06/11(金) 17:02:14 ]
[1] 授業単元: scanf
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10668.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 6月12日 午後9:00 まで
[5] その他の制限:for文まで習ってます。問1、2両方お願いします。


よろしくお願いします。



616 名前:501 mailto:sage [2010/06/11(金) 17:13:24 ]
>>604,501,523
どうもありがとうございました。参考にさせて頂きます。
ボロノイ図でググってみましたが関連が深そうです。
課題は「データベース構造設計、更新効率性と正規性のバランス」
がテーマの講座で出たものでした。

617 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:38:05 ]
>>615
#include <stdio.h>
問一
int main(void)
{
int i,num[3]={0},t,j,k;
for(i=0;i<3;i++)
scanf("%d", num+i);

j=num[0]/num[2];
k=num[1]/num[2];
for(i=j;i<=k;i++){
t=num[2]*i;
if(num[0]<=t && t<=num[1] )
printf("%d*%d=%d\n",num[2],i,num[2]*i);
}
}


618 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:46:46 ]
>>615
codepad.org/lFW9VvVR

619 名前:デフォルトの名無しさん mailto:sage [2010/06/11(金) 17:58:02 ]
void q1() {
int a, b, c, t, i;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
t = a % c;
if (t != 0)
a += c - t;
for (i = a; i <= b; i += c) {
printf("%d, ", i);
}
}
>>617
初期値をループで求めるのはどうなのと思わなくもない

620 名前:619 mailto:sage [2010/06/11(金) 18:00:00 ]
ごめん >>618 に対してだった






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<167KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef