09/07/04 16:07:08
[1] 授業単元:プログラミング言語2
[2] 問題文(含コード&リンク)
簡単なデータベース機能を持つプログラムを作成しなさい.対象となるデータは自分で考えてください.
(住所録,商品の在庫,図書,ワールドカップの勝敗....)
以下の要件を示します.
1. ファイルからデータを読み込む機能をつけること.
2. データは4つ以上の項目を保持させること.
(住所録では、「名前」「住所」「郵便番号」「電話番号」等で4項目以上)
3. 並び替えの機能をつけること.また並び替える項目が指定できること.
4. 各項目についてデータの検索を行う機能をつけること.また,検索条件を組み合わせることができること.
(住所録なら,「郵便番号」が 399 で始まって,かつ,「電話番号」が 026 で始まる 等)
5. データは半角英数字(英語やローマ字)で扱ってよい
6. データの追加ができること.
7. データの削除ができること.削除は上記の検索と組み合わせることで,ある条件に合致したデータを削除できること.
8. 追加・削除した結果をファイルに保存できること.
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: cygwinのgccです。 バージョンはわかりません。
[3.3] 言語: C
[4] 期限: 2009年7月13日まで
[5] その他の制限: 双方向リストまで、終わりました。
対象となるデータは住所録でお願いします。
プログラムに説明を付けてくれると、助かります。
よろしくお願いします。
608: ◆/91kCCQXBo
09/07/04 16:33:55
>>595
#include <stdio.h>
int main(int argc, char *argv[]) {
int i, c;
FILE *fp;
if(argc < 2) {
printf("Usage : %s filename.ext", argv[0]); return 1; }
if((fp=fopen(argv[1],"r")) == NULL) {
printf("%s file open error!", argv[1]); return 1; }
puts("ASCIIコードが10の倍数の時の、ファイル先頭からの位置:");
for(i=1; (c=getc(fp)) != EOF; i++) { // 結果の値はファイルから読み込む
if(!(c%10)) printf("%dx%d ", i, c); // 結果の値が、10 で割ると余りが0になる場合だけを表示
// else if(!(i%10)) printf("x%d ", c); // 繰返しの回数が、10 で割ると余りが0になる場合
// else printf("."); // その他の場合
}
fclose(fp);
}
609:デフォルトの名無しさん
09/07/04 18:07:38
>>603
URLリンク(kansai2channeler.hp.infoseek.co.jp)
610: ◆/91kCCQXBo
09/07/04 18:57:23
>>606 リストを用いて個人データを格納する表を作成。(穴埋め問題)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
611:デフォルトの名無しさん
09/07/04 19:29:17
>>609
これ「落ちた状態」をいちいち作って数えたんだけど
よく考えたらその必要なかった…。無駄無駄無駄ー!
612:デフォルトの名無しさん
09/07/04 19:53:43
未回答文plz
613:デフォルトの名無しさん
09/07/04 20:12:41
>>603
URLリンク(kansai2channeler.hp.infoseek.co.jp)
>>609で作ったやつの修正版
614:デフォルトの名無しさん
09/07/04 20:55:21
>>607
>8. 追加・削除した結果をファイルに保存できること.
これって追加・削除の「履歴」じゃなくて単に「現在のデータ」でいいんだよね?
615:デフォルトの名無しさん
09/07/04 21:21:31
[1] 授業単元: C言語
[2] 問題文
URLリンク(kansai2channeler.hp.infoseek.co.jp)
これを参考に、100人以内の生徒ID、名前を入力するプログラムを作る
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualC++
[3.3] 言語 C
[4] 期限: 7月6日
[5] その他の制限 ソースプログラムにある形の関数を使うこと
616:デフォルトの名無しさん
09/07/04 21:34:14
>>615
これでいいのかな
#include<stdio.h>
#include<string.h>
#define SIZE 100
略
int main(){
int i;
student_type students[SIZE];
for( i = 0; i < SIZE; ++i ){
read_student( &students[i] );
}
}
617:デフォルトの名無しさん
09/07/04 22:26:52
>>613
高校生でも分かる簡単なプログラムになりませんかね?
図々しくてごめんなさい…
ぜひお願いします。
618:613
09/07/04 22:37:57
>>617
いや、そう言われても…
この板の住人なら高校生でも>>613は読めると思うが
一般的な高校生レベルってどんなのよ
まあ、どの行がわからんのか言ってみれ
619:デフォルトの名無しさん
09/07/04 22:52:23
ホント無知で申し訳ないっす。。
printf("%s : %d --> %d\n", filename, N, min);
free(array);
fclose(fp);
}
int check_okikata(int *array, int size, int index, int color)
{
らへんがよく分かりません
どういう意味でしょう?
620:デフォルトの名無しさん
09/07/04 23:30:29
>>614
そうです。
項目が削除されたリストと、項目が追加されたリストを出力します。
621:デフォルトの名無しさん
09/07/04 23:35:28
>>619
つまり動的な配列の確保(mallocとfree)がわからないんだな
じゃあ固定配列で書き換えるから
622:デフォルトの名無しさん
09/07/04 23:56:20
>>619
malloc()とfree()を使わないようにした
URLリンク(kansai2channeler.hp.infoseek.co.jp)
623:デフォルトの名無しさん
09/07/05 00:18:10
>>620
えっ?2つのリストが出力されるの!?
追加や削除をして変更された「現在のデータベースのデータ」のリスト1つじゃないの?
624:デフォルトの名無しさん
09/07/05 01:35:36
[1]数値情報解析
[2]ガウス-ザイデル法によりn元1次方程式を解くプログラムを作りなさい。
[3]
[3.1]Windows
[3.2]Visual Studio 2008
[3.3]C
[4]2009年7月15日
[5]ほぼ素人なので、少しでも優しい表現にしていただけるようよろしくお願い致します。
あと、パワーポイントでこのプログラムのフローチャートを書いていただければありがたいです。
625:デフォルトの名無しさん
09/07/05 02:42:19
>>624 >>162 問題 >>174 >>177 >>183 解答
626:デフォルトの名無しさん
09/07/05 02:57:38
ガウスザイデル法って反復法だからガウス法と違うだろ
627:デフォルトの名無しさん
09/07/05 03:19:53
C++なんですが、
文字変数aの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
誰かお願いします
#include<iostream>
using namespace std;
int main(){
return 0;
}
628:デフォルトの名無しさん
09/07/05 03:21:02
>>627ですが、間違えました。
文字変数aの中身→文字変数mの中身
でした
629:デフォルトの名無しさん
09/07/05 03:22:32
ファイルから読み込みするの?
それともキーボードの入力を待って入力された文字を判断するの?
630:デフォルトの名無しさん
09/07/05 03:26:02
>>627
文字変数mの中身が'a'ならば『aが格納されています』と表示させ、'a'でないならば、
『'a'でない文字が格納されています』と表示させるプログラムを作成せよ
としか書かれてないんですよね。
ただ書き始めと終わりは下の定型文みたいのを使うんですが
#include<iostream>
using namespace std;
int main(){
return 0;
}
631:デフォルトの名無しさん
09/07/05 03:26:46
>>630ですが間違えました
>>627じゃなくて>>629でした
632:デフォルトの名無しさん
09/07/05 03:55:39
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
その数の二乗値の和は加算しないものとする.
整数を入力してください
整数1 : 3
整数2 : 5
整数3 : -1
二乗値の合計は34 です.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。
633:デフォルトの名無しさん
09/07/05 04:00:22
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
ファイル提出: 実行ファイル
何行ですか: 7
何列ですか: 12
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 09年07月07日
[5] その他の制限:なし。
634:デフォルトの名無しさん
09/07/05 04:02:16
>>632
#include <stdio.h>
int main(void)
{
int i = 0, sum = 0, n;
while(1) {
printf("整数%d :", ++i);
scanf("%d", &n);
if(n < 0) break;
sum += n * n;
}
printf("二乗値の合計は%d です.\n", sum);
return 0;
}
635:デフォルトの名無しさん
09/07/05 04:06:28
>>633
#include <stdio.h>
int main(void)
{
int i, j, n, m;
printf("何行ですか:");
scanf("%d", &n);
printf("何列ですか:");
scanf("%d", &m);
for(i=1; i<=n; i++) {
for(j=0; j<m; j++) printf("%d", (i+j)%10);
putchar('\n');
}
return 0;
}
636:デフォルトの名無しさん
09/07/05 06:59:52
>>627
#include<iostream>
using namespace std;
int main(){
char m;
if (m == 'a') cout << "『aが格納されています』" << endl;
else cout << "『'a'でない文字が格納されています』" << endl;
return 0;
}
637: ◆/91kCCQXBo
09/07/05 09:01:09
>>627 関数が使えるなら。
#include<iostream>
using namespace std;
namespace {
int m;
void sub(void) {
if (m == 'a') cout << "『aが格納されています』" << endl;
else cout << "『'a'でない文字が格納されています』" << endl;
}
}
int main(){
m='a';
sub();
m='x';
sub();
return 0;
}
638: ◆/91kCCQXBo
09/07/05 09:47:08
>>627 テンプレートの中だけ書く。>>626 は無しで。
char m = '\a';
int i;
char data[4]={'m', 'a', 'i', 'n'};
for(i=0; i<=sizeof data/sizeof(char); m = data[i++]) {
if (m == 'a') cout << "『'a'が格納されています』\n";
else cout << "『'a'でない文字が格納されています』\n";
}
639:デフォルトの名無しさん
09/07/05 10:42:52
そのループはギャグのつもり?
640:デフォルトの名無しさん
09/07/05 10:51:16
1週間ぐらい前に文字列表示とか、四則演算とか聞いてた人でしょ。
授業は if 文に入ったらしいが、何も分からないから全部聞くと。
641: ◆/91kCCQXBo
09/07/05 12:35:40
>>595 ループか関数のどちらかは使う必要あり。
#include <stdio.h>
void div10(int c) {
if(c%10) ; else printf("%dは10で割り切れる数\n", c);
}
int main() {
div10(1);
div10(20);
div10(21);
div10(30);
div10(13);
return 0;
}
642:デフォルトの名無しさん
09/07/05 13:10:10
>>638
そのおソースは頂けない
せめてこうしよう
#include <iostream>
using namespace std;
int main()
{
char* data = "main";
for(char* ite = data;*ite != '\0';ite++){
if(*ite == 'a') cout << "aが格納されています" << endl;
else cout << "'a'でない文字が格納されています" << endl;
}
return EXIT_SUCCESS;
}
643: ◆/91kCCQXBo
09/07/05 13:29:31
>>627 どお?
#include <iostream>
using namespace std;
int main(){
int i = 0;
char m, data[] = {'m', 'a', 'i', 'n'};
while( m = data[i], i++ < sizeof data/sizeof(char) ) {
if (m == 'a') cout << "『'a'が格納されています』\n";
else cout << "『'a'でない文字が格納されています』\n";
}
return 0;
}
644:デフォルトの名無しさん
09/07/05 13:53:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
モンテカルロ法を用いて、円周率を計算しなさい。なおランダムに打つ点は1000点用いること。
また上記プログラムを改良して、50点打つごとに、真の円周率(ここでは3.1415926とします)
との差を求め、その差をスペースと*を用いてグラフ化しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:7/9
[5] その他の制限:
申し訳ありませんがよろしくお願いします
645:デフォルトの名無しさん
09/07/05 16:52:12
>>644
喜べ、これでキミは英雄だ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
hit-or-missは中心(0,0)半径1の円に入るかどうかで判定した
一様乱数はC標準のものを用いた
おまけとして100000回試行したデータも付けておいた
この判定法と乱数では試行回数が1000回では不十分であると分かるはずだ
改善は他の住人に任せた
646:デフォルトの名無しさん
09/07/05 17:11:25
>>535
遅くなりました
ありがとうございます><
647:デフォルトの名無しさん
09/07/05 17:40:26
>>638
sizeof data/sizeof(char)
>>639が指してるのがこれかどうか分からんけど、とりあえず気持ち悪い
648:デフォルトの名無しさん
09/07/05 17:43:21
>>647
固定配列のサイズを表現する普通の記述だが
なんで気持ち悪いと思う?
649:デフォルトの名無しさん
09/07/05 17:46:18
そっか。
俺ならsizeof(data)/sizeof(data[0])と書くから。
片方にしか括弧つけない意味も分からないし。
650:デフォルトの名無しさん
09/07/05 17:49:14
ああ、そういう意味なら気持ち悪いな
確かに
651:デフォルトの名無しさん
09/07/05 17:51:08
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):Ax=bの連立1次方程式の解を求めるプログラムを作成しなさい。
(この行列を使用してください
A={{10,-9,0,0,0,0,0},
{-9,17,-8,0,0,0,0},
{0,-8,17,-9,0,0,0},
{0,0-9,13,-4,0,0},
{0,0,0,-4,12,-8,0},
{0,0,0,0,-8,10,-2},
{0,0,0,0,0,-2,2}}
b={0,0,0,0,0,0,7})
[3] 環境
[3.1] OS: Windows Vista
[3.2] Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009年7月1日まで]
[5] その他の制限:特にありませんがなるべく簡単なものでお願いします
解が{0.37,0.41,1.28,2.06,3.81,4.69,8.19}に近いものになるはずです。
652:デフォルトの名無しさん
09/07/05 17:53:09
>>651
既に期限過ぎてるんだが
653:デフォルトの名無しさん
09/07/05 17:53:15
あとsizeof(char)は常に1だから冗長とかいう奴もよくいるねw
おれは冗長でも書くべきと思う派
654:デフォルトの名無しさん
09/07/05 17:54:36
>>650
どういう意味なら気持ち悪くないの?
655:デフォルトの名無しさん
09/07/05 17:57:09
>>648
読みにくいし i <= sizeof~ だと境界越えてるじゃん
>>642とどっちが読みやすいよ
656:デフォルトの名無しさん
09/07/05 18:00:36
うわあほんとだ。。。
sizeof記述の気持ち悪さに気を取られすぎた俺バカ
657:デフォルトの名無しさん
09/07/05 18:18:03
<<651
私の計算ミスでした。すいません
658:デフォルトの名無しさん
09/07/05 18:55:03
>>651 >>162 問題 >>174 >>177 >>183 解答
何の計算ミス?
659:デフォルトの名無しさん
09/07/05 19:38:56
>>623
返信遅れてすみません。
追加、削除された1つのリストで大丈夫です。
660:デフォルトの名無しさん
09/07/05 20:49:18
[1] 授業単元:情報
[2] 問題文(含コード&リンク):
パソコン甲子園 2008 予選問題 問7 ふしぎな虫
URLリンク(www.pref.fukushima.jp)
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限: 7月6日
よろしくお願いします。
661:デフォルトの名無しさん
09/07/05 21:34:32
>>645
ありがとうございます。
凄い。誤差ってなかなか安定しないんですね
ですが中身が問題分からなかった低能では
いささか理解が追いつきません
このまま出したら本当に英雄になっちゃいそうです
662: ◆/91kCCQXBo
09/07/05 21:47:10
>>644 差の絶対値をグラフにした。
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926
int main() {
int i, j, imax = 1000; /* 乱数の発生回数 1000 */
int n, inter = imax/20; /* グラフの表示インターバル 50 */
float x,y,pi=PI,eps,mul;
for(n=0, i=1; i<=imax; i++) {
/* 0以上1未満の乱数を生成する */
x = rand()/((float)RAND_MAX+1);
y = rand()/((float)RAND_MAX+1);
/* 0<=x,y<=1の範囲にある中心原点半径1の扇形の中に乱数による点が入ったらカウントする */
if( x*x + y*y < 1) n++;
if( i%inter ) ; else { /* 円周率の計算とグラフの表示 */
pi = (float)n/i*4; /* 半径1の円の面積すなわち円周率 */
eps = PI-pi; eps = (eps<0)? -eps : eps;
if(i==inter) mul = 70/eps; /* 1回目はグラフの倍率を決める */
printf("%5.3f ", pi);
for(j=eps*mul; j>=1; j--) putchar(' '); printf("*\n");
}
}
printf("PI=%f\n", pi);
}
663:デフォルトの名無しさん
09/07/05 22:30:36
>>662
ありがとうございます
コメントまで…
何度実行しても値が変わらない気がするのはそういう物ですか?
664: ◆/91kCCQXBo
09/07/05 22:37:17
srand(time(NULL)); を、最初に呼べば毎回変わるはず、>>645のように。
665:デフォルトの名無しさん
09/07/05 22:41:51
>>664
出来ました。が、ときたまグラフが崩れるので封印しときます
勉強になりました
666:デフォルトの名無しさん
09/07/05 23:08:32
>>234で、>>251さんに
URLリンク(kansai2channeler.hp.infoseek.co.jp)
というプログラムを書いて頂いたのですが、RAND_MAXがrand関数の利用に当たるとして
再提出になってしまいました。
rand_maxはrandのとる最大値とのことですが、これを使わないで同様の趣旨を実現するにはどうしたらよいのでしょうか?
667:デフォルトの名無しさん
09/07/05 23:14:25
RAND_MAXをINT_MAXに変える
668:デフォルトの名無しさん
09/07/05 23:53:23
2つの整数をキーボードから入力して、最初の数の方が小さい場合には、『最初の数の方が小さいか等しいです』と表示させて、大きい場合には、『後の数の方が小さいです』と表示させるプログラムを作成せよ
#include<iostream>
using namespace std;
int main(){
return 0;
}
の中に入る文を作るんですが、どうすればいいですか。使うのはifとcoutとelseくらいだと思うんですが
669:デフォルトの名無しさん
09/07/05 23:54:46
>RAND_MAXがrand関数の利用に当たるとして
何ソレ
ただの定数マクロでしょ?
670:デフォルトの名無しさん
09/07/06 00:24:57
>>666
関数の利用に当たる・・・だと・・・
数学科で出された問題?
だったらそのトンチンカンな主張も納得できるけど工学科だったら・・・
671:デフォルトの名無しさん
09/07/06 00:28:29
>>668 例はいらない。
// ↑C++テンプレート
int a1, a2;
cout << "2つの数を入力してください:";
cin >> a1 >> a2;
if(a1<=a2) cout << "最初の数の方が小さいか等しいです\n";
else cout << "後の数の方が小さいです\n";
// ↓C++テンプレート
672:デフォルトの名無しさん
09/07/06 00:49:54
>>671
// ↑C++テンプレート
// ↓C++テンプレート
なんだよ、このコメントは。w
まぁ、>>671の予想通り、minを使うのが速いよってことですね。
673: ◆jmI6IAV7WI
09/07/06 05:28:45
[1] 授業単元: 構造体
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 7月10日
[5] その他の制限:
よろしくお願いします
674:デフォルトの名無しさん
09/07/06 06:48:27
書くとこ入力部だけじゃねーかw
675: ◆jmI6IAV7WI
09/07/06 07:43:14
>>674
入力部だけでもお願いできないでしょうか
難しくて何がなんだかさっぱりわからないので
すみません
676: ◆/91kCCQXBo
09/07/06 14:11:15
>>673
1.
printf("1番目のX Y座標をスペースを開けて入力して下さい:");
scanf("%lf%lf", &my_line.p1.x, &my_line.p1.y);
printf("2番目のX Y座標をスペースを開けて入力して下さい:");
scanf("%lf%lf", &my_line.p2.x, &my_line.p2.y);
printf("2点間の直線距離は:");
2. 三角形の面積 area = fabs(t.p2.x * t.p3.y - t.p3.x * t.p2.y)/2;
printf("1番目のX Y座標をスペースを開けて入力して下さい:");
scanf("%lf%lf", &my_triangle.p1.x, &my_triangle.p1.y);
printf("2番目のX Y座標をスペースを開けて入力して下さい:");
scanf("%lf%lf", &my_triangle.p2.x, &my_triangle.p2.y);
printf("3番目のX Y座標をスペースを開けて入力して下さい:");
scanf("%lf%lf", &my_triangle.p3.x, &my_triangle.p3.y);
printf("3点で囲まれた三角形の面積は:");
677: ◆/91kCCQXBo
09/07/06 14:25:27
>>624 ガウス・ザイデル法の計算方法 山本昌志 2005年12月16日
URLリンク(akita-nct.jp)
必要なら以下にコメントも付けとく。仮にエクセルのPADでもいい?
#if 0
for( j=1; j<=N; j++ ){
temp += a[i][j] * x[j];
}
/* a[i][i] * newx + (temp - a[i][i] * x[i]) = b[i]; */
/* a[i][i] * newx = b[i] - (temp - a[i][i] * x[i]); */
newx = 1.0 / a[i][i] * (b[i] - (temp - a[i][i] * x[i]));
#else
for( j=1; j<=N; j++ ){
if( i==j ) continue;
temp += a[i][j] * x[j];
}
/* Xi(k+1) = 1/Aii * ( Bi - (Ai,1*X1(k) + Ai,2*X2(k) + ... + Ai,i-1*Xi-1(k) + Ai,i+1*Xi+1 + ... + Ai,n*Xn )) */
newx = (b[i] - temp)/a[i][i];
#endif
678:デフォルトの名無しさん
09/07/06 17:30:17
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C/C++
[4] 期限: [2009年7月7日10:00まで]
[5] その他の制限: 特にありません。
よろしくおねがいします。
679:デフォルトの名無しさん
09/07/06 18:07:23
[1] 授業単元: オペレーティングシステム
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: VineLinux4.2
[3.2] コンパイラ名とバージョン: GCC 4.3
[3.3] 言語: C/C++
[4] 期限: [2009年7月8日10:00まで]
[5] その他の制限: 特にありません。
C言語なら俺に聞け(入門篇) Part 50
スレリンク(tech板)
の>>221で質問しましたが結局分からなかったので
ここに投げさせて頂きました。よろしくお願いします。
よろしくおねがいします。
680:デフォルトの名無しさん
09/07/06 18:25:28
>>493で質問し、一題目を当スレで解答していただいたものです。
その際二題目は問題の意味が解らないということで保留にしていたんですが、
二題目もしなければ駄目ということで再度質問願います。
[1] 授業単元:Cプログラミング入門編
[2] 問題文(含コード&リンク):URLリンク(www-it.sci.waseda.ac.jp)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ: gcc
[3.3] 言語: C
二題目の問題の意味ですが、outputでV1~Vnが表示される度にそれぞれの行列の要素の中で
『V1二乗+V2二乗-V3二乗』を画面Printするという意味と思います。
教授曰くピタゴラスのなにやらと言うらしいのですが、、、。
よろしくお願いします。
681: ◆jvdNOCQgZU
09/07/06 18:31:14
[1] 授業単元:windows開発
[2] 問題文(含コード&リンク): URLリンク(down11.ddo.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: [2009年7月9日まで]
[5] その他の制限:DirectX SDK N2008を使用します。
ファイルが大きかったので別のロダ借りました。パス「111」
682:デフォルトの名無しさん
09/07/06 18:49:24
>>680
最初に解答いただいたプログラムです
URLリンク(codepad.org)
よろしくお願いします。
683:デフォルトの名無しさん
09/07/06 19:01:54
>>679
問題 >>前930(9532)>>093(9559)>>172(9532)
このプログラムに、リダイレクション、パイプ機能を実装してください。
>>265(9607)
684:デフォルトの名無しさん
09/07/06 19:23:17
>>679
もう上で答えられてるけど作っちゃったので俺も
URLリンク(kansai2channeler.hp.infoseek.co.jp)
685:デフォルトの名無しさん
09/07/06 19:35:09
>>680
#include <stdio.h>
#include <stdlib.h>
void multiply(int *mat, int *vec, int *out, int N) {
int i, j;
for (i = 0; i < N; i++) {
out[i] = 0;
for (j = 0; j < N; j++) {
out[i] += mat[i*N+j] * vec[j];
}
}
}
int main(void) {
int i, k, N = 3, n = 10;
int *v = (int *)malloc(N * sizeof(int));
int *t = (int *)malloc(N * sizeof(int));
int *P = (int *)malloc(N * N * sizeof(int));
v[0] = 3; v[1] = 4; v[2] = 5;
P[0] = 1; P[1] = -2; P[2] = 2;
P[3] = 2; P[4] = -1; P[5] = 2;
P[6] = 2; P[7] = -2; P[8] = 3;
for (k = 1; k <= n; k++) {
multiply(P, v, t, N);
for (i = 0; i < N; i++) {
v[i] = t[i];
}
printf("v_%d = (%d, %d, %d), ", k, v[0], v[1], v[2]);
printf("v1^2 + v2^2 - v3^2 = %d\n", v[0]*v[0]+v[1]*v[1]-v[2]*v[2]);
}
free(v); free(t); free(P);
return 0;
}
686:デフォルトの名無しさん
09/07/06 20:04:06
>>678
URLリンク(kansai2channeler.hp.infoseek.co.jp)
687:デフォルトの名無しさん
09/07/06 21:00:23
>>685
ありがとうございます。
本当に助かります。
こんなにサッと出来るなんて尊敬します。
688:デフォルトの名無しさん
09/07/06 21:30:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
多数のファイルをクローズせずに何個もオープンするとどうなるか実験せよ.
実験用プログラム fopen.c のソースと実験結果と考察をレポートすること.
% ./fopen
入力ファイル:fopen.c
オープン 1 回目
オープン 2 回目
オープン 3 回目
...
オープン ??? 回目
これ以上オープンできません!
注意:「○○回までオープンできた」とかでは,現象・結果の説明にすぎず,考察とは言えない. その結果から何が理解できるのか?推理せよ. 換言:実験結果(具体例)から一般規則を導き出せ.
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:09/07/08
[5] その他の制限: 特になし
689:デフォルトの名無しさん
09/07/06 21:36:20
>>688
追記
その他の制限:ファイル名は決め打ち(ソースファイルなど)でよい.
自分なりに作ったソースは
URLリンク(kansai2channeler.hp.infoseek.co.jp)
考察がわかりません.
セグメンテーションエラーが出るのはわかるのですが…
690:デフォルトの名無しさん
09/07/06 21:47:23
>>689
セゲメンテーションフォルトは fclose(NULL) が悪いだけで考察とは関係ないよ
691:デフォルトの名無しさん
09/07/06 21:55:34
>>690
fclose(NULL)がエラーになる理由を考察に書けばいいと思うんですが、具体的にどう書けばいいのでしょうか
692:デフォルトの名無しさん
09/07/06 21:55:34
>>680
ピタゴラスのなにやらって、三平方の定理じゃねーかw
693:デフォルトの名無しさん
09/07/06 22:11:23
>>691
ストリームをクローズします。
fclose は,引数 stream で指定されたストリームをクローズします。
そのストリームに対応付けられているすべてのバッファは,クローズする前に
フラッシュされます。システムが割り当てたバッファは,クローズすると解放されます。
setbuf または setvbuf を使って割り当てられたバッファは,自動的に解放される
わけではありません(ただし,setvbuf にバッファポインタとして NULL が渡されると,
クローズするときに解放されます)。
とあるから、NULLを無理矢理クローズしようとしてエラーが生じるんじゃない?
規格票には何か書いてあるかな
694:デフォルトの名無しさん
09/07/06 22:16:47
>>691
perror()かなにかでエラー原因表示させてみ
[略)
perror("fopen"); ←ここらへんでperrorを呼んでみる
printf("これ以上オープンできません. \n");
[略)
695:デフォルトの名無しさん
09/07/06 22:23:45
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
リスト構造で接続された構造体に含まれる名前を比較し、辞書順にリスト構造の接続を再構成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009年07月7日8:00まで
[5] その他:自分で書いたのですが、セグメントエラーになってしまいます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
なお、これは一番若い名前を見つけたら一旦保持して、最後まで探し終えたら、先頭と保持したものを入れ替えるという動作を
最後までループさせるつもりで書きました。
696:デフォルトの名無しさん
09/07/06 22:36:25
>>693ご教示ありがとうございます.
ファイルをオープンできなかった場合に,そのファイルをクローズしようとするとどうなるかと言う課題もあるのですが,
これも同じ原因でエラーが発生するのでしょうか.
ソースは
URLリンク(kansai2channeler.hp.infoseek.co.jp)
です.
>>694
1回オープンしました.
…
46回オープンしました.
47回オープンしました.
fopen: Error 0
これ以上オープンできません.
となりました
697:デフォルトの名無しさん
09/07/06 23:01:33
>>684>>685
ありがとうございます。
ちゃんと動作しました。
698:デフォルトの名無しさん
09/07/06 23:06:42
整数2つをキーボードから入力し、(最初にキーボードから入力させる数値を
入れる変数をa、2番目にキーボードから入力させる数値を入れる変数をbとする。)、
最初の数の方が大きい場合には、『最初の数の方が大きいです』、等しい場合には、『両方は等しいです』、2番目の数の方が大きい場合には、『2番目の数の方が大きいです』と表示するプログラムを作成せよ
ある整数変数をキーボードから入力し、その数値が9以下なら『入力した値は1桁です』と表示させて、10以上、99以下の場合は、『入力した値は2桁です』と表示させ、
100以上なら『入力した値は3桁以上です』と表示するプログラムを作成せよ
#include<iostream>
using namespace std;
int main(){
return 0;
}
の中に入る文を作るんです。else とか else if とか ifとか使うはずなんですが誰か教えてくれませんか
699:デフォルトの名無しさん
09/07/06 23:12:55
>>695
ちょっと見ただけだが、
↓これはまずくない?
>struct data* str,str1,str2,tmp,target;
>struct data *str,*str1,*str2,*tmp,*target;
後、動作可能な形で全体をさらす方がアドバイスを受けやすいと思うよ。
700:デフォルトの名無しさん
09/07/06 23:15:40
int first,second;
printf("first: ");
scanf("%d",&first);
if(first>=100)
printf("入力した値は3桁以上\n");
else if(first>=10)
printf("入力した値は2桁以上\n");
else if(first<=9)
printf("入力した値は1桁\n");
printf("second: ");
scanf("%d",&second);
if(second>=100)
printf("入力した値は3桁以上\n");
else if(second>=10)
printf("入力した値は2桁以上\n");
else if(second<=9)
printf("入力した値は1桁\n");
if(first>second)
printf("firstが大きい\n");
else if(first==second)
printf("同じ\n");
else
printf("secondが大きい\n");
701:デフォルトの名無しさん
09/07/06 23:28:11
>>700
あれ?C++なんですけど
coutとかなのですが
702:デフォルトの名無しさん
09/07/06 23:30:28
>>701
C++もCコードかけるからねえ
最初にそういうのは注文で出しておいた方がいいかも
703:デフォルトの名無しさん
09/07/06 23:32:19
using~を見落としてたわ
もう寝るから別の人やって
ところで、テンプレ使えと逆ギレOK?
704:デフォルトの名無しさん
09/07/06 23:45:35
だから、今まで何度もC言語とC++は別言語だからスレッドを分けてくれと言ってきたじゃないか
705:デフォルトの名無しさん
09/07/06 23:54:07
初耳だ
706:デフォルトの名無しさん
09/07/07 00:09:40
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:c
[4] 期限: 7月7日23:59
[5] 特になし
よろしくお願いします
707:デフォルトの名無しさん
09/07/07 00:54:21
>>701
なにがcoutなのですか?
printfはC++じゃないとおっしゃる?
708: ◆/91kCCQXBo
09/07/07 00:56:04
>>698
// ここまではC++テンプレート
cout<<"1番目の整数: ";
cin>>first;
cout<<"2番目の整数: ";
cin>>second;
if(first>second)
cout<<"最初の数のほうが大きいです"<<endl;
else if(first<second)
cout<<"2番目の数のほうが大きいです"<<endl;
else
cout<<"両者は等しいです"<<endl;
cout<<"3番目の整数: ";
cin>>first;
if(first>=100 || first<=-100)
cout<<"入力した値は3桁以上です"<<endl;
else if(first>=10 || first<=-10)
cout<<"入力した値は2桁です"<<endl;
else
cout<<"入力した値は1桁です"<<endl;
// ここからはC++テンプレート
709:デフォルトの名無しさん
09/07/07 01:02:07
>>689
多数のファイルをだからこんな感じじゃないの
うちの環境だとエラーすら出ずに29ファイル目で終わった
コンパイラはbcc,OSはXP SP3
原因はリソース不足?
#include <stdio.h>
#define N 1000
int main(){
int i;
char fname[256];
FILE* in[N];
FILE* out;
for(i = 0;i < N;i++){
sprintf(fname,"hoge%u",i);
out = fopen(fname,"w");
fclose(out);
if((in[i] = fopen(fname,"r")) == NULL){
perror("error");
for(i--;i >= 0;i--){
fclose(in[i]);
}
exit -1;
}
}
for(i = 0;i < N;i++){
fclose(in[i]);
}
return 0;
}
710:512
09/07/07 01:07:49
>>680
>>685で解答済みみたいだけど、一応>>512のコードで求めてみた
URLリンク(codepad.org)
「ElementOf(mat,row,clm)」と「PrintPythagoreanTheorem(int v1, int v2, int v3)」を追加して
main関数に1行追加しただけ
#こっそりMltMatrixをMulMatrixに修正してたりw
711:デフォルトの名無しさん
09/07/07 01:09:23
>>709
1020ファイル作ってsegmentation faultだった。
CentOS5.3(仮想マシン) gcc4.1.2
712:デフォルトの名無しさん
09/07/07 01:11:50
>>711
丁度 out==NULL になったんじゃないかな
713:711
09/07/07 01:12:41
流れをなんにも見てなくてとりあえず動かしただけだったすまん。
>>691
ええと、fclose(NULL)がなぜダメなのかを考察するのはちょっとズレてる
その前にfopenがNULLを返したことに対して考察をすべきよー
714:デフォルトの名無しさん
09/07/07 01:14:45
>>712
大抵out==NULLになって終わるんじゃないかな
715:デフォルトの名無しさん
09/07/07 01:15:34
>>714
in[i]==NULL になることもあるさ
716:711
09/07/07 01:22:12
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main(){
int i;
char fname[256];
FILE* in[N];
FILE* out;
for(i = 0;i < N;i++){
sprintf(fname,"file/hoge%04u",i);
out = fopen(fname,"w");
if(out == NULL){
perror("error[out]");
for(i--;i >= 0;i--){ fclose(in[i]); }
exit(-1);
}
fclose(out);
if((in[i] = fopen(fname,"r")) == NULL){
perror("error[in]");
for(i--;i >= 0;i--){ fclose(in[i]); }
exit(-1);
}
}
for(i = 0;i < N;i++){ fclose(in[i]); }
return 0;
}
とりあえずちょっと変えてみた。
まあ、他の要因で落ちることを考慮すればin[i]==NULLになることもあるのだろうけれど、
ファイルの開きすぎで落ちるという観点で行けばoutのみじゃない?
717:デフォルトの名無しさん
09/07/07 01:35:43
>>695
いろいろ間違ってる。
nextを使うべきでないところで使っている(このためstr->next・str2->nextでstrやstr2がNULLになることがある)。
最小値がstr1でない場合に、次のループではstr1を跳ばしている(このためstr1がNULLになることがある)。
どうしてもtop入れ換えでやりたいなら、図でも書いて落ち着いて考えること。
top入れ換えではなく、最小値を1個ずつ抜いて別のツリーをつくる方がややこしくなくてお勧め。
struct data *sort(struct data *top){
struct data work, *d, *target = top, *current = &work;
for(target = top; target != NULL; target = top){ //元のツリーがなくなるまで
for(d = target->next; d != NULL; d = d->next){ //最小値探索
if(strcmp(target->name, d->name) > 0) target = d;
}
if(top == target){
top = target->next; //最小値がtopならtopにnextを保持
}else{
for(d = top; d->next != target; d = d->next) ; // 最小値がtop以外なら最小値の親と最小値の子をつなげる
d->next = target->next;
}
current->next = target; // 新しいツリーの末尾に最小値を追加
current = target;
current->next = NULL;
}
return work.next;
}
718:デフォルトの名無しさん
09/07/07 01:42:03
1] 授業単元:C言語
[2] 問題文(含コード&リンク):n個の整数データを入力し,最後に平均を出力,nは最初に入力する(nは自然数),平均は小数部まで求める実行例として
[3] 環境
[3.1] OS:Windows
[3.2] gcc 3.4
[3.3] 言語:C
[4] 期限:7/7 18時まで
#include<stdio.h>
void main(void)
{
int x,y,z,sum;
double ave;
y=1;
sum=0;
printf("入力するデータ数は? ");
scanf(" %d", &x);
if(x>1){
for(y=1; y=x; y++){
printf("No .%d",y);
y++;
scanf("%d", &z);
sum=sum+z;
}
ave=sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
}
}
とりあえず自分でここまでやってみましたけどわかりません><
719:デフォルトの名無しさん
09/07/07 01:52:24
>>716
横レスだけどファイルを開きすぎて落ちるってどういうこと?
outはきちんとfcloseしてるから再利用してよさそうなんだけどやっちゃダメなの?
後学のためにご教示願います。
720:デフォルトの名無しさん
09/07/07 01:57:27
outはちゃんと閉じてるけどinは増える一方でしょ
0
1 out open
0 out close
1 in open
2 out open
1 out close
2 in open
というながれで、ファイルカウントが最初に最大になるのはoutをopenしたときでしょ
721:デフォルトの名無しさん
09/07/07 02:06:14
なるほどそういうことか。サンクス。
722:デフォルトの名無しさん
09/07/07 02:26:49
>>718
#include<stdio.h>
void main(void)
{
int x,y,z,sum;
double ave;
sum = 0;
printf("入力するデータ数は? ");
scanf("%d", &x);
if(x>=1){
for(y=1; y <= x; y++){
printf("No.%d ",y);
scanf("%d", &z);
sum=sum+z;
}
ave=(double)sum/x;
printf("以上%d個の平均は:%.6f",x,ave);
}
}
723:デフォルトの名無しさん
09/07/07 02:48:35
>>722
ありがとうございます
724: ◆jmI6IAV7WI
09/07/07 05:34:13
>>676
ありがとうございました
助かりました
725:デフォルトの名無しさん
09/07/07 12:44:06
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 整数 nissu をキー入力して、1 月1 日から数えて nissu 日目が何月何日かを表示
したい。 main() 関数を以下のように作った。ここで呼ばれている関数 tuki_hi () を作成せよ。
#include <stdio.h>
int main(){
int nissu, tuki, hi;
void tuki_hi(int, int *, int *);
printf("日数を月日に変換\n");
printf("日数は? "); scanf("%d", &nissu);
tuki_hi(nissu, &tuki, &hi);
printf("%d 日目は%d 月%d 日です", nissu, tuki, hi);
return 0;
}
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン: borland c++
[3.3] 言語:C
[4] 期限: ([2009年07月7日2:30まで]
[5] よろしくお願いします
726:デフォルトの名無しさん
09/07/07 12:55:20
>>725
void tuki_hi(int nissu, int *tuki, int *hi)
{
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; /* days[0]は使わない */
int i;
for (i=1; i<=12 && nissu>days[i]; ++i) { nissu -= days[i]; }
*tuki = i;
*hi = nissu;
}
727:デフォルトの名無しさん
09/07/07 14:09:24
>>686 ありがとうございました。
ただ、それぞれの問題につき1つのプログラムという形にしていただけないでしょうか?
自分なりにやってみたんですが、どうも上手くいきませんでした。
お手数ですが、よろしくお願いしますm(_ _)m
728:デフォルトの名無しさん
09/07/07 14:48:07
>>726
ありがとうございましたm(__)m
729:デフォルトの名無しさん
09/07/07 14:56:29
>>727
何も理解できてないな
>>686動かしてみた?
730:デフォルトの名無しさん
09/07/07 16:35:47
>729 すみません… 本当に何も理解しておりません。
>実行結果です。
t23.c: In function `insert_node':
t23.c:130: error: `new' undeclared (first use in this function)
t23.c:130: error: (Each undeclared identifier is reported only once
t23.c:130: error: for each function it appears in.)
t23.c:130: error: parse error before "node_t"
t23.c: In function `remove_node':
t23.c:139: error: `delete' undeclared (first use in this function)
t23.c:139: error: parse error before "del"
t23.c: In function `random_list':
t23.c:149: error: 'for' loop initial declaration used outside C99 mode
t23.c: In function `get_node':
t23.c:155: error: 'for' loop initial declaration used outside C99 mode
731:デフォルトの名無しさん
09/07/07 16:53:30
それ実行じゃなくてビルド時のエラーだろう。
とりあえず C++ でやってみては。
732:デフォルトの名無しさん
09/07/07 17:03:29
[1] 授業単元: プログラミングC
[2] 問題文(含コード&リンク):
キーボードから半角英数で文字列を入力し、英字については大文字を小文字に、小文字を大文字にするプログラムを作成せよ。
実行例 文字列入力 :AbCdEfG123
変換文字列 :aBcDeFg123
[3] 環境 windows
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 2009/7/9
[5] その他の制限:全くの初心者なのでよろしくお願いします。
733:デフォルトの名無しさん
09/07/07 17:32:46
すいません>>732のものなんですがもう一問あったのでこちらもよろしくお願いします
[1] 授業単元: プログラミングC
[2] 問題文(含コード&リンク):
キーボードから半角英数で文字列を入力し、これを数字(0→9)、大文字(A→Z)、
小文字(a→z)の順に並べ替えるプログラムを作成せよ。
ヒント:並べ替えアルゴリズムは、バブルソート(隣接交換法)を使うと簡単だろう。
文字列長はstrlen命令を使うとよい。みたいです。
[3] 環境 windows
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限: 2009/7/9
[5] その他の制限:
734:デフォルトの名無しさん
09/07/07 17:36:08
>>731 提出先のコンパイラーでg++がインストールされてないようです…
cに書き換えるにはどうしたら良いでしょうか?
735:デフォルトの名無しさん
09/07/07 17:37:38
>>730
コンパイルすらできていないのに>>727のコメントが出てくるのがおかしいんだよ。
自分なりに何をやったんだ?って思うんだよなぁ。
てっきりmainがありませんぐらいまではたどり着いてるものだと思っていたが。。
736:デフォルトの名無しさん
09/07/07 17:40:05
>>734
new deleteをmalloc/calloc freeにする
変数の宣言をブロックの先頭で行うようにする
737:デフォルトの名無しさん
09/07/07 17:57:20
Cに書き換えるのも書こうかと思ったんだけど
元々の条件にC/C++って書いてあったからなー
738:デフォルトの名無しさん
09/07/07 18:00:05
>>736 ありがとうございます。
739:デフォルトの名無しさん
09/07/07 18:02:11
>>732
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char str[128];
int i;
scanf("%s", str);
for (i = 0; str[i]; ++i)
if (isupper(str[i])) str[i] = tolower(str[i]);
else if (islower(str[i])) str[i] = toupper(str[i]);
puts(str);
return 0;
}
740:デフォルトの名無しさん
09/07/07 18:31:32
>>733
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int compare(char x, char y)
{
if (isdigit(x)) return isdigit(y)? y - x: 1;
if (isupper(x)) return isdigit(y)? -1: isupper(y)? y - x: 1;
if (islower(x)) return isdigit(y) || isupper(y)? -1: islower(y)? y - x: 1;
return 0;
}
void bsort(char *str)
{
int i, j;
for (i = 0; i < strlen(str) - 1; ++i) {
for (j = 1; j < strlen(str) - i; ++j) {
if (compare(str[j], str[j - 1]) > 0) {
char t; t = str[j]; str[j] = str[j - 1]; str[j - 1] = t;
}
}
}
}
int main(void)
{
char str[128];
scanf("%s", str);
bsort(str);
puts(str);
return 0;
}
741:デフォルトの名無しさん
09/07/07 18:57:59
>>737 そうですね、迂濶でした。
今度こそ自分なりにやってみますが、ダメだったときはお願いしてもよろしいでしょうか…
742:デフォルトの名無しさん
09/07/07 19:02:25
>>734
> 提出先のコンパイラーでg++がインストールされてないようです…
何のエラーメッセージでそう思った?
とりあえず int main(void){return 0;} の一行を追加して、g++でコンパイルみてはどうだろう。
743:デフォルトの名無しさん
09/07/07 19:52:53
>>742 g++: p11.cpp: No such file or directory
>g++: no input files です。
>
744:デフォルトの名無しさん
09/07/07 19:56:43
>>743
ばっちりインストールされてるじゃねーかw
745:デフォルトの名無しさん
09/07/07 19:57:03
>>743
which g++
とでもしてろよwwwww
746:デフォルトの名無しさん
09/07/07 19:57:41
↑間違えました。
747:デフォルトの名無しさん
09/07/07 20:01:47
[1] 授業単元:
コンパイラの構成
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C(yacc、lex)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
7月14日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
前回も>>204で助けていただいたのですが、yaccとlexの問題です。
スレ違いかもしれませんがどなたかよろしくお願いします。
748:デフォルトの名無しさん
09/07/07 20:13:40
>>744 >>745 そうなんですか?W
とりあえず>>686を参考にどうにかしてみます。
どうにもならなかったらまた来させて下さい…
長々とお付き合いありがとうございました!
749:デフォルトの名無しさん
09/07/07 21:07:31
[1] 授業単元:C言語
[2] 問題文:配列を用いた計算機のプログラムを作成してください。
計算は前から順に行われていく。
入力される数値の個数は最大でも20個としてください。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語:C言語
[4] 期限:2009年7月12日
[5] その他:特になし
よろしくおねがいします
750:デフォルトの名無しさん
09/07/07 21:09:52
>>706
/*Q1*/
#include <stdio.h>
int main() {
FILE *fp_in, *fp_out; char fname[256], key, buf;
printf("ファイルを暗号化します!\n\n");
printf("入力ファイル名は:"); scanf("%s", fname); fflush(stdin);
if ((fp_in = fopen(fname, "rb")) == NULL) return 1;
printf("出力ファイル名は:"); scanf("%s", fname); fflush(stdin);
if ((fp_out = fopen(fname, "wb")) == NULL) return 1;
printf("暗号化のキー文字は:"); key = fgetc(stdin);
while (fread(&buf, sizeof(char), 1, fp_in) == 1) {
buf = buf ^ key; fwrite(&buf, sizeof(char), 1, fp_out);
}
printf("暗号化が完了しました!\n");
fclose(fp_in); fclose(fp_out);
return 0;
}
/*Q2*/
#include <stdio.h>
void rotate(unsigned char *a) {*a = (*a) << 1 | (*a) >> 7;}
int main() {
int i, k, x; unsigned char a;
printf("1~255の整数を入力 : "); scanf("%d", &x);
a = x;
for (i = 1; i <= 16; i++) {
rotate(&a);
printf("%2d-th shift: %3d ", i, a);
for (k = 7; k >= 0; k--) {printf("%d", (a & (1<<k)) >> k);} printf("\n");
}
return 0;
}
751:デフォルトの名無しさん
09/07/07 21:15:24
>>706
/*Q3*/
#include <stdio.h>
#include <stdlib.h>
void itoa_r(int n, char *str);
enum {MAX = 100};
main() {
int n;
char str[MAX];
while (1) {
int i;
for (i = 0; i < MAX; i++) str[i] = '\0'; // 追加
printf("\n整数を入力して下さい(終了 = 0):");
scanf("%d", &n);
if (n == 0) break;
itoa_r(n, str);
printf("文字列に変換すると %s です\n", str);
}
}
void itoa_r(int n, char *str)
{
if (n < 0) {
*str = '-';
itoa_r(-n, str + 1);
} else if (n != 0) {
int m = n, d = 1;
while (m /= 10) d++;
*(str + d - 1) = '0' + (n % 10);
itoa_r(n / 10, str);
}
}
752:デフォルトの名無しさん
09/07/07 21:58:55
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
C++言語を使ってスタックを実現するクラスを定義して,その実行を確認するプログラム(main関数)を書く。
クラス名はstackとする。
要素のデータの型はintとする。
格納できる要素の最大数は10とする。
公開されているインターフェースは下記のものとする。
void push(int data);
int pop();
初期設定は,以下のいずれかによって行う。
(1) クラスのコンストラクタ(constructor)の機能を用いる。
(2) 初期設定用のインターフェース(init)を定義し,スタックを使用する前に,initを呼び出す。
機能確認のためのインターフェース(たとえばスタック内のデータを表示させる)を追加してもよい。
上記の仕様を満たさない(インターフェース名が上記と一致しない等)プログラムは評価の対象としない。
#入出力はprintfを用いること。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009年7月10日まで
よろしくおねがいします
753:デフォルトの名無しさん
09/07/07 22:44:39
>>752
>#入出力はprintfを用いること。
入力もprintfを使わなきゃダメなの?
754:デフォルトの名無しさん
09/07/07 22:54:15
>>752
#include <cstdio>
const int MAX = 10;
class stack {
int *data_;
int n;
public:
stack() { data_ = new int[MAX]; }
~stack() { delete data_; }
void init() { n = 0; }
void push(int data) { if (0 <= n && n < MAX) data_[n++] = data; }
int pop() { if (0 <= n && n < MAX) return data_[n--]; }
void print() { for (int i = 0; i < n; ++i) printf("%d\n", data_[i]); }
};
int main()
{
stack s;
s.init();
s.push(5); s.push(-8); s.push(2); s.print();
s.pop(); s.print();
return 0;
}
755:デフォルトの名無しさん
09/07/07 23:04:34
>>753
とつっこむあなたはprintfで入力ができるんですか?
756:デフォルトの名無しさん
09/07/07 23:25:39
>>752
チェック用の関数と例外処理でcoutを使ってる。
だめそうなら、そこをprintfに書き換えて。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
757:デフォルトの名無しさん
09/07/07 23:28:24
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 二次元配列を使って以下のファイルを読み込み、同じように表示しなさい。
【test.dat】
** ** **
** ** **
** ** **
ポインタを宣言;
データを宣言;
ポインタ=fopen("test.dat",r);
if(ポインタ == NULL) return;
for(i=0; i<3; i++){
for(j=0; j<3; j++){
fscanf(ポインタ,"%d"&sub[i][j]); }}
/* 此処の printf() がどうしてもできません。ご協力お願い致します。 */
fclose(ポインタ);
[3] 環境
[3.1] Windows
[3.2] Visual Studio
[3.3] 言語: C++
[4] 期限:2009年7月8日 09:00まで
[5] その他の制限:特にありませんが、理解したいので比較的簡単なものでお願い致します。
758:デフォルトの名無しさん
09/07/07 23:33:26
>>757
test.datの内容それであってる?整数が3行3列=9個あるんじゃないのか?
759:デフォルトの名無しさん
09/07/07 23:37:20
>>757
"**"は整数なんじゃないかとエスパー
#include <stdio.h>
int main(void)
{
FILE *fp = fopen("test.dat", "r");
int sub[3][3];
int i, j;
if (fp == NULL) return 1;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
fscanf(fp, "%d", &sub[i][j]);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
printf(" %d", sub[i][j]);
printf("\n");
}
fclose(fp);
return 0;
}
760:757
09/07/07 23:39:56
>>758さま
すみません間違えていました;;
指摘していただいて確認したところ、
【test.dat】
** ** **
** ** **
** ** **
** ** **
でした。
そうなると、
for(i=0; i<4; i++){
for(j=0; j<3; j++){
fscanf(ポインタ,"%d"&sub[i][j]); }
}
になると思います・・・すみませんでした><
761:757
09/07/07 23:43:19
>>759さま
あ!そういう意味でしたか・・・すみません、おっしゃるとおりです!
しかも早急にご回答ありがとうございます!!
printf()は普通に書けばよかったんですね・・・なるほど。
>>758さま
>>759さま
お二方、ありがとうございました。
762:デフォルトの名無しさん
09/07/08 00:19:10
[1] 授業単元: 情報処理Ⅰ
[2] 問題文: 乗算合同法で整数乱数を生成.。
区間(0.1)の一様にして、1以上、ある特定の整数の乱数を生成する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: TurboC
[3.3] 言語: C
[4] 期限: 2009年7月20日00:00まで
[5] その他の制限: #include <stdio.h>で始まるようにお願いいたします。
よろしくお願いします。
763:デフォルトの名無しさん
09/07/08 02:15:09
>>624で質問し、>>677で答えていただいた者ですが、
プログラムにコメント文も付けていただけますでしょうか?
764:デフォルトの名無しさん
09/07/08 03:19:26
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
問1:フィボナッチ数列を23番目まで計算して配列fibに格納した後、キーボードから何番目かを指定して表示するプログラムを作成せよ。
要素を表示する処理は何回も繰り返し行えるようにし、キーボードから1~23以外の数値が入力されたら終了する。
実行例 数の入力:2
fib[2]:1
数の入力:23
fib[23]:28657
数の入力:24
終了
問2:(1)キーボードから半角英数で文字列を2つ入力し、これを比較して同じか否かを判定するプログラムを作成せよ。
実行例 文字列1:ABC 文字列1:ABc
文字列2:ABC 文字列2:ABC
2つの文字列は同じです 2つの文字列は違います
(2)(1)のプログラムを、strcmpを使って書き換えなさい。
問3:1週間の売り上げ一覧を表示するプログラムを作成せよ。
実行例 野菜の1週間の売り上げた合計数量と合計金額
合計 合計
種類 単価 月 火 水 木 金 土 日 数量 金額
レタス 150 50 55 60 65 70 75 80 455 68250
トマト 50 20 25 30 35 40 45 50 245 12250
もやし 20 10 15 20 25 30 35 40 175 3500
ナスビ 40 5 10 15 20 25 30 35 140 5600
[3] 環境
[3.1] OS:(Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2009/7/9
[5] その他の制限: C言語の基本くらいしかやっていません。
765:デフォルトの名無しさん
09/07/08 08:50:32
[1] 授業単元: 数値計算プログラミング
[2] 問題文(含コード&リンク): (1)√57を求めよ (2)三乗根の7を求めよ
(3)f(x)=3x^3+2x^2+5x-15=0の解を求める
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限: ([2009年07月10日まで]
[5] その他の制限:ニュートン法を用いる 初期値 x0=1
お願いします
766:デフォルトの名無しさん
09/07/08 09:24:58
>>764
問1
#include <stdio.h>
#define N 23
int main()
{
int fib[N + 1], i, n;
fib[0] = 0, fib[1] = 1;
for(i = 2; i <= N; i++)
fib[i] = fib[i - 2] + fib[i - 1];
while(1){
printf("数の入力:");
scanf("%d", &n);
if(n < 1 || n > N) break;
printf("fib[%d]:%d\n", n, fib[n]);
}
printf("終了\n");
return 0;
}
767:デフォルトの名無しさん
09/07/08 09:34:17
>>764
問2
#include <stdio.h>
#define SIZE 1024
int main()
{
char s1[SIZE], s2[SIZE];
int i;
printf("文字列1:"), fgets(s1, SIZE, stdin);
printf("文字列2:"), fgets(s2, SIZE, stdin);
for(i = 0; s1[i] != '\0' && s2[i] != '\0' && s1[i] == s2[i]; i++);
if(s1[i] != s2[i]) printf("2つの文字列は違います\n");
else printf("2つの文字列は同じです\n");
return 0;
}
768:デフォルトの名無しさん
09/07/08 09:36:12
>>764
問2(2)
#include <stdio.h>
#include <string.h>
#define SIZE 1024
int main()
{
char s1[SIZE], s2[SIZE];
printf("文字列1:"), fgets(s1, SIZE, stdin);
printf("文字列2:"), fgets(s2, SIZE, stdin);
if(strcmp(s1, s2) != 0) printf("2つの文字列は違います\n");
else printf("2つの文字列は同じです\n");
return 0;
}
769:デフォルトの名無しさん
09/07/08 09:59:42
問3
#include <stdio.h>>
struct weekly_sales_t{
char kind[1024];
int price;
int daily_sales[7];
};
int main()
{
struct weekly_sales_t sales[4] = {
{"レタス", 150, {50, 55, 60, 65, 70, 75, 80}},
{"トマト", 50, {20, 25, 30, 35, 40, 45, 50}},
{"もやし", 20, {10, 15, 20, 25, 30, 35, 40}},
{"ナスビ", 40, { 5, 10, 15, 20, 25, 30, 35}},
};
return 0;
}
時間ないので誰か任せた
770:デフォルトの名無しさん
09/07/08 10:06:09
>>765
URLリンク(www.geocities.jp)
↑元のソースはここ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑今回の課題に合わせた変更
771:デフォルトの名無しさん
09/07/08 11:11:32
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):下記に
[3] 環境
[3.1] OS:VistaSP1
[3.2] コンパイラ名とバージョン: Visual Studio2008
[3.3] 言語:C
[4] 期限:2009年7月8日23時まで
[5] その他の制限:できるだけ基本で
登録番号"int no"と名前"char *name"と年齢"int age"を含む構造体person型の配列を定義し初期化せよ.
なお, 最後のデータの名前にはNULLを入れておく. 登録番号は入力順に1,2,3,4,5とする.
そして, 登録されている人の平均年齢を計算する関数を作成せよ.
引数は, 配列の先頭アドレスを指す構造体person型のポインタとする.
772:デフォルトの名無しさん
09/07/08 11:57:37
[1] 授業単元: 4次のルンゲ-クッタ法を用いて連立微分方程式を解く
[2] 問題文:システムの状態x = (x, y, z) が、以下の連立微分方程式に従う場合の挙動をシミュレーション
する.
dx/dt= -y - z
dy/dt= x + ay
dz/dt= b + (x - c)z
【課題1】4 次のルンゲ-クッタ法を用いて上記方程式を数値的に解くプログラムreport.c を完
成させよ.report.c には3 つの関数が定義されている.ルンゲ-クッタ法を1 ステップ行う関数
rungekutta() は完成しているが、導関数を求める関数deriv() とプログラム全体を制御する関
数main() は不完全である.各関数に適切な実行文等を記述し、プログラムを実行できるよう完
成させよ.
【課題2】課題1で完成させたプログラムreport.c を用い、シミュレーションを実行する.シス
テムパラメータが
1. (a, b, c) = (1.0, 0.2, 1.0)
2. (a, b, c) = (1.0, 0.2, 8.0)
の2つの場合に、時刻t = 200.0 からt = 400.0 の間にx が位相空間に描く軌跡を図に表せ.シ
ミュレーションの時間刻みはdt = 0.02 とし、初期値x(0) = (x(0), y(0), z(0)) は適当な値を選ぶ
こと.またそれぞれの場合について、初期値をわずかに変化させた場合に軌跡がどのように変化
するかを、同様に図に表して比較せよ.
[3] 環境 Vine Linux
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:2009年7月28日
[5] その他の制限:ソースは長いので次レスに投稿します。できれば理解したいのでコメント付きで解説して戴けると助かります。面倒臭い場合は結構です。
どうか宜しくお願いします。
773:デフォルトの名無しさん
09/07/08 11:58:52
ろだつかえよ
774:デフォルトの名無しさん
09/07/08 12:07:00
>>772です。ソースを三つに分けます。ややこしくてすみません。
#include <stdio.h>
#include <math.h>
#define N 3 //システムの次元
double a = 0.20;
double b = 0.20;
double c = 10.0;
/* 導関数 */
/* x における dx/dt を求める */
void derivs(double t, double x[], double dxdt[])
{
/* dx/dt = f(x) */
dxdt[0] = ;
dxdt[1] = ;
dxdt[2] = ;
}
775:デフォルトの名無しさん
09/07/08 12:07:29
>>765 ニュートン法を用いる
問題>>540 解答>>543(CODE)
長い解答なら、ろだつかえよ
776:デフォルトの名無しさん
09/07/08 12:09:24
>>774の続き
/* ルンゲクッタ法を1ステップ行う関数 */
/* x(t)=xin から x(t+h)=xout を求める */
void rungekutta(double xin[], double xout[], double t, double h)
{
int i;
double th2,h2,h6;
double dxdt0[N], dxdt1[N], dxdt2[N], dxdt3[N], xt[N];
double deriv(double, double [], double []);
h2=h*0.5;
h6=h/6.0;
th2=t+h2;
derivs(t,xin,dxdt0);
for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt0[i];
derivs(th2,xt,dxdt1);
for(i=0;i<N;i++) xt[i] = xin[i] + h2*dxdt1[i];
derivs(th2,xt,dxdt2);
for(i=0;i<N;i++) xt[i] = xin[i] + h*dxdt2[i];
derivs(t+h,xt,dxdt3);
for(i=0;i<N;i++)
xout[i] = xin[i] + h6*(dxdt0[i]+2.0*(dxdt1[i]+dxdt2[i])+dxdt3[i]);
}
777:デフォルトの名無しさん
09/07/08 12:11:11
>>776の続き
int main()
{
int i;
double t, tmax, dt;
double x[N], x_next[N];
FILE *fp;
void rungekutta(double [], double [], double, double);
/* 諸変数を初期化 */
tmax = ;
dt = ;
/* システムの状態を表すベクトルx(N次元)の初期化 */
/* 計算結果を書き出す為のファイルを開く */
fp = fopen("result.dat","w");
/* 時間tを刻み幅dtずつ増加させながら時間発展 */
for(t=0.0;t<tmax;t+=dt){
/* 時刻tとxの各要素をファイルに書き出す */
fprintf(fp,"%lf %lf %lf %lf\n ", t, x[0], x[1], x[2]);
/* xを更新 */
x +=
}
/* ファイルを閉じる */
fclose(fp);
return 0;
}
778:デフォルトの名無しさん
09/07/08 12:12:14
>>773 すいませんロダってどう使うのですか?
779:デフォルトの名無しさん
09/07/08 12:16:16
ハタチになると分かる。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
780:デフォルトの名無しさん
09/07/08 12:29:36
>>779 ありがとうございます。今投稿してみたのですがファイルが添付されてませんでしたorz
参照にファイルを添付したら良いんですよね?こんな馬鹿に詳しく教えて貰えないでしょうか?
781:デフォルトの名無しさん
09/07/08 12:50:51
>>780
ここのうpろだはいちおう制限があるよ
# 添付可能ファイル : TEXT, LHA, ZIP, C, CPP
# 最大投稿データ量 : 100 KB
782:デフォルトの名無しさん
09/07/08 14:08:18
>>775
そのプログラムをコンパイルしたらエラーが出ちゃったので出来ませんでした
すいません
783:デフォルトの名無しさん
09/07/08 15:56:26
>>782
そうですか
784:デフォルトの名無しさん
09/07/08 16:20:34
[1] 授業単元:アルゴリズム入門
[2] 問題文(含コード&リンク):
課題1: URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題2: URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題3: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語: C
[4] 期限:7月9日 15:00まで
[5] その他の制限: 特になし。どうかよろしくお願いします
785:>>772
09/07/08 17:18:53
>>781さんありがとうございます。それで容量も1.5kでファイル形式もCなんでいけると思ってもう一度投稿しましたが無理でした...
すいませんが>>772を問題文、>>774>>776>>777をソースファイルとしてどなたかお願いできますか?
786:デフォルトの名無しさん
09/07/08 17:32:59
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualC++
[3.3] 言語: C
[4] 期限: 7月13日
[5] その他の制限:一つ目の課題はテキストファイルからバイナリファイルの作成
787:769
09/07/08 17:53:28
>>764
問1 >>766
問2(1) >>767
問2(2) >>768
問3 URLリンク(kansai2channeler.hp.infoseek.co.jp)
788:デフォルトの名無しさん
09/07/08 18:12:28
Dijkstra法の課題が出たのですが全く分かりません。助けてください。
(課題)
Dijkstra法のプログラムを完成せよ。
(Dijkstraのアルゴリズムの擬似コード)
#include <stdio.h>
#define M 8 //ノードの数
#define Z 300 //無限大
int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列
int main(void){
int start; //ソースのノード
int d[M]; //ノードまでのコスト
int v[M]; //確定フラグ
int p[M]; //前のノードへのポインタ
printf("start\n");
scanf("%d",&a);//ソースノードstartを指定する
for (j=0; j<M; j++){
//最小コストのノードを探す、最小コストのノードを確定する
for(k=0; k<M; j++){
//wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新
}
}
//ソースノードから各ノードへの最小コストと最短路を表示する
}
789:デフォルトの名無しさん
09/07/08 18:17:16
>>788
1>>嫁。テンプレ使おうぜ。
790:デフォルトの名無しさん
09/07/08 19:28:29
[1] デジタル信号処理
[2] 入力したtxtファイルをFFT、IFFTせよ
[3] 環境
[3.1] Windows
[3.2] gcc 3.4
[3.3] C
[4] 期限:7月8日 24:00まで
よろしくお願いします
791:デフォルトの名無しさん
09/07/08 19:39:21
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(u9.getuploader.com)
URLリンク(u9.getuploader.com)
URLリンク(u9.getuploader.com)
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:7月15日まで
[5] その他の制限: お願いします
792:デフォルトの名無しさん
09/07/08 19:54:59
>>791
通報しようかどうしようか悩むな。
アウアウなことはガチなんだけど。
793:デフォルトの名無しさん
09/07/08 19:59:01
某著作権寄生団体に見つかるまえに削除しとけー
794:デフォルトの名無しさん
09/07/08 21:23:22
>>786
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
795:デフォルトの名無しさん
09/07/08 21:24:16
バイナリと問題文で違いがあるの?
796:デフォルトの名無しさん
09/07/08 21:42:12
>>771
#include <stdio.h>
struct person {
int no;
char *name;
int age;
};
double average_age(struct person *persons) {
int n, sum = 0;
for (n = 0; persons[n].name != NULL; n++) {
sum += persons[n].age;
}
if (n == 0) {
return -1;
} else {
return (double)sum / n;
}
}
int main(void) {
struct person persons[] = {
{1, "ichiro", 30},
{2, "jiro", 27},
{3, "saburo", 23},
{4, "shiro", 19},
{5, NULL, 0}
};
printf("平均年齢は%g\n", average_age(persons));
return 0;
}
797:デフォルトの名無しさん
09/07/08 21:45:00
[1] C言語を使って計算を簡略化する:
[2] XY平面上の3点P1(x1,y1)P2(x2,y2)P3(x3,y3)の座標を順に入力した時、3点が同一直線上にあるかどうかを調べて
結果を表示するプログラムを作成せよ。:
[3] 環境
[3.1] Windows
[3.2] Borland
[3.3] C:
[4] 2009年7月10日8:35まで:
[5] その他制限:
入力される座標はすべて第一象限です。
よろしくお願いします。
798:デフォルトの名無しさん
09/07/08 22:15:37
>>797
#include <stdio.h>
int main()
{
int x1,y1,x2,y2,x3,y3;
printf("x1>"); scanf("%d", &x1);
printf("y1>"); scanf("%d", &y1);
printf("x2>"); scanf("%d", &x2);
printf("y2>"); scanf("%d", &y2);
printf("x3>"); scanf("%d", &x3);
printf("y3>"); scanf("%d", &y3);
if ((x3 - x1) * (y2 - y1) == (x2 - x1) * (y3 - y1))
printf("同一直線上にあります\n");
else
printf("同一直線上にありません\n");
return 0;
}
799:デフォルトの名無しさん
09/07/08 22:26:35
[1]C言語中級
[2] int bitmap[640][480]はビットマップ画像の画素を表すものとする。
指定された点x,yを含む指定された境界色C2で囲まれた平面領域を
指定された色C1で塗りつぶす関数
paint(int x,int y,int c1,int c2)を作成
[3] linux/gcc/C言語
☆再帰(間接を含む)を使ってはならない。
☆十分な速度が必要( 基準PC(PCセンター端末 Cerelon 800MHz)で100回/秒以上)
☆三角形、四角形、円、楕円、放物線で囲まれた領域、それぞれ5つのケース
について実行前のbitmapと実行後の配列をバイナリファイルとして
triangle.pre.bitmap triangle.post.bitmap
rectangle.pre.bitmap rectangle.post.bitmap
circle.pre.bitmap circle.post.bitmap
ellipse.pre.bitmap ellipse.post.bitmap
parabora.pre.bitmap parabora.post.bitmap
という名称で保存したものとソースコード、これをコンパイルしたものを
work20090717.xxxxxx.zipという形式でzip圧縮したものをメール添付
(xxxxxxは学籍番号下6桁)
[4] 7/17 正午まで
800:デフォルトの名無しさん
09/07/08 22:26:48
>>798
ありがとうございます!できました
801:デフォルトの名無しさん
09/07/09 04:59:49
[1] 授業単元: コンピュータネットワーク
[2] 問題文(含コード&リンク):(課題)
Dijkstra法のプログラムを完成せよ。
(Dijkstraのアルゴリズムの擬似コード)
#include <stdio.h>
#define M 8 //ノードの数
#define Z 300 //無限大
int c[M][M] = { 0, Z, Z, Z, Z, Z, 7, 2},{ Z, 0, 8, 7, Z, Z, Z, 1},{ Z, 8, 0, Z, Z, Z, Z,10},{ Z, 7, Z, 0,10, 3, Z, Z},{ Z, Z, Z,10, 0, 8, Z, 5}, { Z, Z, Z, 3, 8, 0, 2, Z}, { 7, Z, Z, Z, Z, 2, 0, 9}, { 2, 1,10, Z, 5, Z, 9, 0}; //隣接行列
int main(void){
int start; //ソースのノード
int d[M]; //ノードまでのコスト
int v[M]; //確定フラグ
int p[M]; //前のノードへのポインタ
printf("start\n");
scanf("%d",&a);//ソースノードstartを指定する
for (j=0; j<M; j++){
//最小コストのノードを探す、最小コストのノードを確定する
for(k=0; k<M; j++){
//wを経由してkにいたるコストがそれまでの最短路のコストより小さければd(k)を更新
}
} //ソースノードから各ノードへの最小コストと最短路を表示する
}
[3] 環境
[3.1] OS: Windows [3.3] 言語: C++
[4] 期限: 2009年7月9日16:00まで
[5] その他の制限:なし
488です。焦りすぎて規約を読まずに投稿してしまいました。すみません。
期限ギリギリなのですがお力を貸していただけると嬉しいです。よろしくお願いします。
802:784
09/07/09 09:35:23
784です。
一晩やってみたのですが、結局まったく出来ずに朝を迎えてしまいました・・・orz
どなたか、どうかお願いします。
803:デフォルトの名無しさん
09/07/09 09:56:18
>>802 少し簡単にしてみた
char* getword(FILE* f){
char buffer[MAXSIZE]={0}, firstchar[10]={0};
fscanf(f, "%*[^a-zA-Z]");
if(fscanf(f, "%1[a-zA-Z]%1022[0-9a-zA-Z]", firstchar, buffer+1)>=1){
buffer[0]=firstchar[0];
return strdup(buffer);
}
return NULL;
}
804:デフォルトの名無しさん
09/07/09 10:47:17
[1] 授業単元:確率論
[2] 問題文(含コード&リンク):
・正規乱数の発生 (ボックスミュラー法)
ボックス・ミュラー法により,区間[0, 1) の一様乱数から標準正規分布N(0, 1) に従う
正規乱数を100,000 個発生し,そのデータから得られる以下の各項目を報告せよ。
なお、一様乱数の生成は合同式法を用い,また正規乱数の生成はBox-Muller 法
を用いて,いずれもC言語プログラムで実現すること.(既存のRAND関数などを用いてはならない)
1. 正規乱数の平均値.
2. 正規乱数の標準偏差.
3. 正規乱数のヒストグラム.区間[-5, 5] を100 分割したものとする.
(ヒストグラムはhistgram[100]の様に宣言し、100個それぞれの出現個数を足していったものです)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2009年7月10日12:00まで]
[5] その他の制限: 既存のRAND関数使用不可
先日>>251で教えていただいた中心極限定理を書き換えて作成していたのですが、
上手くできませんでした。
宜しくお願いします。
805:デフォルトの名無しさん
09/07/09 11:53:21
>>804
URLリンク(kansai2channeler.hp.infoseek.co.jp)
RAND_MAXがダメだって話だったから、INT_MAXに書き換えておいた。
806:デフォルトの名無しさん
09/07/09 12:19:34
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):
二つの複素数 α、βの実数部、虚数部の値(実数)をそれぞれ入力し、
α/β
(αをβで割った商)を求めて表示せよ。(表示方法は複素数らしくなるよ
うに工夫せよ。)
ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体
として表し、複素数の除算用関数c_div()を作成して、これを利用すること。
この関数は、sとtを複素数を表す構造体としたとき、c_div(s,t)と呼び出
すと、戻り値としてsをtで除算した結果である複素数の構造体を返すものと
する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: c++Builder
[3.3] 言語: C
[4] 期限: 2009年7月10日12:00まで
[5] その他の制限: なし
お願いします。
807:デフォルトの名無しさん
09/07/09 12:28:34
>>806
あれ?デジャブ・・・
808:デフォルトの名無しさん
09/07/09 13:28:30
>>802
こんなんでいいかい?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
809:デフォルトの名無しさん
09/07/09 14:29:10
>>801
もう見てないかも試練がクソース
URLリンク(kansai2channeler.hp.infoseek.co.jp)
810:デフォルトの名無しさん
09/07/09 14:46:45
>>805
ありがとうございました。
811:デフォルトの名無しさん
09/07/09 14:52:22
>>809
ありがとうございました。
助かりました!
812:デフォルトの名無しさん
09/07/09 14:58:07
[1] 授業単元:C言語で簡単なゲーム
[2] 4目並べの勝ち負け判定
[3] 環境
[3.1] OS: UNIX
[3.2] gcc
[3.3] cのみ
[4] 期限: 7/9 18:00
[5] その他の制限:できるだけ簡単な作りにしていただきたいです。中高生なみの。
お願いします。
813:デフォルトの名無しさん
09/07/09 15:08:12
>>812
4目並べにもいろいろあるぞ。重力の有無、盤面サイズ、その他もろもろを教えれ
814:デフォルトの名無しさん
09/07/09 15:19:41
>>806
URLリンク(kansai2channeler.hp.infoseek.co.jp)
思いっきりデジャブだけど、その時に作ったソースがそのまま
残っているのでそのままうpした
815:784
09/07/09 15:23:16
>808
すいません、今見に来ました。
何とか今日の夜まで猶予をもらったので、
もう一度zip落とさせてもらえないでしょうか。
落としてみたら、ファイルが無かったようなので・・・。
816:デフォルトの名無しさん
09/07/09 15:24:11
>>815
今やってみたら普通に落とせたけど?
817:デフォルトの名無しさん
09/07/09 15:24:37
>>815
まだ残ってるぞ
818:784
09/07/09 15:30:02
すいません、今もう一度やってみたらできました!!
>>816 >>817
失礼しました。
>>784
本当にありがとうございました!大感謝です。
これで単位がもらえる・・・
皆様、ありがとうございました。
819:784
09/07/09 15:31:08
興奮して間違えたorz
改めて
>>808
ありがとうございました!
820:デフォルトの名無しさん
09/07/09 16:18:20
お願いします。
[1] 授業単元: 論理設計
[2] 問題文: 3入力のクワイン・マクラスキー法のプログラムを作成せよ
[3] 環境
特に無し(紙に書いて提出)
言語:C++
[4] 期限:07月13日(月)まで
[5] その他の制限:特にないです。
821:812
09/07/09 17:07:41
812での追記
4目並べ
重力は無しです、盤面サイズは10×10。
駒黒1
駒白-1
っと設定しています。これで、作っていただきたいです。
822:デフォルトの名無しさん
09/07/09 17:34:59
何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。
(1)科目別の最高点、最低点を表示する。
(2)各学生の3教科の平均点を表示する。
(3)各教科の平均点を表示する。
ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。
以上の問題お願いします
m(__)m
823:デフォルトの名無しさん
09/07/09 17:49:24
>>812
>>449のプログラムを流用で
URLリンク(kansai2channeler.hp.infoseek.co.jp)
824:デフォルトの名無しさん
09/07/09 18:32:51
>>822
質問テンプレ忘れてました。
[1] 単元:プログラミング工学1
[2] 問題文:下記にあります。
[3] 環境
:Windows
[3.3] 言語: C++
[4] 期限:あと40分位でお願いします。
何人かの学生の3教科(数学、国語、英語)の得点を2次元配列を用いて処理するプログラムを作る。
(1)科目別の最高点、最低点を表示する。
(2)各学生の3教科の平均点を表示する。
(3)各教科の平均点を表示する。
ただし Ctrl+zが押されるまで次々と整数値を読み込んでいくものとする。
以上の問題お願いします
m(__)m
825:デフォルトの名無しさん
09/07/09 19:20:54
〔1〕授業単元:C言語
〔2〕問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
〔3〕環境
[3.1] OS: Windows
[3.3] 言語: C言語
〔4〕期限:7月10日 18時
〔5〕コマンド引数、再帰呼び出しまで習いました
よろしくお願いします
826:デフォルトの名無しさん
09/07/09 20:13:56
1] 授業単元: 宿題
[2] 問題文(含コード&リンク): 整数を入力し、奇数か偶数かを判断するプログラム(switch文で
[3] 環境
[3.1] OS: (Windows/Linux/等々) XP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) borland
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 明日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
827:デフォルトの名無しさん
09/07/09 20:41:18
[1] 授業単元:オペレーティングシステムⅠ
[2] 問題文(含コード&リンク):exp7.cのプログラムを応用し、コマンドの引数xxxxで指定したファイルが更新されたら直ちに
"Modified xxxxfile on Day Month date hh:mm:ss yyyy"
というメッセージを表示するプログラム(ファイル更新を監視する常駐プログラム)を作成せよ。常駐プログラム(バックグランドで起
動され一般に広義のデーモンと呼ばれる)は、kill pid コマンドが入力されるまで、動き続けるように作成すること。
exp7.cは
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 09年7月13日正午
[5] その他の制限: プログラミング能力を問う科目でないため、特に制限はありません。
ですが、添付したソースに適したレベルでお願いします。
<実行結果>
$ gcc -o exp8 exp8.c
$ exp8 exp8 &
$ ps
PID TTY TIME CMD
3028 pts/1 00:00:00 bash
3073pts/1 00:00:00 exp8
3074 pts/1 00:00:00 ps
$ touch exp8
$
Modified exp8 file on Sun May 25 14:20:26 2008
touch exp8
$
Modified exp8 file on Sun May 25 14:20:26 2008
kill 3073
$
828:デフォルトの名無しさん
09/07/09 21:19:28
>>827
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
int main(int argc, char **argv)
{
char *file_name = argv[1];
struct stat sb;
time_t old_mtime;
stat(file_name, &sb);
old_mtime = sb.st_mtime;
while (1) {
usleep(500000);
stat(file_name, &sb);
if (old_mtime != sb.st_mtime) {
printf("'%s'が書き換えられた!%s", file_name, ctime(&sb.st_mtime));
old_mtime = sb.st_mtime;
}
}
}
829:デフォルトの名無しさん
09/07/09 21:46:36
>>826
switch文で判定するとか問題がカス過ぎるだろ
#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);
switch(n){
default: printf("%s",n&1 ? "odd" : "even");
}
return 0;
}
830:デフォルトの名無しさん
09/07/09 21:51:11
#include <stdio.h>
int main(){
int n;
printf("input number > ");scanf("%d",&n);
switch(n%2){
case 0: printf("even¥n");break;
case 1: printf("odd¥n");break;
default: printf("Bug of processor??¥n");break;
}
return 0;
}
としたらBug of processorと表示されることは内と言える?
831:デフォルトの名無しさん
09/07/09 22:07:22
>>829
ひどい奴だなwww もっとこう出題者の意向をくんでやれよ。いいよ俺が答えてやる
>>826
#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);
switch(n){
case 0: case 2: printf("偶数です!\n"); break;
case 1: case 3: printf("奇数です!\n"); break;
default: printf("わかりません!\n"); break;
}
return 0;
}
832:デフォルトの名無しさん
09/07/09 22:32:39
>>831
「わかりません」ってなんだよ
>>826
下のプログラムを実行したら、ちゃんとintの範囲なら全部判定できるプログラムができるからやってみなw
#include <stdio.h>
#include <limits.h>
int main(){
int i;
printf("#include <stdio.h>\n"
"int main(){\n"
"\tint n;\n"
"\tprintf(\"input number > \");\n"
"\tscanf(\"%%d\",&n);\n"
"\tswitch(n){\n"
"\tcase %d:\n", INT_MIN);
for(i = INT_MIN + 2; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
for(i = INT_MIN + 3; i > INT_MIN + 1; i+=2) printf("\tcase %d:\n", i);
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n", INT_MIN % 2 ? "偶数" : "奇数");
printf("\t}\n"
"\treturn 0;\n"
"}\n");
return 0;
}
833:832
09/07/09 22:41:20
わりぃ、1箇所ばぐっとった
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
↓
printf("\t\tprintf(\"%sです!\\n\");\n\tbreak;\n\tcase %d:\n", INT_MIN % 2 ? "奇数" : "偶数", INT_MIN+1);
これで完璧。
期限までに間に合わんかったらごめんな。
834:デフォルトの名無しさん
09/07/09 22:48:06
2009/7/9 24:00 締め切り埋め祭り
>>830 &yen;以外で文字化け
#include <stdio.h>
int main(){
int n;
printf("input number > ");
scanf("%d",&n);
switch( (n&1) == 0 ) { // 最下位ビットは0か
case 0: printf("奇数です!\n"); break; // いいえ
case 1: printf("偶数です!\n"); break; // はい
}
switch( (n&1) != 0) { // 最下位ビットは1か
case 0: printf("偶数です!\n"); break; // いいえ
case 1: printf("奇数です!\n"); break; // はい
}
return 0;
}
835:デフォルトの名無しさん
09/07/09 22:49:40
パスカルの三角形を出力するのに
#include <stdio.h>
#define N 10
int main(void){
int i, j = 1, x, y;
int d[N][N]={};
/* 三角形を作成 */
for (i = 1 ; i < N ; i++){
d[i][0] = 1;
while (j <= i - 1){
d[i][j] = d[i-1][j-1] + d[i-1][j];
j ++;
}
}
/* 三角形の表示 */
for (y = 0; y < N; y++) {
for (x = 0; x < N-y; x++)
printf(" ");
for (x = 0; x < y; x++)
printf("%3d ", d[x][y]);
printf("\n");
}
return 0;
}
と書きましたが、すべての要素がゼロになってしまいます。
どこがまちがっているのでしょうか??