C/C++の宿題片付けます 128代目at TECH
C/C++の宿題片付けます 128代目 - 暇つぶし2ch397:デフォルトの名無しさん
09/07/02 02:48:25
>>396
その辺は>>387を参考に

398:デフォルトの名無しさん
09/07/02 02:49:51
>>391
そのサイトは良く見るけど、はっきり言って自分の作るプログラムじゃないとあまり解らないんだ。
関数とかも学校の授業で習ったのしかしらなくてscanf()使ったらとあるサイトでボコボコに言われたし。。

解ってないところが解らないっていうのが苦痛

399:386
09/07/02 02:56:34
>>395
UTF-8で。

400:デフォルトの名無しさん
09/07/02 03:02:09
>>397
出来ました、forに巻き込まれていて1/2しすぎたようです。。。
抜け出したらバッチリ。


unsigned int i=0,t=0;
snd->samplingrate = snd->samplingrate/2;

for(i=0; i<snd->datanum; i++){
if(i%2 == 0){
snd->sounddata[t] = snd->sounddata[i];
t++;
}
}
snd->datanum = snd->datanum/2;

という感じで出来ました、が、LPFは通さなくても良いのでしょうか?
というか、LPFとはなんですか?なんとなく言っていることは解るんですが
プログラム的にはさっぱりわかりません。。

401:デフォルトの名無しさん
09/07/02 03:09:13
>>400
この場合はダウンサンプリングすることによって本来あったはずの波形データが
なくなるのでその補完がフィルタなので、雑音とかができてもいいならフィルター無しでもいいんじゃないかな?

>>391
>Down sampling (48kHz -> 16kHz) with 7.7kHz low pass filter
ってなってるのでcoefは7.7kzのフィルター用の数値だと思う。
固定なので使いにくそうだけど

>>393の方は計算でこの辺の数字を求めてるようなので
使えそう



402:358
09/07/02 03:13:08
>>386
やってみたんですが石が表示されませんでした

403:デフォルトの名無しさん
09/07/02 03:18:54
>>401
私の作ったプログラムはヘッダを書き換えて、間引いたという手順ですが、
本来はLPFを使用してから行うものですよね?

補完とはどこを補完するのですか?
是非ともLPFもプログラムとして理解して作りたいのですが

404:デフォルトの名無しさん
09/07/02 03:25:54
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語: C
[4] 期限:今日12時
[5] その他の制限:ポインタとリストを最近習った

どうかお願いします

405:386
09/07/02 03:37:02
>>402
じゃぁ解答の部分だけ扱いたい文字コードのファイルにコピペしていただく方向で。

406:デフォルトの名無しさん
09/07/02 03:39:04
>>403
LPFの必要性はこの辺
URLリンク(www.ne.jp)

ここがもっと丁寧
URLリンク(blog.jyoken.net)

407:デフォルトの名無しさん
09/07/02 04:00:30
>>406
あまり理解できませんでしたが、プログラム的には

またデータ部分をいじるわけですよね??LPFを通した後先ほどのプログラムで間引くと
きれいにダウンサンプリングできました。と、いえるわけですか??

408:デフォルトの名無しさん
09/07/02 04:09:24
>>407
間引いたあとじゃないとノイズ成分が出ないと思うのでそのあとフィルターを通す感じ?
44.1KHzを22.05kHzにした場合はさらに半分の11.025khzのなんとかってなってたよね・・・・

409:デフォルトの名無しさん
09/07/02 04:26:10
>>408
アンチエイリアシングフィルターは間引く前に通さないと意味無いよ。


410:デフォルトの名無しさん
09/07/02 04:30:07
>>409
ああ、そっかすまそ
先に高い周波数成分をなくしてか・・・
寝ぼけてるな・・・

411:デフォルトの名無しさん
09/07/02 04:35:32
>>408~410
ですよね。

うーん、正直、さっぱりわからん。
LPFとはさ、高周波を取るわけじゃないですか?
周波数ってなんでブチって切れないの?
何を境にして切ってるの?

412:デフォルトの名無しさん
09/07/02 04:38:09
>>358 >>402
書いてみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)

413:デフォルトの名無しさん
09/07/02 04:48:57
>>411
まあアナログ値をサンプリングしたことあるとよくわかるんですが
入力波形の最高周波数の倍は無いときっちり拾えないですよ。

まあその辺の説明は>>406の下の方の

>折り返し周波数
>
>じゃあ、具体的にどういうものがエイリアスとなるのか、というのが問題になるわけですが、
>サンプリングしたときにエイリアスが発生しない最高の周波数は、サンプリング周波数の1/2です。
>これを折り返し周波数といいます。上の例ではサンプリング周波数が2Hzだから、限界は1Hzという
>ことになります。

つまり44.1kHzのサンプリングレートというのは>>406にもこうあります
>一般的に用いられている44100Hz(CDのサンプリング周波数)では、折り返し周波数は22050Hzで、
>これは人間の耳に聞こえる最高の周波数20000Hzぐらいに合わせてあります。これは、けっこう
>ギリギリの周波数です。

つまりダウンサンプリングする場合はダウンサンプリング後のサンプリング周波数の半分を超える
周波数成分があるとノイズと化しますのでフィルターを通してなくしちゃいます。


414:デフォルトの名無しさん
09/07/02 04:52:58
スペアナ(ロジアナ?)とかあの手の機械でも高周波を扱うのが高いのは扱う
周波数の倍以上のサンプリング能力が無いと波形チェックができないからでしたっけ?
安い機械はあんまり高い周波数は扱えません。(すげー予断

415:デフォルトの名無しさん
09/07/02 05:01:11
>>404
URLリンク(kansai2channeler.hp.infoseek.co.jp)
windowsのコンソールアプリとしてテスト済み
たぶんOKだと思います。


416:デフォルトの名無しさん
09/07/02 05:19:06
>>413
>>414
なんというか、FFTを用いて、周波数解析を用いるじゃないですか。
それで、出た値の高周波を0にして、逆FFTを用いることを時間軸ごとに
区切ってしていけば高周波をブチっと切れないのかな、と。

考え方がそもそも変ですか??

417:デフォルトの名無しさん
09/07/02 05:31:59
>>416
その方法でいいのかもしれませんね。
URLリンク(homepage2.nifty.com)


418:デフォルトの名無しさん
09/07/02 05:36:42
>>416
プログラム的には高周波をゼロにする周波数特性を逆FFTしたものと
入力信号との畳み込み演算を行えばいい

419:デフォルトの名無しさん
09/07/02 05:43:36
>>418
いままでのを踏まえてロジック的には>>393
URLリンク(www.geocities.jp)
ですかね


420:デフォルトの名無しさん
09/07/02 06:07:22
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):下記
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:Visual stdio2008
 [3.3] 言語: C
[4] 期限: 2009年7月2日8時40分まで
[5] その他の制限: どういう風に動いているか説明しなければならない&できるだけ簡単に
構造体 score 型の変数 seito1 と seito2 が宣言されている. seito1 の内容をそのまま seito2 へ代入したい. 次のプログラムの ① の部分を埋めよ.
int main( void )
{
struct score seito1, seito2;
strcpy(seito1.name, "yamada");
seito1.english = 50;
seito1.mathematics = 70;

printf("名前:%s\n英語:%d\n数学:%d\n ", seito2.name, seito2.english, seito2.mathematics);
return 0;
}

421:デフォルトの名無しさん
09/07/02 06:12:04
seito2 = seito1;

422:デフォルトの名無しさん
09/07/02 09:39:33
ダウンサンプリング:方法は1つに定まらないし、どんな音源に対しても通用する方法も
無いと思われ。(人の耳と脳がどう感じるかが最終的に問題になる。心理が絡んでくる
問題なんで)

423:デフォルトの名無しさん
09/07/02 11:15:32
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
  
 2つの正整数 m とn とを引数として受け取り、m と n の最大公約数を戻
り値として返す関数gcd()を作成する。この関数を用いることにより、キー
ボードから入力した3つの正整数 a, b, c の最大公約数を求めるプログラム
を書け。

注意: 最大公約数を計算するには次のような「ユークリッドの互除法」を
用いるとよい。

「ユークリッドの互除法」
 2つの正の整数 m、n(m>n)の最大公約数を求めるには、m を n で割っ
て余り r1 を求め、次に n を r1 で割って余り r2 を求め、・・・、この
ように大きい方を小さい方で割って余りを求め、最後に割り切れたときの除
数が求める最大公約数である。

例)440/380=1余り60 
  380/60=6余り20  
  60/20=3 余りなし
 したがって、440と380の最大公約数は20 


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: c++ builder
 [3.3] 言語: C
[4] 期限: 20009年m7月3日12:00まで
[5] その他の制限:できるだけシンプルにお願いします。よろしくお願いします。


424:デフォルトの名無しさん
09/07/02 11:28:53
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2]gcc
 [3.3] 言語: C
[4] 期限:7/3
[5]URLリンク(kansai2channeler.hp.infoseek.co.jp)のファイル名はseiseki.txtでお願いします
ポインタは使用不可です



425:デフォルトの名無しさん
09/07/02 11:48:24
>>423
結構、シンプルになったと思う。
URLリンク(kansai2channeler.hp.infoseek.co.jp)


426:デフォルトの名無しさん
09/07/02 11:54:07
>>424
ポインタ使わないとか、可能なのか?

427:425
09/07/02 11:57:38
m=m%n;
i=m; m=n; n=i; って、

i=m%n; m=n; n=i; で良いな。無駄な代入してるや。

428:デフォルトの名無しさん
09/07/02 11:59:55
>>426
ポインタの価値を理解するためにわざわざ回りくどいプログラムを書かせるのが目的だそうです

429:デフォルトの名無しさん
09/07/02 12:00:11
>>423
まぁまぁコンパクトにしてみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

430:デフォルトの名無しさん
09/07/02 12:01:34
>>428
ポインタ使わないとファイルが読み込めないぞ

431:デフォルトの名無しさん
09/07/02 12:02:53
>>429
大小関係チェックしてねぇw

432: ◆/91kCCQXBo
09/07/02 12:28:14
>>296 ユーザーインターフェースのメニューは、自分で追加できると思うのでやってない。
ファイルに登録された成績コードを読み、動的に確保した生徒構造体の領域にデータを編集
URLリンク(jbbs.livedoor.jp)

