C/C++の宿題片付けます 128代目at TECH
C/C++の宿題片付けます 128代目 - 暇つぶし2ch243:デフォルトの名無しさん
09/06/30 14:37:33
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: C++
[4] 期限: 7月1日12:00
[5] その他の制限:特になし
よろしくお願いします

244:デフォルトの名無しさん
09/06/30 14:51:32
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)

〔4〕期限:7月6日
〔5〕ポインタ配列

お願いします

245:デフォルトの名無しさん
09/06/30 15:14:36
>>208
手遅れ感がすごいけど一応。
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
スタックに配列取ってるのはそうした方が主旨に沿いそうな気がしたから。

246:デフォルトの名無しさん
09/06/30 15:37:05
>222
>>224の通りに打ち込んでもうまく出来ませんでした><
>どうしてなんでしょう?
何がうまくないんでしょう?

Answer1:パスカルの三角形が気に入らない
Answer2:パソコンが壊れてる。電源が入らない。パソコンを持ってない。
Answer3:コンパイル環境が無い
Answer4:コンパイルエラーが出る!
Answer5:実行はするが変な文字が出る

Ans 5.ならコンパイラの名前を : ( )
...テンプレ...
[3.2] コンパイラ名とバージョン: (gcc 3.4/VC 6.0等)
...テッパン...
gcc --input-charset=cp932 --exec-charset=cp932 file.c

247:デフォルトの名無しさん
09/06/30 15:38:04
ググってわからなかったので、質問させてください。
%eを使って表示したいのですが、
表示させたときにeの左側の小数部分の表示桁数を指定するにはどうすればいいですか?

248:デフォルトの名無しさん
09/06/30 15:40:48
printf("%XXX.XXXe", f); // Xは0-9の数字

249:デフォルトの名無しさん
09/06/30 15:41:38
その辺は書式といいます。

c言語 書式 などでぐぐるといろいろでてくると思います。

少数を扱う場合は

%1.5e
などと書きます

250:デフォルトの名無しさん
09/06/30 15:46:35
ありがとうございます。
書式でググればよかったんですね。

251:デフォルトの名無しさん
09/06/30 15:48:50
>>234
とりあえず、中心極限定理の場合
URLリンク(kansai2channeler.hp.infoseek.co.jp)

正規乱数に変換する部分を書き換えれば、ボックスミュラーの方にも使えるっしょ。
ヒストグラムはカウントだけしておいて、EXCELで処理ってことで。


252:デフォルトの名無しさん
09/06/30 15:51:31
>>244
全部まとめて、こんな感じで。動作は保障しない。ソースの整形はご自分で!
#include <stdio.h>
#include <stdlib.h>
void swap(int* a,int* b){int T=*a;  *a = *b *b = T;}
void InitCard(int* Card,int N){int i=0; for(i=0;i<N;i++) Card[i]=i+1;}
void Shuffle(int* Card,int N){int i=0;  for(i=0;i<N;i++) swap(&Card[i],&Card[rand()%N]);}
int main(){
    int Card[52];
    int i=0;
    char* Number="A23456789TJQK";
    char* Mark="shdc";
    srand(0);
    InitCard(Card,52);
    /****************No.1**********************/
    Shuffle(Card,52);
    for(i=0;i<52;i++) printf("%d ",Card[i]);
    printf("\n\n");
    /****************No.2**********************/
    InitCard(Card,52);
    for(i=0;i<52;i++) printf("%d:%c ",i,Number[(Card[i]-1)%13]);
    printf("\n\n");
    /****************No.3**********************/
    InitCard(Card,52);
    for(i=0;i<52;i++) printf("%c%c ",Number[(Card[i]-1)%13],Mark[(Card[i]-1)/13]);
    printf("\n\n");
    return 0;
}

253:デフォルトの名無しさん
09/06/30 15:52:01
すみません。
もう1つ質問なのですが、
無限ループでとある計算を行い、
xが10の-10乗より小さくなったときに無限ループを脱出するプログラムを作りたいのですが、

if(x < 1.0e-10)
break;

では、コンパイルエラーが出ました。
ここは、やはり

if(x < 0.0000000001)

と、書くしか方法はないのでしょうか?

254:デフォルトの名無しさん
09/06/30 15:53:48
>>253
無限ループは何で実現してるの?

255:デフォルトの名無しさん
09/06/30 15:56:24
>>525
ソース詰めてるときにセミコロン消しちゃった。申し訳ない。
正しくは以下。
void swap(int* a,int* b){int T=*a;  *a = *b; *b = T;}

