C/C++の宿題片付けま ..
219:211
09/06/30 00:16:01
if(a < b)
{
__cout("aはbより小さいです\n");
}
else
{
__a = a + b;
}
if(m == 'a')
__cout("aが格納されています\n");
}
else
{
__printf("\'a\'でない文字が格納されています\n");
}
if(a < b)
{
__cout("aはbより小さいです\n");
}
else if(a == b)
{
__cout("aとbは等しいです\n");
}
else
{
__cout("aはbより大きいです\n");
}
じゃあこれをフロートチャートにしてくれませんか?誰でもいいので。
220:デフォルトの名無しさん
09/06/30 00:40:35
>>219
フローチャートを書くためのツールをください
221:デフォルトの名無しさん
09/06/30 00:56:03
>>203
ライブラリうp記念にやってみた
問1 URLリンク(kansai2channeler.hp.infoseek.co.jp)
問2 URLリンク(kansai2channeler.hp.infoseek.co.jp)
222:デフォルトの名無しさん
09/06/30 00:56:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C言語
[4] 期限: 7月2日9時
[5] その他の制限: ポインタと配列まで習いました
223:デフォルトの名無しさん
09/06/30 01:02:23
>>218
こんなんでどうでしょ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
224:デフォルトの名無しさん
09/06/30 01:20:28
>>222
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int **p, n, i, j;
printf("何段表示しますか?: ");
scanf("%d", &n);
p = calloc(n, sizeof(int*));
for(i=0; i<n; i++) p[i] = calloc(i+1, sizeof(int));
for(i=0; i<n; i++) {
for(j=n-1; j>i; j--) printf(" ");
p[i][0] = p[i][i] = 1;
for(j=1; j<i; j++) p[i][j] = p[i-1][j-1] + p[i-1][j];
for(j=0; j<=i; j++) printf("%3d ", p[i][j]);
putchar('\n');
}
for(i=0; i<n; i++) free(p[i]);
free(p);
return 0;
}
225:222
09/06/30 01:50:15
>>224の通りに打ち込んでもうまく出来ませんでした><
どうしてなんでしょう?
226:デフォルトの名無しさん
09/06/30 02:20:14
>>225
エラーの内容をコピペしてみて。
227:デフォルトの名無しさん
09/06/30 02:20:22
>>225
>>224さんではないですがどんなエラーが出たんでしょうか?
私もコンパイルしてみましたがunknown escape sequence:'\216'と言うエラーが出たので、そこだけ修正してちゃんと動作しました
>>224さんの空白文字を修正をしたものを張っておくのでもしよければどうぞURLリンク(ja.pastebin.ca)
228:デフォルトの名無しさん
09/06/30 02:31:44
>>225
codepadで確認したけど、エラーでなかったよ
URLリンク(codepad.org)
(入力部分だけ変更してあるので注意
ついでに35段目でオーバーフローすることを確認したw
229:デフォルトの名無しさん
09/06/30 02:57:33
半角スペース省略回避の&nbsp;が悪さしてんのか?
230:デフォルトの名無しさん
09/06/30 06:50:57
>>223
ありがとうございます。
まだ習ってない部分もありますが
解読してみようと思います
231:デフォルトの名無しさん
09/06/30 07:12:58
>>208お願いします。
232:222
09/06/30 08:33:36
正しくコンパイルできてエラーは出ませんでしたが
数字を入力したあとになにも表示されませんでした。
今教えてもらったプログラムを解読しているとこです。
233:デフォルトの名無しさん
09/06/30 09:47:26
>>227
sjisだと漢字の`表'は0x955cになるが、0x5cはASCIIでは`\'だから、
その次の文字`示'(0x8ea6)の0x8e(\216)がエスケープシーケンスにされちゃうんだよ。
$ od -tx1z -Ax foosjis.c | grep -1 '5c 8e'
000050 0a 0d 0a 70 72 69 6e 74 66 28 22 89 bd 92 69 95 >...printf("...i.<
000060 5c 8e a6 82 b5 82 dc 82 b7 82 a9 3f 3a 20 22 29 >\..........?: ")<
000070 3b 0d 0a 73 63 61 6e 66 28 22 25 64 22 2c 20 26 >;..scanf("%d", &<
`表'意外にもこうした問題を起こす文字がsjisにはあるから、ほんと困ったもんだ。
さっさと文字コード統一してくれ。
234:デフォルトの名無しさん
09/06/30 09:51:03
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2009年7月5日12:00まで]
[5] その他の制限: 既存のRAND関数使用不可
1.合同式法による一様乱数を生成する関数
2.ボックスミュラー法による正規乱数を生成する関数
3.平均値を求める関数
4.標準偏差を求める関数
5.ヒストグラムを作成する関数
の5個の関数から構成されるのは分かるのですが、その後どうすれば作れるのか見当もつきません。
宜しくお願い致します。
235:デフォルトの名無しさん
09/06/30 09:53:05
>>233
--input-charset=cp932
とかでググってはどうだろうか
236:デフォルトの名無しさん
09/06/30 10:02:10
>>215
誰か助けてm(__;)m
237:デフォルトの名無しさん
09/06/30 10:02:27
いや、sjisとかcp932とか使わないからどうでもいいんだよ。
ただ変換するコードを書くのが面倒だし毎度変換するだけの無駄なクロックが使われていると思うとね。
さっさと文字コード統一してくれ、といいたくなる。
238:デフォルトの名無しさん
09/06/30 10:21:12
>>199さん
合計と科目別すべて一緒に表示したいときは
どうすればいいですか?
239:デフォルトの名無しさん
09/06/30 10:39:15
文字コードは、英語のAtoZしか使わないから関係ない人へ。
SPACE-> 置換お疲れ。
240:239 ◆/91kCCQXBo
09/06/30 12:02:47
>>186 >>238 成績一覧(選択ソート) 199が選択ソートなので再UP
#include <stdio.h>
#define n 9 /* 生徒の数+1 */
#define m 7 /* 科目の数+2 */
int main()
{
int k, p, S;
int index[n][2];
/* ここからは変更無し */ //char namae[n][5]
/* ここまでは変更無し */ //printf("%6.0f\n",goukei[i]); }
for(k=m-2; k>=0; k--) { /* 科目数のループ */
printf("\n%sの点数で並び替え\n", kamoku[k+1]);
if(k == m-2) for(i=1; i<n; i++) index[i][0] = i, index[i][1] = goukei[i];
else for(i=1; i<n; i++) index[i][0] = i, index[i][1] = seiseki[i][k];
/* 作業用の配列を並び替える(選択ソート) */
for(i=1; i<n-1; i++){
p = i;
for(j=i; j<n; j++)
if(index[p][1] < index[j][1]) p = j;
S = index[i][1], index[i][1] = index[p][1], index[p][1] = S;
S = index[i][0], index[i][0] = index[p][0], index[p][0] = S;
}
for(i=1; i<n; i++) { /* 生徒数のループ */
printf("%s", namae[index[i][0]]);
for(j=0; j<m-2; j++){ /* 科目数のループ */
printf("%6.0f",seiseki[index[i][0]][j]);
}
printf("%6.0f\n",goukei[index[i][0]]);
}
}
return 0;
}
241:デフォルトの名無しさん
09/06/30 13:02:41
>>239
何かを皮肉っているように読めるけど、何を指してるのかよくわからんや
242:デフォルトの名無しさん
09/06/30 13:46:46
>>238
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一番簡単なのは、もう1つ外側でループしてやることかな・・・と。
243:デフォルトの名無しさん
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] 授業単元: プログラミング応用V
[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個おきにデータを取得すると、データが半分になり、再生時間も半分になるじゃないですか。
その点はどうすればいいのでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4981日前に更新/375 KB
担当:undef