433:デフォルトの名無しさん
09/07/02 13:21:05
>>424
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ただし拡張性は皆無。

434:デフォルトの名無しさん
09/07/02 13:38:30
[1] 授業単元:C言語
[2] 問題文:単純なオセロゲーム
[3] 環境:
 [3.1] OS: Unix
 [3.2] gccでコンパイル
 [3.3] (C/C++/どちらでも可 のいずれか)
[4] 期限: 来週・・7月9日 
[5] その他の制限:特になしです
勝敗と成績がわかるものがよいです。
よろしくお願いします。

435:デフォルトの名無しさん
09/07/02 13:46:40
>>424
433に先こされてしまったが。負の数は知らない
ポインタなし URLリンク(kansai2channeler.hp.infoseek.co.jp)

436:デフォルトの名無しさん
09/07/02 14:06:01
こういうコード書くからCプログラマが落とさなくても良い信用を落とすのではないかと杞憂
もう少しエスパーしてやったらいいんじゃないかと...

437:デフォルトの名無しさん
09/07/02 14:41:33
杞憂ならいいじゃん

438:デフォルトの名無しさん
09/07/02 14:43:47
>>436
そもそもこんなところに○投げにくるやつらの評価なんてどうでも・・・

439:デフォルトの名無しさん
09/07/02 14:58:03
>>424
#include <stdio.h>
int seiseki[]={70 56 66 45 88 66 85 68 55 73 55 65 53 67 55 85 72 76 58 65,
92 70 45 73 55 56 57 52 62 82 72 62 33 85 95 46 95 48 72 34,
83 42 88 92 56 68 65 91 82 66};//コンマ省略
...


440:デフォルトの名無しさん
09/07/02 14:58:31
>>333,342
範囲外なら再入力させるところは間違ってるかも
URLリンク(kansai2channeler.hp.infoseek.co.jp)

441:デフォルトの名無しさん
09/07/02 15:19:05
ポインタ使用不可なのに配列を使っていいんだろうか

442:デフォルトの名無しさん
09/07/02 15:22:30
「配列使用時には(まだ習ってもない)ポインタを使用してはいけない」ぢゃないのか?

443:デフォルトの名無しさん
09/07/02 15:24:51
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
〔3〕環境
 [3.1] OS: Windows
 [3.3] 言語: C言語
〔4〕期限:7月3日 12時
〔5〕ポインタ、配列、リスト構造まで習いました
   よろしくお願いします


444:デフォルトの名無しさん
09/07/02 15:25:31
>>441
配列のその辺の扱いは多少大目に見るべきじゃないだろうか。
ポインタに成り下がれるとかいうんだっけ?
時々その辺のネタで荒れるスレ知ってるが

445:デフォルトの名無しさん
09/07/02 15:34:17
あからさまに
 int *a とか
*(a + 1) とか
malloc/callocしてアドレスを渡して回るとか
こういうのやらなければいいんじゃね。

446:デフォルトの名無しさん
09/07/02 15:35:45
ポインタ使用不可ってのは「*」使用不可ってことなのか?
a[i]だろうが*(a + i)だろうがポインタを使ってることに変わりないんだが

447:デフォルトの名無しさん
09/07/02 15:37:14
やっぱ荒れだすなww


448:デフォルトの名無しさん
09/07/02 15:43:45
>>446
確かにそうだけど、>>424の問いが言いたいのは
定義後に保持するアドレスを自由に変更できるポインタ変数の便利さを知れってことでしょ。
そう考えれば配列は使っていいことになる。

出題者が本当にそういう意図で出したのかどうかは知らん。

449:425
09/07/02 15:54:16
>>434
URLリンク(kansai2channeler.hp.infoseek.co.jp)
かなり適当だけど「単純なオセロ」ぐらいにはなってるかと。

450:デフォルトの名無しさん
09/07/02 16:14:04
>>443
/* 課題1 */
#include <stdio.h>
#include <math.h>
int main() {
struct Vertex { double x, y; } verA, verB, verC, verD;
printf("verA (x, y): "); scanf("%lf %lf", &verA.x, &verA.y);
printf("verB (x, y): "); scanf("%lf %lf", &verB.x, &verB.y);
printf("verC (x, y): "); scanf("%lf %lf", &verC.x, &verC.y);
printf("verD (x, y): "); scanf("%lf %lf", &verD.x, &verD.y);
if (verA.y != verB.y || verC.y != verD.y) {
printf("error\n");
} else {
printf("area: %g\n", (fabs(verA.x-verB.x)+fabs(verC.x-verD.x))*fabs(verA.y-verC.y)/2);
}
return 0;
}

451:デフォルトの名無しさん
09/07/02 16:14:06
[1] 授業単元:プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ:gcc
 [3.3] 言語:C
[4] 期限: 7/6
 よろしくお願いします。

452:デフォルトの名無しさん
09/07/02 16:17:23
>>443 無理やり1レスでスマソ
/* 課題2 */
#include <stdio.h>
#include <stdlib.h>
struct Node { int value; struct Node *next; };
struct Node *init_list() {
struct Node *root = (struct Node *)malloc(sizeof(struct Node));
root->value = 0; root->next = NULL; return root;
}
void add_node(struct Node *root, int value) {
struct Node *p = root->next, *q = root;
while (p) { q = p; p = p->next; }
p = (struct Node *)malloc(sizeof(struct Node));
p->value = value; p->next = NULL; q->next = p;
}
void make_list(struct Node *root) {
int value;
printf("Insert:\n");
while (scanf("%d", &value) != EOF) { add_node(root, value); }
}
void show_list(struct Node *root) {
struct Node *p = root->next;
printf("Show:\n");
while (p) { printf("%d\n", p->value); p = p->next; }
}
void free_list(struct Node *root) {
if (root) { free_list(root->next); free(root); }
}
int main() {
struct Node *root = init_list();
make_list(root); show_list(root); free_list(root); return 0;
}

453:デフォルトの名無しさん
09/07/02 16:44:35
>>449
ありがとうございます。
動作確認しました、問題なかったです。
たすかりました^v^

454:デフォルトの名無しさん
09/07/02 17:41:54
[1] 授業単元: 情報プログラミングC
[2] 問題文(含コード&リンク): 7リットルと5リットルのバケツを使って、どちらか一方のバケツに4リットルの水を入れる方法を探す。
[3] 環境
 [3.1] OS: 窓VISTA
 [3.2] コンパイラ名とバージョン: visual studio 2008
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 実行できる操作
(a)水道から新たに水を入れてバケツを満杯にする(b)バケツの水を全部捨てる
(c)一方のバケツの水を他方のバケツが満杯になるまで注ぐ(d)一方のバケツの全部の水を他方のバケツに注ぐ
初期状態は両方0リットル。幅優先探索と待ち行列を使用。ただし、ポインタと構造体は使わない。

455:デフォルトの名無しさん
09/07/02 17:52:28
>>450>>452
非常に助かります
ありがとうございました

456:デフォルトの名無しさん
09/07/02 19:10:32
>>454
URLリンク(kansai2channeler.hp.infoseek.co.jp)
待ち行列を使用ってのがよくわからんかった。
current_rankは削除しそこねなんで消して(それで再アップするのもなんなんで)。

457: ◆/91kCCQXBo
09/07/02 19:54:17
>>454 3を5に、4を7に置き換えればOK。
データの受け渡しにポインタ使ってるけど。乱数使ってるから待ち行列に近いのかも。
add cup 7.
transfer from cup7 to cup5.
cup7=2, cup5=5
empty cup 5.
transfer from cup7 to cup5.
cup7=0, cup5=2
add cup 7.
transfer from cup7 to cup5.
cup7=4, cup5=5

>4リットルの容器と、3リットルの容器があり、これらを使って4リットルの容器に2リットルをはかる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

458:デフォルトの名無しさん
09/07/02 20:11:16
> 乱数使ってるから待ち行列に近いのかも。
意味が分からん

459:454
09/07/02 20:14:36
>>456>>457
どうもありがとうございました
助かります

460:デフォルトの名無しさん
09/07/02 20:32:20
>>457
乱数使う意味がわからんけど、猿ソートっぽいことやってんの?

461:デフォルトの名無しさん
09/07/02 20:43:13
ヒトだ。ソートは使っていない。
猿解説すると、次の4パターンの動作しかないので、3回の中でその順番をランダムに代えている。
・7リットルのカップを満タンにする(次は、7リットルのカップの中身を5リットルのカップに移す)
・5リットルのカップを満タンにする(略)
・7リットルのカップを空にする(略)
・5リットルのカップを空にする(略)

462:デフォルトの名無しさん
09/07/02 21:03:57
>>446
ポインタを使うなっていうのは、
ポインタ変数を使うなってことでしょ。

aを配列で宣言していれば、
aは(ポインタに変換され得る)配列型の変数であって、
ポインタ型の変数じゃない。

463:デフォルトの名無しさん
09/07/02 21:21:24
[1] 授業単元:Cプログラミング初級演習
[2] 問題文(含コード&リンク):
10個のdouble型の数値を読み込み、最小値の1個を除いた9個の数値の和を出力せよ。
例:1 2 3 4 5 6 7 8 9 10
  54.000000
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語:C
[4] 期限: 7/6まで

よろしくお願いいたします。


464:デフォルトの名無しさん
09/07/02 21:29:15
>>463

#include <stdio.h>
#include <float.h>

int main(void){
double n;
double low = DBL_MAX;
double ans = 0;
int i;

for(i=0; i<10; ++i){
scanf("%lf", &n);
ans += n;
if(n < low) low = n;
}
ans -= low;
printf("%f\n", ans);
return 0;
}


465:デフォルトの名無しさん
09/07/02 21:32:12
>>435
>>435
ありがとうございました

466:デフォルトの名無しさん
09/07/02 21:45:37
>>464ありがとうございました

467:デフォルトの名無しさん
09/07/02 21:56:51
>>461
あ、猿とはちょっと違ったのか。
てっきりランダムでごりごりやって気が済んだところでの最適解を使うとかそんなんかと。