256:デフォルトの名無しさん
09/06/30 15:56:51
すみません。
While(1)
です

257:デフォルトの名無しさん
09/06/30 16:02:36
>>252
上が駄目で下がOKならそういうことではないかと
ただなぜかといわれると規格とかの話になりそうなので詳しくはわかりませんが。
制御文には指数は使えないのかも

258:デフォルトの名無しさん
09/06/30 16:10:54
>>192 お願いします。

259:デフォルトの名無しさん
09/06/30 16:16:22
>>253
これをコピペしてもダメ?(必ずコピペで)
コンパイラは何使ってるの?
#include<stdio.h>

int main(void){
double x=1;

while(1){
if(x < 1.0e-10) break;
x/=10;
}
printf("%.15f\n", x);
return 0;
}

260:デフォルトの名無しさん
09/06/30 16:45:24
#include <stdio.h>
int main()
{
int a;
int b = 1, c = 0;
scanf("%d",&a);
while(b <= a){
b *= 2;
c++;
}
printf("2の%d乗より小\n", c);
return 0;
}
で"5"や"6"なら"2の3乗より小"など正しい答えが出るのですが、
2の乗数である"4"や"8"を入れると"4"で"2の2乗より小"、"8"で"2の3乗より小"と出てしまいます。
どうすればいいでしょうか。

261:デフォルトの名無しさん
09/06/30 16:49:19
>>260
printf("2の%d乗より小\n", c);



if(b == a)
{
  printf("2の%d乗と同じ\n", c);
}
else
{
  printf("2の%d乗より小\n", c);
}


262:デフォルトの名無しさん
09/06/30 16:54:44
while (b < a)
なら a = 4 の時 c = 2 だけど

while (b <= a)
だと a = 4 の時 c = 3 にならない?

printf の文意も 与えた値よりも必ず大きい2の累乗数 を求めてるっぽいし

263: ◆/91kCCQXBo
09/06/30 17:13:56
#include <stdio.h>
int main()
{
  int a;
  int b = 1, c = 0;
  scanf("%d",&a);
// while(b <= a)
  while(b < a)
  {
    b *= 2;
    c++;
  }
  printf("%d は 2の%d乗 か、若しくは 2の%d乗 以下の数値である\n", a, c, c);
  return 0;
}

264:デフォルトの名無しさん
09/06/30 17:31:27
>>244
ポインタ配列にこだわってみた。
こんなんもどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

265:--
09/06/30 17:43:08
>>172 >>93 >>前930
>プロンプトを現在の”mysh[9]”といったものから”ユーザ名@mysh[9]”
URLリンク(kansai2channeler.hp.infoseek.co.jp)

266:デフォルトの名無しさん
09/06/30 17:59:37
質問させてください。

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

上記のプログラムを組みましたが、N=65000以上になるとセグメンテーション違反を吐き出します。
N=65000以下なら問題なく動きます。
どこが原因かを教えてもらえませんでしょうか・・・。

OS:ubuntu9.04
コンパイラ:gcc 4.3.3
言語:C

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


267:デフォルトの名無しさん
09/06/30 18:01:28
スタックオーバーフローかと

268:デフォルトの名無しさん
09/06/30 18:03:25
とりあえずでかい配列をローカルにとらないほうがいい

269:デフォルトの名無しさん
09/06/30 18:05:04
1つの変数に30Gバイト割り当てて(それが10個以上)コンパイルを
通すコンパイラも問題ありかと。
現実時間で動作するとはその時点で思えない。

270:267
09/06/30 18:07:40
int N=65000,M=3,n,j,l,k;
double R[N],r[N][M],S[N],s[N][M],x[N],y[N],A[N][M],q[N][M],z[M],sig[M],thi[M],tmp,a,b,c;

double は一つで8バイトなんで相当大きな領域をスタックという場所に確保しようとします。
まあそれが大きすぎておかしくなってます。

解決方法としては
1)staticをつけて確保
2)Nが関係してる配列はmallocを使って動的に確保する

271:266
09/06/30 18:11:42
>>267-270
勉強になります。ありがとうございました。

272: ◆/91kCCQXBo
09/06/30 18:29:36
>>216 データを削除し,新ファイルに保存する
URLリンク(kansai2channeler.hp.infoseek.co.jp)

273:デフォルトの名無しさん
09/06/30 18:44:07
[1] 授業単元: 数理計画法
[2] 問題文(含コード&リンク): シンプレックス法のプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 2009年7月1日
[5] その他の制限: プログラムの授業で習うことはすべてやりました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のようなプログラムをつくたんですがこの先が悩んでいます。どなたかお願いします。


