C/C++の宿題を片付け ..
751:デフォルトの名無しさん
08/01/29 21:17:12
[1] 授業単元:C言語I
[2] 問題文(含コード&リンク):(元データ:URLリンク(kansai2channeler.hp.infoseek.co.jp)
入.力画.像ファイ.ル名、出.力画.像ファイル名、縦、横の
縮.小率を実行時に与えることが出来るようにすること
以下の場合、エラーメッセージを標準エラーに出力し
て、プログラムを終了させること
・正しくない縮.小率が入力された場合
・入力ファイル名に存在しないファイルが指定された場合
・すでに存在するファイル名が出.力画.像ファイル名に指定さ
れた場合
[3] 環境
[3.1] OS:Linux OpenSuse
[3.2] コンパイラ名とバージョン: すみません確認が分かりませんでした。cc でコンパイルしています。
[3.3] 言語: C
[4] 期限: [2008年01月31日17:00まで]
[5] その他の制限: 簡単な例について,プログラミングの基礎知識,変数と式,制御の流れ,関数,配列,文字列,ポインタ,構造体とユーザ定義型,ファイルです。
基本的に初心者からの講座ですので使えることは多くありません。元プログラムを見ていただければ程度が分かると思います。
問題文で不自然に'.'が入っているのは,万が一検索されたときの対策です。
気を悪く思ったかもしれません。すみません。
もしスレを監視していたら意味もないですが;
752:デフォルトの名無しさん
08/01/29 21:22:20
丸投げしといて見つかりたくないか。そうか。
753:デフォルトの名無しさん
08/01/29 21:25:30
姿勢が気に食わないな。
754:デフォルトの名無しさん
08/01/29 21:44:19
完全に駄目元で言ってるな。
755:デフォルトの名無しさん
08/01/29 21:48:30
問題文のコメントも文字化けしてワロタ。
756:デフォルトの名無しさん
08/01/29 21:50:57
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):除算計算のプロセス改良 詳細→(URLリンク(kansai2channeler.hp.infoseek.co.jp))
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:visual C++
[3.3] 言語: C++
[4] 期限:2/4
[5] その他の制限: 演算子/使用不可。
ヒントが詳しくあり、その通りにするだけだと思うのですができず。
問題と試しに作ったのを同梱したので添削してもらえると助かります。
757:デフォルトの名無しさん
08/01/29 22:15:24
>>756
fdivrsub()内の1行目、if()の条件式
(powb <= a << (powb+powb)) を if ( a < ( powb+powb )) にしたらいいんじゃない?
758:デフォルトの名無しさん
08/01/29 22:25:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ある海賊団(総員10名)が100枚の金貨を手に入れた。
そこでみんなで分けようとしたが、この海賊団には以下の分配ルールがある。
一番年長の海賊(ボス)が誰に何枚割り振るかを決める。
ボスも含めたみんながその割り振りに賛成か反対か投票をする。
半数以上の賛成で可決される。ただし、賛成が半数未満ならボスは処刑され、
新たなボスがまた分配方法を決める。(10人は年が違うので新ボスを誰にするかでもめることはない)
と、決まるまでこれが繰り返される。
そしてこの海賊団員の特徴として、
みんな限りなく賢く、それぞれみんなが賢いことも知っている。
みんな自分の命は一番大事。次に大事なのは金貨。だが処刑は大好きで、
今のボスを処刑しても次のボスからもらえる金貨の枚数が同じだろうと思ったら、反対に票を投じる。
それぞれあまり仲はよくないので談合はしない。及び金貨の共有もしない。
さて、今のボスは自分がなるべくたくさん金貨がほしい場合、
何枚手に入れることができるだろうか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:無期限
[5] その他の制限: なし
759:758
08/01/29 22:36:55
スレ違いなので取り下げます
760:デフォルトの名無しさん
08/01/29 22:59:20
[1]プログラミング入門
[2]問題文
座標(X_1
Y_1)にある自転車1が角度A_1(度)の方向にV_1(m/s)で進み、座標(X_2
Y_2)にある自転車2が角度A_2(度)の方向にV_2(m/s)で進んでいる。
二つの自転車が出会う点の座標(X_3
Y_3)と、経過時間Tを求めなさい。
X軸の正方向を0(度)とする。
座標1目盛り1(m)とする。
[3]環境
[3.1] OS:WindowsXP
[3.2] Visual studio 2003
[3.3] 言語: C++
[4]期限:1月30日
[5]その他の制限特になし
丸投げで本当に申し訳ありません!
何卒宜しくお願い致します!(>_<)
761:デフォルトの名無しさん
08/01/29 23:16:13
>>750
ありがとうございました!!
ほんと助かりました。
762:デフォルトの名無しさん
08/01/29 23:46:06
>>760
向かい合って一直線に進んでるならまだしも、
ちょうどぶち当たるなんてこと、限りなく無いに等しいがそれでもいいの?
763:デフォルトの名無しさん
08/01/29 23:48:00
>>762
自転車の長さが100mくらいあるのかも知れないwww
764:デフォルトの名無しさん
08/01/30 00:05:32
【時間切れ】 (1/29)
>650 >740
【未解決問題】
>>760 1/30
スレリンク(tech板:229番) 1/31
>>724 1/31 16:00
>>751 1/31 17:00
>>581 2月頭 残:課題2、3
>>720 2/5 詳細>>722
>79 無期限
>144 無期限 問題文>148
765:デフォルトの名無しさん
08/01/30 00:08:06
まぁそのA1とA2が違う値ならぶつかるはずだけどなw
766:デフォルトの名無しさん
08/01/30 00:09:54
うはwと思ったらスピードが違うかったら一生交わらないww
767:デフォルトの名無しさん
08/01/30 00:13:37
>>765
点と点とが衝突するというのは、限りなく難しいと思う
自転車とやらの長さに依存する問題
長さが無限大の自転車だとほぼ確実に衝突するし、
長さが無限小の自転車だとほぼ確実に衝突しない
768:760
08/01/30 00:57:47
申し訳ありません!直線の交点を求めて、それぞれがその交点にたどり着く時間T_1(秒)およびT_2(秒)を求める問題でした(>_<)
769:デフォルトの名無しさん
08/01/30 05:07:25
>>768
眠くてかなりやっつけだが、一応書いた。
交わらない位置関係の判定がいまいちかも分からん。
#include <iostream>
#include <math.h>
#define PI 3.1415926535897932384626433832795
#define RATE 1000
using namespace std;
typedef struct DATA {
double x, y, a, v, l;
};
int main () {
DATA a, b;
cout << "X_1:"; cin >> a.x; cout << "Y_1:"; cin >> a.y;
cout << "A_1:"; cin >> a.a; cout << "V_1:"; cin >> a.v;
cout << "X_2:"; cin >> b.x; cout << "Y_2:"; cin >> b.y;
cout << "A_2:"; cin >> b.a; cout << "V_1:"; cin >> b.v;
a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
b.l = (a.y - b.y) / sin((b.a - a.a) * PI / 180);
if ((int)(a.a - b.a) % 180 == 0 ||
(int)(a.l*RATE) < 0 || (int)(b.l*RATE) < 0) {
cout << "まじわらない";
return -1;
}
cout << "T_1 = ";
if ((int)(a.l*RATE) == 0) cout << "0" << endl;
else cout << a.l / a.v << endl;
cout << "T_2 = ";
if ((int)(b.l*RATE) == 0) cout << "0" << endl;
else cout << b.l / b.v << endl;
return 0;
}
770:デフォルトの名無しさん
08/01/30 05:19:39
すまん、何か忘れてると思ったらx使ってなかったわwww
× a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180);
○ a.l = (a.y - b.y) / tan((b.a - a.a) * PI / 180) + (b.x - a.x);
771:デフォルトの名無しさん
08/01/30 11:11:15
>>757
お礼が遅れて申し訳ありません
ありがとうございました
772:デフォルトの名無しさん
08/01/30 12:28:43
>>720
URLリンク(kansai2channeler.hp.infoseek.co.jp)
773:デフォルトの名無しさん
08/01/30 14:45:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ファイル中に自然数が10列記されている。
この数列中には0が1〜9個含まれている。
従って、0を区切りと考えれば。この数列中には数が最低1つは連続している(連続回数とよぶ)。
連続回数の最大を求め,その時の和を求めよ。
ただし、連続回数の最大が2つ以上ある時は和の大きい方を最大とする。
また、連続回数も和も同じであるときは考慮しなくてもよい。
例1)3,1,0,3,6,2,3,7,4,0であれば、最大連続数は6でその和は25である。
例2)3,1,0,2,2,0,03,0,0であれば、最大連続数は2でその和は4である。
[3] 環境
[3.1] OS:Vine Linux 4.2
[3.2] コンパイラ名とバージョン:gcc3.4
[3.3] 言語:C
[4] 期限:[無期限]
[5] その他の制限:なし
むりやりならばできましたが、スマートなやり方があれば教えていただきたいです。
774:デフォルトの名無しさん
08/01/30 16:29:15
>>773 その無理やりのソースを貼り付けよう!
775:デフォルトの名無しさん
08/01/30 16:41:46
>>773 自分も無理やりやってみた。
#include <stdio.h>
#define N 10
int continuous(int *a, int from, int n){
int to;
for(to = from; to < n && a[to] != 0; to++);
return to;
}
int culsum(int *a, int from, int to){
int i, sum = 0;
for(i = from; i < to; i++) sum += a[i];
return sum;
}
int main(void){
FILE *fp = fopen("data.txt", "r");
int i, next, cnt = 1, sum = 0, tmp, a[N];
if(!fp) return 1;
for(i = 0; i < N; i++) fscanf(fp, "%d,", &a[i]);
fclose(fp);
for(i = 0; i < N; i++){
next = continuous(a, i, N);
if(next - i >= cnt){
cnt = next - i;
tmp = culsum(a, i, next);
if(tmp > sum) sum = tmp;
}
i = next;
}
printf("cnt: %d\nsum: %d\n", cnt, sum);
return 0;
}
776:デフォルトの名無しさん
08/01/30 16:45:28
部分だけ。
a[10]に数値読み込んでこんな感じかな?
int i,j=0,max=0,temp=0,renzoku=0;
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=0;
}
777:デフォルトの名無しさん
08/01/30 16:47:38
なにをもってスマートなんだろう
778:デフォルトの名無しさん
08/01/30 16:49:18
tempも0に戻そうぜ
779:デフォルトの名無しさん
08/01/30 17:00:22
ごめwww手抜きするといいことないねwwwww
#include <stdio.h>
int main(void)
{
int a[10],i,j=0,max=0,temp=0,renzoku=0;
FILE *fp=fopen("data.txt","r");
if(!fp) return 1;
for(i=0;i<10;i++)fscanf(fp,"%d,",&a[i]);
fclose(fp);
for(i=0;i<10;i++)
{
while(a[i]&&i<10)
{
temp+=a[i];
i++;
j++;
}
renzoku=(j>renzoku?j:renzoku);
if(renzoku==j)max=(temp>max?temp:max);
j=temp=0;
}
printf("最大連続数:%d\n合計:%d",renzoku,max);
return 0;
}
780:デフォルトの名無しさん
08/01/30 17:21:21
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)
781:デフォルトの名無しさん
08/01/30 17:33:36
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)
782:デフォルトの名無しさん
08/01/30 17:40:24
・0〜99の100個の数字から異なる30個を選び、配列COM[30]に
格納せよ。
・次に異なる6個の数字を入力し、順番に配列MAN[6]に格納せよ。
・ソート方法Aを用いて配列COM、MANの要素をそれぞれ小さい順に並べよ。
・配列COMに含まれる配列MANの数字の個数countを求めよ。
・最後に、配列COM、MANの全要素、変数countを
result.outに書き込め。
・出力形式は自由とするが、main関数内は10行以内にすること。
[ソート方法A]
・作業用の配列として、要素が100個のint型の配列Workを用意する。
・配列Workの各要素は、0に初期化する。
・ソートしたい配列xの要素を順番に読んで、Work[その値]を+1する。
・作業3をすべてのxの要素について行った後、Workの要素を小さい方から順番に
よんで、Workの値が0でなければ、xに書き戻します。
この課題が全然できません。助けて下さい。
783:デフォルトの名無しさん
08/01/30 17:51:36
>>773
URLリンク(kansai2channeler.hp.infoseek.co.jp)
784:デフォルトの名無しさん
08/01/30 17:53:32
>>782
それ、【ヒント1】〜【ヒント3】も問題文にあるだろ?
785:デフォルトの名無しさん
08/01/30 18:22:57
>>782
作ったけど,PC移行中でコンパイラ入れて無くて試せない^p^
786:デフォルトの名無しさん
08/01/30 20:10:32
>>769
本当に有難う御座います!!
787:デフォルトの名無しさん
08/01/30 20:37:58
[1] 授業単元:
[2] 問題文(含コード&リンク):シェルソートは単純挿入法を改良し、ソートの効率を上げたものである。
全ての要素を1度にソートするのではなく、
間隔dをあけて要素を比較して大まかなソートを繰り返したのち、
最後にd = 1でソートを実行する。
データ数をnとしたときの、効率の良い間隔d[i]の計算法として、
Knuthによる次の式が知られている。
t = log2n - 1 (整数に切り捨て)
d[t-1] = 1
d[i-1] = 2d[i] + 1
この式を使って、与えられた要素数nに対し
t、配列dの値を計算する関数を作成しなさい。
n = 100としたときの、tおよびdの要素の値を画面に出力しなさい。
logの計算を行うには、math.hをインクルードする
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期間:2/1まで
[5] その他の制限: なし
お願いします。
788:デフォルトの名無しさん
08/01/30 21:23:01
>>782
URLリンク(kansai2channeler.hp.infoseek.co.jp)
789:788
08/01/30 21:25:57
ありゃ、main()関数が10行以下の制限忘れてた。
全部他の関数に移せってか。ちょっとまって。
790:デフォルトの名無しさん
08/01/30 21:26:06
>>782
>>694
791:デフォルトの名無しさん
08/01/30 21:35:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部に落ちるかどうかを判定する。
内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/1
[5] その他の制限:
792:788
08/01/30 21:38:18
>>782
URLリンク(kansai2channeler.hp.infoseek.co.jp)
すまんかった。
793:デフォルトの名無しさん
08/01/30 21:43:34
>>782の問題は、内容から おそらく COMとMANに値を収める
部分を、共通関数化すれば得点高いと思う。
それを構成できるかも問うてる様に見える。
具体的には、配列代入関数として、入れたかどうかと、
配列が溢れた事を戻り値で返す。
794:デフォルトの名無しさん
08/01/30 22:05:45
>>793
>>673
795:デフォルトの名無しさん
08/01/30 23:52:16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
double x, y, z;
int iter[] = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 0}, i, j, k = 0, count;
for (i = iter[k]; i; i = iter[++k]) {
count = 0;
for (j = 0; j < i; j++) {
x = (double)rand() / RAND_MAX - 0.5;
y = (double)rand() / RAND_MAX - 0.5;
z = (double)rand() / RAND_MAX;
if (sqrt(x * x + y * y) <= 0.5 && 0. <= z && z <= 1.)
count++;
}
printf("ITER = %d, V = %f\n", iter[k], (double)count / iter[k]);
}
printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);
return 0;
}
796:デフォルトの名無しさん
08/01/30 23:52:43
あ、>>795は>>791さんへです。
797: ◆LnG.2EAY0A
08/01/31 02:04:32
>>772
>>723
お返事が送れて申し訳ありません、回答ありがとうございました!
これでなんとか理解できそうです。
798:デフォルトの名無しさん
08/01/31 14:03:52
[1] プログラミング序論
[2] @./a.out arg1 arg2 ...の時、
argをアルファベット順にソーティングするquicksortのプログラムを作る。
A問題@をライブラリ関数qsort()を用いて作る。
qsort( void* base, int n_elem, int size, int (*compare)(void*, void*) )
base: 配列のアドレス
n_elem: 要素数
size: 一要素のサイズ
compare: 比較に使う関数。
Bライブラリ関数と同じ動きをする関数
msort( ...qsortと同じ引数... )
を作る。(アルゴリズムはクイックソート)
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 2008年2/5(火)
[5] 制限は特にないです
よろしくお願いしますm(__)m
799:デフォルトの名無しさん
08/01/31 16:57:21
>>798
とりあえず最後の問題だけやってみた。
これで満点とれなかったら教官の頭が悪い。
( ´∀`)つURLリンク(kansai2channeler.hp.infoseek.co.jp)
800:ハム
08/01/31 18:54:12
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文:(数独の問題作成の途中です。)
最初全てに0が入った2次元配列を、数字が全て埋まった状態にするプログラムを考えています。
どなたかお力をお貸し下さい。
[3] 環境 Visual Studio 2005
[3.1] OS: Windows/ XP
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語: C言語
[4] 期限: ([2008年2月2日21:00まで]
[5] その他の制限:初心者なので、簡単なコードでお願いします。
801:デフォルトの名無しさん
08/01/31 18:55:16
[1] プログラミング演習
[2]リンクリストを用いたスタックプログラムの作成
typdef struct box{
int cont;
struct box next;}box1;
typedef box1 *stack;
スタックの仕様は↑とする。
ポップアップとプッシュダウンを行う関数
int pupup(stack S);
void pushdown(stack S; int x);
を作成せよ。
[3] 環境
[3.1] winXP
[3.2] bcc
[3.3] C
[4] 2008年2/5(火)
[5] 制限:問題文の仕様を使うこと。
アンダーフロー対策はしなくてよい
よろしくおねがいします。
802:デフォルトの名無しさん
08/01/31 18:56:05
>>800
お前は日本語を書いている自信があるのか?
803:デフォルトの名無しさん
08/01/31 19:14:15
>>800
数独は、プログラムで解くのは簡単だけど作るのは難しいと思われ。
途中まで作ったのならそれを提示したまえ。
# つーか、初心者向けの内容じゃねぇぞ。
804:デフォルトの名無しさん
08/01/31 20:18:36
>>724の者ですが、締め切りが2/2の12:00に伸びたのでどうかよろしくお願いします。
全然わからないので…
805:デフォルトの名無しさん
08/01/31 21:03:12
>>804
やだ。
806:名無し募集中。。。
08/01/31 21:08:17
>>805
お前に言ってねーよ。カス。
どうか分かる方お願いします。
807:デフォルトの名無しさん
08/01/31 21:09:57
>>806
やだってばー。
808:名無し募集中。。。
08/01/31 21:10:43
>>807
だからお前のような頭のヘボい奴には頼んでないから。
どうか頭の良い方お願いします。
809:デフォルトの名無しさん
08/01/31 21:15:17
>>808
馬鹿はスルーしろ
810:デフォルトの名無しさん
08/01/31 21:17:14
>>808
いちいち反応するな馬鹿
811:デフォルトの名無しさん
08/01/31 21:36:03
>>808
答えようかと思ったが、君のように裏表がある人間のために
エディタ起動するのマンドクセ('A`)
812:名無し募集中。。。
08/01/31 21:37:32
>>811
お前に言ってねーよ。カス。
どうか分かる方お願いします
813:デフォルトの名無しさん
08/01/31 21:54:17
誰もわかんねーのかよ。
単位やべーからお願い。
814:デフォルトの名無しさん
08/01/31 21:55:03
いさぎよく諦めろ
815:名無し募集中。。。
08/01/31 21:56:28
>>814
お前がやれ。命令だ。
816:デフォルトの名無しさん
08/01/31 22:00:14
俺今他のやってる
817:デフォルトの名無しさん
08/01/31 22:41:07
>>801
問題がタコだな。
まず、その仕様じゃコンパイルすら通らない。
>pupup
popupの間違いでは。
>アンダーフロー対策はしなくてよい
オーバーフロー対策はどうなのよ。
818:デフォルトの名無しさん
08/01/31 22:43:33
最近の人工無能は頭いいな
819:デフォルトの名無しさん
08/01/31 22:45:05
>>800
>数字が全て埋まった状態にするプログラム
ほらよ
memset(table, 1, sizeof(table));
820:デフォルトの名無しさん
08/01/31 22:57:33
>>817
オーバーフロウもアンダーフロウも対策しなくて大丈夫です。
ペーパーで提出する課題なのでかなり適当みたいです。
popupは自分も気になりましたが問題がpupupなのでそのままにしましたw
821:デフォルトの名無しさん
08/01/31 23:02:20
>>820
それだけじゃなくて、
typdef struct box{
int cont;
struct box next;}box1;
↑じゃコンパイル通らないよ。
typdef struct box{
int cont;
struct box *next;}box1;
↑こうしないと。
いいかげんそうな教官みたいだし、もう提出しなくてよいんじゃね?
822:デフォルトの名無しさん
08/01/31 23:06:48
タイポもあるな。
823:デフォルトの名無しさん
08/01/31 23:12:43
つーか、prevへのポインタ無しで、どうやってpopupするわけ?
一方通行じゃん。pushしか出来ねーーー
824:デフォルトの名無しさん
08/01/31 23:14:41
というか、nextがprevなのか。
825:デフォルトの名無しさん
08/01/31 23:29:21
>>795
ありがとうございます!
826:デフォルトの名無しさん
08/01/31 23:34:58
まぁ文句ばっかり言うのもあれなので。
typedef struct box{
int cont;
struct box *next;}box1;
typedef box1 *stack;
int pupup(stack S)
{
box1 tmp = *S->next;
free(S->next);
S->next = tmp.next;
return tmp.cont;
}
void pushdown(stack S, int x)
{
box1 *new_box = (box1 *)malloc(sizeof(box1));
new_box->cont = x;
new_box->next = S->next;
S->next = new_box;
return;
}
827:デフォルトの名無しさん
08/01/31 23:48:51
>>798
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2と3。
828:デフォルトの名無しさん
08/02/01 00:37:31
昨日は規制の巻き添えを食らって、書きこめなかつた
【時間切れ】 (1/31)
スレリンク(tech板:229番) 1/31
>>751 1/31 17:00
【未解決問題】
>>787 2/1
>>724 2/2 12:00
>>800 2/2 21:00
>>581 2月頭 残:課題2、3
>79 無期限
>144 無期限 問題文>148
829:デフォルトの名無しさん
08/02/01 00:39:09
ミス、>>798は課題@が終わってません
830:デフォルトの名無しさん
08/02/01 00:42:04
>800
「数独(すうどく・SUDOKU)とは、3×3のブロックに区切られた9×9の正方形の枠内に1〜9までの数字を入れるペンシルパズルの一つである。」
123 456 789
456 789 123
789 123 456
234 567 891
567 891 234
891 234 567
345 678 912
678 912 345
912 345 678
でいいんじゃね?
831:デフォルトの名無しさん
08/02/01 00:43:22
解答
URLリンク(www.nicovideo.jp)
832:581
08/02/01 12:47:48
>>581です。
(2)なのですが、音声データを半分に圧縮して再生できれば良いそうです。
実際の音声データとなる部分のbyte?を、一個飛ばしで読み込んでみて、と言われたのですが、さっぱりです…orz
(3)は、音声データを読み込んで、逆再生できればOKだそうです。
よろしくお願いしますm(_ _)m
833:デフォルトの名無しさん
08/02/01 13:26:02
>>787
URLリンク(kansai2channeler.hp.infoseek.co.jp)
834:デフォルトの名無しさん
08/02/01 13:32:09
>>832
半分削ったら復元無理じゃん
あとまずは>>658さんのテキストファイルをWavにするプログラム作れば
既にないぞうしてるかもしれないけど
835:デフォルトの名無しさん
08/02/01 13:38:12
復元は要求されてなくね
836:デフォルトの名無しさん
08/02/01 13:56:05
再生するにはwavが作れないと駄目
837:デフォルトの名無しさん
08/02/01 14:19:02
おもったんだがどんな楽器の音もテキストの数字の羅列のみで鳴らせるのか ちょっとおどろき
838:デフォルトの名無しさん
08/02/01 14:22:37
そらまあどんなデータだってバイナリじゃ0と1の集合なんだし、
音だろうと映像だろうと数字の羅列に対応させるのは簡単だぞ。
839:デフォルトの名無しさん
08/02/01 14:25:39
でも人間がテンキーで打ち込みしてもオーケストラの音楽とかむりのはず
840:デフォルトの名無しさん
08/02/01 14:26:40
最終的に鼓膜を震わせればいいんだから
841:デフォルトの名無しさん
08/02/01 14:29:07
複雑な音楽は0と1だけじゃなくその間の音色がいくらでもある。
引き篭ってパソコン麦価かまってるとそんな当たり前のことも分からなくなるんだな。
842:デフォルトの名無しさん
08/02/01 14:30:59
この中で一番頭悪いのは>>841でFA?
843:デフォルトの名無しさん
08/02/01 14:37:43
>>839も加えておいてくれ。どっちもどっち
844:デフォルトの名無しさん
08/02/01 14:39:05
ドとド#の間にだって音があるんだよ。
カラオケの採点だと正確にドを出すのを高得点としているが、
人間の耳に入った場合は必ずしも正確なドが心地よいとは限らない。
ちょっとはずしてる加減がかわいいとかあるだろ?
音だけじゃなくリズムとか強弱とかもな。
845:デフォルトの名無しさん
08/02/01 14:41:34
>>841
でも人間の耳の分解能には限界があるだろ
1/3を0.0101010101010101で近似しても違いなんて分からない
846:デフォルトの名無しさん
08/02/01 14:50:16
>>845
そっちの問題より量子化の時の誤差の方が大きいだろ。
847:デフォルトの名無しさん
08/02/01 15:02:09
>>846
>>841が「離散量では原理的に複雑な音楽を忠実に表現できない」という主張をした(と俺は理解した)から、
目盛を十分細かく取れば良い、という説明をしただけで、実際に音声をデジタルで扱う場合にどこが困難かは別の話だろ
848:デフォルトの名無しさん
08/02/01 15:15:18
>>841
よくわからんが、MIDIのことか? なつかしいな。
849:デフォルトの名無しさん
08/02/01 15:15:52
[1] プログラミング演習
[2]試験課題
優先順位付き四則演算
式を入れてください
(123.4*(5.1+0.2)+(6+0.3)/(3.0−1.0)/5=?
答えは?です。
[3.1]WindowsXP
[3.2]VS8.0
[3.3]C++
[4]2月5日
[5]構造体
調べてみましたがよくわかりませんでした。
よろしくお願いいたします。
850:デフォルトの名無しさん
08/02/01 15:18:41
>>849
メンバ関数とか使っていい?
851:798
08/02/01 16:36:21
>>799さん
>>827さん
お早い回答、見やすいプログラムありがとうございました^^
・・・もし来週も行き詰ったら・・・よろしくお願いしますm(__)m
852:デフォルトの名無しさん
08/02/01 16:41:11
850
はい、習っているので大丈夫です。
853:デフォルトの名無しさん
08/02/01 17:37:34
>>849
けっして俺がつくったソースコードではないけど
頭のいい人はすごいねって思う。
fparserでググれば出てくるかもしれんが
圧縮してあげとく。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
854:デフォルトの名無しさん
08/02/01 17:40:56
>>800
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえず書いてみたが、あまり簡単でもスマートでもない。
出力だけはたぶん合ってそうだけども。
855:デフォルトの名無しさん
08/02/01 18:23:00
>>853
ありがとうございます、動きました。
856:デフォルトの名無しさん
08/02/01 19:43:00
>>724
URLリンク(kansai2channeler.hp.infoseek.co.jp)
VCないから、Cygwin/g++用に変更した。一応動いたのでうp
参考程度にどうぞ
(運がよければVCでもそのままコンパイルできる。一応気にしてソース修正したつもり)
IPv6環境ないからIPv6での動作確認はできなかった
857: ◆sUfWYz9MSA
08/02/01 21:53:06
[1] 授業単元: 画像処理研究
[2] 問題文(含コード&リンク):
以下のようなcsvファイルをfopen()で読み込み,
フーリエ変換したものをグラフで表示する.
400,97.98
400.5,98.13
401,98.31
401.5,98.49
・・・
という","の左が700まである波形データです。
読み込んだデータを","区切りでプロンプトに書き出す
ことはできているのですが,フーリエ変換がどうしてもできませんorz
お手数ですが教えてもらえないでしょうか。
sample: URLリンク(yomiko-01.hp.infoseek.co.jp)
csvでupできなかったので.txtになってますスイマセン・・・
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語: どちらでも可
[4] 期限: できるだけ早くお願いします。
[5] その他の制限:学校から家に帰るのでコメント返信遅くなります・・・
どうかよろしくお願いします。
858:デフォルトの名無しさん
08/02/01 22:24:48
[1] 授業単元:コンピュータ理論
[2] 問題文(含コード&リンク):n,kを入力したとき、0〜n-1の整数からk個選ぶ選び方をすべて出力する
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C言語
[4] 期限: 2月4日中
[5] 再帰的アルゴリズムを使うと簡単と言われました。
どうかよろしくおねがいします。
859:デフォルトの名無しさん
08/02/01 22:34:05
順列を区別するかを書け。
860:デフォルトの名無しさん
08/02/01 22:37:07
組み合わせです
861:デフォルトの名無しさん
08/02/01 22:42:47
>>859
重複なしの組み合わせです。
n=5,k=3のときは
012 013 014 023 024 034 123 124 134 234
となるはずです。
862:デフォルトの名無しさん
08/02/01 22:46:58
>>857
C言語によるアルゴリズム事典からそのままぱくったので
あってるかどうかわからへんで〜
URLリンク(kansai2channeler.hp.infoseek.co.jp)
863:デフォルトの名無しさん
08/02/01 23:01:55
>>858
unsigned long combination(int n, int k)
{
int i, j;
unsigned long a[17];
if (n - k < k) k = n - k;
if (k == 0) return 1;
if (k == 1) return n;
if (k > 17) return 0; /* error */
for (i = 1; i < k; i++) a[i] = i + 2;
for (i = 3; i <= n - k + 1; i++) {
a[0] = i;
for (j = 1; j < k; j++) a[j] += a[j - 1];
}
return a[k - 1];
}
864:デフォルトの名無しさん
08/02/01 23:07:33
>>863
ワロタ
865:デフォルトの名無しさん
08/02/01 23:40:39
>>858
#include<stdio.h>
#include<stdlib.h>
void get_combination(int num, int chosenCnt);
int *numary;
int n, c;
int main(int argc, char *argv[]){
if(argc != 3) return 1;
n = atoi(argv[1])-1;
c = atoi(argv[2]);
if((numary = (int*)calloc(sizeof(int), c)) == NULL) return 1;
get_combination(0, 1);
free(numary);
return 0;
}
void get_combination(int num, int chosenCnt){
int i;
if(chosenCnt > c){
for(i=0; i < c; i++) printf(" %d", numary[i]);
putchar('\n');
return;
}
for(i=num; i <= n; i++){
numary[chosenCnt-1] = i;
get_combination(i+1, chosenCnt+1);
}
}
866:858
08/02/01 23:54:04
>>863
返答ありがとうございます。
コンパイル通るのですが、どうやったら表示できるかが分からず、
いろいろ試してみましたが出来ませんでした。orz...
>>865
返答ありがとうございます。
ばっちり動きました。ありがとうございます。
助かりました。
後でプログラムをじっくり解読してみます。
本当にありがとうございました。
867:デフォルトの名無しさん
08/02/01 23:54:10
>>856さま
IPv4でもIPv6でも動きました!
本当にありがとうございました!
868:デフォルトの名無しさん
08/02/01 23:55:44
>>866
本気で何も分かってないな。まあ丸投げスレだからいいんだけど
869:デフォルトの名無しさん
08/02/02 00:01:53
>>862
>>857です。返事ありがとうございます!
今帰ってきたので、後で参考にさせてもらいます(o´・ω・)´-ω-)ペコリ
870:デフォルトの名無しさん
08/02/02 00:14:39
>>849
当方で確認した環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
>> 853 さんにならって、私がこの方面にのめりこむきっかけとなったソースを、そのままあげておきます。
なお、宿題の題意にあうように手直しはしていますが、小数点の処理は手抜きです。オリジナルを損ねたくなかったわけで、すみません。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>853
まったく頭のいい人はすごいですね。
871:デフォルトの名無しさん
08/02/02 00:27:55
【時間切れ】 (2/1)
>787
【未解決問題】
>>581 2月頭 残:課題2、3
>>798 2/5 残:課題1
>79 無期限
>144 無期限 問題文>148
872:ハム
08/02/02 00:52:07
>>854さん
ありがとうございます!
熟読して、勉強させていただきます!
本当にありがとうございます!!
873:デフォルトの名無しさん
08/02/02 02:04:47
>>870
小数に対応できるようにfactor()の中身を>>870が書き換えたんだよね?
'('が来た後の exp0() を int で受けてるままだから
このままだと丸まっちゃうよ
874:870
08/02/02 02:23:48
>>873
感謝です。訂正したものをあげておきます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
875:853
08/02/02 02:50:50
URLリンク(karetta.jp)
こーいうページもあるけどね
これをdoubleでやりとりするように変えた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
をあげとこう
876:デフォルトの名無しさん
08/02/02 02:54:00
>>874
早いねw
もっというと現状のソースはちょっと精神分裂気味に見えるから
double number(void) 作って↓みたいにしたほうが元のBNF通りかねえ?
他人の宿題だからどうでもいいかもだけど。
double factor(void){
if(isdigit(nextc){ /* F -> Num */
return number();
} else if(match('(')) { /* F -> (E) */
double v = exp0();
if(match(')')) return v;
else error();
} else {
error();
}
}
877:デフォルトの名無しさん
08/02/02 10:06:19
>>876
そうすると、1桁しかあつかえないのでは?
いや、現状が精神分裂気味なのはまったく同意です。オリジナルの美しい構造を残したいものです。
878:デフォルトの名無しさん
08/02/02 10:31:53
>>875
なるほど,ブランク読み飛ばし、単項のマイナスにも対応してますね。
ただし、このBNF はLL(1)文法であり、たかだか**1文字**先読みすればdeterministicにtop-downに解析できるわけで、その精神をソースにもりこみたいな、という意志がありまして...。
879:デフォルトの名無しさん
08/02/02 11:22:33
83代目の575は評価されるべき
880:デフォルトの名無しさん
08/02/02 17:33:37
>>751が叩かれてて質問者でもないし聞きづらかったんだけど、期限も切れているようだし>>751を聞いていいかな?
881:デフォルトの名無しさん
08/02/02 17:41:13
いいとも!
882:デフォルトの名無しさん
08/02/02 19:12:13
[1] 授業単元:プログラミング初級
[2] 問題文(含コード&リンク):
1〜24まで穴埋め問題です
URLリンク(ip.tosp.co.jp)
[3] 環境
[3.1] OS : windows
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C言語
[4] 期限:2月4日
883:デフォルトの名無しさん
08/02/02 20:18:58
>>882
とりあえず22まで。間違ってても謝罪や賠償はしない。
1. int *
2. char *
3. char *
4. int **
5. char **
6. char **
7. &cnt
8. &ch
9. &ch
10. pc
11. *pc
12. &ch
13. pch
14. *pch
15. argv[1]
16. pa
17. *(argv[2])
18. *pa
19. &pc
20. &pch
21. **ppc
22. **pch
884:デフォルトの名無しさん
08/02/02 20:36:22
23と24も。
最近C言語でプログラム書いていないんで、argvの仕様を調べなおしてた。
あと、実行時の引数の順序がわからんから、適当に書き換えてくれ。
23. *(pp+3)
24. **(pp+4)
885:デフォルトの名無しさん
08/02/02 21:22:32
>>883
ありがとう御座います
886:デフォルトの名無しさん
08/02/02 21:28:44
URLリンク(www.raw-paradise.com)
887:デフォルトの名無しさん
08/02/02 21:48:01
>>879
再掲載お願いできますでしょうか?
888:デフォルトの名無しさん
08/02/03 00:06:55
結局751の画像は何を対象にしてたんだぜ?
889:デフォルトの名無しさん
08/02/03 00:38:36
>>581
URLリンク(kansai2channeler.hp.infoseek.co.jp)
890:デフォルトの名無しさん
08/02/03 01:29:14
【時間切れ】 (2/2)
なし
【未解決問題】
>>798 2/5 残:課題1
>>79 無期限
>>144 無期限 問題文>>148
891:デフォルトの名無しさん
08/02/03 02:44:30
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
input8500.txtには4桁の整数が8500個書かれている。
これら8500個の整数のうち、相異なる整数は何種類あるか求めなさい。
input8500.txt: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年2月4日12:00まで
[5] その他の制限: 制限は特にありません。宜しくお願いいたします。
892:デフォルトの名無しさん
08/02/03 03:30:01
>>891
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void){
int *table=(int*)calloc(sizeof(int), 10000, 0), i, x;
FILE *in=fopen("input8500.txt","r");
for(i=0; i<8500; i++){
fscanf(in, "%d", &x);
table[x]++;
}
for(i=x=0; i<10000; x+=table[i]?1:0, i++);
printf("%d種類\n", x);
}
コンパイラ無いので,試してないけど動くんじゃね?
893:デフォルトの名無しさん
08/02/03 08:25:55
>>887
575 デフォルトの名無しさん sage 2007/02/22(木) 19:31:21
>>574
ほい。
#include<stdio.h>
#include<stdlib.h>
char buf[100],*src=buf;
double atm(void);
double mul(double r){return*src=='*'?++src,mul(r*atm()):*src=='/'?++src,mul(r/atm()):r;}
double add(double r){return*src=='+'?++src,add(r+mul(atm())):*src=='-'?++src,add(r-mul(atm())):r;}
double atm(void){
double r;
while(isspace(*src))++src;
if(*src == '(')++src,r = add(mul(atm())),++src;
else r = strtod(src,&src);
while(isspace(*src))++src;
return r;
}
int main(){gets(src);printf("%f\n",add(mul(atm())));}
894:デフォルトの名無しさん
08/02/03 17:42:29
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:2月12日(火)16時20分まで
[5] その他の制限:特になし。
よろしくお願いします。
895:891
08/02/03 18:08:31
>>892
ありがとうございます。コンパイルしてみたところ
5行目に、too many arguments to function `calloc'
とエラーが出ました。calloc関数は使用したことがないため、
どこを直せばいいのか分かりません。
教えていただけないでしょうか。
896:デフォルトの名無しさん
08/02/03 18:11:24
それくらい仕様を見れば分かるだろ。
897:デフォルトの名無しさん
08/02/03 18:12:20
>>895
calloc(10000, sizeof(int))
898:デフォルトの名無しさん
08/02/03 18:45:29
>>894
URLリンク(kansai2channeler.hp.infoseek.co.jp)
899:デフォルトの名無しさん
08/02/03 20:53:57
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語: C
[4] 期限:2月5日
[5] その他の制限:特になし
お願いします。
900:デフォルトの名無しさん
08/02/03 21:35:45
[1] 授業単元:課題3
[2] 問題文(含コード&リンク):月日を入力するとその日の星座を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: ?
[3.3] 言語: C
[4] 期限: 2008/2/6
[5] その他の制限: 特にありまさん
901:891
08/02/03 22:02:09
>>896 >>897
コンパイル通りました。ありがとうございました!
仕様良く読みます。
902:デフォルトの名無しさん
08/02/03 22:09:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 直径1長さ1の円柱がある。体積をモンテカルロ法で計算せよ。
一辺が1の立方体を考え、3個の乱数で立方体内の点のxyz座標を発生させ,その点が物体の内部
に落ちるかどうかを判定する。内部に落ちる確率が体積に比例することから体積が見積もれる。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2/4
[5] その他の制限:
以前このスレで質問した問題なんですがコンパイルできなかったのでもう一度
おしえてもらえないでしょうか。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5); のM_PIでエラーがでて
しまいます。
903:デフォルトの名無しさん
08/02/03 22:22:43
>>900
#include <stdio.h>
#include <stdlib.h>
int main() {
static const struct {int n; const char *s;} c[] = {
{120, "みずがめ"}, {219, "うお"}, {321, "おひつじ"}, {420, "おうし"},
{521, "ふたご"}, {622, "かに"}, {723, "しし"}, {823, "おとめ"},
{923, "てんびん"}, {1024, "さそり"}, {1122, "いて"}, {1222, "やぎ"},
};
int i, m, d;
char buf[256];
do {
printf("月/日: ");
if (fgets(buf, sizeof buf, stdin) == 0)
return EXIT_FAILURE;
} while (sscanf(buf, "%d / %d", &m, &d) != 2);
for (i = 0; i < 12 && m * 100 + d >= c[i].n; i++)
;
if (--i < 0)
i = 11;
printf("%s座\n", c[i].s);
return EXIT_SUCCESS;
}
904:デフォルトの名無しさん
08/02/03 22:27:41
>>902
上の方に
#define M_PI 3.141592653589793238
とか書いときゃいいんじゃね?
905:デフォルトの名無しさん
08/02/03 22:30:10
>>902
printf("Vの真の値 = %f\n", M_PI * 0.5 * 0.5);のまえにでも
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とでもしとけ
てか、CygwinでもMinGWでもコンパイルは通るんだが
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4964日前に更新/357 KB
担当:undef