468:デフォルトの名無しさん
09/07/02 22:09:43
[1] 授業単元:プログラミング上級
[2] 問題文(含コード&リンク):
C言語を使ってどんな方法でもいいので
コナミコマンド、↑↑↓↓←→←→BAの順番に
ボタンを押されたか判断するプログラムを作成すること。
ヒント1:指定のキーが押される度に、フラグを立てて
最後に「A」が押されたら、処理を判断する
ヒント2:違う順序、または途中で違うキーが押されたらフラグをリセットする
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2009年7月6日10:00まで
[5] その他の制限:DXライブラリを使うこと

469:デフォルトの名無しさん
09/07/02 22:21:30
初級上~中級下ってとこじゃん

470:デフォルトの名無しさん
09/07/02 22:27:26
ヒントがもはや解答に見える。

471:デフォルトの名無しさん
09/07/02 22:29:00
慣れてないと結構面倒だな
ボタンの取得とか

472:デフォルトの名無しさん
09/07/02 23:29:21
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:7/10
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします

473:デフォルトの名無しさん
09/07/02 23:36:22
>>472
結果が変わってないんだが?

474:デフォルトの名無しさん
09/07/02 23:42:20
>>473
すみません結果は

1 5 11 13 19
2 6 12 14 21
2 7 15 17 23
4 8 16 20 24
9 10 18 22 25

です

475:デフォルトの名無しさん
09/07/02 23:59:50
>>472 >>474

URLリンク(kansai2channeler.hp.infoseek.co.jp)

476:デフォルトの名無しさん
09/07/03 00:21:16
>>468ってけっこう簡単に見えて難しくないか?
てかコナミの入社試験でこんなのが昔あったな

477:471
09/07/03 00:24:00
慣れてないと難しいよ
脳内にロジックはあるけど昨日の夜にパワー使ったのでいまいち乗らん
せめて中身は無くていいのDXライブラリの読み込んでウインドウを表示するのだけでもあれば・・

478:デフォルトの名無しさん
09/07/03 00:25:58
方向キーの入力を取得するとか言う時点で
WindowsAPIかもっと上位のライブラリ使わないといけないしな

先生も
88224646ba
くらいで勘弁して上げたらいいのに

479:471
09/07/03 00:27:30
>>478
DXライブラリはゲーム用なのでその辺は簡単

480:デフォルトの名無しさん
09/07/03 00:35:25
>>468
環境合ってる?

481:デフォルトの名無しさん
09/07/03 00:42:12
>>468をやるには最低限これはwin依存なんだとおもうけどgccで処理できたっけ?

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
}

482:デフォルトの名無しさん
09/07/03 00:42:15
DXライブラリの仕様

--------------------------------------------------------------------------------

必須環境及びソフト

 Windows98以降のOS
 VisualC++ 6.0以降 又は BorlandC++ Compiler 5.5

483:デフォルトの名無しさん
09/07/03 00:44:22
まあVS2008のVC++2008でやってるからそれもってくればいいよ
あとこのライブラリは龍神録が使ってるからそこを見れば基本的なことはわかるよ

484:デフォルトの名無しさん
09/07/03 00:49:58
>>481
gccでもできるよ
コンパイル・リンクするときにどんなオプションつければいいかは忘れたけど

485:468
09/07/03 00:56:27
すみません。コンパイラはVisualStudio2008でした。
よろしくお願いします。

486:デフォルトの名無しさん
09/07/03 01:10:05
>>468
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    int cmd[] = { KEY_INPUT_UP, KEY_INPUT_UP, KEY_INPUT_DOWN, KEY_INPUT_DOWN,
        KEY_INPUT_LEFT, KEY_INPUT_RIGHT, KEY_INPUT_LEFT, KEY_INPUT_RIGHT,
        KEY_INPUT_B, KEY_INPUT_A };
    int key, cnt, num;

    ChangeWindowMode(TRUE);
    DxLib_Init();

    DrawString(5, 5, "Waiting for your namco command...", GetColor(0xFF, 0xFF, 0xFF));

    cnt = 0;
    num = sizeof(cmd) / sizeof(int);
    while(key = WaitKey()){
        if(cmd[cnt] == key) cnt++;
        else cnt = 0;
        if(cnt >= num) break;
    }
    DrawString(5, 30, "Your namco command was accepted! Press any key to exit.", GetColor(0xFF, 0xFF, 0xFF));
    WaitKey();

    DxLib_End();

    return 0;
}

487:デフォルトの名無しさん
09/07/03 01:11:34
あ、頭にナムコがあってnamcoなんて入れてしまった。
namco command → konami commandで。

恥ずかしい。

488:デフォルトの名無しさん
09/07/03 01:21:12
宿題じゃないけど聞きたいのですが
テキストファイルの中身を出力したいと思っています。
そこで次のようなプログラムを作ったのですが
FILE *fp;
fp=fopen("hoge.txt","r");
for(i=0; i<10; i++){
printf("%c\n",fp);
*fp++;
}
fclose(fp);
文字化け?みたいな状態になってしまいました。
そのまま出力したい場合にはどのようにすればいいでしょうか?

489:デフォルトの名無しさん
09/07/03 01:23:22
fpじゃ読めないよ
読み込み関数あるからfopen関連で調べてみ

490:デフォルトの名無しさん
09/07/03 01:24:39
>>488
そのポインタが何を指していて、どのようにして内容を読み出し変換されるかをすっ飛ばしてるなぁ。

491:デフォルトの名無しさん
09/07/03 01:49:10
>>488
こんなかんじか

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

int main(void){
FILE *fp;
fp = fopen("hoge.txt", "r");
if(fp == NULL) exit(-1);
for(;;){
int c = getc(fp);
if(c == EOF) break;
putc(c, stdout);
}
return 0;
}


492:デフォルトの名無しさん
09/07/03 01:50:02
>>491
あ、fcloseしてなかった

493:デフォルトの名無しさん
09/07/03 02:02:07
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):URLリンク(www-it.sci.waseda.ac.jp)
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限: 09年07月16日
[5] その他の制限: ど素人です。本当にごめんなさい。よろしくお願いします。


494:デフォルトの名無しさん
09/07/03 02:04:17
↑補足です。
main関数を使えとの指示がありました。

495:デフォルトの名無しさん
09/07/03 02:13:07
だれ・・・・か・・・・

[1] 授業単元:C++プログラミング
[2] 問題文 URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語: C++
[4] 期限: 09年7月2日
[5] その他の制限:

496:デフォルトの名無しさん
09/07/03 02:22:42
>>495
昨日かおととい同じものがあったよw

497:デフォルトの名無しさん
09/07/03 02:25:03
抽出してみたら>>342だな

498:デフォルトの名無しさん
09/07/03 02:27:16
完成してなかったのかw

499:デフォルトの名無しさん
09/07/03 02:38:30
完成してないです・・・何度も同じ書き込みするのはよくないとわかっていつつも・・・この宿題を出さないと

500:デフォルトの名無しさん
09/07/03 02:43:44
>>495
って>>440は確認したか?

501:デフォルトの名無しさん
09/07/03 02:50:09
>>440さんの見逃してました・・・・。
本当に申し訳ございません!!!!
>>500さんと>>440さんありがとうございます!

502:デフォルトの名無しさん
09/07/03 03:22:20
>>471
DXの関数はある程度知ったが、アルゴリズムを考える力が圧倒的に足りない感じなのか
ヒント通りにやろうとするからめんどくさいのであって、各ゲーのコマンド判定ロジックと同じようにすれば楽かと思うよ

503:デフォルトの名無しさん
09/07/03 03:22:27
>>489
すぐに返事をいただけまして助かりました。ありがとうございます。
>>491
ご丁寧にプログラムまでいただきありがとうございます。
fopen関係を調べまして何とか自力で解決に至る事ができました。
私はfscanfを用いましたので、1文字ずつのプログラムは助かります。
本当にありがとうございました。

504:451
09/07/03 07:43:26
問題のサンプルプログラムが間違ってました。申し訳ないですが再度投稿します。
[1] 授業単元:プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:7/6
よろしくお願いします。

505:未解決課題
09/07/03 12:23:34
>>493(waseda/kadai2) 2問。N×N行列とN次の列ベクトルをかける関数を作り、v_0を とし、行列Pを としたときにあらかじめ決めたnに対してベクトルv_1,v_2,...,v_nのすべての要素を に従って計算し表示せよ。 7月16日
>>451>>504 最短路問題を解くアルゴリズムとしてベルマンフォード法がある。 7月6日
>>292 SimMipsにデータキャッシュのヒット率を測定する仕組みを追加し、ヒット率を測定せよ。 7月4日 15:00
>>286(CODE) ルンゲクッタ法 テンプレ無し(不明)
>>273 シンプレックス法のプログラム 7月1日
>>234 >>251(9608)(2) 正規乱数の発生 (ボックスミュラー法)。平均値を求める関数 標準偏差を求める関数 ヒストグラムを作成 7月5日12:00
>>213 アルゴリズムの異なる2つのプログラムを作成し、処理時間の違いを比較せよ。例:マージソートとバブルソート 7月7日
>>192 >>195(10_3)マージソート。 6月30日20:00
>>184 2問。Ⅰ,スタックによる処理順序を確認するⅡ,キューによる処理順序を確認する 6月29日
>>157 f(x)=xe^x-3を、ニュートン法と二分法で解く 6月29日15時
>>134 2問(往復)。整数と4つの演算子(+, -, *, /)から成る計算木から計算式の文字列を作成する関数 6月30日
>>126 クイックソートで昇順に並べ替える。二分木の中間走査によって昇順に並び変える。 6月28日

506:デフォルトの名無しさん
09/07/03 12:51:52
>>325
コンパイルできなくて、エラーがでました。
ld: 0711-317 ERROR: Undefined symbol: .cos
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

どうしたらいいかわからないんで教えてください

507:デフォルトの名無しさん
09/07/03 13:13:41
>>506
math.hが上手く読み込めてないからだとは思うけど。
#include <math.h> 、消してない?

ダメそうなら、コンパイル環境を教えてもらえれば。

508:デフォルトの名無しさん
09/07/03 13:18:19
>>506
コンパイルの引数に、
-lm
を追加