274: ◆/91kCCQXBo
09/06/30 20:17:21
>>217 氏名と電話番号を,レコード単位にバイナリデータで読み書きする
URLリンク(kansai2channeler.hp.infoseek.co.jp)

275:デフォルトの名無しさん
09/06/30 20:25:58
[1] 授業単元:C言語の基礎
[2] 問題文:年(西暦)、月、日を入力し、入力した、日時の曜日及び、経過した日数を表示したプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7月2日まで
です。うるう年が100年に一度来ないというので分からなくなってしまいました。
よろしくお願いします。

276:デフォルトの名無しさん
09/06/30 20:29:04
>>275
がんばれ
URLリンク(ufcpp.net)

277:デフォルトの名無しさん
09/06/30 20:35:29
>>275
4で割り切れて、なおかつ100でも割り切れる時はうるう年として扱わないといった
具合の条件処理をすればいいと思うよ。

278: ◆/91kCCQXBo
09/06/30 20:41:59
>>275 逆に日数指定のC言語
>前スレ675氏のプログラム、
URLリンク(kansai2channeler.hp.infoseek.co.jp)

279:デフォルトの名無しさん
09/06/30 21:12:28
条件曖昧なのを良い口実に Win32API で計算したのが上がってた

さらに 標準の time 系関数群で計算しようとして
何処かで仕様の壁で(1単位が秒ではない系?) 良い線までいくものの ぎりぎりアウト とか

そういう記憶があるが、宿題スレだったか定かではない

280:275
09/06/30 21:32:20
色々試してみたのですが、エラーばかりになってしまいます。
自宅でのコンパイラはLSI C-86を使用しています。

もう提出までに時間が無いので、出来ましたら回答のほどよろしくお願いします。


281:デフォルトの名無しさん
09/06/30 21:52:18
>>243
URLリンク(kansai2channeler.hp.infoseek.co.jp)

282:デフォルトの名無しさん
09/06/30 22:05:14
>>280
LSI-C 86なんて過去の遺物を使うんじゃない

どうせ環境はWindowsなんだろ?LongFileNameに対応している
必要があるし、DOSのコマンドプロンプトはレガシーx86のマシン語は
もはや動かない環境もある

283:デフォルトの名無しさん
09/06/30 22:15:59
>>275
経過した日数っていつからの経過日数?

284:275
09/06/30 22:26:25
>>282
他のソフトを探して見ます。

>>283
入力をした日からです。

285:275
09/06/30 22:28:50
>>283
書き方が微妙でした。
入力で指定した日からです。


286:デフォルトの名無しさん
09/06/30 22:30:42
#include <stdio.h>
#include <math.h>

double func(double x,double y)
{
return y/(2.0*x);
}

int euler(double x0,double y0,double xx,int num)
{
int i; double h,y1,k1,k2;
h=(xx-x0)/(double)num;
for(i=0;i<num;i++){
k1= h*func(x0,y0);
y1 =y0 + k1;
k2 = h*func(x0+h,y1);
y0= y0+(k1+k2)/2;

printf("%4.1f %9.6f %9.6f %9.6f\n",x0,y0,sqrt(x0),fabs(y0-sqrt(x0)));
}
return 0;
}

int main(void)
{
euler(1.0,1.0,2.0,10);
return 0;
}
このプログラムをどう変えればルンゲクッタ法のプログラムが出来ますか?

今週の金曜までにお願いします

287:デフォルトの名無しさん
09/06/30 22:36:30
>>286
テンプレくらい読もうな

288:デフォルトの名無しさん
09/06/30 22:38:14
>>285
「入力で指定した」日時から「入力した」日時までの経過日数ね。

289:275
09/06/30 22:39:13
>>288
その通りです。
分かりづらくてすいません。

290:デフォルトの名無しさん
09/06/30 22:43:43
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日
[5] その他の制限: ポインタまで習いました。問2はできればで結構です。

291:デフォルトの名無しさん
09/06/30 23:02:30
てst

292:デフォルトの名無しさん
09/06/30 23:14:11
[1] 授業単元: コンピュータアーキテクチャ
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C++
[4] 期限: 7/4 15:00
[5] その他の制限: 講義でC++を習っていないので、制限は特になしで構いません。キャッシュに読み書きするごとにHitかMissかがわかればいいです。

293:デフォルトの名無しさん
09/06/30 23:35:39
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: ?
 [3.3] 言語: C
