08/01/24 13:14:10
>>550
これで単位か・・・羨ましいような羨ましくないような。
>>547
URLリンク(kansai2channeler.hp.infoseek.co.jp)
555:デフォルトの名無しさん
08/01/24 14:09:37
>>502
ちょっと解説してもらえませんか?
556:デフォルトの名無しさん
08/01/24 14:43:55
>>555
回答した本人じゃないが、
for (i = 0, sum = 0.0; i <= 10; i++) {
for (i = 0, sum = 0.0; i <= 10; i++, sum=0.0) {
にすれば問題ないのでは?
557:デフォルトの名無しさん
08/01/24 15:30:11
>>550
ちょっWwおまWw
どこの大学だよ
それで単位認定って
笑った
558:デフォルトの名無しさん
08/01/24 15:33:44
文系が理系をちょっとかじるようなゼミだとそんなもんじゃね?
559:デフォルトの名無しさん
08/01/24 15:40:41
【質問テンプレ】
[1] 授業単元:CG
[2] 問題文(含コード&リンク):対戦型シューティングゲームを作ったんですけど、
もう1つのポットから、玉が出ないんです。どうしたら、出るようになるんでしょうか?
教えてください。あと、当たり判定も作ったんですが、これよりもっといいプログラムは
ありますか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cで書いてあります
[4] 期限: 今日の18時まで
[5] その他の制限:なし
560:デフォルトの名無しさん
08/01/24 15:42:32
>>559
よくあるのはベクトルのノルムで判定する方法
561:デフォルトの名無しさん
08/01/24 15:43:21
[1] 授業単元: プログラミング
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特にないです。。。
お願いします。
562:デフォルトの名無しさん
08/01/24 16:51:24
>>561
ファイルに書き出すときのテキストのフォーマットは?
563:デフォルトの名無しさん
08/01/24 18:13:49
>>562
txt形式でお願いします。
564:デフォルトの名無しさん
08/01/24 18:46:30
>>563
CSVとかそういうのを聞きたいんだと思うよ。
>>561
CSVにした。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
565:548
08/01/24 18:47:07
>>561
URLリンク(kansai2channeler.hp.infoseek.co.jp)
566:548
08/01/24 18:51:31
>>565をちょっと修正。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
567:デフォルトの名無しさん
08/01/24 19:03:53
>>564
>>565
ありがとうございます!
568:デフォルトの名無しさん
08/01/24 19:12:25
>>561
出遅れたけど載せておく
URLリンク(kansai2channeler.hp.infoseek.co.jp)
569:デフォルトの名無しさん
08/01/24 19:23:16
>>568
ありがとうございます!本当に助かります。
570:548
08/01/24 19:40:44
>>566にもミスがあったorz
ex11_2.c内の24行目
誤)p = &pmemb[count];
正)p = &pmemb[count++];
度々申し訳ない。
571:デフォルトの名無しさん
08/01/25 00:22:36
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年1月28日まで
[5] その他の制限:配列まで習いました。
よろしくお願いします。
572:デフォルトの名無しさん
08/01/25 00:27:56
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):
ソートに関する問題です。詳細は↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:1/31まで
[5] その他の制限:なし
よろしくお願いします。
573:デフォルトの名無しさん
08/01/25 02:08:46
>>571
入力されうる最大の値はないのかい?
> (* ここに解答を書き加える *)
って、他の場所に全く手を加えてはいけないのか分からないよ。
sqrt()のためにmath.hを入れたが、それ以外他の場所には記述を加えずに書いてみた。
割り切れるかのループを回すところで素数以外でも計算してるのが無駄だが、1000000以下の素数を列挙するのに10秒程度。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
574:573
08/01/25 02:18:08
無駄な部分があった。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
575:デフォルトの名無しさん
08/01/25 02:35:02
【時間切れ】 (1/24)
>404 >535 >559
【未解決問題】
スレリンク(tech板:229番) 1/31
>>572 1/31
>79 無期限
>144 無期限 問題文>148
576:デフォルトの名無しさん
08/01/25 04:29:08
>>572
URLリンク(kansai2channeler.hp.infoseek.co.jp)
577:ラッセン沖縄
08/01/25 05:16:32
[1]授業単元 プログラミングB
[2]問題文 次の仕様を満たし、入力例の通りにして実行でき、更に、出力例の通りに出力されるようなCプログラムを作成せよ。(出力の空白や桁数にも留意せよ。)
仕様 三角形の底辺と高さ入力し、その面積を求める。
入力例 Z:\>(kadai)
(カッコ内を 底辺=(3.0)
入力する)高さ=(4.5)
出力例* ----+----|----+----|----+----|----+----|----+----|
底辺=3.000, 高さ=4.500
面積=6.7500
(*目盛りは桁を示すためのもの。プログラムで出力するのではない。)
[3]期限1/25 14時まで
急いでいます!
よろしくお願いします。
578:デフォルトの名無しさん
08/01/25 07:18:51
[1] 授業単元: C言語
[2] 問題文:
今年のカレンダーを表示させる
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2005
[3.3] 言語: C言語
[4] 期限: 明日まで
[5] 意味のある定数はマクロ define文
途中でreturn exit 外部変数は使わない。
ヨロシクお願いします
579:デフォルトの名無しさん
08/01/25 11:55:44
[1] 問題文: ボンバーマンが格子状(1ブロック1辺20m、マップは縦横それぞれ100ブロック)のマップを爆弾を避けてゴールまでたどり着き、その時間を計算し表示するプログラムを作りなさい。
爆弾の位置座標は既知であり、ボンバーマンの速度は4m/sとする。
[2] 環境
[2.1] OS: Windows
[2.2] コンパイラ名とバージョン: Visual Studio
[2.3] 言語: C++
[3] 期限: 2008年1月28日まで
[4] その他の制限:無し
自分では全く手が出ませんでした…orz
先輩方のお力添えを頂ければ幸いです!
宜しくお願い致します( ´・ω・`)
580:デフォルトの名無しさん
08/01/25 12:03:46
再度申し訳ありません。
スタート時にルートを決定するのではなく、ブロック毎に曲がれるか判断するみたいです。あとなるべく早くゴールにたどり着かないとダメみたいです(>_<)
581:デフォルトの名無しさん
08/01/25 12:16:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):短いのでここに書きます。
(1) wavファイルを解析し、音声データを読むためのプログラムを作成せよ。
(2) 音声データを半分に縮め、変換させるプログラムを書け。
(3) 音声データを反転させるプログラムをかけ。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2008年1月28日午前9時まで
[5] その他の制限: 特にありません。
C初心者なので、どう手をつけたらいいのか全くイメージできません。
皆様方のご協力をお願いいたしますm(_ _)m
なにとぞよろしくお願いいたします。
582:デフォルトの名無しさん
08/01/25 12:22:47
>>404
期限が切れてしまってますが、どなたかよろしくお願いします。
583:デフォルトの名無しさん
08/01/25 13:21:55
>>>>578
#include<stdio.h>
int main(void){
int year, month, day, week, tmpm, tmpy, i;
int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
year = tmpy = 2008;
month = tmpm = 1;
day = 1;
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
if (tmpm < 3) {
tmpy--;
tmpm += 12;
}
week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
for(; month <= 12; day++, week++){
if(week == 7) week = 0;
if(day == 1){
printf("\n***** %04d / %2d *****\n", year, month);
for(i=0; i < week; i++) printf(" ");
}
printf(" %2d", day);
if(day == daymax[month-1]){
putchar('\n');
day = 0;
month += 1;
continue;
}
if(week == 6) putchar('\n');
}
return 0;
}
584:デフォルトの名無しさん
08/01/25 14:56:31
>>582
その書き込みの50分後、
mixiの宿題スレに全く同じ問題を貼った奴が居る。
開発環境と期限は違うが、もしかしてお前さんか?
585:デフォルトの名無しさん
08/01/25 15:26:40
>>579
C++っての見逃して、思いっきりCで書いてしまった
ほかにもっとうまいやり方あったと思うけど、一応できたので参考程度に見てください
URLリンク(kansai2channeler.hp.infoseek.co.jp)
586:デフォルトの名無しさん
08/01/25 15:32:33
>>585
printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]+1) * 5)
を
printf("\ntime = %d\n", (weight_map[BLOCKNUM-1][BLOCKNUM-1]) * 5)
に修正してください
587:デフォルトの名無しさん
08/01/25 16:06:30
[1] 授業単元:C++プログラミング
[2] 問題文:
(処理の中身ではなく、ファイルの読み込みに関してなのですが)
1. フォルダ内に複数存在する "***.dat"(***は数字ではない)を読み込んでそれぞれについて同じ処理を行なう。
2. 処理の中でそれぞれのファイル名(***)とその処理結果(これは2つの数値です)をまとめて別の1つのファイルに出力する。
3. フォルダ内の全ての "***.dat" について処理し終わったらプログラムを終了する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:1/28 AM10:00
上のようなことがしたいのですが、いい方法が思いつきません…
どなたかよろしくお願いします。
588:デフォルトの名無しさん
08/01/25 16:22:49
コマンドラインからhoge *.datとでも入力して、
好きなように繰り返しをすればいい
ここは丸投げスレなんだからもっと具体的に書け
589:デフォルトの名無しさん
08/01/25 17:38:07
>>588
ファイルは"(生徒の名前).dat"となっていて各教科のテストの点が書かれているのでそれを合計し
1つのファイルに全員の分を"生徒の名前:合計点 \n"みたいな感じで出力したいのですが、
おっしゃっている「コマンドラインから~」というやり方がわからないんです。
すいません
590:デフォルトの名無しさん
08/01/25 18:29:04
>>589
#include <iostream>
#include <fstream>
void main(int argc, char *argv[])
{
std::ofstream output( "output.dat" );
for(int i=1; i<argc; i++){
//argv[i]を読み込んで名前と合計点をoutputに書き出す。格納形式が分からんから書けん
}
cout << "オワタ" << endl;
}
実行ファイルをhoge.exeとするとコマンドラインから
hoge.exe *.dat
と入力すればよい
591:587,589
08/01/25 19:04:28
>>590
>>588をみて同じようなことをしたのですが、
Output.dat には "* : 0" としか出力されないんです…
コマンドラインでワイルドカード使うために何か特別な作業が必要だったりしますか?
592:デフォルトの名無しさん
08/01/25 19:12:38
ファイルの書式も書かずに・・・
593:デフォルトの名無しさん
08/01/25 19:25:42
inputファイルには、"国語: 74"みたいに
"(教科名):(半角スペース)(数値)"というのが7行ならんでいます。
すいません。
594:デフォルトの名無しさん
08/01/25 19:38:38
>>591
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
これでも
a.exe *.dat
*.dat
とかになる?
595:デフォルトの名無しさん
08/01/25 20:45:43
そもそもwinで実行引数にワイルドカードで一括指定ってできたっけ?
596:デフォルトの名無しさん
08/01/25 20:52:30
標準ではできる。シェルによって対応がまちまちだからなあ
597:デフォルトの名無しさん
08/01/25 20:54:23
あと、>>587は引数の形でなしにプログラム内でディレクトリを掘って探すのが題意かもね。指定されてないけど
598:デフォルトの名無しさん
08/01/25 20:59:39
>>596
そうだったか、それならワイルドカードで指定する際に
カレントディレクトリに該当ファイル置いてないとかかね。
599:デフォルトの名無しさん
08/01/25 21:54:47
①アルゴリズムとデータ構造
②パズルの世界では、1 から 9 までの数字を 1 個ずつすべて使った数字(たとえば、123456789 とか 321654987)を 小町数 と呼ぶ。1 から 9 までの数字を順番に並べ、 数字の間に演算記号をつけて計算結果が 100 になるような計算式を求めることを 小町算 という。
加算と減算のみからなる小町算の解は、下記のようになる。
12-3-4+5-6+7+89 = 100
123-4-5-6-7+8-9 = 100
123-45-67+89 = 100
123+4-5+67-89 = 100
123+45-67+8-9 = 100
12+3-4+5+67+8+9 = 100
12+3+4+5-6-7+89 = 100
1+23-4+56+7+8+9 = 100
1+23-4+5+6+78-9 = 100
1+2+3-4+5+6+78+9 = 100
1+2+34-5+67-8+9 = 100
9から1までの数を降順に並べ、加算と減算のみで計算式を構成し、計算結果が 0 になるものを全て求めよ。
9 □ 8 □ 7 □ 6 □ 5 □ 4 □ 3 □ 2 □ 1 = 0
上の問題を解くプログラムを作成しなさい。
3、
3,1 windows
2 gcc
3 C
4、明日の午後8時まで
5、特にないです。
よろしくお願いします^
600:デフォルトの名無しさん
08/01/25 22:20:15
>>262です
遅れてすいませんやっと発言ができました(プロバがアク禁食らってました)
本当に感謝ですー
ありがとうございました!
601:デフォルトの名無しさん
08/01/25 22:47:19
>>599
ソフ開試験の午後1問5に同じ問題がある
URLリンク(www.jitec.jp)
URLリンク(www.jitec.jp)
602:デフォルトの名無しさん
08/01/25 22:54:45
>>599
int main(void)
{
puts("98+7-65-43+2+1");
puts("98-76+5+4-32+1");
puts("98-7-6-54-32+1");
puts("9+8+7+6+5-4-32+1");
puts("9+8+7+6-54+3+21");
puts("9+8-76-5+43+21");
puts("9-87+6+54-3+21");
return 0;
}
603:デフォルトの名無しさん
08/01/25 23:11:16
[1] 授業単元: C言語
[2] 問題:関数 f は f=√x * √(1 - 2.5 * 10^-5 * x^2)で表される。
xの初期値4.0から0.5刻みで20.0まで変化させたときの
xとfの値をExcelに出力せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C
[4] 期限: 2008年1月27日
[1] 授業単元: C言語
[5] その他の制限:出力はcsvファイル可。
604:591
08/01/25 23:30:58
>>594
そのプログラムでやってみても *.dat となりますね・・・
>>598のせいだ!と思ったので、.exeのあるディレクトリに .datを全部移してみたのですが、
それでも結果は変わらなかったです。
これはもう手書きで1個1個ファイル指定していくしかないんでしょうか・・・
605:デフォルトの名無しさん
08/01/25 23:32:43
カレントディレクトリの意味分かってるか?
一度exeのあるパスまでcdコマンドで移動してから実行しないとダメだぞ。
606:591
08/01/25 23:42:57
あ、それはさすがに・・・。
すいません
607:デフォルトの名無しさん
08/01/25 23:44:26
>>599
#include<stdio.h>
int calc(char *str){
int ret=0, value, idx;
while(sscanf(str, "%d%n", &value, &idx)>0){
ret+=value;
str+=idx;
}
return ret;
}
char *top(char *str){
while(*--str);
return str+1;
}
void check(char *work, int depth){
if(depth<=0){
*work='\0';
if(calc(top(work))==0) puts(top(work));
return;
}
*work++='0'+depth;
if(depth>1){
*work='+';check(work+1, depth-1);
*work='-';check(work+1, depth-1);
}
check(work, depth-1);
}
int main(void){
char str[20]="";
check(str+1, 9);
return 0;
}
608:デフォルトの名無しさん
08/01/25 23:54:23
>>584
mixiはやっていないので、私ではないです。
609:デフォルトの名無しさん
08/01/25 23:58:54
>>591
Windows のコマンドプロンプトはワイルドカードを展開しないようだ
解決案
1.コマンドプロンプトで動作するシェル(bash とか)を一段かませる
2.実行ファイルのスタートアップルーチンでワイルドカードを展開するコンパイラ(ライブラリ)を使う
3.dir /b の結果を実行ファイルに渡す
4.自力でファイル検索ルーチンを作る
5.手作業でやる
610:591
08/01/26 00:13:33
>>609
そうですか。 わかりました。
1,2,4は今の自分には荷が重そうなので
とりあえず "dir /b > temp.dat" で temp.dat を読ませる感じにしようかと思います。
ありがとうございます。
他の方もありがとうございました。
611:デフォルトの名無しさん
08/01/26 00:46:38
【時間切れ】 (1/25)
>577
【未解決問題】
>>603 1/27
>>581 1/28 9:00
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148
>404 期限切れだがやって欲しい
612:599
08/01/26 01:18:08
>>601
本当ですね。参考にします。
>>607
非常に助かりました。ありがとうございます^^
613:デフォルトの名無しさん
08/01/26 01:18:46
>>599
URLリンク(kansai2channeler.hp.infoseek.co.jp)
614:デフォルトの名無しさん
08/01/26 02:15:02
[1] 授業単元:プログラミング
[2] 問題文 3問あります
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2005
[3.3] 言語: C
[4] 期限: 1月28日 午前8時まで
[5] その他の制限:特にないですが
考察も書かないといけないので何をやっているか軽い注訳をつけてくれるとありがたいです(これはなくても構いません)
615:デフォルトの名無しさん
08/01/26 02:22:27
>>614
課題1と課題2は現行スレで見た気がするぞ。
616:デフォルトの名無しさん
08/01/26 02:37:23
>>615
本当ですか?
ちょっと探してみます
レス番のあてつけとか出来ませんか
617:デフォルトの名無しさん
08/01/26 03:07:10
>>404
つくりかけで忘れていた。もう見れたもんじゃない。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
618:478
08/01/26 03:18:22
>>616
それぐらい自分で探してくれ・・・と言いたい所だが、
自分がうpした課題1だけ。
619:デフォルトの名無しさん
08/01/26 03:20:41
>>618
本当にありがとうございます(´;ω;`)
620:デフォルトの名無しさん
08/01/26 08:00:09
前スレの231と同じ+αなのですが、落ちちゃって見れません、再度お願いできませんでしょうか?お願いしますorz
問題下[1]プログラミングⅡ
[2]
(1)
次の学生の成績表を元に,出力結果のように合計点と平均点を出力するプログラムを作成せよ。ただし,for文を使うこと。
(成績表)
学籍番号 5001 5002 5003
数学 62 45 76
英語 75 65 93
国語 54 82 63
(出力結果)
数学の合計点=177点,数学の平均点=59.0点
英語の合計点=233点,英語の平均点=77.7点
国語の合計点=199点,国語の平均点=66.3点
(2)
(1)で作成したプログラムを元に,学生別の合計点を出力するプログラムを作成せよ
(出力結果)
学籍番号5001の合計点は,191点です。
学籍番号5002の合計点は,192点です。
学籍番号5003の合計点は,226点です。
621:デフォルトの名無しさん
08/01/26 08:02:59
(3)
(1)で作成したプログラムを元に,科目別の最高得点を表示するプログラムを作成せよ。
(出力結果)
数学の最高得点は70点です。
英語の最高得点は93点です。
国語の最高得点は82点です
(4)
(1)で作成したプログラムを元に,70点以上を得点した学生の人数を科目別に表示するプログラムを作成せよ。
(出力結果)
数学:1人
英語:2人
国語:1人
(5)
(1)で作製したプログラムを元に、出力結果をユーザ関数を使って表示するプログラムを作成せよ。
(ユーザ関数の概要)
main()関数から成績データを渡し、そのデータを(1)の(出力結果)どおりに表示する。
また、ユーザ関数はhyouji()とする。
(6)
(1)で作製したプログラムを元に、次の構造体をつかって(出力結果)を表示するプログラムを作成せよ。
(構造体)
typedef struct{
int no;
int suugaku;
int eigo;
int kokugo;
}seiseki;
622:デフォルトの名無しさん
08/01/26 08:05:18
[3]環境
[3.1]XP
[3.2]visual studio 2005
[3.3]C++
[4]今日中
[5]なし
sageソコね、長文申し訳ないです、期間も短いので、困難かもしれませんが出来る限りでいいのでお願いできませんか?
623:デフォルトの名無しさん
08/01/26 08:06:33
最後までsage損ねてる俺ばっかす・・・すいませんでしたorz
624:デフォルトの名無しさん
08/01/26 09:07:17
>>614 ③
#include <stdio.h>
#include <math.h>
main(int argc,char *argv[])
{
int point,i=0;
double x,y,old_x,old_y,distance=0.0;
char line[1000];
FILE *fp;
if(argc!=2){
printf("Usage: %s <filename>\n",argv[0]);
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL){
printf("file can't open.\n");
exit(1);
}
while(fgets(line,999,fp)!=NULL){
if(sscanf(line,"%lf %lf",&x,&y)==1){
point=x;//データが1つしかない=点の数なのでpointに代入
continue;
}
if(i==0){ old_x=x; old_y=y; }//初回は以前の点がないので同じにする
distance+=sqrt(((x-old_x)*(x-old_x))+((y-old_y)*(y-old_y)));//2点間の距離の公式
old_x=x; old_y=y;//前回座標の保存
i++;
}
printf("point = %d distance = %lf\n",point,distance);
}
前回の点から今回の点まで移動した距離の合算でいいんだよね?
625:デフォルトの名無しさん
08/01/26 12:05:11
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1/26
[5] その他の制限:なし
分かりません、よろしくお願いします。
626:デフォルトの名無しさん
08/01/26 12:40:18
zipの場合は簡単に説明を書いてくれ
落として解凍するのダルいし
627:デフォルトの名無しさん
08/01/26 12:55:02
なぜzipなんだ・・・やる気うせる
ウィルス恐いよ~・゚・(つД`)・゚・。
628:デフォルトの名無しさん
08/01/26 13:17:54
ウィルス恐いよ~(笑)
629:625
08/01/26 13:37:03
内容は点電荷の電位を計算して、電荷の分布と電位の関係を求めるとありました。
もしかしたらこんな課題やらせるようなスレじゃなかったりして(汗)
ZIPは安心して、ウィルスなんかないから(´∀`)
630:デフォルトの名無しさん
08/01/26 13:38:13
俺は電磁気学は興味ないからやってないしな。
力学なら余裕なんだがすまんね
631:デフォルトの名無しさん
08/01/26 13:40:10
>>624
そうです、ありがとうございました
632:デフォルトの名無しさん
08/01/26 13:55:33
電磁気しらんで方程式くそくらえ、電磁気のラウンド微分はどうし様
633:デフォルトの名無しさん
08/01/26 13:57:47
へん微分と数論は違うんだからね、ふん
634:デフォルトの名無しさん
08/01/26 14:31:59
(´∀`)
635:デフォルトの名無しさん
08/01/26 14:47:17
X+とX++の違いをわかる奴は天才だろ
636:デフォルトの名無しさん
08/01/26 14:49:25
バグを作らないグループとバグをツクリヤスイグループってあるわ、人のいうこと聞かない
637:デフォルトの名無しさん
08/01/26 15:31:15
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
格子点上に置かれた任意の4点を結ぶ最小の直線スタイナーツリーを見つけるプログラムを作成せよ。
候補が複数ある場合は、それらを全て表示させるようにさせよ。
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:2/7
[5] その他の制限:
直線スタイナー木とは、碁盤上の縦横の線の交点に点を置き、
置いた全ての点を、碁盤の直線に沿って作る線分によって結ぶネットワークの事です。
例 URLリンク(www.dotup.org)
閉路(ある点を出て、またその点に帰ってくる道がある状態)を作ってはいけません。
その直線スタイナー木の中で、最も距離の短いものを探せというものです。
もちろん、答えは複数候補ある場合が圧倒的に多いです。
とりあえず、自分で4点の座標を適当に置いてやれ、という事です。
どんなに泥臭い方法でも構わないので、ご協力お願いします。
638:579
08/01/26 16:00:26
>>585さん
本当にありがとうございます!
639:デフォルトの名無しさん
08/01/26 16:06:02
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):
<問題1>
1からnまで加算して、その和が1000を超えるのはnがいくつのときか。
また、そのときの合計はいくつになるか。
<問題2>
1から30までの整数の中から奇数だけを取り出して配列に格納し、
その合計を求めるプログラムを作れ。
<問題3>
10個のデータをキーボードから入力し、合計を求めるプログラム
を作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:LCC-Win32
[3.3] 言語:C
[4] 期限:2/5
[5] その他の制限:なし
お願いします。
640:デフォルトの名無しさん
08/01/26 16:26:34
おまいら、マジデ、ノードが増えたら手におえなくなるという答えを期待している先生を
裏切るんだな
641:デフォルトの名無しさん
08/01/26 16:41:54
>>639
問題1
#include <stdio.h>
int main(void)
{
int i, sum;
for(i=sum=0;sum<=1000;sum+=++i);
printf("%d, %d\n", i, sum);
return 0;
}
642:デフォルトの名無しさん
08/01/26 16:43:18
まあ動的計画法でも使うんだろうな。
643:デフォルトの名無しさん
08/01/26 16:56:39
>>639
2
#include <stdio.h>
int main(void) {
int odd[30/2+30%2] = {0}, n, i;
for(i=n=0;n<=30;++n) {
if(1 == n%2) {
odd[i++] = n;
}
}
for(i=n=0;i<sizeof(odd)/sizeof(int); ++i) {
n+=odd[i];
}
printf("%d¥n", n);
return 0;
}
644:デフォルトの名無しさん
08/01/26 16:58:50
ちなみにodd eyeなのは狙ってやった。
645:デフォルトの名無しさん
08/01/26 17:08:39
そこでORアルゴリズム
646:デフォルトの名無しさん
08/01/26 19:07:34
>>620
URLリンク(kansai2channeler.hp.infoseek.co.jp)
組んだ後にC++だと気づいたorz
なんでCだけど・・・一応うpしておきます。
647:デフォルトの名無しさん
08/01/26 19:58:08
>>639
<問題3>
整数限定で。
#include <stdio.h>
#include <limits.h>
int main(void) {
int sum=0, i;
char sz[LINE_MAX];
const char * psz;
for(i=1; i<=10;) {
while(1) {
printf("input %d:", i);
if(fgets(sz, sizeof(sz), stdin)) {
int nTmp = strtol(sz, &psz, 10);
if('¥n' == *psz && sz != psz) {
sum += atol(sz);
++i;
break;
}
}
printf("error¥n");
}
}
printf("sum = %d¥n", sum);
return 0;
}
648:デフォルトの名無しさん
08/01/26 19:59:40
すまん、パッチ。
- sum += atol(sz);
+ sum += nTmp;
649:デフォルトの名無しさん
08/01/26 23:26:00
>>637
出力フォーマットが分からないと何とも。
あと入力されうる点の上下限値は示されてないのか。
4点からの最短共有点を列挙するプログラムを書いたので好きに変えてくれ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
入力フォーマットは雰囲気で把握してくれ。
650:デフォルトの名無しさん
08/01/27 00:11:26
[1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!
お願いします。
651:デフォルトの名無しさん
08/01/27 00:12:38
[1] デジタル画像処理
[2] 直線補間法を用いて、[256x256]画素の画像を、[512x512]画素の画像になるよう
拡大するプログラムの作成
[3.1] Linux
[3.2] gcc
[3.3] C言語
[4] 明後日までです
制限はないです!
お願いします。
652:デフォルトの名無しさん
08/01/27 00:32:44
【時間切れ】 (1/26)
>625
【未解決問題】
>>603 1/27
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00
>>650 1/29
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148
653:デフォルトの名無しさん
08/01/27 01:28:32
>>603
#include <stdio.h>
#include <math.h>
double f(double x)
{
return sqrt(x)*sqrt(1.0-2.5e-5*x*x);
}
main()
{
double x;
FILE *fp;
if((fp=fopen("dat.csv","w"))==NULL){
printf("file can't open\n");
exit(1);
}
fprintf(fp,"x,f\n");
for(x=4.0;x<=20.0;x=x+0.5){
fprintf(fp,"%lf,%lf\n",x,f(x));
}
fclose(fp);
}
654:デフォルトの名無しさん
08/01/27 15:11:07
>>583
スイマセン、ポインタも使わないという条件を書くのを
忘れていました。
もう一度お願いしてもいいでしょうか?
655:デフォルトの名無しさん
08/01/27 15:15:38
>>654
条件後付けして再度やってくれって・・・。
つか、”ちゃんとソース見た"のか?
656:デフォルトの名無しさん
08/01/27 15:16:43
>>654
#include<stdio.h>
int main(void){
int year, month, day, week, tmpm, tmpy, i;
int daymax[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
year = tmpy = 2008;
month = tmpm = 1;
day = 1;
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) daymax[1] = 29;
if (tmpm < 3) {
tmpy--;
tmpm += 12;
}
week = (tmpy + tmpy/4 - tmpy/100 + tmpy/400 + (13*tmpm+8)/5 + day) % 7;
for(; month <= 12; day++, week++){
if(week == 7) week = 0;
if(day == 1){
printf("\n***** %04d / %2d *****\n", year, month);
for(i=0; i < week; i++) printf(" ");
}
printf(" %2d", day);
if(day == daymax[month-1]){
putchar('\n');
day = 0;
month += 1;
continue;
}
if(week == 6) putchar('\n');
}
return 0;
}
657:デフォルトの名無しさん
08/01/27 15:27:44
ワロタ
658:デフォルトの名無しさん
08/01/27 17:23:15
>>581
(1)の問題のみ
URLリンク(www.aki7.com)
659:デフォルトの名無しさん
08/01/27 17:56:42
OS Mac言語C言語
課題 13.3 キーボードから 5 個の英単語を入力し、辞書順に並べ替えて表示するプログラムを作成せ
但し、
? main関数内で単語を入力し、並び替える作業を関数 Sort 内で行なう
? 関数 Sortは戻り値がなく、入力した配列 wordを引数に持つ
? 結果の表示は main関数内で行なう
? 完全に辞書順にするのは難しいため、1 文字目のみを見て並び変えれば良いものとする
? 入力する単語は apple、peach、banana、grape、melonとせよ
自分で製作したのですが、無理でした。
基本これに、似た形を作ってもらって。
間違えも指摘してください。
#include<stdio.h>
#define N 5
void Sort(char input[][]);
main() {
int i;
char array[N[6];
660:デフォルトの名無しさん
08/01/27 17:58:01
printf("Input %d numbers\n", N);
for(i=0; i<N; i++) {
printf("array[%d] = ", i);
scanf("%s", (array+i));
}
Sort(array);
printf("Sort result.\n");
for(i=0; i<N; i++) {
printf("array[%d] = %s\n", i, array[i]);
}
}
void Sort(char input[][]) {
int i, j;
char temp;
for(i=1; i<N; i++) {
for(j=N-1; j>=i; j--) {
if(input[j-1][0] > input[j][0]) {
temp = input[j-1];
input[j-1] = input[j];
input[j] = temp;
}
}
}
}
661:デフォルトの名無しさん
08/01/27 18:32:35
>>583ってポインタ使ってないよね?
662:デフォルトの名無しさん
08/01/27 18:55:05
>>656
printf()って、引き数にポインタをとるんですよね?
ポインタを使わないでくださいって書いているんですけど読めないんですか?
663:デフォルトの名無しさん
08/01/27 18:55:54
>>659
>間違えも指摘してください。
「間違え」ではなくて、「間違い」ですね。
664:デフォルトの名無しさん
08/01/27 19:08:53
一次配列の中身をランダムに置換して更に、それを
逆置換するプログラムを教えてください。
ある係数を渡すことで毎回同じ並びになるようにして
暗号のように使えるようにしないといけないみたいです。
例えば「1」という係数を渡すと
[3 2 4 1]を[2 4 1 3]にシャッフルして
それをもう一度[3 2 4 1]に戻したいです
665:デフォルトの名無しさん
08/01/27 19:25:04
>>664
> 一次配列の中身をランダムに置換して更に、それを逆置換する
・一次配列って一次元配列ってこと?
・ランダムに置換の,「ランダムに」ってどの程度のことを言っているの?
666:664
08/01/27 19:36:22
>>665
すみません「元」が抜けてましたね。
ランダムがどの程度か…そこまで指定されてないんですが
簡単な規則性が無ければ良いと思います。
667:デフォルトの名無しさん
08/01/27 19:38:22
>>664
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 32
void shift(int *p, int v) {
int *buf = (int*)malloc(sizeof(int)*v+1);
memcpy(buf, p, sizeof(int)*v);
memmove(p, p+v, sizeof(int)*ARRAY_SIZE);
memcpy(p+(ARRAY_SIZE-v), buf, sizeof(int)*v);
}
void print(int *p) {
int i = 0;
printf("array[%d] = {", ARRAY_SIZE);
do {
printf("%d", p[i]);
} while (++i < ARRAY_SIZE && putchar(','));
printf("}\n");
}
int main () {
int i, in, array[ARRAY_SIZE];
for (i = 0; i < ARRAY_SIZE; ++i) array[i] = i;
print(array);
scanf("%d", &in);
shift(array, in%=ARRAY_SIZE);
print(array);
shift(array, ARRAY_SIZE-in);
print(array);
return 0;
}
668:デフォルトの名無しさん
08/01/27 19:39:11
例の
> [3 2 4 1]を[2 4 1 3]にシャッフルして
これがモロ規則性あるからその通りに作った。
669:デフォルトの名無しさん
08/01/27 19:54:07
>>659
Sort関数内に
printf("%d,%d\n",i,j);
を追加して、ちゃんとソートが行われているかどうか確認するといい
670:デフォルトの名無しさん
08/01/27 20:03:38
>>664
#include<stdio.h>
#include<stdlib.h>
typedef struct tag_dataset{int index, data;}dataset_t;
void swap_int(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void swap_dataset(dataset_t *a, dataset_t *b){dataset_t c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap_int(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i; dataset_t *tmp;
srand(seed);
tmp=malloc(sizeof(*tmp)*datanum);
for(i=0;i<datanum;i++) tmp[i].index=i;
for(i=0;i<datanum;i++) swap_dataset(&tmp[i], &tmp[rand()%(i+1)]);
for(i=0;i<datanum;i++) tmp[i].data=data[i];
for(i=0;i<datanum;i++) data[tmp[i].index]=tmp[i].data;
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10}, datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
decode(data, datanum, 0); prt(data, datanum); /* 0 の部分が乱数seed */
return 0;
}
671:581
08/01/27 20:12:35
>>658さん
解析サンプルまで付けてくださってありがとうございます(T_T)
本当に困っていたので助かりました!!
これを元に(2)と(3)にも挑戦します・・・
でも期限には絶対間に合う予感がしない・・・orz
672:670
08/01/27 20:13:10
>>664
>>670 を書き直した
#include<stdio.h>
#include<stdlib.h>
void swap(int *a, int *b){int c;c=*a;*a=*b;*b=c;}
void encode(int data[], int datanum, int seed){
int i;
srand(seed);
for(i=0;i<datanum;i++) swap(&data[i], &data[rand()%(i+1)]);
}
void decode(int data[], int datanum, int seed){
int i, *tmp;
srand(seed);
tmp=malloc(sizeof(int)*datanum);
for(i=0;i<datanum;i++) tmp[i]=rand()%(i+1);
for(i=datanum-1;i>=0;i--) swap(&data[i], &data[tmp[i]]);
free(tmp);
}
void prt(int data[], int datanum){
int i;
for(i=0;i<datanum;i++) printf(" %d", data[i]);
printf("\n");
}
int main(void){
int data[]={1,2,3,4, 5, 6, 7, 8, 9, 10};
int datanum=sizeof(data)/sizeof(data[0]);
encode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
decode(data, datanum, 0); /* 0 の部分が乱数seed */
prt(data, datanum);
return 0;
}
673:デフォルトの名無しさん
08/01/27 20:13:23
[1] 授業単元: cプログラミング入門」
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c言語
[4] 期限:1/31まで
[5] その他の制限;特になし
どうかよろしくお願い致します。
674:659
08/01/27 20:14:55
自分でもう一度やってみたけど。分けわからなくなってきた。
もう本当に無理っぽい。
誰か、答えを教えてください。
675:デフォルトの名無しさん
08/01/27 20:38:56
死ねカス
676:デフォルトの名無しさん
08/01/27 20:53:40
[1] 授業単元:C言語演習
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS:Linux
[3.2] コンパイラ名:gcc
[3.3] 言語:C言語
[4] 期限:1月28日中
[5] その他の制限:特にありません。
よろしくお願いします!
677: ◆LnG.2EAY0A
08/01/27 21:01:19
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:2008年01月28日午前まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
678:デフォルトの名無しさん
08/01/27 21:08:28
>>659
ここは宿題スレだ。
組んで欲しいならテンプレ使って正式に頼め。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ギャーギャー騒がれると目障りだし、これ持って去りな。
679:デフォルトの名無しさん
08/01/27 21:36:04
>>678
なんというツンデレw
680:デフォルトの名無しさん
08/01/27 21:55:48
>>676
showpidがおかしくないか?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
int i, status, flg = 0;
for (i = 0; i < 10; ++i) {
if ((pid = fork()) < 0) {
fprintf(stderr, "error\n");
exit(1);
}
if (pid == 0) {
execv("showpid", NULL);
exit(1);
} else {
if (flg == 0) {
flg = 1;
printf("I am a parent with pid = %d.My child is %d.\n",getpid(),pid);
}
waitpid(pid, &status, 0);
}
}
return 0;
}
681:デフォルトの名無しさん
08/01/27 21:57:02
## showpid ##
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
printf("I am a child with pid = %d,My parent pid is %d.\n",getpid(),getppid());
exit(EXIT_SUCCESS);
}
682:664
08/01/27 22:07:09
>>870
助かりました☆
ありがとうございます!
683:デフォルトの名無しさん
08/01/27 22:08:13
>>870
やるじゃん
684:637
08/01/27 22:08:40
>>649
ありがとうございます!
あとはなんとかしてみようと思います。
685:デフォルトの名無しさん
08/01/27 22:16:07
簡単なゲームを作れといわれたのですがわかりません
誰か助けてください
686:デフォルトの名無しさん
08/01/27 22:16:43
>>685
>>677
687:デフォルトの名無しさん
08/01/27 22:50:20
>>686
むつかしくてわかりません、もっと簡単なのお願いします
ポーカーとかでいいです
688:デフォルトの名無しさん
08/01/27 22:52:28
>>687
頭は大丈夫か?
689:デフォルトの名無しさん
08/01/27 22:57:01
ポーカーの方がよっぽど難しい罠
690:デフォルトの名無しさん
08/01/27 23:00:12
>>687
まあ何も考えずに>>677の問題文にあるソースをコピってコンパイルして動かしてみろ
そして中身を理解しろ
ポーカーはそれからだ
691:デフォルトの名無しさん
08/01/27 23:05:29
オセロ作るスレってのがあったな
692:デフォルトの名無しさん
08/01/27 23:06:59
>>676
当方で確認した環境は Vine Linux 4.2 (kernel 2.6.16.36), 処理系は gcc 3.3.6 です。
showpid; URLリンク(kansai2channeler.hp.infoseek.co.jp)
tentimes: URLリンク(kansai2channeler.hp.infoseek.co.jp)
関係ないが、
URLリンク(espio.air-nifty.com)
によると、鳥インフルエンザがインドではやっているらしい。1400 人超えたとか超えないとか。
それにしても日本ではなぜ報道されないのか?
693:デフォルトの名無しさん
08/01/27 23:07:04
釣りだろ
694:デフォルトの名無しさん
08/01/27 23:14:30
>>673
URLリンク(kansai2channeler.hp.infoseek.co.jp)
695:692
08/01/27 23:21:19
>>680
確かに提示されたshowpidはおかしいですね。私もひっかかってしまった。
696:デフォルトの名無しさん
08/01/28 00:00:31
【時間切れ】 (1/27)
なし
【未解決問題】
>>614 1/28 8:00 残:課題2
>>581 1/28 9:00 残:課題2、3
>>677 1/28 午前まで
>>650 1/29
スレリンク(tech板:229番) 1/31
>79 無期限
>144 無期限 問題文>148
697:デフォルトの名無しさん
08/01/28 01:05:26
オレも早くせっくるしたい、by20歳
698:デフォルトの名無しさん
08/01/28 02:54:34
>>614 (>>696 1行目)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
699:デフォルトの名無しさん
08/01/28 03:04:20
[1] 授業単元:C演習
[2] 問題文(含コード&リンク):
/*ガウスの消去法プログラム*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#define A(x,y) a[(x)*(L+1)+y]
void output(double *a, int, int);
int gauss(double*a,double*x,int L,int n,double eps,int isw)
main(){
double amax,awap;
int i,j,k,l,m,ii,irow;
if(isw==1) output(a, L, n){
for(m=0;m<n-1;m++){
amax=fabs(A(m,m));
irow=m;
for(i=m+1;i<n;i++){
if(amax<fabs(A(i,m))){
amax=fabs(A(i,m));
irow=i;}
if(amax<=eps){
return(0);}
if(m!=irow){
for(l=m;l<n+1;l++){
続く
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cresent
[3.3] 言語: C++
[4] 期限: 1月28日11:00まで
700:デフォルトの名無しさん
08/01/28 03:18:16
>>699
見難い。
出直して来い。
701:673
08/01/28 07:23:48
<<694ありがとうございます!参考にします。
702:デフォルトの名無しさん
08/01/28 10:56:13
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
配列に整数を100個蓄える。
(1)蓄える整数は関数randによって与えられるものとし、
この配列をバブルソートによってソートした結果を出力するプログラムを作成せよ。
(2)また、上の問題を選択ソートを使用したプログラムに変更せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月29日
よろしくお願いします
703:デフォルトの名無しさん
08/01/28 11:26:39
>>702 ありきたりで申し訳ないが
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
#define SWAP(type, x, y) do{type tmp = x; x = y; y = tmp;}while(0)
// バブルソート
void bsort(int *a, int n){
int i, j;
for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(a[i] > a[j])
SWAP(int, a[i], a[j]);
}
// 選択ソート
void ssort(int *a, int n){
int i, j, min;
for(i = 0; i < n - 1; i++){
min = i;
for(j = i + 1; j < n; j++) if(a[min] > a[j]) min = j;
SWAP(int, a[i], a[min]);
}
}
int main(void){
int i, a[N];
srand((unsigned)time(NULL));
for(i = 0; i < N; i++) a[i] = rand()%100;
for(i = 0; i < N; i++) printf("%4d", a[i]);
printf("\n");
bsort(a, N); // ssort(a, N);
for(i = 0; i < N; i++) printf("%4d", a[i]);
}
704:デフォルトの名無しさん
08/01/28 11:42:15
>>702
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//バブルソート
int main(void){
int i,j,num[100],temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
for(j=0;j<i;j++)
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;}}}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
//選択ソート
int main(void){
int i,j,num[100],min,temp;
srand(time(NULL));
for(i=0;i<100;i++)num[i]=rand();
for(i=99;i>0;i--){
min=i;
for(j=0;j<i;j++)if(num[min]>num[j])min=j;
temp=num[min];
num[min]=num[i];
num[i]=temp;}
for(i=0;i<100;i++)printf("%d\n",num[i]);
return 0;
}
705: ◆HXgzCCSIaM
08/01/28 13:00:19
1] 授業単元:プログラミング演習Ⅰ
[2] 問題文(含コード&リンク):
構造体を用いて加減算を行う。
以下の空白(oooo)を埋めよ。
#include <stdio.h>
struct { /* 構造体の宣言 */
struct{
int a;
int b;
}keisan;
int main( void )
{
int wa, sa; /* 変数の宣言 */
scanf( "%d, %d", &keisan.a, &keisan.b ); /* 入力 */
wa= oooo ; /* 加算 */
sa= oooo ; /* 減算 */
printf( "和は%d 差は%d\n", wa, sa ); /* 出力 */
return 0;
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC 5.5
[3.3] 言語: (C)
[4] 期限: 無期限
[5] その他の制限: 特になし
途中まで自分で埋めたのですが、oooo部分が違うと指摘されました。
よろしくお願いします。
706:デフォルトの名無しさん
08/01/28 13:20:35
>>705
wa = keisan.a + keisan.b
sa = keisan.a - keisan.b
707:デフォルトの名無しさん
08/01/28 13:27:12
>>705
scanfの中も違う
scanf( "%d %d", &keisan.a, &keisan.b); /* 入力 */
708:デフォルトの名無しさん
08/01/28 13:39:04
合ってるんじゃね?
709:デフォルトの名無しさん
08/01/28 13:44:44
問題は、出題の意図がどうであったか、だな。
710: ◆HXgzCCSIaM
08/01/28 13:58:31
>706-709
ありがとうございます。問題部分はこれで解決しました。
甘えてもう1題
[2] 問題文(含コード&リンク):
2つの正の整数値a,bの最大公約数を出力するプログラムをユークリッドの互除法というアルゴリズムを用いて作成したい。
以下のプログラムの****部分に適切な処理をいれて,プログラムを完成させなさい。
#include <stdio.h>
int main( void )
{
int a, b; /* 変数の宣言 */
int m, n;
scanf( "%d,%d", &a, &b );/* 2つの正の整数値を入力する */
m= a ;
n= b ;
while(m **** n){ /* ユークリッドの互除法を適用 */
if( m > n )
m = ***** ;
else
n = **** ;
[3] 環境
[3.1] OS:WindowsXP
[3.2] VC 5.5
[3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限: 特になし
同じく後半部分が解りませんでした。
よろしくお願いします。
711:デフォルトの名無しさん
08/01/28 14:12:14
>>710
while(m != n){
if(m > n)
m = m - n;
else
n = n - m;
}
712:デフォルトの名無しさん
08/01/28 14:13:21
#include <stdio.h>
int main(void)
{
int a,b,m,n;
scanf("%d %d",&a,&b);
m=a;
n=b;
while(m*n)
{
if(m>n)
m%=n;
else
n%=m;
}
printf("%dと%dの最大公約数は%dです",a,b,m+n);
return 0;
}
713:デフォルトの名無しさん
08/01/28 14:17:37
lcmやgcdの問題が多すぎ。
714:デフォルトの名無しさん
08/01/28 15:16:02
柴田望洋の本を使ってる授業多いNE。
715: ◆HXgzCCSIaM
08/01/28 15:17:33
>711
ありがとうございます!助かりました。
>712
別の表記方法なんですね。
勉強になります。
716:デフォルトの名無しさん
08/01/28 15:30:22
[1]プログラミング入門
[2]問題文
キーボードから月(1~12)を入力して、その月の日数を表示するプログラムを
完成させなさい
[3]環境
[3.1] OS:WindowsXP
[3.2] VC 5.5
[3.3] 言語: C言語
[4]期限:1月29日
[5]その他の制限特になし
初心者ですがよろしくおねがいします
717:デフォルトの名無しさん
08/01/28 15:35:48
>>716
#include <stdio.h>
int main(void)
{
int month, Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
scanf("%d", &month);
printf("%d", Days[month - 1]);
return 0;
}
718:デフォルトの名無しさん
08/01/28 17:27:31
[1]プログラミング演習Ⅱ
[2]問題文
sample.txt
0 1 2,
2 4 5,
3 4 2,
1 2 5,
2 2 2,
3 1 4,
1 1 2,
2 1 3,
3 5 4,
4 2 2,
上の外部テキストファイル(sample.txt)に書かれている座標データを読み込み、
1行ずつ順にx,y,zの配列に格納し、ちゃんと格納されたか出力してください。
[3]環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名:gcc
[3.3] 言語: C言語
[4]期限:1月28日 17:00
[5]その他の制限特になし
719:デフォルトの名無しさん
08/01/28 17:32:35
期限切れ
720: ◆LnG.2EAY0A
08/01/28 18:21:22
以前質問させてもらった>>677です。
期限を01月28日と書きましたが、宿題の期限が伸びたので
図々しい様ですが、改めてお願いさせて頂いても良いでしょうか?
内容は変わりありません。
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のゲームプログラムで、最初に設定する石の数を
ファイル操作を使って一括設定できるようにする。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:VC 6
[3.3] 言語:C
[4] 期限:2008年02月05日まで
[5] その他の制限:ファイル操作を習う所まで授業で進みました。
自分でも試行錯誤してみたのですが中々うまく行かず・・・
皆さんの知恵をお借りしたいと思います、よろしくおねがいします。
721:デフォルトの名無しさん
08/01/28 18:35:20
>>720
問題文の意図が明瞭でない。それだと答えようがない
722: ◆LnG.2EAY0A
08/01/28 19:19:25
>>721
説明不足ですみませんでした。
問題文の元は、石取りゲームといって最初に全体の石の数・そこから一度に取れる数を設定しなければいけません、それが以下の部分です↓
printf("石を交互に取り、最後の1個を取った人が負けです\n");
while (1) {
nOrder = 1;
printf("石の数は(5以上100以下)==");
gets(answer);
nStone = atoi(answer);
if (nStone < 5 || nStone > 100) {
printf("石の数が不正です\n");
continue;
}
while (1) {
printf("一度に取れる石の数は(2以上)==");
gets(answer);
nGet = atoi(answer);
if (nGet >= nStone) {
printf("一度に取れる石の数が多すぎます\n");
continue;
}
if (nGet < 2) {
printf("一度に取れる石の数が少なすぎます\n");
continue;
}
break;
}
この部分で設定するのですが、最初の石の数・一度に取れる数を一度に設定できるようにしたいのです。例えば、
「一括設定を使いますか?→ y/n」→「難易度を選択して下さい→ 1:優しい 2:普通 3:難しい」
ここで1を入力すると、石の数と取れる数をファイルから読み込み、その設定でプレイする。といった感じです。
説明下手ですみません、追記させていただきました。
723:デフォルトの名無しさん
08/01/28 20:10:38
#include<stdio.h>
#include<string.h>
int main(void){
FILE *fp;
char line[128], *p;
int nStone, nGet, level, cnt;
~省略~
for(cnt=1; fgets(line, 128, fp) != NULL && cnt <= 3; cnt++){
if(level != cnt) continue;
p=strchr(line, '\n');
if(p!=NULL) *p='\0';
sscanf(line, "%d %d", &nStone, &nGet);
break;
}
~省略~
724:デフォルトの名無しさん
08/01/28 21:08:06
[1]通信工学II
[2]問題文(含コード&リンク):
次の文字送受信プログラム(IPv4専用)を、IPv4/v6デュアルスタックのプログラムに改良せよ。
クライアント:URLリンク(kansai2channeler.hp.infoseek.co.jp)
サーバー:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
[3.1] OS:Windows XP/Vista
[3.2] コンパイラ名:Visual C++ 2005 SP1
[3.3] 言語:C++
[4]期限:1月31日 16:00
[5]その他の制限:特になし
丸投げですがよろしくお願いいたします。
725:デフォルトの名無しさん
08/01/28 21:15:27
なんかデカいのがきたな。
726:デフォルトの名無しさん
08/01/28 22:22:04
コメントそれなりについてるけど、このスレにしては確かにでかいな・・・
変更が必要な箇所を明記してくれてるけど、専門外でさっぱりわかんねw
727:デフォルトの名無しさん
08/01/28 22:32:12
素人でホントに困っています。よろしくお願いします
【質問テンプレ】
[1] 授業単元: 情報科学実習
[2] 問題文(含コード&リンク):()
問題>
次のような書式のファイルからデータを読み出して、標準体重の人の名前と
血液型一覧を別のファイルに出力せよ。ただし、classを用いること。また、
人のデータは必要によってメモリ割り当てすること
*標準体重・・・まず。指数k=平均体重/(平均身長-100)を出す。
各人の理想体重は(身長-100)×kであり、標準体重は、理想体重の97~103%。
・データファイルの書式
一行目:人数
二行目以降:名前 血液型 身長 体重
・データファイルの例
2
Mizumoto O 172 67
Otake A 170 62
[3] 環境
[3.1] OS: I Mac
[3.2] コンパイラ名とバージョン: E macs
[3.3] 言語:C++
[4] 期限: 2008年2月6日まで
[5] その他の制限:繰り返し、条件式、配列、アドレス、ポインタ、スコープ、
クラスを習いました。
728:デフォルトの名無しさん
08/01/28 23:27:23
コンパイラ?
729:デフォルトの名無しさん
08/01/29 00:16:19
【時間切れ】 (1/28)
>581 >718
【未解決問題】
>>650 1/29
スレリンク(tech板:229番) 1/31
>>724 1/31 16:00
>>720 2/5 詳細>>722
>>727 2/6
>79 無期限
>144 無期限 問題文>148
730:デフォルトの名無しさん
08/01/29 00:33:26
>>727
この計算式通り計算すると理想体重が170付近になってしまいますが
理想体重でなくて理想身長の間違いではないでしょうか?
電卓で計算してみて下さい。
731:730
08/01/29 00:35:05
あ、ごめんなさい。私の間違いでした。
732:デフォルトの名無しさん
08/01/29 00:53:45
>>727
URLリンク(kansai2channeler.hp.infoseek.co.jp)
data2.datというファイルに結果を出力しています。
733:デフォルトの名無しさん
08/01/29 01:33:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク)
入力された整数を配列に順次格納する(昇順になるように入力すること)。
0が入力された時に整数の入力を終了し、次に入力された数字を、二分探索によって
配列から探索し、その配列の添え字番号を出力するプログラムを作成せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 1月29日正午まで
お願いします
734:702
08/01/29 01:44:08
>>703-704
ありがとうございました
735:デフォルトの名無しさん
08/01/29 02:21:02
>>733
#include <stdio.h>
#include <stdlib.h>
#define BUFFSIZE 32
#define ARRAYSIZE 256
int binary_search(int array[], int b, int e, int key)
{
int t = (e - b) / 2 + b;
if (array[t] == key) return t;
if (array[t] < key) return binary_search(array, t, e, key);
if (array[t] > key) return binary_search(array, b, t, key);
}
int main(void)
{
int array[ARRAYSIZE];
char buff[BUFFSIZE];
int i;
puts("Input Number(s).");
for (i = 0; i < ARRAYSIZE; ++i) { fgets(buff, BUFFSIZE, stdin); if (atoi(buff) == 0) break; array[i] = atoi(buff); }
printf("Input Number. :");
fgets(buff, BUFFSIZE, stdin);
printf("index: %d\n", binary_search(array, 0, i, atoi(buff)));
return 0;
}
736:デフォルトの名無しさん
08/01/29 02:59:26
gccは不思議だな。
停止性がなくとも止まってくれるのは何故だろう?
printfとかを入れると止まらんけど。
737:デフォルトの名無しさん
08/01/29 06:45:43
[1] 授業単元:データ構造とアルゴリズム設計
[2] 問題文(含コード&リンク)
名前と年齢を入力し、年齢をキーとして、ハッシュ(チェイン法)に登録する
'-'を入力すると登録を終了し、次に入力された年齢を、ハッシュ法で検索し
あればその名前を出力するプログラムを作成せよ。ハッシュ表の大きさは9とする
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2月1日まで
よろしくお願いします。
738:デフォルトの名無しさん
08/01/29 08:03:26
>>732
ありがとうございます!!助かりました
739:733
08/01/29 08:55:01
>>735
ありがとうございました!
740:デフォルトの名無しさん
08/01/29 10:54:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio .NET 2003
[3.3] 言語: C
[4] 期限: 1/29まで
コンパイルするとエラーが出るのですが
どこが間違っているのかわからなくなってしまいました。
よろしくお願いします。
741:740
08/01/29 10:59:25
連投すいません
問題つけるの忘れてました
申し訳ありません
これです
URLリンク(kansai2channeler.hp.infoseek.co.jp)
742:デフォルトの名無しさん
08/01/29 11:31:24
「エラーメッセージはコピペしてください。」 って>>1に書いてある
コンパイルを通したいだけなら、問題文よりコンパイラのメッセージをコピペしてくれよ
743:デフォルトの名無しさん
08/01/29 11:59:24
回答者たちよ、実務では解決できるのかすら分からない難題に埋もれる中、
回答が出るよう作られた宿題回答で回帰逃避したい気持ちはよく分かるぞ。
744:デフォルトの名無しさん
08/01/29 12:36:05
娯楽ってのはそういうもんだ
745:デフォルトの名無しさん
08/01/29 12:37:29
>>743
先生、回帰逃避がよく判らないです。
746:デフォルトの名無しさん
08/01/29 12:53:27
>>737
URLリンク(kansai2channeler.hp.infoseek.co.jp)
747:デフォルトの名無しさん
08/01/29 13:26:55
前に回答して頂いた>>581です。
期限が切れてしまいましたが、二月頭まで締切を伸ばしてもらったので、引き続き(2)と(3)の解答をお願いできませんか??
どうかよろしくお願いします…m(_ _)m
748:デフォルトの名無しさん
08/01/29 14:01:25
>>747
音声データを縮める、音声データを反転させる、の定義をしてくれたまえ。
749:デフォルトの名無しさん
08/01/29 14:28:52
718の者です。期限1/28の17:00までって書いたんですけど
これは間違いで1/30の17:00までなのでよろしくお願いしますm(__)m
750:デフォルトの名無しさん
08/01/29 16:22:53
>>749
#include <stdio.h>
#define DATAFILE "sample.txt"
#define LINES 10
int main(void)
{
FILE *fp;
char line[10];
int i = 0, x[LINES], y[LINES], z[LINES];
if (fp = fopen(DATAFILE, "r")) {
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d%d%d", &x[i], &y[i], &z[i]);
i++;
}
fclose(fp);
for (i = 0; i < LINES; i++)
printf("x[%d] = %d, y[%d] = %d, z[%d] = %d\n", i, x[i], i, y[i], i, z[i]);
}
return 0;
}
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のプログラムを作る。
②問題①をライブラリ関数qsort()を用いて作る。
qsort( void* base, int n_elem, int size, int (*compare)(void*, void*) )
base: 配列のアドレス
n_elem: 要素数
size: 一要素のサイズ
compare: 比較に使う関数。
③ライブラリ関数と同じ動きをする関数
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も加えておいてくれ。どっちもどっち