509:デフォルトの名無しさん
09/07/03 13:27:00
>>506
#include <stdio.h>
#include <math.h>
>>508 それはコンパイルエラーではないはず。

510:デフォルトの名無しさん
09/07/03 13:39:39
>>509
エラーメッセージを出しているのは、ld つまりリンカ。
外部参照のシンボル cos が未定義、見つからないよと言っている。
だから、そのありかを教えてやれば良い。

511:デフォルトの名無しさん
09/07/03 14:55:39
[1] 授業単元:情報基礎B
[2] 問題文(含コード&リンク):試験の点数10人分をキーボードから入力し、以下の内容を出力するプログラムを作成せよ。
平均点、標準偏差、得点の高い順の点数リスト(出来れば、バブルソート以外のアルゴリズムでお願いします。)
[3] 環境
 [3.1] OS: Turbo Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7月7日まで
[5] その他の制限:特にありません。よろしくお願いします。

512:デフォルトの名無しさん
09/07/03 15:35:32
>>493
最後の方の問題がよくわからなかったので、途中までだけれど
URLリンク(codepad.org)

『ベクトルv_1,v_2,...,v_nのすべての要素を計算し表示せよ。』まで実装済み
80行あたりまでが汎用の行列演算処理で、それ以降が今回の問題を解いている

513:512
09/07/03 15:39:58
「MltMatrix」って略し方に絶望した そこは「MulMatrix」だろぉぉぉorz
あと、SetMatrixRow関数の呼び出しでコンパイルエラーがでるようならコメントアウトを外してみて
SetMatrixRow(mat, 0, (NUM[]){3}/*&_v0[0]*/); → SetMatrixRow(mat, 0, &_v0[0]);

514:デフォルトの名無しさん
09/07/03 15:45:50
ピタゴラス数が生成されるみたいだね

515:デフォルトの名無しさん
09/07/03 16:07:54
>>511
URLリンク(kansai2channeler.hp.infoseek.co.jp)

516:デフォルトの名無しさん
09/07/03 16:22:29
>>514
この方法(ピタゴラス数を行列で計算する)は面白いな。初めてみた。
ぐぐったら「ピタゴラス行列」とか呼ばれてて、算数の愛好家には有名みたいだ。

517:デフォルトの名無しさん
09/07/03 16:32:04
>>512さん
本当にありがとうございます。とても助かります。
ちょっとコンパイルしてみます。

518:511
09/07/03 16:32:13
>>515

/tmp/cc9mdrSa.o(.text+0x1f2): In function `main':
: undefined reference to `pow'
/tmp/cc9mdrSa.o(.text+0x217): In function `main':
: undefined reference to `sqrt'
collect2: ld はステータス 1 で終了しました


コンパイルしてみたのですが、こんな表示が出ました。
これはどういうことでしょうか?

519:デフォルトの名無しさん
09/07/03 16:35:28
>>518
>>508

520:デフォルトの名無しさん
09/07/03 16:36:58
>518
その二つの関数が無かったよと

コンパイルの最後にmathが提供してる関数をくっつける作業があるんだけど
そのリンクの段階でもなかったよといわれてる

コンパイルで -lm つけないと

521:デフォルトの名無しさん
09/07/03 16:37:29
初歩的なことですが・・・
std::string aa;
aa.size(128);
char bb[128];
aaにbbを指定バイト分コピーするにはどうしたらいいですか?
ちなみにbbには0x00を含むバイナリデータも含んでいます。

522:デフォルトの名無しさん
09/07/03 16:37:53
どこにつけていいかわからないなら
makefileの中晒して

523:デフォルトの名無しさん
09/07/03 16:43:22
>>521
aa.assign(bb, bb + sizeof bb)

524:デフォルトの名無しさん
09/07/03 16:49:36
>>523
できました。ありがとうございます。

525:522
09/07/03 16:50:07
makefileって何ですか??

526:デフォルトの名無しさん
09/07/03 16:55:43
出題がgccである事をいい事にまたC99でソースを書いてるカスがいるな

527:デフォルトの名無しさん
09/07/03 16:59:09
>>525
拡張子無しのmakefileというのがあるんだけど
コンパイルってmakeとかmake rebuildとかコマンドでやてるんでしょ?

528:511
09/07/03 17:02:35
>>527

cc ファイル名.c ってやるとコンパイルできるタイプなんですが・・・・


529:デフォルトの名無しさん
09/07/03 17:10:43
ソースは何で編集してるんだろうww
linuxのコマンドとかそんなのまで説明しないといけないのか?

530:511
09/07/03 17:13:45
kwrite編集して、コンソールでこんぱいるしておます。


531:511
09/07/03 17:15:49
kwriteで編集して、コンソールでこんぱいるしておます。


532:511
09/07/03 17:31:32
>>529

いま言われた通りやってみたらできました!!!

ご迷惑お掛けしました。ありがとうございました!

533:デフォルトの名無しさん
09/07/03 17:56:21
まじ神っす!!

534:デフォルトの名無しさん
09/07/03 19:01:05
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
例えば下図に示すように,通行可能なマス目に'0'が,障害物があって通行不能なマス目に'+'が記されている盤がある.
盤の左上をスタート地点,右下をゴール地点として,経路を表示するプログラムを作りなさい.
盤の例
0 0 + 0 +
+ 0 0 0 +
0 + + 0 0
0 0 + 0 0
+ 0 0 0 0

例えばこのようなアルゴリズムが考えられる.

1) 現在位置を表示の後、進行方向に対して,右に進めるなら右に,そうでなければ直進,それもだめなら左に,さらにそれもダメなら後退する.
2) 1を繰り返してゴールに達したらその旨を表示する.ただし,マス目の数分だけ移動してもゴールに達しない場合はその時点で終了する.

入力形式は、

%> ./a.out 00+0+ +000+ 0++00 00+00 +0000

とする.

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/13

お願いします。

535:デフォルトの名無しさん
09/07/03 20:06:23
>>534 右手沿い
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc, char *argv[]){
int width[100]={0}, height, try_count=0, i, j, x=-1, y=0, d, pd=0;
int vx[4]={ 1, 0,-1, 0}, vy[4]={ 0,-1, 0, 1};

if(argc<2) return 1;
height=argc-1;
for(i=0;i<height;i++){
try_count+=(width[i]=strlen(argv[i+1]));
for(j=0;argv[i+1][j];j++) printf("%c ", argv[i+1][j]);
printf("\n");
}
for(i=0;i<try_count;i++){
for(j=0;j<4;j++){
d=(pd+j+3)%4;
if(x+vx[d]<0 || x+vx[d]>=width[y] || y+vy[d]<0 || y+vy[d]>=height) continue;
if(argv[y+vy[d]+1][x+vx[d]]!='0') continue;
x+=vx[d];
y+=vy[d];
pd=d;
break;
}
if(x==width[y]-1 && y==height-1) break;
}
if(i<try_count) printf("\nゴールに達した\n");

return 0;
}