[4] 期限: 7/2
[5] その他の制限: 乱数関数とswitch文は習いましたがどうすればいいのかわかりません。
よろしくお願いします。

294:デフォルトの名無しさん
09/06/30 23:41:10
ふむ・・・・

295:275
09/06/30 23:45:20
何とか解決できました!!
皆さんありがとうございました。

296:デフォルトの名無しさん
09/06/30 23:45:23
[1] 授業単元: プログラミング応用Ⅲ
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Cmachine
 [3.3] 言語: C
[4] 期限: 7月1日の16時頃
[5] その他の制限: 問題文に記述

よろしくお願いします。



297:デフォルトの名無しさん
09/06/30 23:46:16
>>293
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int n;

srand(time(NULL));

n = rand() % 52;

switch(n / 13) {
case 0: printf("スペードの");break;
case 1: printf("ダイアの");break;
case 2: printf("ハートの");break;
case 3: printf("クラブの");break;
}
printf("%d\n", n % 13 + 1);

return 0;
}

298:デフォルトの名無しさん
09/07/01 00:16:03
[1]授業単元:データ構造2
[2]問題文 二分木です: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:Windows
[3.2]gcc
[3.3]Cです
[4]期限: 7月2日午後5までです。
[5]その他の制限:ある程度習いました。けど未だわからず終いです

299:デフォルトの名無しさん
09/07/01 00:48:29
>>295
えっと、400で割り切れるときはやっぱりうるう年、というルールは盛り込まれたのかな

300:デフォルトの名無しさん
09/07/01 00:48:34
[1]授業単元:C言語
[2]問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:Linux
[3.2]gcc
[3.3]C
[4]期限:7月1日午前4時
[5]その他の制限:なし

超難関で自分にはできません(__;)
明日早朝提出のレポートなのであせってます、、、
どなたかお願いします!!!!

301:デフォルトの名無しさん
09/07/01 00:49:37
大丈夫そうだったごめん。

302:デフォルトの名無しさん
09/07/01 00:50:19
>>300
というかあと3時間じゃん

303:デフォルトの名無しさん
09/07/01 00:57:24
現段階での最新のソースと、今使ってる環境(ディストリビューション)
およびコンパイラのバージョンをあげることはできますか

304:300
09/07/01 00:58:53
>>302
大学の講義が明日の朝なのですが、家から大学までが遠いので朝早く出なきゃいけないんです(__;)
でもいまだに理解できなくて、、、

305:デフォルトの名無しさん
09/07/01 01:08:56
まだかな

306:デフォルトの名無しさん
09/07/01 01:44:36
[1]授業単元:C言語
[2]問題文: WAVファイルのデータチャンクを読み込み、違う(copy.wav等の)ファイルに出力せよ。
[3]環境
[3.1]OS:windows cygwin
[3.2]gcc
[3.3]C
[4]期限:7月2日午前0時
[5]その他の制限:

wavファイルをフォーマットで読み込むということが理解できません。
mmio関数を使わずに、チャンク構造が理解できるようなプログラムを教えてください。


307:デフォルトの名無しさん
09/07/01 01:46:50
>>306
URLリンク(www.kk.iij4u.or.jp)

308:307
09/07/01 01:54:01
補足
wavファイルだろうがなんだろうが所詮は単なるバイナリデータにすぎません。
wavファイルのヘッダー部分も構造体をそのまま書き出した物(注1)ですし
チャンクとか言ってますがその辺の情報も同じです。

注1:1バイト以上の場合はエンディアンに注意

309:デフォルトの名無しさん
09/07/01 02:28:46
>>308
ありがとう、朝までやってみてまだ理解できなかったらもう一度質問してみるよ。

バイナリデータの読み込みでfopenのとき"rb"しても数値じゃないものが出力されるんだ。
ちなみにエンディアンて何のこと?

310:デフォルトの名無しさん
09/07/01 02:36:29
URLリンク(www.ertl.jp)

311:デフォルトの名無しさん
09/07/01 02:59:04
>>290
問1だけやってみたけど、間違ってたらごめん。
アップローダがうまく使えないから、livedoor掲示板に貼り付けた。
↓のレス番号2
URLリンク(jbbs.livedoor.jp)

312:デフォルトの名無しさん
09/07/01 03:01:05
>>300
こういうのはアルゴリズム辞典とか見ないと書けんよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

313:300
09/07/01 03:18:04
>>312
うぁぁぁぁあ
ありがとうございます!m(__;)m
アルゴリズム辞典なんて考えもありませんでした(汗)、、、

ほんとにありがとうございます!!!

314:デフォルトの名無しさん
09/07/01 08:02:37
>>296
誰かお願いします~

315:デフォルトの名無しさん
09/07/01 08:30:31
>>204
すいません、>>204はyaccなのですが、どなたかできる方がいらっしゃったらお願いします。
どこで聞けばいいのかわからなくて・・

316:デフォルトの名無しさん
09/07/01 12:18:31
>>273

お願いします。

317:デフォルトの名無しさん
09/07/01 12:38:53
>>134
お願いします。

318: ◆/91kCCQXBo
09/07/01 12:50:27
>>290 問2 点数で順位付けするプログラム
URLリンク(jbbs.livedoor.jp)

319:デフォルトの名無しさん
09/07/01 14:57:27
>>204
URLリンク(kansai2channeler.hp.infoseek.co.jp)

yaccのみで、yylexは自分で実装(lexを使わない)で良いんだよね?

320:デフォルトの名無しさん
09/07/01 15:11:30
>>134
>>317
input,output,実装方法の想定ができる程度の情報がないと、
どう作って良いかわからなくて、誰もやってくれないと思うよ。
講義で使ったベースになるソースをサンプルで付けるとか。

321:デフォルトの名無しさん
09/07/01 15:52:41
<<183
ありがとうございます。
動かしてみます

322:デフォルトの名無しさん
09/07/01 17:23:26
>>281
遅くなりましたが、ありがとうございました

323:デフォルトの名無しさん
09/07/01 17:45:02
[1]授業単元:C言語
[2]問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1]OS:Windows
[3.3]C
[4]期限:7月5日午前10時まで
[5]その他の制限:なし

お願いします。

324:デフォルトの名無しさん
09/07/01 17:47:46
>>298
とりあえずデータはmain()の中で決め打ち
ファイルから読み込ませたいなら、fopen()とか使って適当に書き換えて
URLリンク(kansai2channeler.hp.infoseek.co.jp)

325:デフォルトの名無しさん
09/07/01 18:09:50
>>323
URLリンク(kansai2channeler.hp.infoseek.co.jp)

326:デフォルトの名無しさん
09/07/01 18:24:19
>>325
あざすっ(u_u)o〃

327:デフォルトの名無しさん
09/07/01 19:39:29
>>319
その通りです。ありがとうございました!

328:デフォルトの名無しさん
09/07/01 20:47:08
【質問テンプレ】
[1] 授業単元:プログラミング入門2
[2] 問題文
list1.datから名前・身長・体重を構造体に読み込み、BMI関数にてBMI値をI計算してlist2.datに書き込む。
[list1.dat]
名前 身長 体重
[list2.dat]
名前 身長 体重 BMI
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Visualstudio2008
 [3.3] 言語: C
[4] 期限: 7月3日

どうかよろしくおねがいします・・。

329:デフォルトの名無しさん
09/07/01 20:48:30
>>296
時間切れだけどよかったらどうぞ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

330:デフォルトの名無しさん
09/07/01 20:50:42
>>328
身長と体重の数値型は?
BMIも何の数値型で出せばいいのかな?
あと区切り文字は半角スペースでおk?

331:デフォルトの名無しさん
09/07/01 20:53:30
>>330
身長体重BMIはdouble型で、区切り文字は半角スペースです。
おねがいします・・。

332:デフォルトの名無しさん
09/07/01 21:16:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:7/2
[5] その他の制限:お願いします

333:デフォルトの名無しさん
09/07/01 21:29:14
[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] その他の制限:

334:デフォルトの名無しさん
09/07/01 21:33:22
>>333
昨日くらいにこっちでみたなw
C言語なら俺に聞け(入門篇) Part 50
スレリンク(tech板)

335:デフォルトの名無しさん
09/07/01 21:45:11
>>333
偶数のとき、星をどう書くかわからん
真ん中を2重にすればいいのかな?たとえば8ならこうとか
*    **    *
  *  **  *
    ****
********
********
    ****
  *  **  *
*    **    *

336:デフォルトの名無しさん
09/07/01 21:49:27
>>333ですが星形で奇数の場合は表示しない。
です。書き忘れました申し訳ありません

337:デフォルトの名無しさん
09/07/01 22:01:49
>>328
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

338:デフォルトの名無しさん
09/07/01 22:20:35
>>332
こんなんでよろし?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

339:デフォルトの名無しさん
09/07/01 22:20:52
>>337
本当にありがとうございますっ。
感激です。

340:デフォルトの名無しさん
09/07/01 22:28:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました


341:デフォルトの名無しさん
09/07/01 22:40:50
>>328
自分もやってみたが、>>337さんのがかっこいいね
URLリンク(jbbs.livedoor.jp)

342:デフォルトの名無しさん
09/07/01 23:46:00
何度もすいません>>333です。
問題文と>>336はミスがありましたのでスルーしてください。
レスくださった方申し訳ないです。

[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] その他の制限:

343:デフォルトの名無しさん
09/07/01 23:59:02
>>341 君間違えてる気がする。
> >>328
> 自分もやってみたが、>>337さんのがかっこいいね
>>332
自分もやってみたが、>>338さんのがかっこいいね

URLリンク(jbbs.livedoor.jp)
> 間違ってたらゴメン

344:デフォルトの名無しさん
09/07/02 00:00:08
>>338,343
ありがとうございます

345:デフォルトの名無しさん
09/07/02 00:05:12
>>340
できるだけ、コンパクトには書いてみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

346:デフォルトの名無しさん
09/07/02 00:16:20
>>340
だいぶゴチャゴチャしてしまった。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

347:340
09/07/02 00:19:19
>>345
コンパクトにしてくれてありがとうございます!

348:デフォルトの名無しさん
09/07/02 00:24:55
篩の問題としては微妙な問題だな。

349:デフォルトの名無しさん
09/07/02 00:36:01
>>346
自分で実行してみた?

350:デフォルトの名無しさん
09/07/02 00:39:06
>>349
もう何回も動かしとるよ

351:デフォルトの名無しさん
09/07/02 00:45:03
>>350
じゃあ、正常に動いてるのは偶然だって理解してる?

352:デフォルトの名無しさん
09/07/02 00:47:15
>>351
まじっすか。
どの辺だか教えていただけると助かります。

353:デフォルトの名無しさん
09/07/02 00:49:28
初期化してない配列に対して、*s!=-1をループ終了条件にしてるとこ。

354:346
09/07/02 00:54:29
>>353
我ながらこれはひどい。

教えてくれてありがとう。

355:デフォルトの名無しさん
09/07/02 00:56:45
[1] 授業単元:デジタル信号
[2] 問題文:wavファイルをダウンサンプリングせよ
[3] 環境
 [3.1] OS:Windows
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 今日のAM9:00
[5] その他の制限:現在のサンプリング周波数の1/2にダウンサンプリングさせたらエイリアシングが起きるのでその周波数成分を除去したいが、
wavファイルは8bitでの場合、データの内容が0~256なのですが、どのようにサンプリング周波数と比べたらよいのでしょうか?


for(i=0; i<snd->datanum; i++){
if(snd->sounddata[i] > snd->samplingrate*4){
snd->sounddata[i] == snd->sounddata[i]/2;
printf("count %d\n",i);
}
if(i%2 == 0){
snd->monaural8[i] = 0;
}

356:デフォルトの名無しさん
09/07/02 01:00:09
>>355
なんかすげーな
そういう専門なのか?
以前見つけた資料あるので待って

357:デフォルトの名無しさん
09/07/02 01:03:50
おまた
URLリンク(www.madlabo.com)
この最後の方にダウンサンプリングの解決方法とか載ってる

358:デフォルトの名無しさん
09/07/02 01:05:55
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.3] 言語: C
[4] 期限: 7月2日9:00〆
[5] その他の制限: ポインタと配列までは学習しました。

359:デフォルトの名無しさん
09/07/02 01:26:56
>>357
ありがとうございます。まさに内容はコレなんですが、実装するさいにどのように比較するかがわからないんですよね。
私の持っている音サンプルだと、例えばサンプリング周波数は22050なんで、44100以上の周波数はアウトなんですよ。それをさらにサンプリング周波数を半分に落としたいんですよね。
ですけど、もともと音のデータは256でしか表現されてないんですよ、256=44100ではないですよね?(128で無音らしいです)。ではどのように比較すればよいのでしょうか?
という質問です。

大変参考になりそうなのですが、できれば比較部分のソースが欲しいですね。
ちなみに、この分野に着手したばかりなので無知ですが専攻はこっち系ですね。。

360:デフォルトの名無しさん
09/07/02 01:29:51
>>359
サンプリング周波数は横軸としてみた場合サンプルビットは縦です

振幅する波の幅を記録するしてるだけです

361:デフォルトの名無しさん
09/07/02 01:33:02
>>359
振幅と周波数を比較することに意味は無いよ

362:デフォルトの名無しさん
09/07/02 01:37:13
サンプリング周波数が何かとかサンプリングビットが何かというのをきっちり理解した方がいい
URLリンク(www.apec.aichi-c.ed.jp)

363:デフォルトの名無しさん
09/07/02 01:37:39
>>360
>>361
縦軸は振幅とな??
では周波数はどのように表現がなされているのですか??

364:デフォルトの名無しさん
09/07/02 01:40:19
>>359
詳しく見てないから的外れだったらごめん。と、先に謝っておく。
サンプリング周波数と音のデータを勘違いしているような気がする。
サンプリング周波数は「1秒間の音をいくつのデータで表現するか」
音のデータは「ある瞬間の音を数値化したもの」
あと、
>サンプリング周波数は22050なんで、44100以上の周波数はアウト
標本化定理からして数値が逆だと思う

365:デフォルトの名無しさん
09/07/02 01:40:33
>>363
よそへ行って勉強してくればよろし

366:デフォルトの名無しさん
09/07/02 01:41:03
>>363
サンプリング周波数と周波数は別よ

サンプリング周波数というのは1秒間あたりの音の変化を
44100に分割する

でその分割した波の高さを所定のビット幅に収めるのが8bitとか16bitってこと

367:デフォルトの名無しさん
09/07/02 01:41:57
>>366
>44100に分割する
44100などで分割する

368:デフォルトの名無しさん
09/07/02 01:42:25
>>329
ありがとうございます。


でも、ファイル間違えてるみたいで…それで、9628見つけたんですが、文字化けが…

もう一度貼っていただけないでしょうか?

369:デフォルトの名無しさん
09/07/02 01:44:49
>>368
文字エンコードが違うだけじゃね

370:デフォルトの名無しさん
09/07/02 01:49:44
こっちにいいのがあったわ
URLリンク(www.amei.or.jp)

371:デフォルトの名無しさん
09/07/02 01:50:18
>>364~367
エイリアシングの条件は逆でしたね。

うーん、音データを1飛ばしで無音にするのとは何が違う??

372:デフォルトの名無しさん
09/07/02 01:55:04
>>357を読めよ
ただ単に答えが欲しいだけだろ

373:デフォルトの名無しさん
09/07/02 01:56:26
配布されたソースがあるなら全部うpするよろし
エスパーして考えると
for(i=0; i<snd->datanum; i++){   「snd->datanum」が1秒間の分割数
  if(snd->sounddata[i] > snd->samplingrate*4){  サンプリング周波数の4倍より大きい場合?
    snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
    printf("count %d\n",i);
  }
  if(i%2 == 0){  偶数の時は
    snd->monaural8[i] = 0;  何かを0にする
  }
forが閉じてないよ!?

サンプリング周波数を半分に落とすだけなら
信号値を抜く(飛ばす)ことはあっても信号値を変化させること(3行目)はないはず

374:デフォルトの名無しさん
09/07/02 01:57:05
ダウンサンプリングは要するに音声データ圧縮技術の一部で、まだ(幾らかは)
動いている研究分野だと聞いたことがある。
宿題だとしてもどーしてもC言語で書かなければならないという必然性が見いだしにくい。
ひとえに理論だとかライブラリがどの程度揃っているかに依存する問題じゃないかと。
そういうスペシフィックで流動性が高い(というか最終的には主観的価値評価が)含まれる
問題はここで聞かれても最善の回答が出てくることはあんまし期待しないほうがいいかも。

375:デフォルトの名無しさん
09/07/02 01:57:11
>>357の42pにダウンサンプリングの具体例があってデシメーションフィルタを通すって書いてあるじゃん

376:デフォルトの名無しさん
09/07/02 01:58:34
>>373
snd->sounddata[i] == snd->sounddata[i]/2;  信号値を半分にする?
これは半分にしないw
こではサンプリング周波数で切り刻んだ波形の振幅だw

377:デフォルトの名無しさん
09/07/02 02:01:12
>>368
あれ?URL間違えて書いてたのか・・・。
正しくは以下で。まぁもう自力で見つけちゃってるみたいですが。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
文字コードはUTF-8です。

378:デフォルトの名無しさん
09/07/02 02:04:51
>>376
「==」に気づかんかったwww orz
ついでに信号値=振幅のつもりだったんだけど通じんかったか

>>355
>周波数成分を除去したいが、
なら信号値(サンプリング周波数で分割した波形の振幅)をあれこれするわけか
>>373の下2行は忘れてくれ

379:デフォルトの名無しさん
09/07/02 02:08:10
>>372~375
答えが欲しいのです。考え方が理解できていないのでプログラムを書いてみようと思ったのですが、
当然理解できていないので詰まってしまったのでここで聞いてみたのです。
サンプリング周波数は特定の点に限ればツールを使用すればダウンサンプリングも出来てしまうのですが、
それだと趣旨と異なりますね。。

最初に晒したソースはチグハグでしたね。
4倍というのは、エイリアシングの条件を逆だと勘違いしたので、もともと2倍までOK、なら半分ならその4倍までOKと
思ってしまったのです。
何かを0にする、というのは量子化された値を0にすれば(つまり1個おきにデータをとれば)どうなるのかなと思いました。
ちなみにそれならば0よりも128の無音にしたほうが妥当ですね。

えと、1個おきにデータを取得すると、データが半分になり、再生時間も半分になるじゃないですか。
その点はどうすればいいのでしょうか?


380:デフォルトの名無しさん
09/07/02 02:13:59
>>379
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
その代わり自分でも質問したようにノイズがでるからフィルターを通す必要があるんだよと・・・

ちょっとかじって勉強した程度なんでフィルタ部分はどうロジック化すればいいかわからんw

381:デフォルトの名無しさん
09/07/02 02:17:23
あ、ごめん
奇数でも偶数でもいいのでサンプリングされたデータを8bitなら中央の128 16bitなら0にすればいい
これは忘れて

サンプリングを間引けばいい

wavのヘッダにサンプリング周波数とかをちゃんと入れておけば再生時に
その数字を見てあわせてくれるから。

382:デフォルトの名無しさん
09/07/02 02:23:25
一個おきにデータ破棄をしてみたら、やはり2倍速(再生時間が半分)で再生されました。
ここは削った値に前後の割った値を入れてらどうなるかなとも思うんですが、そうすると
サンプリング周波数がそのままでただ音質を劣化させただけになると思うんですよ。

>>380
音声データ数(再生時間に影響??)はそのままにするには無音にするべきなんですか?
一度してみたらキーンという音が発生します。。



383:デフォルトの名無しさん
09/07/02 02:24:23
>>377
無事に見れました!

かなり難しかったのでこれ見ながらまた勉強したいと思います。
ありがとうございました。

384:デフォルトの名無しさん
09/07/02 02:24:40
>>382
ヘッダを書き換えろよwww

385:デフォルトの名無しさん
09/07/02 02:26:18
>>382
だからー

44.1khzを22.05khzにデータを削ったらヘッダの情報も書き換えないと駄目だってw

386:デフォルトの名無しさん
09/07/02 02:27:35
>>358
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

387:デフォルトの名無しさん
09/07/02 02:33:09
wavのファイルフォーマットはこんな感じね
URLリンク(www.kk.iij4u.or.jp)
・サンプリングレート
・データ速度 (Byte/sec)
のところをダウンサンプリング後の数字にすればいい

そうすれば再生側がここを元にタイミング調整するから

388:デフォルトの名無しさん
09/07/02 02:33:51
>>384
おお、出来そうです!!

ちなみに、LPFを通すというのはどういう作業になるのでしょうか??


389:デフォルトの名無しさん
09/07/02 02:34:11
あと

data チャンクの波形データのバイト数か

390:デフォルトの名無しさん
09/07/02 02:34:54
>>388
さすがにその辺はこのスレに専門でやってるやつはいないと思うw

391:デフォルトの名無しさん
09/07/02 02:38:39
LPFのソースあったわ
URLリンク(tosa.mri.co.jp)


392:デフォルトの名無しさん
09/07/02 02:38:41
>>390
いたらだめかな…。

393:デフォルトの名無しさん
09/07/02 02:40:46
もういっちょ
URLリンク(www.geocities.jp)

394:デフォルトの名無しさん
09/07/02 02:41:29
>>392
じゃあ頼むわ
俺も勉強してー


395:358
09/07/02 02:45:40
>>386文字化けが><

396:デフォルトの名無しさん
09/07/02 02:46:04
>>392
心強い。そしてここのスレの人、ありがとう。

だが、データ数を単純に半分にしてみたら、波形が線になっちゃったよ。
再生秒数がもともと6秒とかだったのが0.001とかのレベル。

ヘッダに入れるデータサイズはサンプル数*(チャンネル数*bit数/8)では?
それならばサンプル数を2で割るだけでおkかと思っていたんですが違うのでしょうか??

397:デフォルトの名無しさん
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



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