536:デフォルトの名無しさん
09/07/03 20:35:10
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): 乱数を使って配列に値を代入するようにせよ。サイズを変化させて時間を計測してみせよ。
サイズが十倍になると計算結果は何倍になるか?
[3] 環境
 [3.1] OS: Windows/vista
 [3.2] コンパイラ名とバージョン: Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([2009年07月9日まで]
[5] その他の制限: 乱数はrand()関数、clock()関数を利用する。

537:デフォルトの名無しさん
09/07/03 20:38:01
>>536の参照データっぽいもの
#include<stdio.h>
void soft_swap(int *x,int *y)
{
int temp;
if(*y<*x){temp=*y;
*y=*x;
*x=temp;}}
void sort_array(int a[],int size){
int i,j;
for(j=0;j<size-1;j++){
for(i=0;i<size-1;i++){
soft_swap(&a[i],&a[i+1]);}}}
int main()
{
int a[100],i,size;
printf("数列のサイズを入力してください\n");
scanf("%d",&size);
printf("数列を入力してください\n");
for(i=0;i<size;i++){
scanf("%d",&a[i]);}
printf("\n");
for(i=0;i<size-1;i++){
sort_array(a,size);}
for(i=0;i<size;i++){
printf("%d",a[i]);}
printf("\n");
return(0);

538:デフォルトの名無しさん
09/07/03 21:14:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7月8日 17:00
[5] その他の制限:

539:デフォルトの名無しさん
09/07/03 21:56:21
>>538 課題5
始めにファイル名入れる?

540:デフォルトの名無しさん
09/07/03 22:08:20
1] 授業単元: 数値計算プログラミング
[2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ
               (3)f(x)=3x^3+2x^2+5x-15=0の解を求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: ([2009年07月10日まで]
[5] その他の制限:ニュートン法を用いる 初期値 x0=1

541:デフォルトの名無しさん
09/07/03 22:24:47
>>536
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こんなくだらない内容だと解釈したけど本当に合ってるのだろうか・・・。

542: ◆/91kCCQXBo
09/07/03 22:43:48
>>538 課題4 % gcc -o score score.c
URLリンク(jbbs.livedoor.jp)
>>538 課題5 % gcc -o score2 score2.c
URLリンク(jbbs.livedoor.jp)

543:デフォルトの名無しさん
09/07/03 23:07:12
>>540
// ニュートン法で「f(x) = 0」を解く
#include <iostream>
// f(x) および f'(x)
double f1(double x) { return x*x - 57; }
double f1d(double x) { return 2*x; }
double f2(double x) { return x*x*x - 7; }
double f2d(double x) { return 3*x*x;}
double f3(double x) { return 3*x*x*x + 2*x*x + 5*x - 15; }
double f3d(double x) { return 9*x*x + 4*x + 5; }
int main() {
int n; double x; // 繰り返し回数、初期値
n = 10; x = 1.0;
while (n--) { x -= f1(x) / f1d(x); }
std::cout << "(1) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f2(x) / f2d(x); }
std::cout << "(2) " << x << std::endl;
n = 10; x = 1.0;
while (n--) { x -= f3(x) / f3d(x); }
std::cout << "(3) " << x << std::endl;
return 0;
}

544:デフォルトの名無しさん
09/07/03 23:50:03
いきなりですいません!!
コンパイラしてくれるサイトってありませんでしたっけ??
以前使ったんですけど忘れてしまって...CやらC++やら選択できてコンパイルしたいデータ貼っつけてって感じのダウンロードいらずのサイトなんですけど。。;;
ネットで調べているんですが出てこなくて。
場違いなのはわかっていますが
ここの人なら知ってると思いまして。。
本当すいません

545:デフォルトの名無しさん
09/07/03 23:52:49
>>544
codepad でググるとか

546:デフォルトの名無しさん
09/07/04 00:07:07
そう!それです!codepadでした!!
早くも返答ありがとうございます!
なんかスッキリしましたw
これでレポートだせそうです。
ありがとうございます!

547:デフォルトの名無しさん
09/07/04 00:38:41
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せよ。
なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること。

非負の整数を入力してください: 1963
1963 を逆から読むと3691 です.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月04日
[5] その他の制限:なし。

548:547
09/07/04 00:41:31
[4] 期限: 09年07月06日
でした^^;

549:デフォルトの名無しさん
09/07/04 01:01:56
[1] 授業単元: プログラミング
[2] 問題文
二つの整数をキーボードから入力して、ユークリッドの互除法を用いて最大公約数を求めよ。
ただし、関数の再帰呼び出しを用いること。
[3.1] OS Windows
[3.2]VisualC++
[3.3] 言語 C++
[4] 期限:7月6日


わかる方どうかよろしくお願いします。

550:デフォルトの名無しさん
09/07/04 01:13:10
>>547
#include <stdio.h>
int main(void) {
int input;
do {
printf("非負の整数を入力してください: ");
scanf("%d",&input);
} while(input < 0);
printf("%dを逆から読むと",input);
do {
printf("%d",input % 10);
input /= 10;
} while(0 < input);
printf("です");
return 0;
}


551:デフォルトの名無しさん
09/07/04 01:13:59
>>549
#include <iostream>

int gcd(int a, int b)
{
int r = a % b;
if(r==0) return b;
return gcd(b, r);
}

int main()
{
int a, b;

std::cin >> a >> b;

std::cout << gcd(a,b);
}

552:デフォルトの名無しさん
09/07/04 01:19:19
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(2)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 3日後まで
[5] その他の制限: 構造体
よろしくお願いします。



553:デフォルトの名無しさん
09/07/04 01:22:20
>>547
URLリンク(kansai2channeler.hp.infoseek.co.jp)
無駄に1023桁までの非負の整数値で遊べるようにしてみた。

554:デフォルトの名無しさん
09/07/04 01:26:10
表示するだけなのに、いちいち逆順の文字列を作るのは無駄。

555:デフォルトの名無しさん
09/07/04 01:33:16
それ以前に
>*(reverse + length - i - 1) += *(str + i);
これはねーよw

556:デフォルトの名無しさん
09/07/04 01:33:28
>>554
つい、後でこれを他にも使いまわすように拡張するかもしれんとか考えちゃう人でごめんね。

557:デフォルトの名無しさん
09/07/04 01:35:48
>>555
じゃぁどう書けばいいと思う?

558:デフォルトの名無しさん
09/07/04 01:36:55
こんな題意も満たしてない糞コード、他に使いまわすとか正気かよw

559:デフォルトの名無しさん
09/07/04 01:42:07
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):url.txtに書き込まれている"http://~をhttp://~に書き換えresult.txtに出力せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2009年07月05日19:00まで
[5] その他の制限: とくになし

よろしくお願いします.

560:デフォルトの名無しさん
09/07/04 01:43:33
>>559
追記です

できればコメントも書いて頂けるとうれしいです.


561:デフォルトの名無しさん
09/07/04 01:46:53
>>557
普通に計算だけでなんとかならねえ?


562:デフォルトの名無しさん
09/07/04 01:54:39
+=じゃなくて=
mallocで確保した領域は0クリアされてるとは限らない。
そこに文字を足すと元の文字とは別になる可能性が高い。

っていうかお前>>346だろ?
似たようなことやっときながら、全然成長してないのな。

563:デフォルトの名無しさん
09/07/04 01:55:21
>>553
mallocの確認と解放してない。
書き捨てPGならいいけど、課題ならやっととかないと講師がうるさい。

fgetsでは常に改行が入るとは限らないからmain文のfor文で暴走の可能性あり。

っていうかstrlenとかstrchr使えばおk


564:デフォルトの名無しさん
09/07/04 01:58:06
>>561
ちょっと頭冷やしてきて改めて見たら、言われた通り糞コードだった。

565:デフォルトの名無しさん
09/07/04 02:07:37
>>552(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

566:デフォルトの名無しさん
09/07/04 02:15:34
>>562
そこは普通に書き間違えてる。
本人は=書いたつもり。

>>563
strlen使ってないのはわざとやってる。
fgetsは素で間違えた。

こんなクソコードにツッコミ入れてくれてありがとう。

567:デフォルトの名無しさん
09/07/04 02:40:45
なんとなーく、だけど、
while(input) {
printf("%d", input%10);
input /= 10;
}
を期待した課題だと思う

568:デフォルトの名無しさん
09/07/04 02:41:57
ごめん>>550見てなかった

569:デフォルトの名無しさん
09/07/04 02:54:30
>>552
Complex c_div(Complex s, Complex t)の部分や、sscanfというものが解りません。
もう少し簡単にして頂けないでしょうか?


570:デフォルトの名無しさん
09/07/04 03:17:52
>>569
題意の通りじゃないの?

571:デフォルトの名無しさん
09/07/04 03:18:53
>>565ではないが
sscanfは文字列に対してscanfする関数
c_divは仕様通りだから。。

572:デフォルトの名無しさん
09/07/04 03:25:18
ならsscanf()は使わずに危険なscanf()でも使って書き直そうか

573:デフォルトの名無しさん
09/07/04 03:26:20
つーか誰か(2)やってくれ
だるい
酒飲んでるし

574:デフォルトの名無しさん
09/07/04 03:30:54
>>569
(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

(2)は誰か任せた
寝る

575:デフォルトの名無しさん
09/07/04 03:32:50
>>552 (2)ってポインタ使っていいのか?
構造体の実体渡すの?

576:デフォルトの名無しさん
09/07/04 03:36:02
>>574
ありがとうございました。

577:デフォルトの名無しさん
09/07/04 03:40:22
 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu C;
  C.bunshi = A->bunshi * B->bunshi;
  C.bunbo = A->bunbo * B->bunbo;
  return &c;
}


578:デフォルトの名無しさん
09/07/04 03:42:02
あーーーーーーーーーーーーすまん>>577は無しで

 typedef struct{
  int bunshi, bunbo;
 }bunsu;

bunsu* bunsu_seki(bunsu* A,bunsu* B)
{
  if(A == NULL) return NULL;
  if(B == NULL) return NULL;
  bunsu* C = (bunsu*)malloc(sizeof(bunsu));
  if(C == NULL) return NULL;
  C->bunshi = A->bunshi * B->bunshi;
  C->bunbo = A->bunbo * B->bunbo;
  return C;
}

579:デフォルトの名無しさん
09/07/04 03:42:34
>>569 (2)
bunsu bunsu_seki(bunsu a, bunsu b)
{
a.bunsi *= b.bunsi;
a.bunbo *= b.bunbo;
return a;
}

>>577
だめじゃね?

580:デフォルトの名無しさん
09/07/04 03:45:31
>>578
どんどん話がややこしい方にすすんでるし題意は満たしてないし

581:デフォルトの名無しさん
09/07/04 03:50:55
いかん
ついつい・・>>552の(2)は>>579でいいね
>>577>>578はなしで

582:デフォルトの名無しさん
09/07/04 03:52:17
ポインタで渡す方が処理が速い伝説に惑わされたらいかんよ

583:デフォルトの名無しさん
09/07/04 03:55:52
実際どっちがいいんだろうね
もっとでかい構造体をリストにして扱うことがほとんどなのでついつい

584:デフォルトの名無しさん
09/07/04 03:56:21
>>574
何か消し忘れた#defineが残ってるな
あれは不要だから消しとけ

585:デフォルトの名無しさん
09/07/04 03:57:50
リストにするなら隣のポインタ持たないとダメだからしょうがないけど。
試しにベンチでもやってみたら?
>>578のはちゃんと呼び出し側でfreeしないとメモリどんどん使うから気をつけてね

586:デフォルトの名無しさん
09/07/04 04:25:38
[1] 授業単元:C+
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
OS: vista
コンパイラ名とバージョン: gcc
言語:C
[4] 期限: 一週間
[5] その他の制限:
4題あります。
テストの類題なのでなるべく簡単に題意を満たす解答をお願いします。



587:デフォルトの名無しさん
09/07/04 04:28:35
>>559
URLリンク(kansai2channeler.hp.infoseek.co.jp)

588:デフォルトの名無しさん
09/07/04 05:08:00
>>586
1.
int sum1toN(int n)
{
    int i, s;

    for(i = 1, s = 0; i <= n; i++){
        s += i;
    }
    return s;
}

2.
#include <stdio.h>
#define PAI 3.14159
void circle(double r, double *enshu, double *menseki);
int main(void){
    double r, enshu, menseki;
    printf("半径を入力 >>");
    scanf("%lf", &r);
    circle(r, &enshu, &menseki);
    printf("円周 = %f 面積 = %f\n"
                , enshu, menseki);
    return 0;
}

void circle(double r, double *enshu, double *menseki)
{
    *enshu = 2.0 * PAI * r;
    *menseki = PAI * r * r;
    return;
}

589:デフォルトの名無しさん
09/07/04 05:08:42
>>586 続き
3.
#include <stdio.h>
int main(void)
{
    int a[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }, i;
    for(i = 0; i < 8; i++){
        if(7 - 2 - i >= 0) a[7 - i] = a[7 - 2 - i];
        else a[7 - i] = 0;
    }
    for(i = 0; i < 8; i++)
        printf("a[%d] = %d\n", i, a[i]);
    return 0;
}

4.
#include <stdio.h>

int main(void){
    char ch[81], max;
    int i;
    gets(ch);
    for(i = 0, max = '\0'; ch[i] != '\0'; i++){
        if(ch[i] > max) max = ch[i];
    }
    printf("文字コード最大は%c <%d>\n", max, max);
    return 0;
}

590: ◆/91kCCQXBo
09/07/04 08:06:02
>>547 0123 の逆順 3210
URLリンク(jbbs.livedoor.jp)

591:デフォルトの名無しさん
09/07/04 11:41:47
>>586
(1)
int sum1toN(int n){
return (n + 1)*n/2;
}
オーバーフローしたら知らん。

592:デフォルトの名無しさん
09/07/04 11:58:38
>>591
仕様は満たしているが、出題者の意図に沿ってないような…。

593:デフォルトの名無しさん
09/07/04 12:03:29
>>592
やっぱ模範解答は>>588だよね。
こっちはこんなのもあるよ程度で。

594:デフォルトの名無しさん
09/07/04 12:40:12
>>586
(3)
#include <stdio.h>

#define SHIFT_NUM 2
#define ARRAY_SIZE 8

int main(void){
int a[ARRAY_SIZE] = {1,2,3,4,5,6,7,8}, i, j;

for(i = 0; i < SHIFT_NUM; ++i){
for(j = ARRAY_SIZE - 1; j > 0; a[j] = a[j-1], --j);
a[0] = 0;
}
for(i = 0; i < ARRAY_SIZE; ++i)
printf("a[%d]=%d\n", i, a[i]);

return 0;
}

簡単かどうかと言われるとどうなんだろう。

595:デフォルトの名無しさん
09/07/04 13:34:22
[1] 授業単元: 関係演算子
[2] 問題文(含コード&リンク):
  どんな計算式でもいいが、10で割ると余りが0になる場合だけをprintf文で表示させろ

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: gcc )
 [3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 明後日まで
[5] その他の制限: 制限なし


596:デフォルトの名無しさん
09/07/04 13:53:08
>>595
#include <stdio.h>
int main(void){
int n = 100;
if( n%10 == 0 ){
printf("%dは10の倍数\n");
}
return 0;
}

こういう意味でおk?

597:デフォルトの名無しさん
09/07/04 13:54:51
>>596
訂正:
printf => printf("%dは10の倍数\n", n);

598:デフォルトの名無しさん
09/07/04 14:01:36
どんな計算式の、計算式が重要。n=100か?

599:デフォルトの名無しさん
09/07/04 14:09:58
>>598
どんな10で割ったら余りが0になる数値を特定しろ
特定方法(計算式)はどんなのでも構わない

って意味じゃないの?

600:598
09/07/04 14:15:41
商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ <= これが設問じゃないかと
どんな計算式でもいいが商を用いて、10で割ると余りが0になる場合だけをprintf文で表示させろ

601:デフォルトの名無しさん
09/07/04 14:23:18
>>587
ありがとうございます。


602:599
09/07/04 14:28:30
>>600

int n1, n2
n1 = 123; /* 調査対象 */
n2 = n1 / 10;
n2 *= 10;
if(n1 - n2 == 0){
  表示処理
}

こんなん?

603:aka
09/07/04 14:33:17

情報オリンピックの2008年度予選問題3の連鎖のプログラムを教えてください。

URLリンク(www.ioi-jp.org)



604:598
09/07/04 14:33:30
ループすべき。
#include <stdio.h>
int main() {
  int ans;
  
  for(ans=-21;ans<=21;ans++)
    if(!(ans%10)) printf("%d ",ans);
    else printf(".. ");
}

605: ◆/91kCCQXBo
09/07/04 14:58:08
URLリンク(jbbs.livedoor.jp)
>>538 課題1 % gcc -o space space.c
#include <stdio>
>>538 課題2 % gcc -o innpro innpro.c
#include <stdio>
>>538 課題3 % gcc -o janken janken.c
char janken_com(int seed){
  int t;
  srand(seed); //乱数の種(seed)を設定.

  t=rand()%3; //rand()は整数の乱数を返す関数.rand()%3により0から2の乱数を発生させることができる.

  if(t==0) return 'g';
  if(t==1) return 'c';
  return 'p';
}

606:デフォルトの名無しさん
09/07/04 16:03:08
[1] 授業単元:C
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月7日
[5] 番号の場所を書き直すようお願いします。

607:デフォルトの名無しさん
09/07/04 16:07:08
[1] 授業単元:プログラミング言語2
[2] 問題文(含コード&リンク)
簡単なデータベース機能を持つプログラムを作成しなさい.対象となるデータは自分で考えてください.
  (住所録,商品の在庫,図書,ワールドカップの勝敗....)
 以下の要件を示します.

1. ファイルからデータを読み込む機能をつけること.
2. データは4つ以上の項目を保持させること.
 (住所録では、「名前」「住所」「郵便番号」「電話番号」等で4項目以上)
3. 並び替えの機能をつけること.また並び替える項目が指定できること.
4. 各項目についてデータの検索を行う機能をつけること.また,検索条件を組み合わせることができること.
 (住所録なら,「郵便番号」が 399 で始まって,かつ,「電話番号」が 026 で始まる 等)
5. データは半角英数字(英語やローマ字)で扱ってよい
6. データの追加ができること.
7. データの削除ができること.削除は上記の検索と組み合わせることで,ある条件に合致したデータを削除できること.
8. 追加・削除した結果をファイルに保存できること.

[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン: cygwinのgccです。 バージョンはわかりません。
 [3.3] 言語: C
[4] 期限: 2009年7月13日まで
[5] その他の制限: 双方向リストまで、終わりました。
対象となるデータは住所録でお願いします。
プログラムに説明を付けてくれると、助かります。

よろしくお願いします。

608: ◆/91kCCQXBo
09/07/04 16:33:55
>>595
#include <stdio.h>
int main(int argc, char *argv[]) {
  int i, c;
  FILE *fp;

  if(argc < 2) {
    printf("Usage : %s filename.ext", argv[0]); return 1; }
  if((fp=fopen(argv[1],"r")) == NULL) {
    printf("%s file open error!", argv[1]); return 1; }
  puts("ASCIIコードが10の倍数の時の、ファイル先頭からの位置:");
  for(i=1; (c=getc(fp)) != EOF; i++) { // 結果の値はファイルから読み込む
    if(!(c%10)) printf("%dx%d ", i, c); // 結果の値が、10 で割ると余りが0になる場合だけを表示
//    else if(!(i%10)) printf("x%d ", c); // 繰返しの回数が、10 で割ると余りが0になる場合
//    else printf("."); // その他の場合
  }
  fclose(fp);
}

609:デフォルトの名無しさん
09/07/04 18:07:38
>>603
URLリンク(kansai2channeler.hp.infoseek.co.jp)

610: ◆/91kCCQXBo
09/07/04 18:57:23
>>606 リストを用いて個人データを格納する表を作成。(穴埋め問題)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

611:デフォルトの名無しさん
09/07/04 19:29:17
>>609
これ「落ちた状態」をいちいち作って数えたんだけど
よく考えたらその必要なかった…。無駄無駄無駄ー!

612:デフォルトの名無しさん
09/07/04 19:53:43
未回答文plz

613:デフォルトの名無しさん
09/07/04 20:12:41
>>603
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>609で作ったやつの修正版

614:デフォルトの名無しさん
09/07/04 20:55:21
>>607
>8. 追加・削除した結果をファイルに保存できること.
これって追加・削除の「履歴」じゃなくて単に「現在のデータ」でいいんだよね?

615:デフォルトの名無しさん
09/07/04 21:21:31
[1] 授業単元: C言語
[2] 問題文  
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これを参考に、100人以内の生徒ID、名前を入力するプログラムを作る
[3] 環境
 [3.1] OS:  Windows
 [3.2] コンパイラ名とバージョン: VisualC++
 [3.3] 言語 C
[4] 期限: 7月6日 
[5] その他の制限 ソースプログラムにある形の関数を使うこと


616:デフォルトの名無しさん
09/07/04 21:34:14
>>615
これでいいのかな

#include<stdio.h>
#include<string.h>
#define SIZE 100



int main(){

    int i;
    student_type students[SIZE];
    for( i = 0; i < SIZE; ++i ){
        read_student( &students[i] );
    }
}


617:デフォルトの名無しさん
09/07/04 22:26:52
>>613
高校生でも分かる簡単なプログラムになりませんかね?
図々しくてごめんなさい…
ぜひお願いします。

618:613
09/07/04 22:37:57
>>617
いや、そう言われても…
この板の住人なら高校生でも>>613は読めると思うが

一般的な高校生レベルってどんなのよ
まあ、どの行がわからんのか言ってみれ

619:デフォルトの名無しさん
09/07/04 22:52:23
ホント無知で申し訳ないっす。。

printf("%s : %d --> %d\n", filename, N, min);

free(array);
fclose(fp);
}

int check_okikata(int *array, int size, int index, int color)
{

らへんがよく分かりません
どういう意味でしょう?


620:デフォルトの名無しさん
09/07/04 23:30:29
>>614
そうです。
項目が削除されたリストと、項目が追加されたリストを出力します。

621:デフォルトの名無しさん
09/07/04 23:35:28
>>619
つまり動的な配列の確保(mallocとfree)がわからないんだな
じゃあ固定配列で書き換えるから

622:デフォルトの名無しさん
09/07/04 23:56:20
>>619
malloc()とfree()を使わないようにした
URLリンク(kansai2channeler.hp.infoseek.co.jp)

623:デフォルトの名無しさん
09/07/05 00:18:10
>>620
えっ?2つのリストが出力されるの!?
追加や削除をして変更された「現在のデータベースのデータ」のリスト1つじゃないの?

624:デフォルトの名無しさん
09/07/05 01:35:36
[1]数値情報解析
[2]ガウス-ザイデル法によりn元1次方程式を解くプログラムを作りなさい。
[3]
[3.1]Windows
[3.2]Visual Studio 2008
[3.3]C
[4]2009年7月15日
[5]ほぼ素人なので、少しでも優しい表現にしていただけるようよろしくお願い致します。
 あと、パワーポイントでこのプログラムのフローチャートを書いていただければありがたいです。

625:デフォルトの名無しさん
09/07/05 02:42:19
>>624 >>162 問題 >>174 >>177 >>183 解答

626:デフォルトの名無しさん
09/07/05 02:57:38
ガウスザイデル法って反復法だからガウス法と違うだろ

627:デフォルトの名無しさん
09/07/05 03:19:53
C++なんですが、
文字変数aの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
誰かお願いします

#include<iostream>
using namespace std;
int main(){


return 0;
}


628:デフォルトの名無しさん
09/07/05 03:21:02
>>627ですが、間違えました。
文字変数aの中身→文字変数mの中身
でした

629:デフォルトの名無しさん
09/07/05 03:22:32
ファイルから読み込みするの?
それともキーボードの入力を待って入力された文字を判断するの?

630:デフォルトの名無しさん
09/07/05 03:26:02
>>627
文字変数mの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
としか書かれてないんですよね。
ただ書き始めと終わりは下の定型文みたいのを使うんですが
#include<iostream>
using namespace std;
int main(){


return 0;
}

631:デフォルトの名無しさん
09/07/05 03:26:46

>>630ですが間違えました

>>627じゃなくて>>629でした

632:デフォルトの名無しさん
09/07/05 03:55:39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
その数の二乗値の和は加算しないものとする.

整数を入力してください
整数1 : 3
整数2 : 5
整数3 : -1
二乗値の合計は34 です.
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。

633:デフォルトの名無しさん
09/07/05 04:00:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
ファイル提出: 実行ファイル
何行ですか: 7
何列ですか: 12
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。

634:デフォルトの名無しさん
09/07/05 04:02:16
>>632
#include <stdio.h>

int main(void)
{
int i = 0, sum = 0, n;

while(1) {
printf("整数%d :", ++i);
scanf("%d", &n);
if(n < 0) break;
sum += n * n;
}

printf("二乗値の合計は%d です.\n", sum);

return 0;
}

635:デフォルトの名無しさん
09/07/05 04:06:28
>>633
#include <stdio.h>

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

printf("何行ですか:");
scanf("%d", &n);
printf("何列ですか:");
scanf("%d", &m);

for(i=1; i<=n; i++) {
for(j=0; j<m; j++) printf("%d", (i+j)%10);
putchar('\n');
}

return 0;
}

636:デフォルトの名無しさん
09/07/05 06:59:52
>>627
#include<iostream>
using namespace std;
int main(){
char m;
if (m == 'a') cout << "『aが格納されています』" << endl;
else cout << "『'a'でない文字が格納されています』" << endl;
return 0;
}


637: ◆/91kCCQXBo
09/07/05 09:01:09
>>627 関数が使えるなら。
#include<iostream>
using namespace std;
namespace {
  int m;
  void sub(void) {
    if (m == 'a') cout << "『aが格納されています』" << endl;
    else cout << "『'a'でない文字が格納されています』" << endl;
  }
}
int main(){
  m='a';
  sub();
  m='x';
  sub();
  return 0;
}

638: ◆/91kCCQXBo
09/07/05 09:47:08
>>627 テンプレートの中だけ書く。>>626 は無しで。
char m = '\a';
int i;
char data[4]={'m', 'a', 'i', 'n'};

for(i=0; i<=sizeof data/sizeof(char); m = data[i++]) {
    if (m == 'a') cout << "『'a'が格納されています』\n";
    else         cout << "『'a'でない文字が格納されています』\n";
}

639:デフォルトの名無しさん
09/07/05 10:42:52
そのループはギャグのつもり?

640:デフォルトの名無しさん
09/07/05 10:51:16
1週間ぐらい前に文字列表示とか、四則演算とか聞いてた人でしょ。
授業は if 文に入ったらしいが、何も分からないから全部聞くと。

641: ◆/91kCCQXBo
09/07/05 12:35:40
>>595 ループか関数のどちらかは使う必要あり。
#include <stdio.h>
void div10(int c) {
  if(c%10) ; else printf("%dは10で割り切れる数\n", c);
}
int main() {
  div10(1);
  div10(20);
  div10(21);
  div10(30);
  div10(13);
  return 0;
}

642:デフォルトの名無しさん
09/07/05 13:10:10
>>638

そのおソースは頂けない
せめてこうしよう

#include <iostream>
using namespace std;

int main()
{
char* data = "main";

for(char* ite = data;*ite != '\0';ite++){
if(*ite == 'a') cout << "aが格納されています" << endl;
else cout << "'a'でない文字が格納されています" << endl;
}

return EXIT_SUCCESS;
}

643: ◆/91kCCQXBo
09/07/05 13:29:31
>>627 どお?
#include <iostream>
using namespace std;
int main(){
  int i = 0;
  char m, data[] = {'m', 'a', 'i', 'n'};

  while( m = data[i], i++ < sizeof data/sizeof(char) ) {
    if (m == 'a') cout << "『'a'が格納されています』\n";
    else         cout << "『'a'でない文字が格納されています』\n";
  }
  return 0;
}

644:デフォルトの名無しさん
09/07/05 13:53:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
モンテカルロ法を用いて、円周率を計算しなさい。なおランダムに打つ点は1000点用いること。
また上記プログラムを改良して、50点打つごとに、真の円周率(ここでは3.1415926とします)
との差を求め、その差をスペースと*を用いてグラフ化しなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:

申し訳ありませんがよろしくお願いします

645:デフォルトの名無しさん
09/07/05 16:52:12
>>644
喜べ、これでキミは英雄だ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

hit-or-missは中心(0,0)半径1の円に入るかどうかで判定した
一様乱数はC標準のものを用いた
おまけとして100000回試行したデータも付けておいた
この判定法と乱数では試行回数が1000回では不十分であると分かるはずだ
改善は他の住人に任せた

646:デフォルトの名無しさん
09/07/05 17:11:25
>>535
遅くなりました
ありがとうございます><

647:デフォルトの名無しさん
09/07/05 17:40:26
>>638
sizeof data/sizeof(char)
>>639が指してるのがこれかどうか分からんけど、とりあえず気持ち悪い

648:デフォルトの名無しさん
09/07/05 17:43:21
>>647
固定配列のサイズを表現する普通の記述だが
なんで気持ち悪いと思う?

649:デフォルトの名無しさん
09/07/05 17:46:18
そっか。
俺ならsizeof(data)/sizeof(data[0])と書くから。
片方にしか括弧つけない意味も分からないし。

650:デフォルトの名無しさん
09/07/05 17:49:14
ああ、そういう意味なら気持ち悪いな
確かに

651:デフォルトの名無しさん
09/07/05 17:51:08
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):Ax=bの連立1次方程式の解を求めるプログラムを作成しなさい。
   (この行列を使用してください
     A={{10,-9,0,0,0,0,0},
  {-9,17,-8,0,0,0,0},
  {0,-8,17,-9,0,0,0},
{0,0-9,13,-4,0,0},
{0,0,0,-4,12,-8,0},
{0,0,0,0,-8,10,-2},
  {0,0,0,0,0,-2,2}}
b={0,0,0,0,0,0,7})

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
解が{0.37,0.41,1.28,2.06,3.81,4.69,8.19}に近いものになるはずです。




652:デフォルトの名無しさん
09/07/05 17:53:09
>>651
既に期限過ぎてるんだが

653:デフォルトの名無しさん
09/07/05 17:53:15
あとsizeof(char)は常に1だから冗長とかいう奴もよくいるねw
おれは冗長でも書くべきと思う派

654:デフォルトの名無しさん
09/07/05 17:54:36
>>650
どういう意味なら気持ち悪くないの?

655:デフォルトの名無しさん
09/07/05 17:57:09
>>648
読みにくいし i <= sizeof~ だと境界越えてるじゃん
>>642とどっちが読みやすいよ

656:デフォルトの名無しさん
09/07/05 18:00:36
うわあほんとだ。。。
sizeof記述の気持ち悪さに気を取られすぎた俺バカ

657:デフォルトの名無しさん
09/07/05 18:18:03
<<651
私の計算ミスでした。すいません


658:デフォルトの名無しさん
09/07/05 18:55:03
>>651 >>162 問題 >>174 >>177 >>183 解答
何の計算ミス?

659:デフォルトの名無しさん
09/07/05 19:38:56
>>623
返信遅れてすみません。
追加、削除された1つのリストで大丈夫です。

660:デフォルトの名無しさん
09/07/05 20:49:18
[1] 授業単元:情報
[2] 問題文(含コード&リンク):
パソコン甲子園 2008 予選問題 問7 ふしぎな虫
URLリンク(www.pref.fukushima.jp)
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語: C
[4] 期限: 7月6日

よろしくお願いします。

661:デフォルトの名無しさん
09/07/05 21:34:32
>>645
ありがとうございます。
凄い。誤差ってなかなか安定しないんですね
ですが中身が問題分からなかった低能では
いささか理解が追いつきません
このまま出したら本当に英雄になっちゃいそうです

662: ◆/91kCCQXBo
09/07/05 21:47:10
>>644 差の絶対値をグラフにした。
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926
int main() {
  int  i, j, imax = 1000;  /* 乱数の発生回数 1000 */
  int  n, inter = imax/20;  /* グラフの表示インターバル 50 */
  float x,y,pi=PI,eps,mul;
  for(n=0, i=1; i<=imax; i++) {
    /* 0以上1未満の乱数を生成する */
    x = rand()/((float)RAND_MAX+1);
    y = rand()/((float)RAND_MAX+1);
    /* 0<=x,y<=1の範囲にある中心原点半径1の扇形の中に乱数による点が入ったらカウントする */
    if( x*x + y*y < 1) n++;
    if( i%inter ) ; else {    /* 円周率の計算とグラフの表示 */
      pi = (float)n/i*4;    /* 半径1の円の面積すなわち円周率 */
      eps = PI-pi; eps = (eps<0)? -eps : eps;
      if(i==inter) mul = 70/eps; /* 1回目はグラフの倍率を決める */
      printf("%5.3f ", pi);
      for(j=eps*mul; j>=1; j--) putchar(' '); printf("*\n");
    }
  }
  printf("PI=%f\n", pi);
}

663:デフォルトの名無しさん
09/07/05 22:30:36
>>662
ありがとうございます
コメントまで…

何度実行しても値が変わらない気がするのはそういう物ですか?

664: ◆/91kCCQXBo
09/07/05 22:37:17
srand(time(NULL)); を、最初に呼べば毎回変わるはず、>>645のように。

665:デフォルトの名無しさん
09/07/05 22:41:51
>>664
出来ました。が、ときたまグラフが崩れるので封印しときます
勉強になりました

666:デフォルトの名無しさん
09/07/05 23:08:32
>>234で、>>251さんに
URLリンク(kansai2channeler.hp.infoseek.co.jp)
というプログラムを書いて頂いたのですが、RAND_MAXがrand関数の利用に当たるとして
再提出になってしまいました。

rand_maxはrandのとる最大値とのことですが、これを使わないで同様の趣旨を実現するにはどうしたらよいのでしょうか?

667:デフォルトの名無しさん
09/07/05 23:14:25
RAND_MAXをINT_MAXに変える

668:デフォルトの名無しさん
09/07/05 23:53:23
2つの整数をキーボードから入力して、最初の数の方が小さい場合には、『最初の数の方が小さいか等しいです』と表示させて、大きい場合には、『後の数の方が小さいです』と表示させるプログラムを作成せよ

#include<iostream>
using namespace std;
int main(){


return 0;
}


の中に入る文を作るんですが、どうすればいいですか。使うのはifとcoutとelseくらいだと思うんですが


669:デフォルトの名無しさん
09/07/05 23:54:46
>RAND_MAXがrand関数の利用に当たるとして

何ソレ
ただの定数マクロでしょ?

670:デフォルトの名無しさん
09/07/06 00:24:57
>>666
関数の利用に当たる・・・だと・・・
数学科で出された問題?
だったらそのトンチンカンな主張も納得できるけど工学科だったら・・・

671:デフォルトの名無しさん
09/07/06 00:28:29
>>668 例はいらない。
// ↑C++テンプレート
int a1, a2;

cout << "2つの数を入力してください:";
cin >> a1 >> a2;
if(a1<=a2) cout << "最初の数の方が小さいか等しいです\n";
else cout << "後の数の方が小さいです\n";
// ↓C++テンプレート

672:デフォルトの名無しさん
09/07/06 00:49:54
>>671
// ↑C++テンプレート
// ↓C++テンプレート

なんだよ、このコメントは。w
まぁ、>>671の予想通り、minを使うのが速いよってことですね。

673: ◆jmI6IAV7WI
09/07/06 05:28:45
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7月10日
[5] その他の制限:

よろしくお願いします


674:デフォルトの名無しさん
09/07/06 06:48:27
書くとこ入力部だけじゃねーかw

675: ◆jmI6IAV7WI
09/07/06 07:43:14
>>674
入力部だけでもお願いできないでしょうか
難しくて何がなんだかさっぱりわからないので
すみません

676: ◆/91kCCQXBo
09/07/06 14:11:15
>>673
1.
  printf("1番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_line.p1.x, &my_line.p1.y);
  printf("2番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_line.p2.x, &my_line.p2.y);
  printf("2点間の直線距離は:");
2. 三角形の面積 area = fabs(t.p2.x * t.p3.y - t.p3.x * t.p2.y)/2;
  printf("1番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p1.x, &my_triangle.p1.y);
  printf("2番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p2.x, &my_triangle.p2.y);
  printf("3番目のX Y座標をスペースを開けて入力して下さい:");
  scanf("%lf%lf", &my_triangle.p3.x, &my_triangle.p3.y);
  printf("3点で囲まれた三角形の面積は:");

677: ◆/91kCCQXBo
09/07/06 14:25:27
>>624 ガウス・ザイデル法の計算方法 山本昌志 2005年12月16日
URLリンク(akita-nct.jp)

必要なら以下にコメントも付けとく。仮にエクセルのPADでもいい?
#if 0
for( j=1; j<=N; j++ ){
  temp += a[i][j] * x[j];
}
/* a[i][i] * newx + (temp - a[i][i] * x[i]) = b[i]; */
/* a[i][i] * newx = b[i] - (temp - a[i][i] * x[i]); */
newx = 1.0 / a[i][i] * (b[i] - (temp - a[i][i] * x[i]));
#else
for( j=1; j<=N; j++ ){
  if( i==j ) continue;
  temp += a[i][j] * x[j];
}
/* Xi(k+1) = 1/Aii * ( Bi - (Ai,1*X1(k) + Ai,2*X2(k) + ... + Ai,i-1*Xi-1(k) + Ai,i+1*Xi+1 + ... + Ai,n*Xn )) */
newx = (b[i] - temp)/a[i][i];
#endif

678:デフォルトの名無しさん
09/07/06 17:30:17
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C/C++
[4] 期限: [2009年7月7日10:00まで]
[5] その他の制限: 特にありません。 

よろしくおねがいします。

679:デフォルトの名無しさん
09/07/06 18:07:23
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS: VineLinux4.2
 [3.2] コンパイラ名とバージョン: GCC 4.3
 [3.3] 言語: C/C++
[4] 期限: [2009年7月8日10:00まで]
[5] その他の制限: 特にありません。

C言語なら俺に聞け(入門篇) Part 50
スレリンク(tech板)
>>221で質問しましたが結局分からなかったので
ここに投げさせて頂きました。よろしくお願いします。

よろしくおねがいします。

680:デフォルトの名無しさん
09/07/06 18:25:28
>>493で質問し、一題目を当スレで解答していただいたものです。
その際二題目は問題の意味が解らないということで保留にしていたんですが、
二題目もしなければ駄目ということで再度質問願います。
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):URLリンク(www-it.sci.waseda.ac.jp)
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ: gcc
 [3.3] 言語: C

二題目の問題の意味ですが、outputでV1~Vnが表示される度にそれぞれの行列の要素の中で
『V1二乗+V2二乗-V3二乗』を画面Printするという意味と思います。
教授曰くピタゴラスのなにやらと言うらしいのですが、、、。

よろしくお願いします。

681: ◆jvdNOCQgZU
09/07/06 18:31:14
[1] 授業単元:windows開発
[2] 問題文(含コード&リンク): URLリンク(down11.ddo.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: [2009年7月9日まで]
[5] その他の制限:DirectX SDK N2008を使用します。
ファイルが大きかったので別のロダ借りました。パス「111」

682:デフォルトの名無しさん
09/07/06 18:49:24
>>680
最初に解答いただいたプログラムです
URLリンク(codepad.org)

よろしくお願いします。

683:デフォルトの名無しさん
09/07/06 19:01:54
>>679
問題 >>前930(9532)>>093(9559)>>172(9532)
このプログラムに、リダイレクション、パイプ機能を実装してください。
>>265(9607)

684:デフォルトの名無しさん
09/07/06 19:23:17
>>679
もう上で答えられてるけど作っちゃったので俺も
URLリンク(kansai2channeler.hp.infoseek.co.jp)

685:デフォルトの名無しさん
09/07/06 19:35:09
>>680
#include <stdio.h>
#include <stdlib.h>
void multiply(int *mat, int *vec, int *out, int N) {
int i, j;
for (i = 0; i < N; i++) {
out[i] = 0;
for (j = 0; j < N; j++) {
out[i] += mat[i*N+j] * vec[j];
}
}
}
int main(void) {
int i, k, N = 3, n = 10;
int *v = (int *)malloc(N * sizeof(int));
int *t = (int *)malloc(N * sizeof(int));
int *P = (int *)malloc(N * N * sizeof(int));
v[0] = 3; v[1] = 4; v[2] = 5;
P[0] = 1; P[1] = -2; P[2] = 2;
P[3] = 2; P[4] = -1; P[5] = 2;
P[6] = 2; P[7] = -2; P[8] = 3;
for (k = 1; k <= n; k++) {
multiply(P, v, t, N);
for (i = 0; i < N; i++) {
v[i] = t[i];
}
printf("v_%d = (%d, %d, %d), ", k, v[0], v[1], v[2]);
printf("v1^2 + v2^2 - v3^2 = %d\n", v[0]*v[0]+v[1]*v[1]-v[2]*v[2]);
}
free(v); free(t); free(P);
return 0;
}

686:デフォルトの名無しさん
09/07/06 20:04:06
>>678
URLリンク(kansai2channeler.hp.infoseek.co.jp)

687:デフォルトの名無しさん
09/07/06 21:00:23
>>685
ありがとうございます。
本当に助かります。
こんなにサッと出来るなんて尊敬します。

688:デフォルトの名無しさん
09/07/06 21:30:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ.
実験用プログラム fopen.c のソースと実験結果と考察をレポートすること.

% ./fopen
入力ファイル:fopen.c
オープン 1 回目
オープン 2 回目
オープン 3 回目
...
オープン ??? 回目
これ以上オープンできません!

注意:「○○回までオープンできた」とかでは,現象・結果の説明にすぎず,考察とは言えない. その結果から何が理解できるのか?推理せよ. 換言:実験結果(具体例)から一般規則を導き出せ.

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:09/07/08
[5] その他の制限: 特になし

689:デフォルトの名無しさん
09/07/06 21:36:20
>>688
追記
その他の制限:ファイル名は決め打ち(ソースファイルなど)でよい.
自分なりに作ったソースは
URLリンク(kansai2channeler.hp.infoseek.co.jp)
考察がわかりません.
セグメンテーションエラーが出るのはわかるのですが…

690:デフォルトの名無しさん
09/07/06 21:47:23
>>689
セゲメンテーションフォルトは fclose(NULL) が悪いだけで考察とは関係ないよ

691:デフォルトの名無しさん
09/07/06 21:55:34
>>690
fclose(NULL)がエラーになる理由を考察に書けばいいと思うんですが、具体的にどう書けばいいのでしょうか


692:デフォルトの名無しさん
09/07/06 21:55:34
>>680
ピタゴラスのなにやらって、三平方の定理じゃねーかw

693:デフォルトの名無しさん
09/07/06 22:11:23
>>691
ストリームをクローズします。

fclose は,引数 stream で指定されたストリームをクローズします。
そのストリームに対応付けられているすべてのバッファは,クローズする前に
フラッシュされます。システムが割り当てたバッファは,クローズすると解放されます。
setbuf または setvbuf を使って割り当てられたバッファは,自動的に解放される
わけではありません(ただし,setvbuf にバッファポインタとして NULL が渡されると,
クローズするときに解放されます)。

とあるから、NULLを無理矢理クローズしようとしてエラーが生じるんじゃない?
規格票には何か書いてあるかな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch