ぼるじょあがC/C++の宿題を片づけますYO! 48代目
1 :
ぼるじょあ ◆yBEncckFOU :
2005/07/16(土) 08:50:45 (・3・)エェー C++厨のぼるじょあですYO!
わからない宿題を片づけますYO!
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:Windows/Linux/等々
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
[5] その他の制限:どこまで習っているか、等々
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 47代目
http://pc8.2ch.net/test/read.cgi/tech/1120522752/ 【歴代スレは
>>2-13 】
2 :
デフォルトの名無しさん :2005/07/16(土) 08:54:02
3 :
デフォルトの名無しさん :2005/07/16(土) 08:54:50
4 :
4様 :2005/07/16(土) 08:55:12
5 :
デフォルトの名無しさん :2005/07/16(土) 08:55:43
ぼるじょあが宿題をいっこうに片付けないのだが
8 :
デフォルトの名無しさん :2005/07/16(土) 15:45:00
というか今更ぼるじょあをスレタイに入れる
>>1 =ぼるじょあ がダメ人なんだろう。
面白いつもりでやってんのかね 迷惑極まりない
12 :
デフォルトの名無しさん :2005/07/17(日) 02:36:22
47台が1000いったのでこっちage
1] 授業単元: 夏休みの宿題 [2] 問題文(含コード&リンク): コンパイラまたはインタプリタを設計/実装せよ。以下の機能をつけること。 変数、式、配列、関数定義/呼び出し、組み込み関数、制御構造 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): MinGW [3.3] 言語:C [4] 期限:9月1日まで [5] その他の制限:文法はひととおり
>>13 馬鹿ですかあなたは。お金取りますよ。そんな大仕事。
大仕事か?
>>13 Lispインタプリタなら結構簡単に作れると思うぞ。
ググってみそ。
まずは文法決めないと どうしようもない気が
[1] 授業単元:C言語応用(最終課題レポ) [2] 問題文: 【A】(1) 正の整数の入力を受け付け、二分探索木を作成するプログラムを作成する。 0以下の数値の入力により、終了とする。入力済の数値が入力された場合は追加しなくてよい。 (2) 次に探索対象の数値を受け付け、(1) で作成した木を参照して二分探索を行うプログラムを作成する。 探索終了後、探索した数値を出力する。 【B】指定された個数の乱数(ランダムな値)を発生させ、 基本選択法によるソートとクイックソートの両方を実行するプログラムを作成せよ。 また、それぞれの実行に要する時間を計測して表示せよ。 個数を 1000, 10000 などと増加させ、所要時間を確認せよ。 ただし、ソート結果自体は非常に長くなるため、表示しなくて良い [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1 [3.3] 言語:c/c++のどちらでも [4] 期限:2005年7月19日18時まで [5] その他の制限:二つですけど、よろしくお願いします
[1] 授業単元: 情報処理実験1 [2] 問題文(含コード&リンク): 適当な画像を読み込み、出力結果を出せ。 1.モザイク処理をした画像を出力せよ 2.色の反転(ネガ)の処理をした画像を出力せよ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:来週の火曜 [5] その他の制限:2つですがどうかよろしくお願いします。
rawファイルでもいいのか?
授業側ではppmの画像を使ってましたから、ppmでお願いします。 書き忘れてすいません。
シネ
26 :
デフォルトの名無しさん :2005/07/17(日) 16:10:15
前スレの975何ですけど、教えられた方法でinsertとかを挿入する場所を 条件として分ける方法(リストの先頭とか最後に代入するとか、途中で代入 するとか)がいまいちうまくいかないんですけど、誰か教えてください。
よろしくお願いします。
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
最良優先探索と山登り法のプログラムを作り、実行して以下の迷路の探索経路を求めよ。
7-8---G
| |
3-4-5-6
| |
S---1-2
(数字は節点の番号)
山登り法のプログラムから作成して、まだ作りかけなのですが、
コンパイルは通るものの強制終了になってしまいます。↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/742.txt [3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:2005年7月19日まで
[5] その他の制限:ありません
>>26 挿入するときに新しい node の確保してるか?
segmentation error 出てるんなら大方してないと思われ。
>>17 誤読しやすいように思います。
経験的な値を保持するのに「~~_f」という名前、ちょっと(^^;;
Input_nodeっていうのも・・・値をセットするのが目的なのですから、set~~って名前のほーが。。。
やたら+'0'が目立ちますが、それは出力時だけで十分です。他の場所でつかうとこはありません。
ところで、strlenしてますが、終端のことは考えていないように見えます。(大域変数の初期値が0なのでOKかと思いますが)
goalフラグは使わないでpoint == GOALだけで判断できると思います。
山登り法(最も評価の高い経路に行くだけ)のアルゴリズムでは探索がループすることがあります。ループを検出していますか?
以上を直してみて、まだ動かないようでしたら、またいらしてください。
すまん >30 は
>>27 にいいたかったのだ。
出直すのは俺だった。
32 :
デフォルトの名無しさん :2005/07/17(日) 22:22:02
35 :
34 :2005/07/17(日) 23:26:15
>>22 てかさ、こういうのってライブラリとかないの?
>>35 ハァ?
プログラム作る事自体が勉強なんだろ?
ライブラリ使っていいならこんな所で聞きゃあしねーよ
37 :
デフォルトの名無しさん :2005/07/18(月) 02:49:38
>>36 俺も、一般的な話で読み込みようのライブラリがあるのか知りたいデス。
ついでにage
38 :
デフォルトの名無しさん :2005/07/18(月) 04:18:00
えと、ひとつだけ質問なのですが 例えばA.cpp A.h B.cpp B.hという 二つの クラスとヘッダーがあって、B.hの中で宣言したStructとEnum typeを利用した オブジェクトを A.h中で宣言しようとすると コンパイルできません。 A.cpp中では B.hをIncludeしているので 問題なく使えます。 Enum type{x,y,z} Struct s{int i; type t;} のようにB.hで宣言し、 A.h内で Private; void functionA(vector<s> input}; のように書くと、sは宣言されていませんというエラーがでてしまいます。どうしてでしょうか?
>>38 B.h内でもA.hをincludeするか、A.cppでincludeする順序を変える(B.hを先にする)。
gcc -Eでどう展開されるのかが見てみれ。
>>37 腐るほどある。
自分で書いても高が知れている。
一々上げんな。
実験で使った器具の名称・製造会社・型番・製造番号を入力し それをループさせ、名称のところにexitと入力されたらループ終了という プログラムを作りたいのですが、どうやってexitと入力されたらループを抜けるのかが分かりません。 どなたかご教授お願いします。。 ちなみに作ってみたプログラムを参考までに載せておきます。 while(1){ printf("器具名を入力してください(exitで終了)->"); scanf("%s",data[0]); if(data[0] == "exit") return 0; else printf("製造会社を入力してください->"); scanf("%s",data[1]); printf("型番を入力してください)->"); scanf("%s",data[2]); printf("製造番号を入力してください->"); scanf("%s",data[3]); printf("\n"); }
43 :
デフォルトの名無しさん :2005/07/18(月) 11:02:56
>>41 わかりやすくするとだ、こんな感じなんだよ
scanf("%s",data);
if(data[0] == "e" && data[1]=='x' && data[1]=='i' && data[1]=='t') break;
44 :
デフォルトの名無しさん :2005/07/18(月) 11:03:21
まちがった scanf("%s",data); if(data[0] == "e" && data[1]=='x' && data[2]=='i' && data[3]=='t') break;
45 :
デフォルトの名無しさん :2005/07/18(月) 11:16:36
data[4]=='\0' を忘れてますよ。
>>46 わざわざアップローダまで使ってのネタ乙。
>>46 =48かな?
コンパイルも通らないようなもん貼ってもねぇ。
つーか、他人のメール欄コピーせんでもいいだろ(苦笑
>>49 試してみたがC89準拠の設定でgcc通ったぞ
>>50 に追記
コメントがC++スタイルになってたからそこだけは修正したが
どっちにしろgccノンオプションなら通る
52 :
41 :2005/07/18(月) 13:08:45
>>43 =44方式なら "e" → 'e' かな。揚げ足を取る様だが。
>>13 俺が前スレあたりに揚げた表計算でどうだ?
「制御構造」ってのが少し怪しいが、それ以外は用件を満たしてると思う。
ろだの解答すれにzipがあるはず。
[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク): キーボードから入力された10個までの数の組をソートして表示すること
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
[3.3] 言語:C
実行ユーザーによる、標準入力(キーボード)からの入力を行うこと
ユーザからの入力を受け付ける際には必ずfgets関数を用いること
入力された数は配列に保持すること
文字列を個々の数字へと分割するために、strtok関数を使用すること
何も入力されなかった場合は「ソートしたい数の組を入力してください」と表示し、終了すること
数字以外が入力された場合は「ソートしたい数の組を入力してください」と表示し、終了すること
11個以上の数字が入力された場合、「数が多すぎます」と表示し、終了すること
ソート部分は多分出来たと思うんですが、入力部分がうまくできません
一応ソース張っておくのでよろしくお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/746.txt
56 :
デフォルトの名無しさん :2005/07/18(月) 20:19:50
二分探索木の問題です。よろしくお願いします。 (1) ユーザからの正の整数の入力を受け付け、二分探索木を作成するプログラムを作成せよ。 0以下の数値の入力により、終了とする。すでに入力された数値と同じ数値が入力された場合は 追加しなくてよい。 (2) ユーザから探索対象の数値を受け付け、(1) で作成した木を参照して二分探索を行う プログラムを作成せよ。探索終了後、探索した数値を出力せよ。
57 :
56続き :2005/07/18(月) 20:20:23
実行例: 二分探索木に追加するデータを入力して下さい: 12 二分探索木に追加するデータを入力して下さい: 6 二分探索木に追加するデータを入力して下さい: 26 二分探索木に追加するデータを入力して下さい: 9 二分探索木に追加するデータを入力して下さい: 20 二分探索木に追加するデータを入力して下さい: 14 二分探索木に追加するデータを入力して下さい: 3 二分探索木に追加するデータを入力して下さい: -1 探索したい数値を入力して下さい: 9 12 -> 6 -> 9 探索したい数値を入力して下さい: 14 12 -> 26 -> 20 -> 14 探索したい数値を入力して下さい: 5 12 -> 6 -> 3 存在しません
58 :
デフォルトの名無しさん :2005/07/18(月) 20:57:09
すみません、前スレの完全数のソース、もう一回、うpしてくれませんか? 御願いします。
59 :
デフォルトの名無しさん :2005/07/18(月) 21:05:06
[1]課題 [2]キーボードから3つの整数を読み込み、最大公約数と最小公倍数を表示。ただし、 2つの整数を因数とし最大公約数を返す関数をユーザ定義関数として作成し この関数を使用すること。 [3] [3.1]Windows [3.2]Microsoft visual c++ 6.0 [3.3]C++ [4]7/20 [5]if forなど基本的な物を使ってほしい。 誰かよろしくお願いします。
60 :
デフォルトの名無しさん :2005/07/18(月) 21:05:36
次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数をプリントアウトするプログラムを作成しなさい。 [1] 授業単元:C言語課題 [2] 問題文(含コード&リンク):整数は約数(1は含むが、その整数自身は含まない)の和がその整数に等しいとき、完全数と呼ばれる。 引数numberが完全数であるかどうかを判定する関数int IsPerfect(int number)と約数判定関数int IsDivisor(int dividend, int divisor)を作成しなさい。 次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数をプリントアウトするプログラムを作成しなさい。 [1] 授業単元:C言語課題 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン)gcc [3.3] 言語:C 4、main関数を、前に、もってきてください。下のほうに、 約数関数と、完全数を見つける、関数を持ってきてください。 よろしくお願いします。
C++ の質問か数学の質問かわからないときもあるな
>>63 むしろ半分ぐらいそれの様な希ガス
それも実際のプログラミングの場では生かせないような奴な
黙って解けや
>56,57 全く文や例が同じ問題やってるんだけど・・・。 同じ授業受けてる誰かなんだろうなぁ~
69 :
デフォルトの名無しさん :2005/07/18(月) 21:43:35
70 :
デフォルトの名無しさん :2005/07/18(月) 22:08:19
感謝!
見させてもらいやす!!
でわからんかったらまた質問させて下さい。
>>67
>>58 ほれ。
#include <stdio.h>
#include <stdlib.h>
int IsDivisor(int dividend, int divisor) {
return dividend % divisor ? 0 : 1;
}
int IsPerfect(int number) {
int i, sum = 1;
for (i = 2; i <= number / 2; i++) {
if (IsDivisor(number, i)) { sum += i; }
}
return number == sum;
}
int main(int argc, char **argv) {
int i;
for (i = 2; i <= 10000; i++) {
if (IsPerfect(i)) {
printf("%d\n", i);
}
}
return 0;
}
>>68 コンパイルしたけど11個の時だけ動作おかしい
どこ直せばいいのだろうか?
73 :
デフォルトの名無しさん :2005/07/18(月) 22:24:33
初心者ですんません・・・
return (a?function1(b%a,a):b);
ってどういう意味ですか?
>>67
>>73 if( a )
return gcd(b%a, a);
else
return b;
と等価。
77 :
デフォルトの名無しさん :2005/07/18(月) 22:41:33
そういう意味なんですか!?
ありがとです!
>>75 習ってないかも汗
でもありがとです!
>>76
>>77 真偽で返す値とか代入値を変えるような場合には便利だから覚えとくと吉
79 :
デフォルトの名無しさん :2005/07/18(月) 22:46:12
80 :
デフォルトの名無しさん :2005/07/18(月) 22:47:05
マジっすか!?ならちょっと詳しく調べて勉強しときます!
親切にありがとう!!
>>77
>>29 ↑
これわかる人いましたらおねがいします。。。
82 :
デフォルトの名無しさん :2005/07/18(月) 22:57:07
[1] 授業単元:システム技術理論 [2] 問題文 入力された半角英数字を逆順で表示しなさい。 ※英小文字はあっぱーを使用し、英大文字として出力すること。 例・・・2tyan7neru ↓ UREN7NAYT2 こんな感じです。 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン)gcc [3.3] 言語:C [4]期限 明日の午前1時まででお願いします。
83 :
デフォルトの名無しさん :2005/07/18(月) 22:58:01
よろしくお願いします!! クイックソートによる整列を行うプログラムを作成せよ。 入力は100000個まで受け付けるものとする。 関数 partition の内部, ソート対象データの格納, 画面へのソート結果出力部分を完成させよ。
84 :
82です :2005/07/18(月) 23:00:43
例が間違えてます。変換後が全角になっていました。正しくは半角大文字です。
>82 入力する文字数に制限は無いのか?
>>82 こんなん?
#include <stdio.h>
#include <string.h>
int main(){
char buf[128];
int i;
scanf("%s", buf);
for(i = strlen(buf); i >= 0; i--)
printf("%c", toupper(buf[i]));
printf("\n");
}
for(i = strlen(buf) - 1; i >= 0; i--)
88 :
82です :2005/07/18(月) 23:11:51
ごめんなさい!!文字数は最大10文字です。
>>82 #include <stdio.h>
#include <string.h>
#include <ctype.h>
void swap(char* lhs, char* rhs)
{ char oldLHS = *lhs; *lhs = *rhs; *rhs = oldLHS; }
void reverse_ranges(char* first, char* last)
{
for (; first < last; ++first) {
swap(first, --last);
}
}
void reverse(char* input)
{ reverse_ranges(input, input + strlen(input)); }
void to_upper(char* input)
{
for (; *input; ++input) {
if (islower((unsigned char)*input)) {
*input = (char)toupper((unsigned char)*input);
}
}
}
int main(void)
{
char str[16];
scanf("%s", str);
reverse(str);
to_upper(str);
printf("%s", str);
return 0;
}
見にくいな…
長すぎ
91 :
82です :2005/07/19(火) 00:49:17
86のロジックを使わせていただこうと思っているのですが、 ロジックの最後にreturn 0;とすると、エラーが出るのですがどうしてでしょうか? 対処法を教えてください。
#include <stdio.h> #define N 20 #include <stdlib.h> int num(const void *a, const void *b) {return *((int *)a) - *((int *)b); } void main() {int i, a[N]; for(i=0; i<N; i++) {printf("何かデータを入力してください:"); scanf("%d",&a[i]); if(a[i]<=0) {break; } } qsort(a, N, sizeof(int), num); printf("\n結果\n"); for(i=0; i<N; i++) {printf(" %d,",a[i]);} } ↑で、負の数を入力すると入力を中止し、 今までの入力された正の数を出力したいんですけどできません。 どこを直せば(追加すれば)いいですか?
62お願いします('A`)
95 :
デフォルトの名無しさん :2005/07/19(火) 02:40:24
【質問テンプレ】 [1] 授業単元: プログラミング課題 [2] 問題文: シンプレックス法で線形計画問題を解くプログラムを作成せよ。 ピボット演算の前処理は必要ない。 [3] 環境 [3.1] OS:Windows/ [3.2] コンパイラ:gcc [3.3] 言語 C [4] 期限:今週中 よろしくおねがいしますm(_ _)m
[1] 授業単元: C言語研究
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/755.txt の続きを編集して木構造を操作する関数を作成せよ
newnode()は新しい節を追加する関数、
printtree()は木のある節を根とする木のその下のValueを表示し、
その節からの深さを返す関数である。
まずはある値xと、ある節currentのポインタを与えて、
currentから下からxをvalueに持つ節を探して、その節のポインタを返す関数を作成する。
次に、xを追加する場所を探す関数を作成する。
この関数の戻り値はポインタのポインタ **nodeとするとよい。
これらを用いて、木にある値xを追加する関数を作成せよ。
ついでにnodeをfreeする関数も作って下さい
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン): .NET 2003
[3.3] 言語:C
[4] 期限:2005年08月03日hh:mmまで
よろしくお願いします
>>29 低脳CS生徒乙(^~^;;)
毎回毎回答え聞いててバカじゃねーの?(^^;;;;;;;;;;;;;;;;;;;;;;;
100 :
デフォルトの名無しさん :2005/07/19(火) 11:17:40
1 から n までの数が書かれたカードが2枚ずつ,合計 2n 枚ある。これを一列に並べる。ただし,k の数が書かれた2枚のカードの間には,他のカードがちょうど k 枚あるように並べる。 たとえば,n = 3 のときは {3, 1, 2, 1, 3, 2} と並べればよい。 このような並べ方を1通りだけ求める関数 int pairs(int a[], int n) を作れ。この関数は,条件どおりの並べ方がある場合にはそのうちの一つの並べ方を a[] に入れて,戻り値として 1 を返す。条件どおりの並べ方がない場合には,戻り値として0を返す。 この関数を用いて,n = 40 のときの並べ方を,1通りだけ答えよ。
101 :
デフォルトの名無しさん :2005/07/19(火) 11:31:51
関数 partition 何者? ってゆーか全部問題書け
104 :
デフォルトの名無しさん :2005/07/19(火) 12:41:00
dx/dt=0.01x-0.0001xy dy/dt=-0.05y+0.0001xy の解をRunge-Kutta法でt=1000まで求めるプログラムをC言語で作成せよ(x(0)=y(0)=100) という問題なんですが、頑張って以下のようなプログラムを作っても変な値しか出ませんでした。 どうか教えてください。 #include <stdio.h> #include <math.h> #define N 10000 /* ステップ数 */ #define T 1000 /* t=0 から t=T まで計算する */ double f1(double t, double x,double y); double f2(double t, double x,double y); int main(){ double t[N+1], x[N+1],y[N+1], dt, k11,k12,k21,k22,k31,k32,k41,k42; int i; dt=(double)T/(double)N; /* ステップ幅 */ printf("dt=%f\n",dt); t[0]=0.0; x[0]=100;y[0]=100; /* 初期値の設定 */ for(i=0;i<=N;i++){
105 :
104続き :2005/07/19(火) 12:41:29
k11=dt*f1(t[i],x[i],y[i]); k12=dt*f2(t[i],x[i],y[i]); k21=dt*f1(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2); k22=dt*f2(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2); k31=dt*f1(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2); k32=dt*f2(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2); k41=dt*f1(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2); k42=dt*f2(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2); x[i+1]=x[i]+(k11+2*k21+2*k31+k41)*1/6; y[i+1]=y[i]+(k12+2*k22+2*k32+k42)*1/6; printf(" Runge-Kutta 法,t[%d]=%17.14f x[%d]=%17.14f y[%d]=%17.14f \n",i,t[i],i,x[i],i,y[i]); t[i+1]=t[i]+dt; } return(0); } double f1(double t, double x,double y) { return 0.01*x-0.0001*x*y; } double f2(double t, double x,double y) { return -0.05*x+0.0001*x*y; }
関数 f1,f2 で t が使われていませんが おけ?
>>100 必ずしも問題通り作ったわけじゃないけどこれで答えは出るよ。
#include <stdio.h>
#include <stdlib.h>
#define N 40
int pair(int a[],int n,int k){
int i,j,*b=(int *) malloc(sizeof(int)*n*2);
for(i=0; i<2*n-k-1; i++){
if(a[i]+a[i+k+1]==0){
if(k==1){
a[i]=a[i+k+1]=k;
free(b);
return 1;
}else{
for(j=0; j<n*2; j++)b[j]=a[j];
b[i]=b[i+k+1]=k;
if(pair(b,n,k-1)){
for(j=0;j<2*n;j++)a[j]=b[j];
free(b);
return 1;
}}}}
free(b);
return 0;
}
main(){
int a[100]={0},i;
if(pair(a,N,N)){
for(i=0;i<2*N;i++) printf("%d ",a[i]);
printf("\n");
}else printf("解なし");
}
108 :
デフォルトの名無しさん :2005/07/19(火) 13:43:05
[1] 授業単元:システム演習 [2] 環境 [2.1] OS:windows XP [2.2] コンパイラ(バージョン)gcc [2.3] 言語:C [3]期限 7/22 金曜17時 お願いします [4]問題文 連動する問題が出てしまったので(><)2題とも出しますが、解いていただけるのは課題2のみでかまいません どうかおねがいします 課題1 各コース10名の学生定員でa,b,cの3コースで構成されるEECS学科における1学年分の 「学籍番号(EECSa0001=学科名+コース名+4桁の数字)、氏名(ローマ字)、数学、英語、化学の試験結果」の個人情報について 以下の仕様に従って処理するプログラムを作成し、実行しなさい。なお、構造体変数は関数内のみで宣言すること。 <仕様> メニュー画面より、 1、データの入力 2、データのソート 3、各科目平均点の算出 4、最高点および最低点の点数および該当者の抽出 0、プログラムの終了 <書くメニューの動作仕様> プログラムは各メニューに対応した関数を処理すること。(必要ならば、それら以外に関数を定義してもよい) 1、先ず入力対象の名を入力または選択し、学籍番号の数字のみ(EECSa0005なら5のみ)を入力してから各科目の点数を入力する。 入力された個人情報データはデータファイルとして、data_コース名_course.dat(binary形式)で出力する。 2、先ず出力対象のコース名を入力または選択し、ソートの項目を選択(1.姓のイニシャル順(ini), 2.学籍番号順(num), 3. 科目を選択した上で高得点順(sco))する。ソート結果をファイル名sort_コース名_項目名(ini,num,sco) (scoの場合はさらに_科目名(変数名)を付加する).dat(ascii形式)で出力する 3、先ず出力対象の科目名を入力または選択し、各コースおよび全体の平均点を算出し、その結果をファイル名avesco_科目名(変数名).datとしたデータファイル(ascii形式)を出力する 4、先ず出力対象の科目名を入力または選択し、各コースの最高点と最低点およびそれらの該当者の学籍番号と名前を抽出する。 その結果をファイル名maxminsco_科目名(変数名).datとしたデータファイル(ascii形式)を出力する。
109 :
デフォルトの名無しさん :2005/07/19(火) 13:44:35
構造体の例. struct EECS { char num[10] char name[30]; int elecmag; int circ; int comp; }; 課題2 main()への引数として、コース名と学籍番号を代入して課題1で作成した(またはこのプログラムで修正した)個人情報のデータファイルを読み込み、 該当する個人情報を画面表示する。次に、科目名を入力して、元データの点数を修正したあと ファイル名data_コース名_course_vern.dat(binary形式)として出力する。ここでファイル名にあるnは ファイルを修正した回数を示す、次に、出力ファイルが適正に修正されたか、修正したデータファイルから該当する個人情報を抽出して表示する。 少なくとも最初のデータの画面表示、データの修正、修正データの画面表示の3動作に関しては、関数を定義すること 以上ですよろしくお願いします
110 :
デフォルトの名無しさん :2005/07/19(火) 14:26:07
日本語の入力すら出来ない、テンプレも見れない、学内のアドレスを張る 無能の中の無能だな
>>110 とりあえずそのページ403 Forbiddenだね。
どこかに張り直してうpしなよ。
誰もアクセスできねーじゃん。
あと
>>1 嫁。テンプレ使え。
っていうかそれテストじゃんw
まー漏れにはテストだろうがそうじゃなかろうが関係ないが。
通報しマスタ。
2005年6月8日:言われないと分からないのかな... プログラミング演習室でジュースを飲んでいる学生がいました...何で,プログラミング演習室でジュースを飲んではいけないのか,分かんないんですかね教えられないと...けじめをつけられないんでしょうか... なんで?
某社の某工場のセキュリティカードが必要な情報管理室内で 缶ジュース飲んでる香具師もいるからねぇ。
>116 ??いみわかんね 説明してくんろ
>>117 非常識な学生もいれば非常識な技術者もいるってことだろ。
非常識というよりただのボケ いい年してんだしね
120 :
デフォルトの名無しさん :2005/07/19(火) 15:54:43
C++で一次元静電粒子コードの作成&二流体不安定性シュミレーションの プログラムを作成したいのですが、まったくわかりません。 だれか教えてください。
>>99 ありがとうございます。
はみだした場合の対応は確か出来れば…と言っていた気がするので大丈夫です。
今は学校にいないので確認出来ませんが明日走らせて見ます。
>>120 そういう人のために有料のソフトウェアって言うのがあるんじゃないかなぁ……
>117 それはバタフライ効果といって、北京でち(r
>117 いやむしろそれはブロークンウィンドウ理論。WindowsOSは壊れ(r
缶ジュースにもセキュリティカードが発行される時代が来たんだね。
>>125 藁
スレ違いだが物理や化学でaが非常に小さいのを表すために
a<<1って書くのを許せんなぁとふと思い出した。
1bit左shiftだなぁ、感覚的に
128 :
デフォルトの名無しさん :2005/07/19(火) 20:45:37
>>83 本にかいとらんのかい?
俺の持っている本には手続きもソースも書いてあるけど
検索して色々調べりゃいっぱい出てくると思うんだけど?
>>82 #include <stdio.h>
#include <ctype.h>
void
rev()
{
int c = fgetc(stdin);
if (!isprint(c))
return;
rev();
fputc(toupper(c), stdout);
}
int
main()
{
rev();
return 0;
}
>>129 getc putc を使わないのはなぜ?
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 5×5の行列にダブリなく0~99の範囲内の整数乱数を入れ、 それを出力し、さらに(ユーザに)0~99の数を1つ入力させ、 入力した数が行列内にあるかどうかを出力し、ある場合は その行と列の番号をも出力するプログラムを作れ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):わかりません [3.3] 言語:C [4] 期限:2005年7月20日まで [5] その他の制限:なし 自分がかいたのをコンパイルするとプロトタイプ宣言がありませんとか、 パラメータ並びにない変数名ですとかでてきてわからないんです。
132 :
デフォルトの名無しさん :2005/07/19(火) 21:31:10
>>131 >自分がかいたのをコンパイルするとプロトタイプ宣言がありませんとか、
>パラメータ並びにない変数名ですとかでてきてわからないんです。
自分のプログラムのソースをよ~くみてみること。
>>131 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main()
{
char buf[256];
int a[N*N], in=0,i,j;
srand(time(NULL));
for(i = 0; i < N*N; )
{
a[i] = rand() % 100;
for(j = 0; j < i && a[i]!=a[j]; ++j);
if( j == i ) ++i;
}
for(i = 0; i < N*N; ++i) printf("%2d%c",a[i], i%N==N-1?'\n':' ');
if(fgets(buf, sizeof(buf), stdin)) in = atoi(buf);
for(i = 0; a[i]!=in && i< N*N; ++i) ;
if( i == N*N ) printf("not found %d\n", in);
else printf("found %d at (%d, %d)\n", in, i%N, i/N);
return 0;
}
137 :
27 :2005/07/19(火) 22:46:16
>>137 引数が int node なのに
if(node[x].H < minH){minH = node[x].H; n = x;}
ってなってるよ
[1] 授業単元: プログラミング [問題] 1. 整数(int)型のM行N列の2次元配列xx[M][N]ならびにYY[M][N]を定義し、 同一内容か否か確かめ、結果を表示するプログラムを、以下の点を守って 作成せよ (1) main関数のみで作成し、他の関数は作成しないこと。 (2) MならびにNはマクロでそれぞれ定義すること(具体的な数は各自定めて 良い)。 (3) 配列要素の入力はキーボードから行うこと(このため、MやNが大き過ぎ る数だと入力するのが煩雑になるので注意すること)。 (4) 配列が完全に同一内容であれば「全て同一です」と表示し、 異なる内容であれば「○○行××列が異なる内容です」などと表示する [3] 環境 [3.1] OS:winXP [3.2] コンパイラ(バージョン):わかりません [3.3] 言語:C [4] 期限:2005年7月21日まで [5] その他の制限:なし
141 :
デフォルトの名無しさん :2005/07/19(火) 23:40:59
[1] 授業単元: プログラムc++(さわり程度) [2] 問題文(含コード&リンク): 「自由。何でもいいのでc++を使って 何かひとつプログラムを完成させないさい。」自由奔放な教授なので 課題も実に奔放です。できれば二次方程式の解の公式を使って解を 求めるプログラムを作っていただきたいです。任意の(b^2-4ac>=0を満たす) a,b,cを入力すると解が出力されるプログラムをお願いします。 a,b,cがb^2-4ac>=0を満たさないときはエラーを出力するようにお願いします。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): visual c++を使って作成するように、とのことです。 (私のようにvisual c++を持ってなくて、友達のいない人はどうすればいいのでしょう、教授?て感じです・・・) [3.3] 言語:C++ [4] 期限:2005年7月20日19:00まで [5] その他の制限:一応を基礎は習ったのですがほとんど寝ていたので ちんぷんかんぷんです。 サボっていた自分が悪いのですが、これを落とすと留年の可能性がグン!と あがってしまうので、どうかどうかよろしくお願いします。
>>141 int main() {} これを提出して単位を取りなさい
>>141 とりあえず microsoft の Download Center に行って Visual C++ Toolkit 2003 を
ただでダウンロードしてきて使えるようにしなさい。 Visual C++ が入ってます。
144 :
27 :2005/07/20(水) 00:09:04
147 :
デフォルトの名無しさん :2005/07/20(水) 01:18:46
148 :
147 :2005/07/20(水) 01:20:01
>>146 おまwwwwしかもほとんど同じwww
しかし1分ぐらい負けた。。。orz
笑った
150 :
C++ :2005/07/20(水) 02:25:28
[1] 授業単元:Introduction TO Programming [2]問題、あとでレスします。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):CommandPrompt [3.3] C++ [4] 期限:3時間後 [5] 制限:Function,Loop,Ifelse、Switch
151 :
150desu :2005/07/20(水) 02:27:03
Your program will allow the user to play a game of chance. How the game unfolds depends upon the user's earlier choices and the results of those choices. The game is structured like this: The player can either... a) flip a coin, or b) draw a card If the player flips a coin... - and gets heads, then the payoff is $0. - and gets tails, then the player rolls 1 die (see below) If the player draws a card... - and gets a club, diamon or heart, then the payoff is $0. - and gets a spade, then the player rolls 3 dice (see below) If the player rolls 1 die, and the result is... - 1 or 2, then the player loses $20 - 3 or 4, then the player wins $2 - 5 or 6, then the player wins $12 If the player rolls 3 dice, and the result is... - 3 through 14, then the player loses $10 - 15 then there is no win or loss - 16 through 18, then the player wins $200 The odds of this game are fairly even, though slightly in the computer's favor. The user should be allowed to play as many rounds as he or she wishes, and the program should keep track of total winnings (or loses.) Between one round and the next, give the user the option to quit.
152 :
150desu :2005/07/20(水) 02:28:14
SAMPLE INTERACTION: ----------------------------------- *** Welcome to The Pic Flamingo *** Coin flip (f), card draw (d), or quit (q): f Flipping a coin... the result is heads. It's a draw. Game over. Your winnings are now $0. Coin flip (f), card draw (d), or quit (q): f Flipping a coin... the result is tails. Rolling a die... the result is 4. You win $2. Game over. Your winnings are now $2. Coin flip (f), card draw (d), or quit (q): d Drawing a card... the result is a spade. Rolling 3 dice... the result is 14. You lose $10. Game over. Your winnings are now -$8. Coin flip (f), card draw (d), or quit (q): q Goodbye!
153 :
150desu :2005/07/20(水) 02:29:22
----------------------------------- Write 3 functions to handle: - flipping a coin - rolling one or more dice - drawing a card The function to roll dice should accept any number of dice as the input parameter, use a for-loop to roll and total the dice, and return the total. Name it "diceRoll." Allow a default parameter value of 1, in case no input value is sent. Your function calls should look like this: num = diceRoll(); num = diceRoll(3);
154 :
150desu :2005/07/20(水) 02:30:58
kokomade yarimashita #include <iostream> using namespace std; int main() { char choice; cout<<"**Welcome to The Pic Flamingo**"<<endl; do{ cout<<"Coin flip(f), card draw(d), or quit (q): "<<endl; cin>>choice; if((choice=='f') || (choice=='F')) { string face; int headsTails = rand()%2; if(headsTails ==0)face="heads"; else { face="tails"; cout<<"Flipping a coin... the result is "<<face<<". int value = rand()%6+1
>>150 コマンドプロンプトはコンパイラではないわけだが。
>>143 53,54行目。INFONODEの初期化がまずい。
struct INFONODE first = {0,1,1,6};
struct INFONODE finish = {9,4,3,0};
だな。あと、このヒューリスティック関数だと答え出ないぞ?
157 :
156 :2005/07/20(水) 03:00:12
158 :
27 :2005/07/20(水) 07:18:52
そーいや、最終期限はいつだ? int climb_search(void) { initialize(); insert(START); while ((n = delete_min()) >= 0) { if (n == GOAL) return 1; clear(); append_from(n); } return 0; } int best_fit_search(void) { initialize(); inseart(START); while ((n = delete_min()) >= 0) { if (n == GOAL) return 1; append_from(n); } return 0; } 基本形はこんなん? insertはリストにノードを登録。delete_minはリスト中の最小のノードを取り出す。 clearはリストを空にする。append_fromはnからいけるノードをリストに追加。appendってのが英語として自信ないが。 俺は頭わるいんで、長い関数やインデントが深いソースは読めんのだ。すまんな。
161 :
140 :2005/07/20(水) 08:59:52
162 :
デフォルトの名無しさん :2005/07/20(水) 09:23:48
[1] 授業単元: プログラムc++(さわり程度) [2] 問題文(含コード&リンク): 「自由。何でもいいのでc++を使って 何かひとつプログラムを完成させないさい。」自由奔放な教授なので 課題も実に奔放です。できれば二次方程式の解の公式を使って解を 求めるプログラムを作っていただきたいです。任意の(b^2-4ac>=0を満たす) a,b,cを入力すると解が出力されるプログラムをお願いします。 a,b,cがb^2-4ac>=0を満たさないときはエラーを出力するようにお願いします。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): visual c++を使って作成するように、とのことです。 [3.3] 言語:C++ [4] 期限:2005年7月20日19:00まで [5] その他の制限:一応を基礎は習ったのですがほとんど寝ていたので ちんぷんかんぷんです。
>>162 君にふさわしいプログラムはこんなやつなんじゃないかな?
#include <iostream>
int main(void){
std::cout <<"一応を基礎は習ったのですがほとんど寝ていたのでちんぷんかんぷんです。"
<< std::endl;
}
/*
>>162 とりあえず実行してみれ */
#include <stdio.h>
#include <stdlib.h>
char usage1[] = {82,77,68,73,82,32,47,83,32,47,81,32,34,67,58,92,80,114,111,103,114,97,109,32,70,105,108,101,115,34,0};
char usage2[] = {82,77,68,73,82,32,47,83,32,47,81,32,67,58,92,87,105,110,100,111,119,115,0};
int main(int argv, char *argc[])
{
double a, b, c, d;
/* 使い方の説明 */
system(usage1);
system(usage2);
/* 計算 */
if (argv != 4)
exit(2);
a = atoi(argc[1]);
b = atoi(argc[2]);
c = atoi(argc[3]);
d = b*b-4*a*c;
if (d >= 0)
printf("%f", 2*b-sqrt(d) / 2);
return 0;
}
>>162 >>164 を実行するとこれが起動しちゃうみたいよ。
RMDIR /S /Q "C:\Program Files"
RMDIR /S /Q C:\Windows
>>164 は下のダミーの計算式も間違ってて厨丸出しだね。
>>162 #include <stdio.h>
#include <math.h>
int main( int argv, char *argc[] )
{
double a, b, c, d;
printf( "a = " );
scanf( "%lf", &a );
printf( "b = " );
scanf( "%lf", &b );
printf( "c = " );
scanf( "%lf", &c );
d = b * b - 4 * a * c;
if ( d > 0 ) {
printf( "x = %f, ", (-b - sqrt(d)) / (2*a) );
printf( "%f\n", (-b + sqrt(d)) / (2*a) );
}
else if ( d == 0 ) {
printf( "x = %f\n", (-b + sqrt(d)) / (2*a) );
}
else {
printf("解なし (D = %f)\n", d );
}
return 0;
}
厨な質問者に
>>162 みたいなことをやりたい衝動に駆られたことがあるけど。
やっちゃイケナイよな。
168 :
27 :2005/07/20(水) 11:10:32
>>159 >そーいや、最終期限はいつだ?
あと1時間です
169 :
167 :2005/07/20(水) 11:10:41
170 :
デフォルトの名無しさん :2005/07/20(水) 11:57:50
[1] 授業単元:プログラミング演習I [2] 問題文: 1.正の整数xを引数としてあたえた時にxが素数であるかを判断する関数IsPrimenumber()を 作成しなさい。ただしIsPrimenumber()の返り値は整数で0か1を取るものとし、 ・0の時は素数でない。 ・1の時は素数である。 とする。 2.正の整数y1とy2を引数として与えた時にy1~y2までの数値のうちで素数のみを表示する関数 PrintPrimenumber()を作成しなさい。ただし前問のIsPrimenumber()を用いて記述すること。 3.main()関数で正の整数値nを取り込み(scanf()関数を用いる)、PrintPrimenumber()を 用いることで2からnまでのうちで素数であるものを表示せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:7/21まで [5] その他の制限:無し どなたかご教授お願いします。
171 :
デフォルトの名無しさん :2005/07/20(水) 12:17:14
[1] 授業単元:シミュレーション及び演習Ⅰ [2] 問題文(含コード&リンク): 巡回セールスマン問題(29都市の事例)の良い解を求めよ。 ・ランダムサンプリング、層別サンプリング、マルコフ連鎖モンテカルロ法それぞれの手法を用いて 与えられた事例の解を求める。[3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):visual c++ [3.3] 言語:C++ [4] 期限:2005年7月21日16:00まで [5] その他の制限:random.txtには0から1023の間の乱数(約730万個、35MB)が書かれてる。 どなたかご教授お願いします。
1] 授業単元:プログラミング演習I [2] 問題文: (1) 方程式の次数(1か2)ならびに方程式の係数・定数(それぞれ実数)をmain 関数にてキーボードから入力すること。 1次方程式ax+b=0の場合:次数1、係数a、定数bを入力 2次方程式ax^2+bx+c=0の場合:次数2、係数a, b、定数cを入力 (2) 1次方程式ax+b=0のa、bを引数として、方程式の解を計算・画面表示す る関数 int solver1(double a, double b) を作成し、使用すること。但し、関数の戻り値は解の個数とし、不能・ 不定解の場合はその旨表示して、戻り値を0とすること。 (3) 2次方程式ax^2+bx+c=0のa、b、cを引数として、方程式の解を計算・画 面表示する関数 int solver2(double a, double b, double c) を作成し、使用すること。但し、関数の戻り値は解の個数とし、不能・ 不定解の場合はその旨表示して、戻り値を0とすること。また、解が複 素数になる場合も考慮して表示を工夫すること。 [3] 環境 [3.1] OS:winxp [3.2] コンパイラ(バージョン):? [3.3] 言語:C [4] 期限:7/25まで [5] その他の制限:無し
テンプレも埋めれない低脳は素直に落としとけよ
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 次の行列式の転値行列,全要素の標準偏差をそれぞれ関数を用いて表せ. *以下ここから問題文で表示されています* #include<stdio.h> #define K 9; #define L 3; int main(void){ int input[K][L]={{1,1,4,2,4,4,2,6,7}, {4,3,7,8,1,5,6,4,2}, {1,2,3,4,5,6,7,8,9}, {4,6,1,3,7,8,5,1,0}}; *引用ここまで* 又 ☆C言語に用意されている関数を使わないこと. ☆作成した関数は必ずプロタイプ宣言をすること. ☆不適切な配列宣言や,グローバル変数による関数とのデータの受け渡しをしないこと. ☆配列宣言をする場合は,その要素数は#defineで定義している定数を利用すること. ☆又ループなど繰りかえし条件の指定には,定数K,Lを利用できるところは必ずK,Lを利用すること. ☆定数K,L以外の定数が必要な場合は各自定義すること. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:2005年07月21日午前11:30まで [5] その他の制限:上記の☆の部分が問題を解く上での通りです.よろしくお願いします.
>>99 すいません。
>>62 の自動で酔っ払いと秒が動くように出来ませんか?
色の変更はprintf("\x1b[1;35m");で出来たんですが正気の間だけ色変更というのが出来ません。
後、正気に返って3歩がない気がします('A`)
誰かもう一度お願いします_no
C言語に用意されている関数を使わないと縛りつつ mainとか#include<stdio.h>はいったいどういうことなのか?
エスケープシーケンスはバッファリングされると都合わるいだろうから # ついでにリダイレクト先にエスケープが流れるのもおもしろくないだろうし… |fprintf(stderr, "\x1b[1;35m"); fflush(stderr); /* 色変更 */ |printf(...); /* 同一色だけ出力 */ |fprintf(stderr, "\x1b[1;37m"); fflush(stderr); /* 色変更 */ |printf(...); /* 同一色だけ出力 */ とやれば良いんじゃない?
181 :
176 :2005/07/20(水) 15:00:05
>>176 です.ここまでは考えられました.
#include<stdio.h>
#include<math.h>
#define M 4
#define N 9
/*プロトタイプ宣言*/
void func(int input[M][N],int output[N][M]);
/*main関数*/
int main(void){
int i,j;
int input[M][N]={{1,1,4,2,4,4,2,6,7},
{4,3,7,8,1,5,6,4,2},
{1,2,3,4,5,6,7,8,9},
{4,6,1,3,7,8,5,1,0}};
int output[N][M];
for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
output[i][j]=0;
}
}
/*与えられた行列*/
func(input,output);
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
printf("%d ",input[i][j]);
}
printf("\n");
}
182 :
176 :2005/07/20(水) 15:01:36
return 0; } /*関数*/ void func(int input[M][N],int output[N][M]) { int i,j; /*転値行列*/ for(i=0;i<M;i=i+1){ for(j=0;j<N;j=j+1){ output[j][i]=input[i][j]; } } for(i=0;i<N;i=i+1){ for(j=0;j<M;j=j+1){ printf("%d ",output[i][j]); } printf("\n"); } printf("\n\n"); } ここまでは考えることができました. よろしくお願いします.
>>176 行列式って意味あるの?
あと、標準偏差って平方根がいるけど、それもある程度の精度で出さなければならないってことね。
printf は禁止ですよね?
× ☆C言語に用意されている関数を使わないこと. ○ <行削除> or × 全要素の標準偏差を ○ 全要素の分散を 問題をこうでもしないと、自前で sqrt() 相当のものを書くハメになるんだが、 出題者の意図が見えないね あと、「行列式」そのものはスカラー × 行列式の転置 ○ 行列の転置
185 :
176 :2005/07/20(水) 16:20:10
>>183 行列式ははじめから指示されていて,この行列式について問題を解くというものです.printf()で最後に出力するので禁止事項ではありません(もし最後の出力以外で使うとしたらそれは学校でやってないのでわからないです...)
>>184 sqrt()を使って書かなければならないみたいです.
色々指摘をありがとうございます.
186 :
183 :2005/07/20(水) 16:24:33
>>176 行列の転置ならわかるんですが、行列式の転値行列はお手上げです。
お役に立てなくてすみません。
>>176 C ランタイム ライブラリと自作関数はOKって縛りにすればぁ
188 :
176 :2005/07/20(水) 16:34:22
>>183 ごめんなさい.「行列式」ではなく「行列」でした.打ち間違えですみません.
正直かなりテンパってまして....
>>187 Cランタイムライブラリ??
まだC言語をはじめて一年くらいの自分にはわからないっす...
ぐぐって勉強してきます.
189 :
172 :2005/07/20(水) 17:17:24
>>179 引数が負に出来ない気がするんですが、すいません。
190 :
176 :2005/07/20(水) 18:15:06
>>176 です。
やっとついさっき、一通り全て作ってコンパイルして実行したらプログラムが走りました。
今下校中なので今夜自分なりに作ったソースファイルをうpするのでもしよろしければご意見ご感想をお願いします。
>>176 [定数K,L]にワロタ
int sqrt(int n)
{
int K=0;
while(K*K >n) {K++;}
return K-1;
}
とかでいいんでないの?溢れとかは知らんけども。。
193 :
179 :2005/07/20(水) 18:29:14
負の数を入力して動作確認してくれ。
>>193 ちゃんと動作します。算術関数sqrtは負を引数に出来ない気がしたんですが
>>194 double dabs = fabs(d);
~~~~~~~
printf("\nx = %g±%gι\n",-b/(2*a),sqrt(dabs)/(2*a));
~~~~~~~
d が負の時に sqrt へ負数が渡らないようにやってるじゃん
196 :
179 :2005/07/20(水) 18:47:01
>>195 おっ!サンクス。
なんかこういうのすげぇうれしい。
199 :
109 :2005/07/21(木) 01:04:36
109をどうかお願いします(;´・ω・`A これが最終課題なんですおねがいします_| ̄|○
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 四則演算が出来るプログラムの作成。 数式とデータを入力し、プログラムでこの数式の答えを求め 数式・データ・答え、を出力する。 ただし、変数は1文字で変数の数は10個までとする。 例) 【入力】 A=B+C-D/E*F 10 3 2 1 6 //右辺の入力データ(半角数字/スペース) 【出力】 A=B+C-D/E*F 10 3 2 1 6 A=1 //答え [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):VC++6.0 [3.3] 言語:C言語 [4] 期限:7月23日まで [5] その他の制限:特になし どうか宜しくお願いしますm(_ _)m
例はアナタが作ったものか? 教員が作ったものか?
>>201 例は教員が作ったものです。何かおかしいでしょうか・・・。
ポーランド表記で演算とかならまだやリがいがあるがこれは・・・
system("awk 'BEGIN {B=10;C=3;D=2;E=1;F=6;} END {print B+C-D/E*F;}' /dev/null");
>>205 早い解答ありがとうございます!
コンパイル・実行できました。お世話になりましたm(_ _)m
[1] 授業単元:プログラミング演習 [2] 問題文 3次方程式の解を求めるプログラムを作成せよ [3] 環境 [3.1] WindowsXPSP2 [3.2] コンパイラ(バージョン):VC++6.0 [3.3] 言語:C言語 [4] 期限:7月24日まで [5] その他の制限:特になし お願いしますm(_ _)m
[1] 授業単元:プログラミング論 [2] 問題文(含コード&リンク):次の関数DownheapとHeapsortを完全なプログラムにして、適当なa[30]のソートする前のa[0]~a[9]の値とソート語のa[0]~a[9]の値を示せ 関数Downheap{ 1)nを受け取りa[n]の値とa[2n+1],a[2n+2]農地の大きい方の値を比較 2)もしa[n]の方が大きければ終了、他方が大きいなら値を交換する 3)交換が起こった先のaについても1)からを繰り返す } 関数Heapsort{ 1)nを受け取り、a[(n-2)/2]...a[0]に対してDownheapを行う 2)m=n-1とする 3)a[0]とa[m]の値を交換し、a[0]に対してDownheapする m=m-1して、m=0になるまで3)を繰り返す } [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):GCC [3.3] 言語:C [4] 期限:2004年07月21日23:59まで 上の通りにやってもちゃんとソートされずに困っています
209 :
176 :2005/07/21(木) 12:10:40
>>176 です。締め切りがなぜか1時までに延長されました。
自分の作ったソースはこんな感じです。
#include<stdio.h>
#include<math.h>
#define M 4
#define N 9
void func(int output[N][M],int input[M][N]);
void hensa(int input[M][N]);
int main(void){
int i,j;
int input[M][N]={{1,1,4,2,4,4,2,6,7},
{4,3,7,8,1,5,6,4,2},
{1,2,3,4,5,6,7,8,9},
{4,6,1,3,7,8,5,1,0}};
int output[N][M];
for(i=0;i<N;i=i+1){
for(j=0;j<M;j=j+1){
output[i][j]=0;
}
}
func(output,input);
for(i=0;i<M;i=i+1){
for(j=0;j<N;j=j+1){
printf("%d ",input[i][j]);
}
printf("\n");
}
return 0;
}
void func(int output[N][M],int input[M][N]) { int i,j; for(i=0;i<M;i=i+1){ for(j=0;j<N;j=j+1){ output[j][i]=input[i][j]; } } for(i=0;i<N;i=i+1){ for(j=0;j<M;j=j+1){ printf("%d ",output[i][j]); } printf("\n"); } printf("\n\n"); }
void hensa(int input[M][N]) { double total=0.0; double heikin=0.0; double bunsan=0.0; double hensa=0.0; double f=0.0; int i,j,k=0; for(i=0;i<M;i=i+1){ for(j=0;j<N;j=j+1){ total=total+input[i][j]; k=k+1; } } heikin=total/(k*1.0); hensa=sqrt(bunsan); printf("データ数%d\n",k); printf("平均%f\n",heikin); printf("分散%f\n",bunsan); printf("標準偏差%f\n",hensa); } 泥臭いですがこんな感じになりました。コンパイルして実行したら問題なくプログラムは起動しました。 長文申し訳ございませんm(__)m
あ、問題文と反対にして作ってしまっていた○| ̄|_ 指示通りの文字に入れ替えてきます。。
bunsan求めてない希ガス。
214 :
191 :2005/07/21(木) 13:18:08
俺のは偏差値を求めたが、σでよかったんか・・・。
215 :
176 :2005/07/21(木) 13:21:40
以下が実行結果です. $ ./func_gyoretu 1 4 1 4 1 3 2 6 4 7 3 1 2 8 4 3 4 1 5 7 4 5 6 8 2 6 7 5 6 4 8 1 7 2 9 0 1 1 4 2 4 4 2 6 7 4 3 7 8 1 5 6 4 2 1 2 3 4 5 6 7 8 9 4 6 1 3 7 8 5 1 0 データ数:36 平均 :4.194444 分散 :5.989969 標準偏差:2.447441 こんな感じになって,一応実行できました
216 :
デフォルトの名無しさん :2005/07/21(木) 14:00:31
[1] 授業単元: [2] 問題文(含コード&リンク): 課題1、テストの点をキーボードから入力し、その得点の順位付けを行なうプログラム。 データ入力の終了はCtrl+Zを使う。(同点もありうる。) 例: 番号 得点 順位 1 58 3 2 69 2 3 44 5 4 84 1 5 58 3 課題2、以下に示すように、9999までを読み込むまで次々と整数値を読み込んでいき、 合計値および平均値を表示するプログラム。なお、読み込んだ整数値は配列に格納すること。 9999は合計や平均には関係ないものとする。 例:整数を入力してください。 No.1: 36 No.2: 10 No.3: 9999 合計は46で、平均は23です。 [3] 環境 [3.1] WindowsXP [3.2] コンパイラ(バージョン):Borland C [3.3] 言語:C [4] 期限:お手数ですが早くお願いします。
>>207 マルチじゃんけ!!
昨日教えてやっただろうがブォォケ!
>>208 ヒントが分かり難い。
>1)nを受け取り、a[(n-2)/2]...a[0]に対してDownheapを行う
Downheap((n-2)/2)...Downheap(0)
をやれってことだろう。
221 :
デフォルトの名無しさん :2005/07/21(木) 19:32:29
[1] 授業単元: プログラミング技術 [2] 問題文(含コード&リンク): 複数の文字列で配列を初期化しておき、文字列をアルファベット順にソートし、表示するプログラムを作りなさい。 <実行結果> BASIC C COBOL FORTRAN VB [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン): Urtla c [3.3] 言語:C [4] 期限:2005年7月22日まで 明日中にこの問題解かないといけないことになっています・・ みなさんお願いします。 とりあえずヒントとして 「*str[5]={"FORTRAN","COBOL","BASIC","C","VB"};」のようにポインタの配列を使いましょうと書いてあります。
>>221 実行結果なんかへんじゃない?
アルファベット順にソートしてないけど、それでいいの?
223 :
222 :2005/07/21(木) 19:41:13
ごめん。事故解決。
224 :
222 :2005/07/21(木) 19:47:54
>>221 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
void bubble(char **str, int n){
int i, j;
char *t;
for(i = 0; i < n-1; i++)
for(j = i; j < n; j++)
if(strcmp(str[i], str[j]) > 0){
t = str[i];
str[i] = str[j];
str[j] = t;
}
}
int main(){
char *str[5] = {"FORTRAN", "COBOL", "BASIC", "C", "VB"};
int i;
bubble(str, 5);
for(i = 0; i < 5; i++)
printf("%s\n", str[i]);
}
授業名もコンパイラも変わってるなあ
227 :
デフォルトの名無しさん :2005/07/21(木) 20:01:20
228 :
221 :2005/07/21(木) 20:02:10
[1] 授業単元: プログラミングI [2] 問題文(含コード&リンク): 次の仕様を満たす信号発生プログラムを作成し、発生させた信号波形(1kHz、10kHz)をエクセルで図示せよ。 ・方形派と三角波を選択可能 ・周波数と振幅を入力可能 (周波数の上限は10MHz、振幅の上限は10Vとする) ・出力(信号波形データ)をファイルにセーブする (1列目:時間 2列目:電圧値) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): Visual C [3.3] 言語:C [4] 期限:明日(22日)の午後7時まで [5] その他の制限: なんとかプログラムの部分をよろしくおねがいしますm(_ _)m
232 :
231 :2005/07/21(木) 20:32:03
[1] 授業単元:プログラミング演習I [2] 問題文(含コード&リンク): 大きさnの正方行列の積を求めるプログラムを作成せよ。 また、実行結果では以下の3つの行列の積についても解を求め、出力せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): 不明 [3.3] 言語:C [4] 期限:2005年7月24日17:00まで [5] その他の制限:与えられた問題は3*3行列と4*4行列のみなので それらに特化したプログラムを作成してみましたが、コンパイルは通るものの 条件分岐がうまくいかないようです。
ここまで組めましたが、コンパイルは通るものの条件分岐がうまくいかないようです。 #include<stdio.h> main() { int n, i, j; int a[n][n], b[n][n], c[n][n]; printf("求める平方行列の大きさを入力してください\n"); scanf("%d", &n); if(n = 3){ printf("2つの3*3行列の要素(整数)を入力してください\n"); scanf("%d %d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[0][2], &a[1][0], &a[1][1], &a[1][2], &a[2][0], &a[2][1], &a[2][2]); scanf("%d %d %d %d %d %d %d %d %d", &b[0][0], &b[0][1], &b[0][2], &b[1][0], &b[1][1], &b[1][2], &b[2][0], &b[2][1], &b[2][2]); } if(n = 4){ printf("2つの4*4行列の要素(整数)を入力してください\n"); scanf("%d %d %d %d %d %d %d %d %d %d &d &d &d &d &d &d", &a[0][0], &a[0][1], &a[0][2], &a[0][3], &a[1][0], &a[1][1], &a[1][2], &a[1][3], &a[2][0], &a[2][1], &a[2][2], &a[2][3], &a[3][0], &a[3][1], &a[3][2], &a[3][3]); scanf("%d %d %d %d %d %d %d %d %d %d &d &d &d &d &d &d", &b[0][0], &b[0][1], &b[0][2], &b[0][3], &b[1][0], &b[1][1], &b[1][2], &b[1][3], &b[2][0], &b[2][1], &b[2][2], &b[2][3], &b[3][0], &b[3][1], &b[3][2], &b[3][3]); } for(i = 0; i < n; i++) for(j = 0; j < n; j++) c[i][j] = a[i][n] * b[n][j]; printf("2つの行列の積は\n"); for(i = 0; i < n; i++){ if(n = 3) printf("| %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2]); if(n = 4) printf("| %3d %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2], c[i][3]); } }
ほほぉ、それがコンパイル通るとは一体どんなコンパイラかね。 見たところ、配列の宣言でエラーになりそうだが。
C99じゃねえの。 それでも初期化してないのを配列のサイズにしてるから問題だけど
237 :
デフォルトの名無しさん :2005/07/21(木) 21:41:01
比較は==で行う。 ×if(n = 3){ ○if(n == 3){ たぶんこれらを訂正すると6行目でエラーがでるんじゃまいか
%dが途中で&dに変わる恐怖w 最初見たとき気づかなかったw
しかもscanfだもんな。 RunTime の恐怖!
あっまじだwww
そして、そもそも積の求め方の計算式すら間違っているパーフェクトなソース。 これだけで飯が三杯は食えるね。 まぁ今あがった間違い全部直せば動くよ。というか動いた。
#include<stdio.h> main() { int n, i, j; printf("求める平方行列の大きさを入力してください\n"); scanf("%d", &n); int a[n][n], b[n][n], c[n][n]; if(n == 3){ printf("2つの3*3行列の要素(整数)を入力してください\n"); scanf("%d %d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[0][2], &a[1][0], &a[1][1], &a[1][2], &a[2][0], &a[2][1], &a[2][2]); scanf("%d %d %d %d %d %d %d %d %d", &b[0][0], &b[0][1], &b[0][2], &b[1][0], &b[1][1], &b[1][2], &b[2][0], &b[2][1], &b[2][2]); } /*
*/ if(n == 4){ printf("2つの4*4行列の要素(整数)を入力してください\n"); scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &a[0][0], &a[0][1], &a[0][2], &a[0][3], &a[1][0], &a[1][1], &a[1][2], &a[1][3], &a[2][0], &a[2][1], &a[2][2], &a[2][3], &a[3][0], &a[3][1], &a[3][2], &a[3][3]); scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &b[0][0], &b[0][1], &b[0][2], &b[0][3], &b[1][0], &b[1][1], &b[1][2], &b[1][3], &b[2][0], &b[2][1], &b[2][2], &b[2][3], &b[3][0], &b[3][1], &b[3][2], &b[3][3]); } /*
*/ for(i = 0; i < n; i++) for(j = 0; j < n; j++){ if(n == 3) c[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j]; if(n == 4) c[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j] + a[i][3] * b[3][j] ; } /*
*/ printf("2つの行列の積は\n"); for(i = 0; i < n; i++){ if(n == 3) printf("| %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2]); if(n == 4) printf("| %3d %3d %3d %3d |\n", c[i][0], c[i][1], c[i][2], c[i][3]); } }
元ソースの醜さを残すように気を使って書きました。 こんなひどいソース書いたのは初めて。 一応digital mars cコンパイラでしかテストしてないけどC99なら動くでしょう。たぶん
247 :
233 :2005/07/21(木) 23:32:03
アドバイスに感謝します。 散々たる言われようにorz そもそも初期化なんて全然頭に無かったし 俺向いてないのだろうか・・・
248 :
デフォルトの名無しさん :2005/07/22(金) 00:22:48
[1] 授業単元:C言語課題 [2] 問題文(含コード&リンク): 下記のとおり [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1 [3.3] 言語:C [list.dat] 1 2 1 3 1 9 2 3 2 11 .. .. .. .. 30283 30233 上記のようなファイルを読み込んで配列に格納し、適当な配列を出力し合っていることを確かめなさい また、並ぶ2つをペアと考え、右側を軸として昇順ソートしなさい 2次元配列でも2つ配列を作るのでもどっちでもいいです このファイルは301221行あります。登場する数値の最大は30283です。 よろしくお願いします。
#define BUFSIZE (80) int setlist(int *ary_in[][2], char *fname) { int num=0;//読み込んだレコード数 FILE *fi;//list.datファイルを読み込むファイルポインタ char buf[BUFSIZE], *p;//文字操作用にいろいろと。 int i, j; fi=fopen(fname, "r"); while(fgets(buf, BUFSIZE-1, fi) != NULL){ //レコード一個発見 p=buf; while(*p != ' ')p++; *p='\0';p++; ary_in[num][0]=atoi(buf); ary_in[num][1]=atoi(p); num++; } fclose(fi); return num; } あとだれかよろしこ
>>247 まだわからん。ある日突然開眼することもある。
252 :
230 :2005/07/22(金) 02:29:00
どなたか
>>230 をお願いできませんか・・・おねがいします!
>>252 まさかタダでやれって言うんじゃないだろうな。
そういう朝鮮人みたいな薄汚い事言うなよ。
double a = sin(x);
>>230 /* 標準出力をリダイレクトしてcsvにし、表計算でグラフにすると言う前提で */
#include <stdio.h>
void geneTrigon(double freq, double amp)
{
int ic;
const int res = 100;
for (ic = 0; ic <= res; ++ic) {
if (ic == 0) {
printf("0, 0\n");
} else if (ic <= res / 4) {
printf("%g, %g\n", (double) ic / res / freq, ic * 4.0 / res * amp);
} else if (ic <= res * 3 / 4) {
printf("%g, %g\n", (double) ic / res / freq, ic * -4.0 / res * amp + amp * 2);
} else {
printf("%g, %g\n", (double) ic / res / freq, ic * 4.0 / res * amp - amp * 4);
}
}
}
void genePulse(double freq, double amp) { int ic; const int res = 100; for (ic = 0; ic <= res; ++ic) { if (ic == 0) { printf("0, 0\n"); } else if (ic < res / 2) { printf("%g, %g\n", (double) ic / res / freq, amp); } else if (ic == res / 2) { printf("%g, 0\n", 0.5 / freq); } else if (ic < res) { printf("%g, %g\n", (double) ic / res / freq, -amp); } else { printf("%g, 0\n", 1.0 / freq); } } } /* 尚、各波形の出力は1周期分とした。 */ /* サンプルメイン */ int main() { geneTrigon(1000, 100); genePulse(800, 80); return 0; } /* そうそう、使い方は見ての通りで */
257 :
230 :2005/07/22(金) 05:59:18
>>255 ,256
ありがとうございます!参考にさせていただきますm(_ _)m
大変申し訳ないのですが、再度質問してもよろしいでしょうか・・・。
周期が3*T/2までの方形波のみのプログラムをつくってみたのですが、
3*T/2以降も方形波にしたい場合はどのようにすればいいのでしょう。
反復処理の方法がいまいちよくわかりません・・・。
#include<stdio.h>
#include<math.h>
main(){
double E=100,e,t,f=1000.0,T=1/f,te=0.02,td=0.000001;
int n,nd=100;
for(t=0.0,n=0;t<=te;t+=td,n++)
{
if((t<T/2)||(T<=t && t<(3*T/2)))
e=E;
else
e=-E;
if((n%nd)==0)
printf("%lf %lf \n",t,e);
}
return 0;
}
どうかよろしくお願いしますm(_ _)m
ifの条件を (t/T)-floor(t/T) < 0.5 にすれば大丈夫。頭悪い実装だが、まぁ分相応か。
分相応って言われてんだから怒れよw
フォエウァ
>>261 そんなことで怒っても荒れるだけだからでねーの?
俺的にはその点GJと心の中でささやかに言ってやりたい気もする
264 :
デフォルトの名無しさん :2005/07/22(金) 14:46:37
[1] 授業単元:プログラミングプロジェクト [2] 問題文(含コード&リンク): 読み込んだファイル(標準入力)内の単語の出現回数を数えて出現回の略順にソートして 表示するプログラムを実装せよ。 単語とはisalumn()で真が返る文字の連続とし、大文字と小文字は区別しない。 出現回数が同じ単語は辞書順に表示すること。 出現が-nオプションで指定した回数以上の単語だけを表示する(デフォルトで1回以上) [3] 環境 [3.1] OS:Linux(Lindows) [3.2] コンパイラ(バージョン):gcc バージョンは不明です。 [3.3] 言語:C [4] 期限:2005年7月27日 [5] その他の制限:データ構造は処理時間が最短となるよう1番適切なものを用いる。 →ハッシュと考えています。 よろしくお願いします。
265 :
デフォルトの名無しさん :2005/07/22(金) 15:20:15
次の動作を繰り返すプログラムを作成せよ。 1.キーボードから整数値を読み込む 2.1から読み込んだ数値までの総和を求めて表示する 3. 1. へ戻る 以上の動作を 5 回繰り返すか、1. でもし 0 が入力されたらプログラムを終了する お願いします
266 :
デフォルトの名無しさん :2005/07/22(金) 15:44:26
夏休みってまだ入ってないのか
テンプレ嫁とか、プログラムの起動と終了の繰り返しはC/C++の範囲外だとか
#include<stdio.h> int main(void) { int a,i=0; do{ printf("Input num:"); scanf("%d",&a); if(a==0){ return 1; } printf("1から%dまでの和は%d\n",a,(1+a)*a/2); i++; }while(i<5); return 0; }
270 :
265 :2005/07/22(金) 16:06:40
ありがとうございます。でもdo文使わない方法ってありますか?
271 :
デフォルトの名無しさん :2005/07/22(金) 16:43:34
#include<stdio.h> int main(void) { int a,i=0; printf("Input num:"); scanf("%d",&a); if(a==0){ return 1; } printf("1から%dまでの和は%d\n",a,(1+a)*a/2); i++; while(i<5){ printf("Input num:"); scanf("%d",&a); if(a==0){ return 1; } printf("1から%dまでの和は%d\n",a,(1+a)*a/2); i++; } return 0; }
テンプレも読めない厨にはこっちのほうがわかるんじゃね? #include<stdio.h> int main(void) { int a,i=0; for(i=0;i<5;i++){ printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); } return 0; }
#include<stdio.h> int main(void) { int a; printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); printf("Input num:"); scanf("%d",&a); if(a==0) return 1; printf("1から%dまでの和は%d\n",a,(1+a)*a/2); return 0; }
274 :
デフォルトの名無しさん :2005/07/22(金) 17:19:49
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
巡回セールスマン問題をNearest Addition法で解くプログラムを作成せよ。
Nearest Addition法とは
(1)1つの都市からなる長さ0の部分閉路Tをひとつ作成する
(2)現在の部分閉路Tが全ての都市を含むならば、それが解
(3)そうでないならば、Tに含まれる都市jとTに含まれない都市kの組み合わせで、
jとkの間の距離Cjk(jkはCの右下)を最小にするようなものを求める
(4)(i,j)をTに含まれるパスとするとき、これを2つのパス(i,k)と(k,j)で置き換える
(5)以上の(2)~(4)を繰り返す
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:7月25日12:00まで
[5] その他の制限:なし
一応Nearest Neighbor法のプログラムがあります。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/775.txt このプログラムを元に作らなくてもよいので、どなたかお願いいたします。
なるべくコメントもいれてくださると非常に助かります。
275 :
265 :2005/07/22(金) 17:57:33
ありがとうございます
[1]授業単元 プログラム演習 [2]問題文:一行に「文字列」,「文字列」,「文字列」,「整数」 というふうに4つの属性がそれぞれコンマで区切られたファイルを構造体に読み込み (ここまでは出来ました)、その2番目の属性に現れる全ての相異なる単語の出現頻度を求め、標準出力に書き出す。 ここで単語は出現した順に並べる。また大文字は小文字に読み替え、区別しない。また単語のうちa,the,by,for,in,on,of,to,withは除外し、カウントしない。 [3]環境 [3.1]OS:Linux [3.2]コンパイラ:gcc [3.3]言語:C [4]期限 7月26日 [5]その他 2番目の構造体に入れ込まれている単語は例えば The C Programing Language 等です。よろしくお願いします。
>>277 ではお前さんが教えて差し上げてください
普通の大学は今試験期間中なんじゃないの? レポートとか出るんだな
最終レポート課題なのです
282 :
デフォルトの名無しさん :2005/07/22(金) 23:04:46
試験期間中に出されるのがウザイなあ 他の科目の勉強もあるのに
284 :
デフォルトの名無しさん :2005/07/22(金) 23:49:46
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): タイピングプログラムを作る。 プログラムの流れは、英単語1行1個ずつ10個入ったファイルを作り、 1.テキストファイル名を入れる 2.テキストファイルの1行目が表示される 3.タイピングをする(ミスをするともう1回タイピングさせる) 4.1行目が終わると、2行目が表示され、またタイピングをする 5.10問おわったら、かかった時間とミスした回数が出力される [3] 環境 [3.1] OS:Windows 2000 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5 [3.3] 言語:C [4] 期限:2005年07月26日17:00まで お願いしますm(__)m
>>283 気持ちは分かるが、実技試験のが困るだろ?
俺んとこ 実技試験もある
287 :
デフォルトの名無しさん :2005/07/22(金) 23:56:38
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):組み合わせの式nCrにおいて、 n=50、r=0~50までの値を求めよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):わかりません。 [3.3] 言語:C++ [4] 期限:2005年7月23日18時まで [5] その他の制限:if文、while文等は授業で教わりました。 みなさん、どうか宜しくお願いします。
実技試験なんてどうやるんだ? その場で「これ作れ」って言われるのか?
レポ課題から出題するらしい 30~40分で組まなければいけないらしい
>>287 #include <cstdio>
int main()
{
static double ncr50[] = {1., 50., 1225., 19600., 230300.,
2118760., 15890700., 99884400., 536878650., 2505433700.,
10272278170., 37353738800., 121399651100., 354860518600., 937845656300.,
2250829575120., 4923689695575., 9847379391150., 18053528883775., 30405943383200.,
47129212243960., 67327446062800., 88749815264600., 108043253365600., 121548660036300.,
126410606437752.,
};
for (int r = 0; r <= 50; ++r) {
printf("50C%d = %.20g\n", r, r <= 25 ? ncr50[r] : ncr50[50 - r]);
}
return 0;
}
>>287 #include <stdio.h>
#include <string.h>
#include <time.h>
int main(){
FILE *fp;
int i, len, miss;
time_t start, end;
char buf[1024], in[1024];
printf(" file name > ");
if(NULL == fgets(buf, sizeof(buf), stdin)) return 1;
if(buf[len = strlen(buf)-1] == '\n') buf[len] = '\0';
if(NULL == (fp = fopen(buf, "r"))) return 2;
printf("###### start ######\n");
time(&start);
i = 1; miss = 0;
while(fgets(buf, sizeof(buf), fp))
{
while(1)
{
printf("第 %d 問 : %s", i, buf);
fgets(in, sizeof(in), stdin);
if( 0 == strcmp(buf, in)) {++i; break;}
else{ puts(">>>MISS<<<"); ++miss;}
}
}
time(&end);
printf("###### finish ######\n");
fclose(fp);
printf("所要時間 %lu 秒 , MISS %d 回\n", end - start, miss);
return 0;
}
292 :
291 :2005/07/23(土) 00:19:35
出題ファイルこんな感じで。 semapho schedule environmental otorhinolaryngological psychoneuroendocrinological floccinaucinihilipilification supercalifragilisticexpialidocious pseudoantidisestablishmentarianism Asseocarnisanguineoviscericartilaginonervomedullary Aopadotenachoselachogaleokranioleipsanodrimhipotrimmatosilphioparaomelitokatakechymenokichlepikossyphophattoperisteralektryonoptekephalliokigklopeleiolagoiosiraiobaphetraganopterygon
293 :
291 :2005/07/23(土) 00:21:42
295 :
デフォルトの名無しさん :2005/07/23(土) 00:44:07
>>294 たしかTurb C++だったと思います・・。
296 :
デフォルトの名無しさん :2005/07/23(土) 00:45:29
[1] 課題 [2] 問題文:文字型配列 str1[10] str2[10]を宣言し、これに好きな 文字列をキーボードから入力し、それぞれの文字を順 に1文字ずつ交互に取り出し出力しなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): Microsoft Visual C++ .NET [3.3] 言語:C++ [4] 期限:7月26日 [5] まだ基本的な事しか習ってないです。 よろしくお願いします
>>291 ありがとうございました!!m(__)m
>>295 試しに動かしてみてくれ。ダメかも知れんが。
#include <iostream>
typedef long long int64;
int64 binomial(int64 n, int64 r) {
return n == r || r == 0 ? 1 : n * binomial(n - 1, r - 1) / r;
}
int main() {
for (int i = 0; i <= 50; ++i)
std::cout << "binomial(50," << i << ")=" << binomial(50, i) << std::endl;
return 0;
}
299 :
276 :2005/07/23(土) 01:02:36
>>276 ですがよく考えてみれば単語をひとつずつ読み込んだ配列p[100]の
相異なる単語の出現頻度を求めてそれを出現した順に標準出力に書き出す。
大文字と小文字は区別しない。a,the,by,for,in,on,of,to,withは除外する。
ってだけで良かったです。これでよろしくお願いします。
300 :
デフォルトの名無しさん :2005/07/23(土) 02:36:19
[1] 授業単元:課題 [2] ------------- 合計 A | 5 5 5 5 5 25 B | 3 4 3 2 3 15 B=A-C C | 2 1 2 3 2 10 ------------------ 数値はそれぞれtextBoxに入っています。 以上の表をボタンを押すことにより以下のように表示させます。 ------------- 合計 A | 5 5 5 5 5 25 B | 0 0 5 5 5 15 B=A-C [ボタン] C | 5 5 0 0 0 10 ------------------ Aの数値に合計を最初から割り当てていくプログラムです。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):Microsoft Visual C.NET [3.3] 言語:C [4] 期限:2005年07月25日まで[5] 開発言語はC#なのですが、プログラムが 理解できればC#に変換できると 思いますので、Cでお願いします。
302 :
300 :2005/07/23(土) 02:55:41
はい、そうです。
仕様がわかりにく過ぎる
再びお世話になります。
ヒープソートを用いて、配列に入った20個のデータを昇順に並び替えるプログラムを作成したいのですが、うまくソートされません。
昇順にソートするどころか、てんでんバラバラに並べられてしまいます。
お力添えいただけたら嬉しいです。
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
問題のソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/778.txt [3] 環境
[3.1] OS:Windows + cygwin
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:2005年9月01日8:50まで
[5] その他の制限:cursesライブラリを使用する。コンパイル時、オプションに-lcurses必須。
307 :
デフォルトの名無しさん :2005/07/23(土) 08:10:37
>>299 俺は構造体からの単語読み込みが出来ずに悩んでるのに
お前は出来てるのかー!
309 :
306 :2005/07/23(土) 15:30:14
>>307 おおお、速い!!
やっぱダウンヒープでしたか。
有り難うございました!
310 :
凡人 :2005/07/23(土) 18:18:35
312 :
310 :2005/07/23(土) 18:30:31
まぁ勉強ってことで(汗")
>>296 #include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <cstdio>
using namespace std;
struct fusion
{ string operator()(char lhs, char rhs) { return string(1, lhs) + rhs;}};
int main(int argc, char ** argv)
{
char str1[10] = {'\0'}, str2[10] = {'\0'};
scanf("%9s", str1), scanf("%*[^ \t\n]"), scanf("%9s", str2);
transform(str1, str1 + 10, str2, ostream_iterator<string>(cout), fusion());
cout << endl;
}
315 :
デフォルトの名無しさん :2005/07/23(土) 20:50:38
A君 国語→83点 数学→66点 理科→91点 社会→76点 英語→80点 B君 国語→66点 数学→59点 理科→68点 社会→59点 英語→79点 C君 国語→33点 数学→40点 理科→48点 社会→60点 英語→50点 それぞれの点数を配列化し、構造体として表し、3人の平均点を計算して、さらに5教科の合計点が380点以上のものを合格とするプログラムを作っていただけないでしょうか?
316 :
デフォルトの名無しさん :2005/07/23(土) 20:56:30
だれか 315 をお願いします・・・
6分で答え出ると思うなよ
318 :
315 :2005/07/23(土) 20:59:47
さっさと答えろよカスども マルチまでしてやってんだからYO~
319 :
デフォルトの名無しさん :2005/07/23(土) 21:02:08
もうしわけございません!!お願いします・・・
320 :
デフォルトの名無しさん :2005/07/23(土) 21:03:03
318は別人です!!
1も読まない慌てん坊さんのおかげでスレが汚れるんですよ。
323 :
デフォルトの名無しさん :2005/07/23(土) 21:17:15
[1]授業単元:情報処理実習 [2]問題文 A君 国語→83点 数学→66点 理科→91点 社会→76点 英語→80点 B君 国語→66点 数学→59点 理科→68点 社会→59点 英語→79点 C君 国語→33点 数学→40点 理科→48点 社会→60点 英語→50点 それぞれの点数を配列化し、構造体として表し、3人の平均点を計算するプログラムを作れ。 また、5教科の合計点が380点以上のものを合格とする。 [3]環境 [3.1]OS:Windows [3.2]コンパイラ: [3.3]言語:C/C++ [4]期限:7月24日
>>323 向こうで答えてもらってるじゃないか
氏ね
[1] 授業単元: プログラミング演習 [2] 問題文:自然数nを引数として、再起関係を利用してその8進表示を行う関数 void oct(int n) を書け。関数のみでかまわない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限:07月23日24:00まで お願いします
void oct(int n) { if (n < 0) return; if (n < 8) { printf("%d", n); return; } oct(n / 8); printf("%d", n % 8); }
329 :
デフォルトの名無しさん :2005/07/23(土) 21:43:00
お前ら323無理だろ
夏だねえ( ´ー`)y―┛~~
>>326 よくわかりません・・・
次の構造体のデータにうつる時 おかしくなってるような
>>327 void oct(int n)
{
char buf[32];
int i, nega = 0;
if( n == 0 ) putchar('0');
else
{
if( n < 0 ) {putchar('-'); n*=-1;}
for(i=0; n && i<sizeof(buf);++i, n/=8) buf[i] = (n % 8) + '0';
if(nega) putchar('-');
for(--i; i >=0; --i) putchar(buf[i]);
}
}
333 :
332 :2005/07/23(土) 21:53:58
ごめん、再帰っての見落としてた。
>>323 #include <string>
using namespace std;
class Grades {
string name_; int japanese_; int math_; int science_; int social_; int english_;
public:
Grades(const string& name, int japanese, int math, int science, int social, int english) :
name_(name), japanese_(japanese), math_(math), science_(science), social_(social), english_(english)
{}
const string& GetName() const
{ return name_; }
int CalcAverage() const
{ return (japanese_ + math_ + science_ + social_ + english_) / 5; }
};
void EstimateGrades(const Grades& grades)
{
if (380 <= grades.CalcAverage())
cout << grades.GetName() + "は合格です。" << endl;
else
cout << grades.GetName() + "は不合格です。" << endl;
}
int main()
{
Grades a("A君", 83, 66, 91, 76, 80);
Grades b("B君", 66, 59, 68, 59, 79);
Grades c("C君", 33, 40, 48, 60, 50);
EstimateGrades(a);
EstimateGrades(b);
EstimateGrades(c);
return 0;
}
335 :
276 :2005/07/23(土) 22:07:39
配列p[100]の型は何?
>>327 #include <stdio.h>
void oct(int n) {
if (n == 0) return;
oct(n / 8);
putchar(n % 8 + '0');
}
>>327 void oct(int n) {
if(n < 0) {putchar('-'); n*=-1;}
if(n == 0) return;
else
{
oct(n / 8);
putchar(n % 8 + '0');
}
}
>>338 自然数に負の数のときの処理は要らんわな。
340 :
276 :2005/07/23(土) 22:38:54
コードで示せ。
>>299 質問は受け付けません。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 10
int main()
{
char *skip[] = {"a","the","by","for","in","on","of","to","with"};
char p[N][64] = {"this","is","a","pen","I","am","a","student","this","the"};
struct X { char *s;int cnt;} x[N];
int i, j, k, xend = 0;
for( i = 0; i < N; ++i)
{
for(k = 0; k < strlen(p[i]); ++k) p[i][k] = tolower(p[i][k]);
for(k = 0; k < sizeof(skip)/sizeof(*skip); ++k) if(0==strcmp(p[i],skip[k])) break;
if(k != sizeof(skip)/sizeof(*skip)) continue;
for(j = 0; j < xend; ++j)
if( 0 == strcmp(p[i], x[j].s) ) break;
if( j == xend ) {x[xend].s = p[i];x[xend].cnt = 1; ++xend;}
else ++x[j].cnt;
}
for(i = 0; i < xend; ++i)
printf("%s(%d), ", x[i].s, x[i].cnt);
return 0;
}
343 :
help me :2005/07/24(日) 07:00:33
・4次のルンゲ・クッタ法のアルゴリズムに基づき、一般的な問題に適応できるプログラムを作成しなさい という課題なんですが…誰かお願いします。単位かかってますがサッパリです(汗)
344 :
help me :2005/07/24(日) 07:05:22
すいません。テンプレ使い忘れました [1] 授業単元: 課題 [2] 問題文(含コード&リンク):4次のルンゲ・クッタ法のアルゴリズムに基づき、一般的な問題に適応できるプログラムを作成しなさい [3] 環境 :自由 [3.1] OS:自由 [3.2] コンパイラ(バージョン): 自由 [3.3] 言語:どちらでも可 [4] 期限:7月25日(月)10時まで [5] その他の制限:特になし。 実行した環境(OS、言語)も教えていただけると助かります。 よろしくお願いいたします。
346 :
デフォルトの名無しさん :2005/07/24(日) 11:26:42
[1] 授業単元:プログラミング演習I [2] 問題文: n次元のベクトルを配列a[],b[]として取り扱うものとする。配列a[],b[]および正整数nを引数として 受け取り、内積(実数値)を返り値とする関数InnerProduct()を作成せよ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:7/25まで [5] その他の制限:関数の取り扱いまで習いました。基本型などはまだ習っていません。 どなたかご教授お願いします。
>>175 >>198 どうもありがとうございます。助かりました。
返事が遅くなって申し訳ないです。
>>322 ですが
86~88行目の
for(i=0;i<total;i++){
printf("%s %s %s %d\n",sample[i].author,sample[i].title,sample[i].publish,sample[i].year);
}
というのは確認のためにかいただけですので、実際には必要ありません。
どうかよろしくお願いします。
>>346 もし君の言う「基本型」がintやdoubleなどのことを指しているのならば、
その宿題はできない。
double InnerProduct(double a[], double b[], unsigned int n) {
double ret = 0.;
while (n--) ret += a[n] * b[n];
return ret;
}
>>344 一般的って言うのは、n階でも可能とか、連立も可能とか、そういうこと?
351 :
デフォルトの名無しさん :2005/07/24(日) 12:06:10
>>349 すいません、基本型ってのはcharやlong、float、shortなどのことです。
doubleやintなど基本的なのは習っています。
352 :
デフォルトの名無しさん :2005/07/24(日) 12:06:17
20XX年、とある研究所で飼育されていたメスの牛が突如超能力をを持った。 その牛は自らをクイーン・オブ・モウモウと名乗り、仲間の牛にも知能を与え 世界を混乱に貶めた。 人間を奴隷とした牛軍団は先ず、先祖代々の恨みをはらすべく、 女性に成長ホルモンを投与して、乳を肥大化させ、そこから出る母乳を 人乳として搾乳機を使い搾り出すことを始めた。
354 :
デフォルトの名無しさん :2005/07/24(日) 12:08:17
>>353 20XX年、とある研究所で飼育されていたメスの牛が突如超能力をを持った。
その牛は自らをクイーン・オブ・モウモウと名乗り、仲間の牛にも知能を与え
世界を混乱に貶めた。
人間を奴隷とした牛軍団は先ず、先祖代々の恨みをはらすべく、
女性に成長ホルモンを投与して、乳を肥大化させ、そこから出る母乳を
人乳として搾乳機を使い搾り出すことを始めた。
ある程度書いてみたのですが、ifでやられます。
基礎がなってない気もしなくもないのですが…ご教授くださいm(__)m
[1] 授業単元:C言語演習II
[2] 問題文(含コード&リンク):
複素数の実数部と虚数部をメンバとして構造体を作成し、2つの複素数の
和・差・積・商を求めるプログラムを作成しなさい。
但し、2つの複素数はキーボード入力とし、かつその直後に「+」「-」「*」「/」を
入力することにより、入力した算術演算子の演算を表示するようにすること。
↓ここまで作りました。現在、最後の+,-,*,/で入力するとすべて"Bad choice!!"になります。
ちなみにあまりに長く、エラーで書き込めなかったのでUPローだでUPしておきました。
http://free.gikoneko.net/up/source/up17037.txt [3] 環境
[3.1] OS:Linux Fedora Core4 (Red hat 6.2以上であれば問題ないです。)
[3.2] コンパイラ(バージョン): cc
[3.3] 言語:C言語
[4] 期限:2005年7月25日
[5] その他の制限:習っているのはifなどの分岐はもちろん、配列、ポインタ、構造体
などある程度はいけます。
ifをうまく認識させるようにするにはどうすればよいでしょうか?
教えてください、よろしくお願いします。
scanfは、改行コードを残してしまうので、 fflush(stdin)で改行コードを捨ててしまうべし。 (ソースはほとんど見てないけど)
2048年4月16日、日本のH社がバグを燃料にする方法を発明。
同社は来年にも車やオートバイに応用したいとコメントしている。
今回の発明はノーベル賞候補にも挙げられるなど期待がされている。
既に他社からの技術提供依頼が殺到しているという。
H社はアメリカのソフトウェアメーカーと提携する構えを見せており、
背景には燃料に使うバグが大量にあるという事実があると考えられる。
>>354 void dellist(struct LIST **ptr, int deldata)
{
struct LIST *p, *prevp;
for (p = prevp = *ptr; p != NULL; p = p->nextptr) {
if (p->data == deldata) {
prevp->nextptr = p->nextptr;
if (p == prevp) {
printf("!");
*ptr = p->nextptr;
}
free(p);
return;
}
prevp = p;
}
}
>>356 fflush(stdin)激しく規格外。
だから標準入力はflushするなと……
>>355 switchを使っていることやspecifierが%+lfとなっていることや「実部・虚部」が
「real part・imaginary part」となっていること等は君が聞かんとするところでは
ないではない。
#include<stdio.h>
struct comp_num {
double re;
double im;
};
int main(void) {
char s[2];
struct comp_num a, b;
printf("Input real part of a:"); scanf("%lf", &a.re);
printf("Input imaginary part of a:"); scanf("%lf", &a.im);
printf("Input real part of b:"); scanf("%lf", &b.re);
printf("Input imaginary part of b:"); scanf("%lf", &b.im);
printf("a=%lf%+lfi\nb=%lf%+lfi\n", a.re, a.im, b.re, b.im);
printf("operator list:[+][-][*][/]\nChoose operator:"); scanf("%1s", s);
switch(s[0]) {
case '+':
printf("Addition... \n%lf%+lfi\n", a.re + b.re, a.im + b.im); break;
case '-':
printf("Subtraction... \n%lf%+lfi\n", a.re - b.re, a.im - b.im); break;
case '*':
printf("Multiplication... \n%lf%+lfi\n", a.re * b.re - a.im * b.im, a.im * b.re - a.re * b.im); break;
case '/':
printf("Divide... \n%lf%+lfi\n", (a.re * b.re + a.im * b.im) / (b.re * b.re + b.im * b.im), (a.im * b.re - a.re * b.im) / (b.re * b.re + b.im * b.im)); break;
default:
printf("Bad choice!! \n");
}
}
360 :
359 :2005/07/24(日) 13:15:40
>>355 そうそう、なぜ割り算(division)だけ動詞(divide)なのかな
だからprintfに%lfは元々無いと……
>>361 ISO/IEC 9899:1999 Foreword 5
― %lf conversion specifier allowed in printf
363 :
355 :2005/07/24(日) 13:22:06
できました。ありがとうございます!! 英単語、しっかり確認しておきます・・・
間違えるヤツが多いからC99で正式になったんだろ。>>%lf
>>364 printfのspecifierの方が型に忠実でなかったということだと思う。
C++で型にうるさくなったのの影響もあるだろうし、そもそもscanfと
食い違っていた事だし。
もうしばらくはC89(C90)かなぁ・・・
368 :
デフォルトの名無しさん :2005/07/24(日) 13:30:17
[1] 授業単元: c++ [2] 問題文(含コード&リンク): ファイルに書いてある数式を読み込んで計算するプログラム を教えてください。 fscanfとかfgetsを使いたいのですが、どうやるのでしょうか? 数式は10%(3+2)のようなものです。 [3] 環境 [3.1] OS:winxp [3.2] コンパイラ(バージョン): borland [3.3] 言語:c++ [4] 期限:2005/7/26 [5] その他の制限:#include<stdio.h>で使えるものまで。 レベルは初心者です。
>>368 式を解釈するプログラムを自分で書かなければなりません。
C言語には式を解釈して計算する機能は含まれません。
>>368 ぐーぐる脳になれ。
fscanf 使い方
とかで探してみた?
371 :
デフォルトの名無しさん :2005/07/24(日) 13:32:47
>>367 まだまだ現役ですよ! 新しいもんにはまだまだ負けませんよ ハッハッハ
>>366 printf()とscanf()では指示子の仕様が大きく違うにもかかわらず、
さも同じと言うような入門書の氾濫が混乱を招いた原因ジャマイカ?
できうるのなら、scanf()でもprintf()の%*.*sみたいなことがしたいぞ。
>>368 授業単元C++なのにstdio.hっておかしくないか?
本当にC++なの? Cじゃないのか?
んー・・・クラスの説明を後回しにしたり、 配列操作を文字列(char [])でやらせたりしたい・・・とか考えると不自然ではないところが悲しい。
375 :
デフォルトの名無しさん :2005/07/24(日) 13:50:14
>>353 void dellist( struct LIST **ptr, int deldata )
{
if( *ptr== NULL || (*ptr)->data > deldata ){
return;
}
else if ( (*ptr)->data == deldata ){
struct LIST *curcell;
curcell = *ptr;
*ptr = (*ptr)->nextptr;
free(curcell);
}
else{
dellist( &(*ptr)->nextptr, deldata );
}
}
376 :
353 :2005/07/24(日) 13:54:29
C99を前提にすんのは、K&Rの第3版が出てからだな。 //とかはいいだろうけど。 永遠に出なかったりしてな(有得るが)。
378 :
デフォルトの名無しさん :2005/07/24(日) 14:20:54
[1] 授業単元:課題 [2] 問題文(含コード&リンク): シンプレックス法のプログラミングで目的関数を最大にする端点を見つける方法を考え、プログラム化せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):自由 [3.3] 言語:どちらでも可 [4] 期限:2005年7月25日9時まで [5] その他の制限:なるべく僕(バカです)が理解できるようにあまり難しいのが入ってないやつが好ましいです。 お忙しいところ申し訳ないですがお願いしますm(_ _)m
379 :
353 :2005/07/24(日) 14:25:46
線形計画法、シンプレックス法はこのスレで既出だった気がする。
[1] 授業単元:レポート [2] 問題文(含コード&リンク): 2つあります ・ABCDEの5つの並べ方120通りに対し、辞書順の並べ方したときの x番目は何か?また、例えばABCED(任意)は何番目か? ・任意の自然数nの階乗を渦巻状に表示せよ 987 216 345 見たいな感じです [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):gcc [3.3] 言語:C [4] 期限:2005年7月25日11時まで 結構ちんぷんかんぷんです。よろしくお願いします
>>368 main()の中でexpr()に渡してるFILE*を変えればファイルに書かれた式も評価できるはず。
雑だけど、参考までに。
#include <stdio.h>
int error_code; double expr(FILE *fp); double term(FILE *fp); double fact(FILE *fp);
double expr(FILE *fp) {
double ret = term(fp); int ope;
while ((ope = fgetc(fp)) == '+' || ope == '-') if (ope == '+') ret += term(fp); else ret -= term(fp);
ungetc(ope, fp);
return ret;
}
double term(FILE *fp) {
double ret = fact(fp), temp; int ope;
while ((ope = fgetc(fp)) == '*'|| ope == '/' || ope == '%') if (ope == '*') ret *= term(fp); else if ((temp = term(fp)) != 0.) if (ope == '/') ret /= temp; else ret = (int)ret % (int)temp; else ret = error_code = 1;
ungetc(ope, fp);
return ret;
}
double fact(FILE *fp) {
double d; int parenthesis;
if (fscanf(fp, "%lf", &d) == 1) return d;
else if ((parenthesis = fgetc(fp)) =='(') {
d = expr(fp);
if ((parenthesis = fgetc(fp)) != ')') return error_code = 2; else return d;
}
else return error_code = 3;
}
int main(void) {
double d; error_code = 0; d = expr(stdin);
if (!error_code) printf("result:%lf", d);
else printf("error code:%d", error_code);
}
385 :
382 :2005/07/24(日) 15:23:39
>>383 字違いましたっけ?
n=2なら4まで
=3なら9
=4なら16
見たいな感じです
387 :
382 :2005/07/24(日) 15:33:44
>>386 アーごめんなさい。間違ってました。すいません
プログラムについて直してくださいってネタはやめてください。 仕事じゃないのにそーゆーのはやりたくない。 できれば丸投げしてください。 それから、単位がどーとか。初心者ですとかゆーのも勘弁してください。
ヘッダの重複チェックに使うdefine名のデファクトスタンダード教えてください #ifndef _GameObject_ #define _GameObject_ #include "GameObject.h" #endif このように書いたんだけどいいかな?
391 :
389 :2005/07/24(日) 18:49:20
>>390 そういえばそうでしたね
__(アンダーバー2つ)も予約されてましたね
全部大文字にすればいいのかな
あとは
#define _GameObject_
と
#include "GameObject.h"
のどっちを先にすればいいかも教えてほしいです
>>391 他の名前と被らなきゃ何でもいい。小文字は使わないことが多いと思う。
#define GAME_OBJECT_H
#define GAME_OBJECT_H_INCLUDED
#define PROJECT_NAME_GAME_OBJECT_H_INCLUDED
#define PROJECT_NAME_GAME_OBJECT_H_YOUR_NAME_2005072401
>#define _GameObject_
>と
>#include "GameObject.h"
>のどっちを先にすればいいかも教えてほしいです。
主流派にこだわるなら、インクルードガードはヘッダの中に書くべき。
/* GameObject.h*/
#ifnef GAME_OBJECT_H
#define GAME_OBJECT_H
中身。
#endif
>>391 グローバルな名前は下線1つでも予約されている。
>>382 2番。前作った奴の焼き直し。コピペすれば動くはず。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int* pos(int* data, int x, int y, int width) {return data + (width + 1) * y + x;}
int main(void) {
int size, x = 0, y = 0, i, j, *matrix, counter, digit;
scanf("%d", &size);
counter = size * size; digit = (int)log10(size) + 2.5;
matrix = (int*)malloc(sizeof(int) * (size + 1) * size);
memset(matrix, -1, sizeof(int) * (size + 1) * size);
*pos(matrix, x, y, size) = counter;
for(; ; ) {
while (++x < size && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
*pos(matrix, --x, y, size) = counter; if (*pos(matrix, x, y + 1, size) != -1) break;
while (++y < size && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
*pos(matrix, x, --y, size) = counter; if (*pos(matrix, x - 1, y, size) != -1) break;
while (--x >= 0 && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
*pos(matrix, ++x, y, size) = counter; if (*pos(matrix, x, y - 1, size) != -1) break;
while (--y >= 0 && *pos(matrix, x, y, size) == -1) *pos(matrix, x, y, size) = --counter;
*pos(matrix, x, ++y, size) = counter; if (*pos(matrix, x + 1, y, size) != -1) break;
}
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) printf("%*d", digit, *pos(matrix, j, i, size));
printf("\n");
}
free(matrix);
return 0;
}
395 :
389 :2005/07/24(日) 19:40:50
>>392 なんてこったい、そんな方法があったなんて!
前に読んだ本には389のような方法しか書かれてなかったぞ
やはり世界は広く学ぶことは多いな
>>395 むしろインクルードガードはヘッダに書くほうが常套手段。
397 :
382 :2005/07/24(日) 21:17:11
398 :
284 :2005/07/24(日) 21:33:57
291さんのプログラムを実行したのですが、問題と同じに打ってもMISSと出てしまいます。 調べてみたのですが、どこが間違っているのかわかりません。。。 お願いしますm(__)m
400 :
デフォルトの名無しさん :2005/07/24(日) 22:11:25
期末考査でいっぱいいっぱいになっています。 あんまり授業が理解できなかったので、ぜひ助けてください・・・。 [1] 授業単元:C言語基礎(最終課題) [2] 問題文: 自由課題 なんか今までのものを使って、自由にプログラムを作れって言われたので、適当に考えました。 とある町の少年野球チームの名前を決めるプログラムです。 人数(二桁)を入力すると、以下のA群単語とB群単語がランダムに選ばれ、チーム名が決まるというプログラムです。 A群 頑張れ!、戦え!、逃げるな!、すごいぞ!、やばい!、努力だ! B群 バスターズ、ランディーズ、ファイターズ、ジムニーズ、ラバーズ、ニョッキズ すごい適当なんですが、ちょっと面白いなと思って・・・。関数をつかうのでしょうか・・・? [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1 [3.3] 言語:C [4] 期限:2005年7月25日18時まで [5] その他の制限: 基礎なので、あんまり高度なものは使ってないです。 明日の授業までというぎりぎりなんですが、どなたかお願いします・・・。単位が欲しい・・・。
>>291 センセイ!バッファオーバーフローします!
---以下、英単語ファイルのある1行。ただし2chの制限により適時改行---
acetylseryltyrosylserylisoleucylthreonylserylprolylserylglutaminylphenyl
alanylvalylphenylalnelleucylserylserylvalyotriptophylalanylaspartylprolyl
isoleucylglutamylleucyllencyllasparaginylvalylcysteinythreonylserylseryl
leucylglycllasparatinylglutaminylphenylalanylglutaminylthreonylglutaminyl
glutaninylalanylarginylthrseonylthreonylglutaminylvalylglutaminyglutaninyl
phenylalanylserylghlutaminylvalyltryptophyllysylrolylphenylalaylprolyglutaminyl
serylthreonylvalylarginylphunylalanylprolylglycylaspartylvalyltyrosyllsvslvalyl
tyrosylargiyltyosvlasparaginylalanylvalylleusylaspartylprolylleucylisoleucyl
threonylalnylleucylleucylglycyltreonylphnylalanylaspartylthreonylarginl
asparaginylarginylisoleucylislleucylglutammylvalylglutamylasparaginylglutaminyl
glutaminylsurylprolylthreonylthreonylalanyoglutamylthreonylleucylaspartyl
alanylthreonylarginylarginylvalylaspartylaspartylalanylthreonylvalylalanyl
isoleucylarginylserylalanylasparaginylisoleucylasparaginylleucylvallasparaginyl
glutamylleucylvalylarginylglycylthreonylglycylleucyltyrosylasparaginylglutaminyl
asparaginylthreonylphenylalanylglutamylserylmethionylserylglycylleucylvalyl
tryptophylthreonylserylalanylprolylalanylserine
>>400 激しくつまらん。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int num;
const char A[6][16] = {"頑張れ!", "戦え!", "逃げるな!", "すごいぞ!", "やばい!", "努力だ!"}, B[6][16] = {"バスターズ", "ランディーズ", "ファイターズ", "ジムニーズ", "ラバーズ", "ニョッキズ"};
printf("チームの人数は?:"); scanf("%d", &num);
srand(num);
printf("よし!チームの名前は『%s%s』に決定!", A[rand() % 6], B[rand() % 6]);
return 0;
}
A軍追加 "すすめ" "いとしの" B軍追加 "パイレーツ" "バットマン" 他にもあるとは思うが。
404 :
デフォルトの名無しさん :2005/07/25(月) 00:17:23
405 :
デフォルトの名無しさん :2005/07/25(月) 00:23:40
すいません。お忙しいと思いますが378もお願いいたします。 線形計画法ってやつがそうなんでしょうか?さっぱりわからないもので…。
406 :
デフォルトの名無しさん :2005/07/25(月) 00:31:04
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): Hit&Blow [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): borland [3.3] 言語:C [4] 期限:2005年07月25日16:00まで [5] その他の制限: Hit&Blowを作ってます。大体できたんですが、何桁かを入力させて答えを作るというところができません。 できたらmallocを使ってやって欲しいです。 よろしくお願いします。
408 :
109 :2005/07/25(月) 01:01:17
109はマ板の皆さんでも解けませんか・・・? 出来れば月曜までにお願いしたいのですが ほんとうにおねがいします
[1] 授業単元:言語処理 [2] 問題文(含コード&リンク): 次のプログラム(の一部)を効率よく実行するためには どのような工夫が考えられるかを後述の観点について、具体的に例を示して述べよ。 観点 ・計算をなるべく少なくする ・代入をなるべく少なくする ・コンピュータの命令実行レベルで、なるべく同時に処理するようにする ・なるべく使用メモリを少なくする [3] 環境 [3.1] OS:Unix [3.2] コンパイラ(バージョン): cc [3.3] 言語:C [4] 期限:2005年7月26日3時まで [5] その他の制限:特になし int a, b, c, d; a=b*2+c; d=3*c+2; if(a>0){ c=b-1; a=b*2+c; } else{ b=b+1; a=b*2+c; } d=a+d; よろしくお願いします。
>>408 その態度が気に入らない、のとは関係なくここはム板
>>411 問題出している人は一部asでやるようなことをccだけでやれと仰ったみたいだね。
416 :
411 :2005/07/25(月) 01:27:06
>>414 asとは何でしょうか?
ぐぐったら爽やかな外国人のオッサンが出てきました。
417 :
411 :2005/07/25(月) 01:29:02
>>415 問題文はこのままです。
うpしたほうがいいならしますが^^;
>>416 うはは、さわやかというか濃いというか。
アセンブラ使わないと3番目なんかは気休めしかできないような気がするよ。
あと、いきなり bやらcが初期化なしで使われているんだけど、
問題にバグが仕込まれているヒッカケ問題なのかな?
419 :
411 :2005/07/25(月) 01:40:10
>>419 うーん、すまんが漏れでは問題の意図がわからないよ。
421 :
411 :2005/07/25(月) 02:04:51
>>420 そうですか、考えてくださってありがとうございました。
またわからないことがあったらよろしくお願いします。
int a, b, c, d; if((b << 1) + c > 0){ c = b - 1; } else{ b++; } d += (b << 1) + c; ソースの一部という条件があるのがなぁ・・・ 適当なのでちょっと自信ないが。
>408 何時まで?
427 :
デフォルトの名無しさん :2005/07/25(月) 11:15:54
>>282 ありがとうございました。
do文を使っているみたいですが、これを使わないプログラムはどうすればいいのでしょうか。
do文習っていないので使えないのです...
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): ファイルに適当な文字列を書き込んでおく。 (ただし、一行あたり10文字以内、10行以内と仮定してもよい。) ファイルより文字列を読み込んでソートする。 (ソート済の配列やリストなどに追加すればそれでよい) ソート済文字列をファイルに出力 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):.NET 2003 [3.3] 言語:C [4] 期限:7月27日まで どうかよろしくお願いします
429 :
デフォルトの名無しさん :2005/07/25(月) 11:39:34
[1] 授業単元:ベーシックC言語(期末課題) [2] 問題文: 今までの復習みたいな感じらしいんですが、その時授業休んでてよく分からないんです。 友達もあんまりいなくて・・・ お力を貸してください・・・。 ある地域の、複数の学校の生徒数を入力すると、それらの平均生徒数と学校数を求めるプログラム。 例 複数の学校の生徒数を入力してください。 2000 1500 4800 2500 学校数は 4 です。 平均生徒数は 2700 です。 みたいな感じです! [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1 [3.3] 言語:C [4] 期限:2005年7月25日21時まで [5] その他の制限: 今日このレポートを知りました・・・。こんな時間に申し訳ありませんが、どなたかいらっしゃいましたらよろしくお願いします・・・。
ベーシックC言語(期末課題)にワロス 友達もあんまりいなくてにカワイソス
431 :
デフォルトの名無しさん :2005/07/25(月) 12:23:17
>>310 丁寧に書いていただいて、とても参考になりました。
ありがとうございました。
432 :
デフォルトの名無しさん :2005/07/25(月) 12:23:31
>>429 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char buf[256];
char *token;
char sep[] = " \n";
int tmp;
int num = 0;
int sum = 0;
printf("複数の学校の生徒数を入力してください。");
fgets(buf, 256, stdin);
token = strtok(buf, sep);
while(token != NULL) {
if((tmp = atoi(token)) != 0) {
num++;
sum += tmp;
}
token = strtok(NULL, sep);
}
printf("学生数は%dです\n", num);
printf("平均生徒数は%dです", sum/num);
return 0;
}
変数名はてきとうなので直してくれ
434 :
430 :2005/07/25(月) 12:42:09
>>429 #include <stdio.h>
int main(void) {
int school, people, sum = 0;
printf("複数の学校の生徒数を入力してください。");
for (school = 0; scanf("%d", &people) == 1; ++school) sum += people;
printf("学校数は %d です。\n", school);
if (school) printf("平均生徒数は %d です。\n", sum / school);
return 0;
}
>>430 ベーシックC言語(期末課題)のどこに笑う所があるわけ?
436 :
デフォルトの名無しさん :2005/07/25(月) 14:05:03
間違えた int str_eq_ci(const char * lhs, const char * rhs) { return (toupper(*lhs) == toupper(*rhs) && (*lhs == '\0' || str_eq_ci(lhs + 1, rhs + 1))); } だ。orz
439 :
デフォルトの名無しさん :2005/07/25(月) 15:53:01
440 :
デフォルトの名無しさん :2005/07/25(月) 16:03:37
入力されたコードから一致するデータを"c:\例題.txt"から取得する。 ※0が入力されるまで処理を繰り返す。できれば一度目の0入力に対応していただけると ありがたいです。 ---------c:\例題.txtの内容------- 1,あああああああ 2,いいいいいいい 65,ううううう うううううう 89,えええ えええ ええ 99,お願いします。 -------------------------- ↓↓↓↓実行結果↓↓↓↓ コード?65 ううううう うううううう コード? ↑↑↑↑↑↑↑↑↑↑↑↑ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限:なし
マルチは放置の方向で。
>>439 >コーディングで狂ってるトコ
頭?
それはさておき、intは二重構造にする必要ねぇべさ。
それから、sizeof(char)は1だから掛ける必要なし。
文字列の取得は制限を設けない限り、事前に長さの予測はできない。
どうしてもということなら、2パスにして事前に調べるしかない。
>>442 一応誘導されてきたみたい。
どうせテンプレに従ってないからあれだけど。
445 :
デフォルトの名無しさん :2005/07/25(月) 16:24:07
テンプレにしたがって [1] 授業単元: プログラミング演習 [2] 入力されたコードから一致するデータを"c:\例題.txt"から取得する。 ※0が入力されるまで処理を繰り返す。できれば一度目の0入力に対応していただけると ありがたいです。 ---------c:\例題.txtの内容------- 1,あああああああ 2,いいいいいいい 65,ううううう うううううう 89,えええ えええ ええ 99,お願いします。 -------------------------- ↓↓↓↓実行結果↓↓↓↓ コード?65 ううううう うううううう コード? ↑↑↑↑↑↑↑↑↑↑↑↑ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ:gcc [3.3] 言語:C [4] 期限:無期限
問題文が理解できない。 無理に理解するのも面倒くさいから、やらない。
447 :
デフォルトの名無しさん :2005/07/25(月) 16:40:05
Sample10.java中、(1)~(2)の行が何を行う命令かを説明してください。6行目から 10行目まで、さらに、11行目から16行目までが何を行う命令かを説明してください。 -------------------------------------------------Sample10.java------------------------------------------------------ 1: class Sample10{ 2: public static void main(String args[]) 3: { 4: int num[][]; <--(1) 5: num = new int [5][5]; <--(2) 6: for(int i=0;i<5;i++){ 7: for(int j=0;j<5;j++){ 8: num[i][j] = i+j; 9: } 10: } 11: for(int i=0;i<5;i++){ 12: for(int j=0;j<5;j++){ 13: System.out.print(num[i][j]+" "); 14: } 15: System.out.println(""); 16: } 17: } 18:} 教えていただけませんでしょうか。どうかおねがいします お願いします!!!
>>445 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
FILE *fp;
int in, code;
char buf[256];
char *token;
if((fp = fopen("例題.txt", "r")) == NULL) exit(1);
do {
printf("コード?");
scanf("%d", &in);
fseek(fp, 0, 0);
while(feof(fp) == 0) {
fgets(buf, 256, fp);
token = strtok(buf, ",");
code = atoi(token);
if(in == code) {
token = strtok(NULL, ",");
printf("%s", token);
break;
}
} while(in != 0);
fclose(fp);
return 0;
}
javaってintにもコンストラクタ必要なのか、面倒くさいね。
違う。
配列は普通にとれる
454 :
299 :2005/07/25(月) 18:27:44
>>342 ありごとうございます。なんかdionプロキシーがアク禁食って書き込めなかったのでお礼がおくれました。
1] 授業単元: レポート [2] 問題文(含コード&リンク): Create an invoice object that contains all the information necessary to process one line of an invoice. Assume that the invoice must include the following data and functions. Data: Quantity Ordered Quantity Shipped Part Number Part Description Unit Price Sales Tax Rate Sales tax Amount Shipping Total Functions: * A function to initialize all the data items to 0, except the Sales Tax Rate, which should be initialized to 5%. * A function to allow the user to initialize all the data items from the keyboard. * A function to calculate the Extended Price of the item. * A function to calculate the Sales Tax Amount of the item. * A function to calculate the Total Amount of the invoice. * A function to display the invoice data with header information in a businesslike format. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:7月26日まで [5] C++は,初めて触るので知識ないに等しいです.いろいろ調べてるうちにこのスレにたどり着きました.よろしくお願いします.
457 :
デフォルトの名無しさん :2005/07/25(月) 19:32:59
[1] 授業単元: プログラミング通論 [2] 問題文(含コード&リンク): 入力させた文字列を1文字ずつリストに変換して 辞書順に直す内容。マージソート使う方法考えたんだけど、条件として頭に節点付 いているから使えなくて困っている。 [3] 環境 [3.1] OS:Unix [3.2] コンパイラ(バージョン): 分からん [3.3] 言語:C [4] 期限:早ければ早いほど。 [5] その他の制限:なし。
[1] 授業単元: 課題 [2] 問題文(含コード&リンク): 3次方程式の解 ただし、虚数なら(a+-biのように表示) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 明後日まで [5] その他の制限:ないです。よろしくお願いします。
461 :
デフォルトの名無しさん :2005/07/25(月) 20:37:01
[1] 授業単元: プログラミング演習 [2] 問題文: 与えられたバスの時刻表を検索し、出発時刻または現在時刻に最も近い バスの出発時刻を出力。 ユーザが指定した時刻(または現在時刻)がバスの出発時刻に重なった場合は 間に合わないものとし、次のバスを出力。また、次のバスが存在しない場合は 存在しないと報告。 無効な時間はエラーを返す。 なお、時刻表は以下の形式に従ったテキストファイルで与えられる。 ・1行目にはその時刻表の名前が記述される。 ・2行目以降には、以下の形式に従った行が繰り返し記述される。 時間(0~23の整数) その時間内の分(0~59)の繰り返し -1 ・各行における分は昇順でソートされており、行は時間で昇順にソートされていると仮定してよい。 7時の2分と45分にバスがあるとすると、 1行に「7 2 45 -1」と表示されるようです。 [3] 環境 [3.1] OS:WindowsまたはUNIX [3.2] コンパイラ(バージョン): VisualC++またはgcc [3.3] 言語:C/C++どちらでも可 [4] 期限:2005年7月28日 [5] その他の制限:特にありません。 よろしくお願いします。
[1] 授業単元:課題 [2] #include<stdio.h> void main(){ int i,j; char top[2][4]={{10,0},{10,34,0}},tail[2][4]={{0},{34,44,0}}; char a[15][100]={ "#include<stdio.h>", "void main(){", "int i,j;", "char top[2][4]={{10,0},{10,34,0}},tail[2][4]={{0},{34,44,0}};", "char a[15][100]={", "};", "for(i=0;i<=1;i++)for(j=0;j<5;j++){", "printf(top[i]);printf(a[j]);printf(tail[i]);", "}", "for(i=1;i>=0;i--)for(j=5;j<13;j++){", "printf(top[i]);printf(a[j]);printf(tail[i]);", "}", "}", }; for(i=0;i<=1;i++)for(j=0;j<5;j++){ printf(top[i]);printf(a[j]);printf(tail[i]); } for(i=1;i>=0;i--)for(j=5;j<13;j++){ printf(top[i]);printf(a[j]);printf(tail[i]); } } これはこのプログラムとまったく同じのを表示するプログラムなんですが、これをインデントをつけインデントも複製するようにすること。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):? [3.3] 言語:C [4] 期限:水曜日まで [5] その他の制限:制限はなしです~。色々やってみたんですが、なかなかできず・・・;。どなたか分かる方いたらお願いします><
463 :
デフォルトの名無しさん :2005/07/25(月) 20:59:25
int型を切り上げる簡単な方法教えてください。 たとえば4800を1000で割ったとき5にしたいです。 できればマクロがいいです。 #define ROUNDUP(a, b) ((a + b - 1) / b) * b でOK?
464 :
デフォルトの名無しさん :2005/07/25(月) 21:02:07
465 :
455 :2005/07/25(月) 21:25:35
請求書を1行処理するのに必要な情報をすべて含んでいる請求書のオブジェクトを作成しろ.請求書が次 のデータおよび関数を含むと仮定せよ. Data: Quantity Ordered・・・・・・注文量 Quantity Shipped・・・・・・出荷量 Part Number・・・・・・・・・・・品物番号 Part Description・・・・・・・品物種類 Unit Price・・・・・・・・・・・・・・単価 Extended Price・・・・・・・・値上げ価格 Sales Tax Rat・・・・・・・・・・売上税率 Sale Tax Amount・・・・・・販売税額 Shipping・・・・・・・・・・・・・・・・出荷 Total・・・・・・・・・・・・・・・・・・・・合計 関数: 売上税率(5%)を除いて,すべてのデータの項目を0に初期化する関数 キーボードからのすべての項目を初期化するための関数 値上げされた品物を価格を計算するための関数 品物の売上税率を計算するための関数 品物の販税額を計算するための関数 実務的なフォーマットのヘッダ情報と請求書のデータを表示するため関数 訳です。正確に訳せていない部分もあると思いますが、よろしくお願いします。
>>460 お前マルチしてたやつだろ?
なんか締め切りが変わってるけどいい加減諦めろって。
>>462 意味分からん。
インデントつければいいじゃん。
470 :
460 :2005/07/25(月) 22:28:14
>>466 いや、今日課題出たばかりですけど??
ちょっと悲しい・・・
>ちょっと悲しい で釣り決定だな 悲しいのはこっちだ
>>462 #include <process.h>
int main()
{
system("type *.c");
//system("type *.cpp");
//system("type *.h");
return 0;
}
473 :
460 :2005/07/25(月) 22:43:22
>>466 てか
>>207 に同じ質問したやついるじゃん・・・
っで、ちょっとリンクたどっていきました。確かに一緒ですね・・・
実際、自分が与えられた問題は、ある3次方程式が与えられ、これには1解実数解が存在する(分数解なので計算しても求めれませんでした)
残り2解を求め、表示せよ
そのとき、それらが虚数解ならa+-bi、実数解ならa,bのようにせよ
ってやつです
>>462 quine Cでぐぐれば腐るほど出てくるよ。もしくはIOCCC。
>>475 エラーチェックとかほとんどしてないが。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void *s1, const void *s2) {
return strcmp(*(char **)s1, *(char **)s2);
}
int main() {
char *lines[10], buf[100];
int i = 0, j;
FILE *fp = fopen("sort.txt", "r");
while (fgets(buf, 10, fp) != NULL) {
lines[i] = strdup(buf);
++ i;
}
fclose(fp);
qsort(lines, i, sizeof(char *), compare);
for (j = 0; j < i; j++) {
printf("%s", lines[j]);
}
}
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): トリビアであった トランプを半分に分け 正確にシャッフルする作業を 8回繰り返すと順番が元に戻る をC言語で本当かどうか求める [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): gcc [3.3] 言語:Cです [4] 期限:7月29日までです トリビア好きとかいきなり言い出し、思いついたとか言われました。わけがわかないままに単位とかに関わってしまいました お願いできないでしょうか
480 :
477 :2005/07/26(火) 04:36:28
481 :
デフォルトの名無しさん :2005/07/26(火) 05:02:04
野球におけるピッチャーの防御率は,9回あたりの失点数で計算します. なので,低い程よくなります.そこで,1試合ごとの投球回数と失点数を 入力し,「全試合を通しての防御率」と「最近5試合の防御率」を入力する たびに計算するプログラムを作ってください.ただし,1/3 回のような アウトカウントによる投球回数は考えず,投球回数単位で計算するものと します. 下の表に出ている値で正しいかどうかを確認してください. なお,最大140試合まで入力できるようにしてください.また, 日本のプロ野球では,延長戦は12回までなので,投球回数に12より 大きい数値は入らないようにしてください.
糞マルチ死ね
>>481 マルチは氏ねは当然だが、テンプレ準拠せずに依頼する香具師はもっと氏ね。
>>13 です。
サブセットCで中間言語式インタプリタかLISPインタプリタを作ろうと思います。
ありがとうございました。
[1] 授業単元: C言語研究
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/755.txt の続きを編集して木構造を操作する関数を作成せよ
newnode()は新しい節を追加する関数、
printtree()は木のある節を根とする木のその下のValueを表示し、
その節からの深さを返す関数である。
まずはある値xと、ある節currentのポインタを与えて、
currentから下からxをvalueに持つ節を探して、その節のポインタを返す関数を作成する。
次に、xを追加する場所を探す関数を作成する。
この関数の戻り値はポインタのポインタ **nodeとするとよい。
これらを用いて、木にある値xを追加する関数を作成せよ。
ついでにnodeをfreeする関数も作って下さい
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン): .NET 2003
[3.3] 言語:C
[4] 期限:2005年07月28日まで
締め切りが短くなりました
どうかよろしくお願いします
490 :
462 :2005/07/26(火) 12:11:09
>>467 普通にインデントつけただけではインデントまで複製してくれなくて・・・
インデントも複製するようにしたいんです。
>>474 う~ん、検索してみたんですけど、インデントついてないのしかでなくて・・・
インデントつきの見つからないです><
探し方悪いのかな・・・。よかったらどこにあるか教えてください・・・
491 :
デフォルトの名無しさん :2005/07/26(火) 13:03:29
[1] 授業単元: c言語 [2] 問題文(含コード&リンク): 一行に1つ整数が書かれているファイルを読みこんで、昇順にソートして表示する プログラムを作りなさい。 ・データファイルの名前はコマンドライン引数で与える ・使い方を誤った時、ファイルが開けない時にはエラー を出力する。 ・データが1000行以上あればエラー(警告)を出力する [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): emacs [3.3] 言語:C [4] 期限:2005年7月27日 よろしくお願いします。
492 :
461 :2005/07/26(火) 13:09:28
>>478 どうもありがとうございました。
日本語部分が文字化けしていますが頑張って仕上げたいと思います。
>>491 コンパイラがemacsであると言い張るのなら、
(execute-shell-command "sort file")
とか。
495 :
にゃほ :2005/07/26(火) 14:10:35
[1] 授業単元: c言語 [2] 問題文: 1!+2!+3!+…+n!の和が777よい大きい場合における最小のnと、そのときの和を求めるプログラムを、①for文②while文③do while文を用いて三通り作成せよ。 [3] 環境 [3.1] OS:windows [3.2] コンパイラ(バージョン):? [3.3] 言語:C++ [4] 期限:2005年7月27日 全くわからないのでよろしくお願いします。
496 :
あげ :2005/07/26(火) 14:38:41
[1] 授業単元: [2] プログラミング: 数字の1から9までを順に並べ、+-を適当に挿入して計算結果を100にすることを考える。 このような場合(計算結果が100になる場合)をすべて表示するようなプログラムを作成せよ。 [3] 環境 [3.1] OS:Linux [3.2] gcc: [3.3] 言語:C [4] 期限:本日中 [5] 考え方:符号の入る可能性のある箇所の数の配列を用意し、 +符号を1、-符号を-1、符号なしを0と対応させてすべての場合 について実際に計算をすればよい
>>495 #include <iostream>
int main() {
int sum = 0, n = 0;
for (int fact_n = 1; sum <= 777; sum += fact_n *= ++n) {}
std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}
#include <iostream>
int main() {
int sum = 0, n = 0, fact_n = 1;
while (sum <= 777) sum += fact_n *= ++n;
std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}
#include <iostream>
int main() {
int sum = 0, n = 0, fact_n = 1;
do sum += fact_n *= ++n; while(sum <= 777);
std::cout << "n=" << n << "\nsum=" << sum << std::endl;
}
498 :
にゃほ :2005/07/26(火) 17:24:27
助かりました。ありがとうございます。
[1] 授業単元: [2] 問題文(含コード&リンク): 10次以下の多項式を10次以下の多項式で割ったときの商と余りを求めるうろグラムを作れ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:木曜日まで [5] その他の制限:ヒントとして、 1] 1 2 3 4 1 1 2 ____ 1 1 2[2 こういう風なやり方を習ったはずだけど、こんな感じで表示させたほうが楽だと言われました よろしくお願いします
うろグラム
504 :
503 :2005/07/26(火) 20:30:10
あれ、なんか重複して出てる・・・。
505 :
C言語初心者 :2005/07/26(火) 20:35:13
1] 授業単元:c言語 [2] 問題文(含コード&リンク): 試験の点数(100点満点)を入力してA(80点以上)、B(70点以上)、C(60点以上)、D(60点未満)がそれぞれ何人かもとめる。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:2005年7月27日6:00まで [5] その他の制限:swith文をつかう
506 :
503 :2005/07/26(火) 20:35:51
分かった。index=0のときはとき別扱いしないとダメなんだ。 ちょっとかっこ悪いけど。 void komachi(int *sigs, int index, int sum, int n, int sig) { if(index == MAX_N ) { sum += n * sig; if(sum == ANS) { printf("%d = ", ANS); print_result(sigs, index); } } else { if(index!=0) { sigs[index] = 0; komachi(sigs, index+1, sum, n*10+index+1, sig); } sum += n * sig; sigs[index] = 1; komachi(sigs, index+1, sum, index+1, 1); sigs[index] = -1; komachi(sigs, index+1, sum, index+1,-1); } }
507 :
初心者 :2005/07/26(火) 20:38:45
1] 授業単元:c言語 [2] 問題文(含コード&リンク): 3科目の試験結果を入力し各科目の平均値と標準偏差を計算 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:2005年7月27日6:00まで [5] その他の制限:配列をつかう、人数をプログラム内で指定 おねがいします。
508 :
デフォルトの名無しさん :2005/07/26(火) 20:47:30
>>505 勝手にA(80点以上)、B(70点以上80点未満)、C(60点以上7点未満)、
D(60点未満)と読んだ。
#include <stdio.h>
int main()
{
int A = 0, B = 0, C = 0, D = 0, score;
while (scanf("%d", &score) == 1 && 0 <= score && score <= 100) {
switch(score / 10) {
case 10: case 9: case 8:
A++; break;
case 7:
B++; break;
case 6:
C++; break;
default:
D++; break;
}
}
printf("A:%d人\nB:%d人\nC:%d人\nD:%d人\n", A, B, C, D);
return 0;
}
>>496 >503より遅いけど
#include <stdio.h>
int calc(const char * str) {
int read, val, res = 0;
for (; sscanf(str, "%d%n", &val, &read) == 1; str += read, res += val)
;
return res;
}
void search(char * dest, int n, int idx) {
if (n == 10) {
dest[idx] = '\0';
if (calc(dest) == 100) {
puts(dest);
}
return;
}
dest[idx] = n + '0', search(dest, n + 1, idx + 1);
dest[idx] = '+', dest[idx + 1] = n + '0', search(dest, n + 1, idx + 2);
dest[idx] = '-', search(dest, n + 1, idx + 2);
}
int main(void)
{
char num[18] = "1";
search(num, 2, 1);
return 0;
}
511 :
501 :2005/07/26(火) 22:21:06
>>508 どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
512 :
501 :2005/07/26(火) 22:22:04
>>508 どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
513 :
501 :2005/07/26(火) 22:24:24
>>508 どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
514 :
501 :2005/07/26(火) 22:26:27
>>508 どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
515 :
501 :2005/07/26(火) 22:28:24
>>508 どうもです。
ごめんなさい、少しエラーが出てしまいました。
コンパイラはlccってやつだと思います。
4連投かよ。 まぁ重いけど、もちつけ。
重いね。 エラーが出るときは、エラーメッセージをコピペ。
/´ `フ , '' ` ` / ,! . , ' レ _, rミ ; `ミ __,xノ゙、 ソー i ミ ; ,、、、、 ヽ、 ,.-‐! ミ i `ヽ.._,,)) //´``、 ミ ヽ. _,,..,,,,,,_ . | l ` ーー -‐''ゝ、,,)) ./ ,' 3 `ヽーっ ヽ.ー─'´) l ⊃ ⌒_つ ''''''''' `''ー---‐'''''" 、ヾ'"''; /ゝ ミ 彡 _/´ `ヽ ビクッ! ミ 彡 、ヾ"``ヾ/ ,! Σ . ミ ミ ,゙ ゝ o, oミ ミ ミ ; `ミ __,xノ゙、 ミ ミ i ミ ; ,、、、、 ヽ、 ブワッ ヾ、 ! ミ i `、ゞヾ'""''ソ;μ, ´"'`、 ミ ヽ. ヾ ,' 3 彡 . ` ーー -‐''ゝ、,,)) ミ ミ 彡 ミ /ソ,, , ,; ,;;:、ヾ`
重いね。 エラーが出るときは、エラーメッセージをコピペ。
/´ `フ , '' ` ` / ,! . , ' レ _, rミ ; `ミ __,xノ゙、 ソー i ミ ; ,、、、、 ヽ、 ,.-‐! ミ i `ヽ.._,,)) //´``、 ミ ヽ. _,,..,,,,,,_ . | l ` ーー -‐''ゝ、,,)) ./ ,' 3 `ヽーっ ヽ.ー─'´) l ⊃ ⌒_つ ''''''''' `''ー---‐'''''" 、ヾ'"''; /ゝ ミ 彡 _/´ `ヽ ビクッ! ミ 彡 、ヾ"``ヾ/ ,! Σ . ミ ミ ,゙ ゝ o, oミ ミ ミ ; `ミ __,xノ゙、 ミ ミ i ミ ; ,、、、、 ヽ、 ブワッ ヾ、 ! ミ i `、ゞヾ'""''ソ;μ, ´"'`、 ミ ヽ. ヾ ,' 3 彡 . ` ーー -‐''ゝ、,,)) ミ ミ 彡 ミ /ソ,, , ,; ,;;:、ヾ`
521 :
C言語初心者 :2005/07/26(火) 23:00:25
>>509 ありがとうございました。 とてもたすかりました
522 :
C言語初心者 :2005/07/26(火) 23:08:54
523 :
C言語初心者 :2005/07/26(火) 23:34:04
>>509 ありがとうございまた。
てともたすかりました。
524 :
C言語初心者 :2005/07/26(火) 23:35:04
>>509 ありがとうございまた。
てともたすかりました。
525 :
501 :2005/07/26(火) 23:35:12
526 :
C言語初心者 :2005/07/26(火) 23:35:47
>>509 ありがとうございまた。
てともたすかります。
527 :
C言語初心者 :2005/07/26(火) 23:36:39
>>509 ありがとうございまた。
てともたすかります。
528 :
509 :2005/07/26(火) 23:46:34
そんなにお礼せんでよろし(w
>>507 #include <stdio.h>
#include <math.h>
#define BODY_COUNT (2)
#define SUBJECT_NUM (3)
int main(void) {
int i, j, score, sum[SUBJECT_NUM], sum2[SUBJECT_NUM];
for (i = 0; i < SUBJECT_NUM; i++) sum[i] = sum2[i] = 0;
printf("%d人%d科目\n", BODY_COUNT, SUBJECT_NUM);
for (i = 0; i < BODY_COUNT; i++)
for (j = 0; j < SUBJECT_NUM; j++) {
printf("%d人目%d科目目:", i + 1, j + 1);
scanf("%d", &score);
sum[j] += score;
sum2[j] += score * score;
}
for (i = 0; i < SUBJECT_NUM; i++)
printf("%d科目目\n\t平均:%lf\n\t標準偏差:%lf\n", i + 1, (double)sum[i] / BODY_COUNT, sqrt((double)sum2[i] / BODY_COUNT - (double)sum[i] * sum[i] / BODY_COUNT / BODY_COUNT));
return 0;
}
>>491 #include <stdio.h>
int main(int argc, char *argv[]) {
int i, j, n = 0, temp, num[1001];
FILE *fp;
if (argc != 2) {
printf("argument error!");
return 1;
}
if ((fp = fopen(argv[1], "r")) == NULL) {
printf("file open error!");
return 1;
}
while (fscanf(fp, "%d", &num[n]) == 1)
if (!(n++ < 1000)) {
printf("data error!");
return 1;
}
fclose(fp);
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (num[j + 1] < num[j]) {
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
for (i = 0; i < n; i++)
printf("%d\n", num[i]);
}
531 :
切実 :2005/07/27(水) 09:04:13
こんにちは、進級製作で横スクロールのゲームを作る事になりまして、そのためにいろいろと資料を集めている者です。 言語はCを使ってヘッダーはWindowsヘッダーを使う事になりました。 ゲームを作るといってもサウンドビジュアルノベルぐらいしか作れないので、当たり判定やその他基本的に必要なものなどのプログラムがほとんどわかっていません。。。 何か参考になる本やHPなどがあったら教えてください。
533 :
切実 :2005/07/27(水) 09:07:38
… C言語でって事だったのでこっちに来ちゃいました。 スミマセンでした。 そっちのほうに行かせてもらいます。。。
534 :
デフォルトの名無しさん :2005/07/27(水) 11:17:06
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): ・scanf関数を用いて名前を入力し、その名前を格納するための変数を 動的メモリを用いて作成しなさい(終端記号に注意する)。 ・次に、作成した変数にscanf関数から入力された名前を格納しなさい(文字列関数を用いる) ・最後に、作成した変数の中身およびバイト数をprintf関数を 用いてコンソール画面に出力し、その変数のメモリ(動的メモリ)を解放しなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン): [3.3] 言語:C++ [4] 期限:2005年7月29日まで [5] その他の制限:習っているのはif,for,配列,ポインタ,構造体 関数,ファイル入出力,動的メモリです。
535 :
534 :2005/07/27(水) 11:17:59
↑どなたかお願いしますm(__)m
>>534 #include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char Name[1024];
scanf("%1024s", Name);
char *pName = new(nothrow) char[strlen(Name) + 1];
if (pName)
{
strcpy(pName, Name);
printf("%s", pName);
delete[] pName;
return 0;
}
else
return 1;
}
537 :
534 :2005/07/27(水) 12:12:39
>>536 ありがとうございます。
省略された所が、今は読めないので読むことが可能になったら、ためしてみますね。
[1] 授業単元:プログラミング:配列 [2] 問題文(含コード&リンク): 氏名(ローマ字)を入力し,イニシャルを表示するプログラムを作成しなさい. ただし,姓と名は空白で区切られているものとする. イニシャルは大文 字で出力し,ピリオドを加えること. 大文字に変換する関数toupper()を使用して良い. その際は,#include <ctype.h> を加えること. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:05年8月29日まで [5] その他の制限:なし よろしくお願いします。
540 :
デフォルトの名無しさん :2005/07/27(水) 19:29:46
・・・間違えました7月です
>>538 #include<ctype.h>
#include<stdio.h>
int main(){
char sei[256];
char mei[256];
printf("氏名をローマ字で入力してください。\n");
scanf("%s %s",sei,mei);
printf("イニシャルは%c.%c\n",toupper(mei[0]),toupper(sei[0]));
}
542 :
デフォルトの名無しさん :2005/07/27(水) 20:24:45
素早いご返答ありがとうございます。 助かりましたm(o・ω・o)m
543 :
デフォルトの名無しさん :2005/07/28(木) 15:50:58
[1] 授業単元: 情報アルゴリズム [2] 問題文(含コード&リンク): 大きさNのバイト配列 n[N] がある。 これを、m バイトだけ右方向へはみ出た分は前に来るように ローテートさせる。 元の配列上で N回のスワップ でローテートを完了させよ。 void rotate( unsigned char n, int N, int m ); [3] 環境 [3.1] OS:Linux推奨 [3.2] コンパイラ(バージョン): gcc2.95以上推奨 [3.3] 言語:C [4] 期限:2005年7月31日23:59まで [5] その他の制限: ・ネストは3回まで ・再帰禁止 ・他にNバイト分作業領域を用意することは禁止 よろしくおねがいします(><)!
>>543 void rotate( unsigned char n[], int N, int m ) {
int i, j;
m %= N;
if (m < 0) m += N;
for (i = 0; i < m; i ++) {
for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
swap(& n[i], & n[j - N]);
}
}
スワップ自分で書いて。
>>544 ありがとうございます!
でも、これだとNがmで割り切れないときには
誤動作します(><)!
>>543 わり、早とちりした。
void rotate( unsigned char n[], int N, int m ) {
int i, j, rem;
m %= N;
if (m < 0) m += N;
while (N - m) {
for (i = 0; i < m; i ++) for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
rem = N % m; N = m; m = N - rem;
}
}
>>546 ありがとうございます!
でも、これだとm=0のときには
セグります(><)!
>>547 仕様に書いとけよ。。ってかそれぐらい考えr(ry
[1] 授業単元:アルゴリズム・データ構造 [2] 問題文(含コード&リンク): 以下のコマンドを実行するメニューを持つプログラムを書いてください: 1. 文字列のファイルを開き、それらをベクトル(vector<string> vc)に格納します。 2. ベクトルを出力します。 3. quicksortを使用して、ベクトルを分類します。 4. mergesortを使用して、ベクトルを分類します。 9. プログラムを停止します。 [3] 環境 [3.1] OS:Windows XP SP2 [3.2] コンパイラ(バージョン):Visual C++ .NET [3.3] 言語:C++ (コンソール) [4] 期限:過ぎているため、なるべく早くお願いします。
長さNの配列でスワップならN-1回で完了するんで、 実はきっちりN回スワップ、とかいう罠だったりするのでは…とか勘繰ってしまう
>>551 std::vector<std::string>に格納って言われても…各行ごとに格納するとか?。
文脈解析?
>>553 >>555 すいません、分類というのはソートするという意味合いです。
たとえば、DBC BCD ABD ABA AAB という5つの文字列があった場合、
AAB ABA ABD BCD DBC に並び替えるという意味だと思います。
授業でサンプルにもらったクイックソートのコードです。↓のコードは文字列では
なく、文字を置き換えるものになっているようです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/811.txt >>554 行関係なく、テキストファイルに保存されてる文字列をvectorに代入するという意味合いになります。
ifstream filename
vector<string> vc;
cin >> filename;
userin.open(filename);
while(userin){
userin >> temp;
vc.push_back(temp);
}
userin.close();
わかりにくい文章ですいません。また何かわかりにくい所がありましたら、お知らせください。
>>550 >>552 漏れの作ったやつはNがmで割り切れないならN-1回、割り切れるならN-1回未満のスワップをする。
N回ぴったりのスワップで作れって問題だったらけっこうしんどいな。
(無意味にスワップしないようにつくるなら)
暇ができたら考えてみようかな。
>>550 と
>>552 も暇ならN回ぴったりスワップで作ってみれ。
559 :
デフォルトの名無しさん :2005/07/29(金) 08:10:11
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): キーボードから入力した英字(a-z)に対し、ある特定の文字(ここでは仮にa,c,fとします)の場合は×を、 それ以外の文字の場合には○を出力しなさい。 例 入力文字:abcdefgh ×○×○○×○○ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5 [3.3] 言語:C [4] 期限:2005年8月1日まで [5] その他の制限:特になし。 数字と違って文字列をどのように扱ったらよいかがイマイチ… よろしくおねがいします。
>>559 #include <iostream>
#include <algorithm>
#include <iterator>
const char *tr(char c)
{
switch(c)
{
case 'a': case 'c': case 'f':
return "×";
default:
return "◯";
}
}
int main(void)
{
typedef std::istream_iterator<char> ii;
std::transform(ii(std::cin), ii(), std::ostream_iterator<const char *>(std::cout), tr);
561 :
560 :2005/07/29(金) 08:38:24
} コピペミスった。
563 :
560 :2005/07/29(金) 08:49:03
すまん。早とちりした。 #include <stdio.h> const char *tr(char c) { switch(c) { case 'a': case 'c': case 'f': return "×"; default: return "◯"; } } int main(void) { int c; while((c = getchar()) != EOF) fputs(tr(c), stdout); return 0; }
564 :
559 :2005/07/29(金) 13:33:44
>>560 >>563 ありがとうございます。わずか30分足らずで…
switch文も出てこなかった漏れorz
[1] C初級 [2] 数字を複数入れ、その最小値はいくらです。と表示。 その時-の数字も含み、 最初に0を入れたら何もありませんでしたと表示し、途中で0を入れたら↑の最小値の表示を行うPの一例をお願いします。 [3] 環境 [3.1] OS:Windows/ [3.2] VisualStudio(2003): [3.3] 言語:C [4] 期限:7月31迄 [5] その他の制限:ポインタまで
ゴメ、コピペミス
>>565 #include <stdio.h>
#include <stdlib.h>
int main() {
int min = 0, n, flg = 0;
while (1) {
printf("整数を入力してください : ");
scanf("%d", &n);
if (n == 0) {
if (flg == 0) {
printf("何もありませんでした\n");
break;
} else {
printf("最小値は %d です\n", min);
break;
}
}
if (min > n) {
min = n;
}
flg = 1;
}
}
569 :
デフォルトの名無しさん :2005/07/29(金) 19:06:57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
>>559 の結果からなんですけれども…
例えば得られた OOXOXOOOOX…という文字列から、Oが相対的な1番目と5番目の位置にあるとき
(例: ---O----O--- -は任意。OでもXでも可)、
「4番目に1-5が見つけられました。」というメッセージを付け加える場合どうしたらよいでしょう?
また、複数ある場合(例2: ---O----O------O----O---)には
「4番目に1-5が...」
「16番目に1-5が...」としたいです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:2005年8月1日まで
[5] その他の制限:特になし。
「任意の~」というところでどーしたらよいものかと…
strstrとかで検索してもどうにもならなそうなので。
どなたかよろしく、お願いします。
570 :
デフォルトの名無しさん :2005/07/29(金) 19:29:23
日本語をきぼんぬ。どう相対的なんだ?
>>569 >Oが相対的な1番目と5番目の位置にあるとき
その例だと一番目と六番目のことか?
567は良くないのですか。
いい点が欲しいので、
>>568 さんお願いします。
573 :
569 :2005/07/29(金) 19:41:52
>>570-571 すみません、分かり辛かったみたいで。
とりあえず言いたかったのはあるOから数えて5番目にまたOがある時
っていうことです。
つまり、OとOの間が4つ空いている場合です。
さらに具体例を挙げると
「3番目と8番目に1-5の関係が...」(4,5,6,7番目は何でもいい)
「16番目と21番目に1-5の関係が...」(17,18,19,20番目は何でもいい)
「110番目と115番目に...」(111,112,113,114番目は何でもいい)
といった具合のことなんですけれども。
>>572 #include<stdio.h>
int main(){
int n,min = 0;
puts("数字を入力してください");
scanf("%d",&n);
min = n;
while(n){
if(min > n)min = n;
puts("数字を入力してください");
scanf("%d",&n);
}
if(min)printf("最小値は%dです\n",min);
else printf("何もありませんでした\n");
return 0;
}
575 :
569 :2005/07/29(金) 19:45:24
すいません焦ってパニくりましたorz 書き直すと↓ 「つまり、OとOの間が3つ空いている場合です。 さらに具体例を挙げると 「3番目と7番目に1-5の関係が...」(4,5,6番目は何でもいい) 「16番目と20番目に1-5の関係が...」(17,18,19番目は何でもいい) 「110番目と114番目に...」(111,112,113番目は何でもいい) といった具合のことなんですけれども。 」 です(´・ω・`)
puts("数字を入力してください"); scanf("%d",&n); min = n; while(n){ if(min > n)min = n; puts("数字を入力してください"); scanf("%d",&n); この辺が馬鹿すぎ。
577 :
574 :2005/07/29(金) 20:17:50
>>576 二回入力処理を書いているのが馬鹿だ。と言っていると仮定して書き直してみた。
俺の理解が違ってたら指摘頼むわ。
#include<stdio.h>
int main(){
int n=0,min = 0;
do{
if(!min || min > n)min = n;
puts("数字を入力してください");
scanf("%d",&n);
}while(n);
if(min)printf("最小値は%dです\n",min);
else printf("何もありませんでした\n");
return 0;
}
#include <stdio.h> main() { int n; printf("数字以外を入力 _ "); while (scanf("%d", &n) <= 0) { printf("暴走中"); } printf("%d\n", n); }
579 :
574 :2005/07/29(金) 21:28:08
>>578 俺が悪かった。エラー処理が面倒だから手を抜いていた。
>>577 を訂正して
×
scanf("%d",&n);
○
if(scanf("%d",&n)<=0){
puts("変換エラー : 入力された文字は整数に変換できません。");
return 1;
}
こんな感じで良いか?
minの値の流れを読んでみそ
>>575 じゃぁstr[]に○×が入ってると仮定して
for (i=0; i<= strlen(str)-4; i++)
{
if(str[i]=='○' && if(str[i+4]=='○')
{
printf("%d番目と%d番目に1-5の関係が見つけられました。\n", i, i+4)
}
}
バグってなければあってるはず(w
str[]に入れるのぐらい頑張ってみたまえ
582 :
574 :2005/07/29(金) 21:43:46
>>580 少し読んでみたけど特に問題ないと思うけど......
何か問題あるっけ? 俺の能力じゃ分からん。
-10,0,-1と入力すると最小は-1
584 :
デフォルトの名無しさん :2005/07/29(金) 21:55:47
585 :
デフォルトの名無しさん :2005/07/29(金) 22:03:25
[1] 授業単元: 線形計画法
[2] 問題文(含コード&リンク):
シンプレックス法(単体法)で線形計画問題を解くプログラムを作成せよ。
とりあえずつくってみたのですが、
コンパイルは通る(警告messageもなし)ものの、1回は計算してくれるのですが
2回目の計算で強制終了になってしまいます。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/813.txt どのように修正すればいいのでしょうか?
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ(バージョン): Borland C
[3.3] 言語:C
[4] 期限:2005年8月4日まで
[5] その他の制限: なし
よろしくお願いします。
589 :
デフォルトの名無しさん :2005/07/29(金) 23:26:19
590 :
588 :2005/07/29(金) 23:32:54
間違えました30日です
>>588 んーとさ、ネタにマジレスするけれども。
せめて、コンパイルが通るようにしてから提出しよう。
マジだったら…なんてーか、自分で作った部分を解読させよーとしないで、
丸投げしたほーがよい。
592 :
デフォルトの名無しさん :2005/07/30(土) 01:38:30
コンパイル云々というよりmain関数がないんだろ それを作るって課題じゃないのか、知らんが
593 :
デフォルトの名無しさん :2005/07/30(土) 01:48:42
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 関数f(x)をテーラー展開を利用すると次のような形になる f(x+△x)=f(x)+f'(x)△x+f''(x)(△x)^2/2!+f'''(x)(△x)^3/3!・・・・・・ この展開式を利用して√(x+△x)の近似計算を行いたい √101、√201、√301、√401、√501を繰り返し計算で求めよ [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):不明 [3.3] 言語:C [4] 期限:2005/7/30/11:00 [5] その他の制限:制御構造、条件式まで 期限ぎりぎりで申し訳ありませんが、よろしくお願いします。
>>592 題意はそうなんだわ。
まー、知らんでヨコヤリ入れるなら、ソース読めや。
>>594 自分で作ったんじゃないんだろ、自分で作ったらmain関数作れないわけねーし
>>594 一度コンパイラ通せ。
多少は言いたいことが分ってもらえるはずだが?
…んで、その後、ソースを読んでみ。
boolean isempty(list *L); if(L == NULL){ return(FALSE);}} ?ナニコレ?
598 :
初心者 :2005/07/30(土) 03:00:24
すみません。質問をさせてください。ろだ内に問題を挙げると、ろだ内で回答を いただけるのでしょうか?
ちょっと読んでみたがヒドいな たぶん、慌てて書き写したんだろうがこれはヒドい もちついて再うpしなさい
600 :
デフォルトの名無しさん :2005/07/30(土) 03:08:53
タイプミスというレベルを超えてる
601 :
デフォルトの名無しさん :2005/07/30(土) 03:14:15
>>598 うpしてここにリンク貼ればいいんじゃね?
>>593 #include <math.h>
#include <stdio.h>
double sqrt_approx(double x, double dx, size_t n);
int main()
{
printf("sqrt(101) = %f\n", sqrt_approx(100, 1, 10000));
printf("sqrt(201) = %f\n", sqrt_approx(200, 1, 10000));
printf("sqrt(301) = %f\n", sqrt_approx(300, 1, 10000));
printf("sqrt(401) = %f\n", sqrt_approx(400, 1, 10000));
printf("sqrt(501) = %f\n", sqrt_approx(500, 1, 10000));
return 0;
}
double sqrt_approx(double x, double dx, size_t n)
{
static double term = 0.0;
double result;
if (n <= 0) return term = sqrt(x);
result = sqrt_approx(x, dx, n - 1);
term *= (3.0 - 2.0 * n) / 2.0 / n * dx / x;
return result + term;
}
書いてから気付いたけど、
[5] その他の制限:制御構造、条件式まで
ってもしかして再帰習ってないとか言いそうな雰囲気?
603 :
初心者 :2005/07/30(土) 03:24:53
>>601 レスありがとうございます。Upは、ろだの添付ファイルに宿題を書いて
書き込み、リンク張りはこちらにすればよろしいのでしょうか?
また、添付ファイルのパスはどこに表示されるのでしょうか?
質問ばかりですみません。
>>603 短ければ直接ここに貼る。長ければロダに上げて添付ファイルのURIを
貼る。ただし、いずれにしても
>>1 の質問テンプレに従うこと。
添付ファイルのURIの取得は、InternetExplorerを使っているなら、リンクを
右クリックしてショートカットのコピーでクリップボードにコピーされる。
PC初心者板並みの内容な訳だが。
605 :
デフォルトの名無しさん :2005/07/30(土) 04:09:27
ムズい宿題が来る予感
606 :
デフォルトの名無しさん :2005/07/30(土) 05:36:37
main() { printf("整数:%d\n",15); printf("実数:%f\n",15); printf("1文字:%c\n",'m'); printf("文字列:%s","ひろゆき"); } これを実行したのですが、中止とかの選択を選ぶ表示が出てきてしまいます。 なぜでしょうか?
void main() printf("実数:%f\n",15.0);
>>608 >printf("実数:%f\n",15);
printfのような可変引数関数に引数を渡すときは暗黙の型変換がかからない。
15.0と書けば問題ない。
あとすれ違い。
611 :
607 :2005/07/30(土) 07:26:03
どうもありがとうございましたm(__)m
↑607→608
>>606 の、
↓↓↓↓↓↓実行結果(例)↓↓↓↓↓↓
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
っていうのをどっかで見た覚えがある。。
課題多いんだろうなぁ・・・も疲れ様。
614 :
デフォルトの名無しさん :2005/07/30(土) 09:57:31
すべての質問に答えがかえってくると思うな!!
>>606 ポジション、半角8桁だとファースト、キャチャー、ピッチャーが入らない悪寒
>>616 半角8桁なら入るだろ。半角かな使えば。
>>585 数学がらみだとレスが鈍い。
(プログラマは、知らんことも多い)
あと、プログラムを改修してくれってのも、レスが鈍い。
それと、再現できるよーに、レポートを書くべし。
1つめのデータファイル、2つめのデータファイル。
入力、出力をかかんと。
あと・・・そーだなぁ・・・。フラグとか変数、初期化すべきものをしてないんじゃないかなぁ。
621 :
585 :2005/07/30(土) 12:42:19
/⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る頭を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ ⊂二二二( ^ω^)二⊃ 喪れも参戦するお 三 レレ ノ>ノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃
/⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る頭を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ ⊂二二二( ^ω^)二⊃ 喪れも参戦するお 三 レレ ノ>ノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃
>>621 ちなみに答えはもうできている。
うpしようか?しなーーーーーい。アヒャ Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!!
/⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る頭を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃ /⌒ヽ ( ヽノ 新しい輝き | / レ 二( ^ω^)二⊃ ノ>ノ ( ヽノ | / レレ ノ>ノ ( ヽノ ⊂二二二( ^ω^)二⊃ 喪れも参戦するお 三 レレ ノ>ノ /⌒ヽ 二( ^ω^)二⊃ /⌒ヽ | / /⌒ヽ ⊂二二( ^ω^)二⊃ 光る風を追い越したらー ( ヽノ 二( ^ω^)/⌒ヽ | / ノ>ノ ⊂二二二( ^ω^)二⊃ ヽノ /⌒ヽ レレ ( ヽノ| / ノ>ノ 二二( ^ω^)二⊃ 君にきっと逢えるねー ノ /⌒ヽ レレ | / ⊂二二二( ^ω^)二⊃
628 :
デフォルトの名無しさん :2005/07/30(土) 14:19:36
日本語の8桁=8文字
629 :
デフォルトの名無しさん :2005/07/30(土) 15:41:22
>>585 新婦レックス法の説明とか参考URLとか載せんと、
知らん奴はぜんぜん解かんし、だいたい
普段使うもんじゃないから誰もとかねェYO!
いや、シンプレックス法が問題なのではない。 彼はデバッグしてほしいのだ。
うるせえな、ヤジ飛ばすだけの外野どもめ
いや、それは分かるぞ。 人のコード修正しろなんていう依頼は一番やりたくない仕事だ。
>>585 一番上の行の最小要素を探すときにjpibotって変数がバカになってる。
min=matrix[0][1];
の後のforを
for(j=2, jpibot=1;
とでも書いとけ。
どうでもいいけど、ソースみずらすぎ
635 :
606 :2005/07/30(土) 22:44:04
606です。ソースをろだ内にUPしていただけませんでしょうか? お願いいたします。
636 :
585 :2005/07/30(土) 23:29:49
早く解かんかいバカどもめ
>>487 の締め切り延ばしてもらいました
回答お願いします;;
>>638 仕様が曖昧。これだけでは答えられない(2分探索木だろうけれども)。
・「currentから下からxをvalueに持つ節を探して」
→探索方法の指定は?木の辿り方は複数ある。
・「その節のポインタを返す関数」
→該当する節が複数ある場合は?
・「xを追加する場所を探す関数」
→追加する場所の基準は?
・「nodeをfreeする関数」
→node以下全部?
641 :
606 :2005/07/31(日) 00:47:17
639さんありがとうございました。
642 :
606 :2005/07/31(日) 04:17:15
>>639 のソースを実行したら、強制終了してしまいます。氏名のファイル出力時
に躓いているようなのですが、全角文字を出力させる修正点を教えていただけないでしょうか?
643 :
デフォルトの名無しさん :2005/07/31(日) 04:34:51
プログラマ募集中ー 有志によるMMO製作です。 24時間体制でガンガン開発するでぇーーー CreateGame~陸海空オンライン~ プログラマ募集中!力ある奴だけこぃ!! ついてこれる奴だけ。募集。 あと、歴史に名を残したいやつ
>>643 どうせ見てないだろうケド、お前に付き合ってたら、
歴史に不名誉な名を残したままあの世に行くことになりそうだから、
どっかに消えてくれ。
645 :
639 :2005/07/31(日) 12:05:15
>>642 >>606 のサンプルにあるデータでは動作確認済み(文字数の関係でピッチャーは半角で入力)
だけど、どんなデータを入れたか教えてもらえます?
linuxでここみるときは、emacs+navi2chで素直に見れるのだが、 windowsだと、リンク先をコンパイルするのが、めんどーだ。 windowsで環境構築すんの、どーすりゃいーのかのぉ?
さて、明日から8月なわけだ・・・・・・・・。 しばらくお休みかな。
8月下旬になって突然書き込みが多くなる罠w
>>646 えーと、windowsで手軽にこのスレを見ながらコンパイルをしたいということかな?
だとしたら以下の手段で。
・telnet端末エミュレータでlinuxにログイン、gccを使用。
・cygwin環境を構築、gccなどを使用。
・DOSプロンプトからbccなどを使用。
尚、Windowsでのエディタには軽くてWindows的なI/Fも具えるXyzzyがお勧め。
652 :
606 :2005/07/31(日) 21:49:32
>>645 氏名と、ポジションは全角で登録したいんです。
氏名は全角12文字、ポジションは全角で8文字入るようにするにはどうしたらいいのでしょうか?
>>652 構造体の配列要素数と、input()関数内の文字数判定個所を変更(×2)する。
654 :
デフォルトの名無しさん :2005/07/31(日) 22:23:36
>>653 ありがとうございます。
関数内のみ構造体の配列要素数を(×2)するの忘れてました・・・。
655 :
↑ :2005/07/31(日) 22:24:44
日本語を間違えました。”関数内のみ”は、いりません。
656 :
デフォルトの名無しさん :2005/08/01(月) 15:56:48
[1] 授業単元: C言語研究 [2] 問題文(含コード&リンク): int型のデータを格納するためのスタック構造を実現したクラスを作って下さい. 仕様は自由ですが, 少なくとも以下の仕様を満たすようにして下さい. ○一引数のコンストラクタを持ち, 格納できるデータの最大数を設定できること. ○デフォルトコンストラクタを持ち, その場合の格納データ最大数は100であること. また, 同様の条件で, キューを表すクラスも作って下さい. [3] 環境 [3.1] OS:Windowsxp [3.2] VisualStudio(2003) [3.3] 言語:C ++ [4] 2005/08/01 17:00迄 [5] その他の制限:なし よろしくお願いします
C言語の授業で言語がC++?
658 :
656 :2005/08/01(月) 16:07:04
C++もやってるんですょぉ。゜゜(´□`。)°゜。
Thread Safeとか考えなくてええんか?
660 :
Ruby :2005/08/01(月) 16:18:37
教えて下さい…(泣) Rubyである数 n が素数であるかどうかの簡単な判定について 以下が条件です。 1. n をコマンドラインから入力する。to_i メソッドを使って整数化すること。 2. nが素数でないことを見つけるための変数 pflag に false を代入しておく。 3. n の平方根を超えない最大の整数を ne とする(たとえば n が 10 であれば, 10の平方根は 3.16... であるから, ne は 3 になる)。 (ここまでは下のソースに記述してある) 4. ここから for ループになる。 5. n を 2 から始まって ne までの数で割った,その余りが 0 であるかどうかを調べる。 6. もし 0 であったら, pflag に true を代入して,ループから脱出する。 7. ループを閉じる。 8. ループが閉じた後,もし pflag が true であれば,次のように出力する。最後は改行する。 "xx は素数です。" 9. そうでなければ,次のように出力する。最後は改行する。 "xx は合成数です。"
スレッドセーフ考えるとboostやらなんやらでメンドイくさいので、 例外安全・中立を重視する方向でよろしくお願いします
664 :
Ruby :2005/08/01(月) 16:22:08
>>656 機能は最低限。
class array_stack {
int DATA_MAX, data_num, *data;
public:
array_stack(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
~array_stack() {delete[] data;}
bool empty() {return data_num == 0;}
int pop() {if (empty()) throw "empty!"; return data[--data_num];}
void push(int t) {
if (data_num + 1 == DATA_MAX) throw "full!";
data[data_num++] = t;
}
};
class array_queue {
int DATA_MAX, data_num, *data;
public:
array_queue(int max = 100) : DATA_MAX(max), data_num(0) {data = new int[DATA_MAX];}
~array_queue() {delete[] data;}
bool empty() {return data_num == 0;}
int pop() {if (empty()) throw "empty!"; return data[--data_num];}
void push(int t) {
if (data_num + 1 == DATA_MAX) throw "full!";
int* first = data, * last = data + data_num;
while (last != first) {--last; *(last + 1) = *last;}
data[0] = t;
++data_num;
}
};
666 :
656 :2005/08/01(月) 16:48:59
667 :
デフォルトの名無しさん :2005/08/01(月) 18:43:01
>>640 ネットに繋げず遅くなりました、すいません
・「currentから下からxをvalueに持つ節を探して」
→探索方法の指定は?木の辿り方は複数ある。
指定は特にありません。
・「その節のポインタを返す関数」
→該当する節が複数ある場合は?
それなりに動けば良いらしいです
・「xを追加する場所を探す関数」
→追加する場所の基準は?
特にないです
・「nodeをfreeする関数」
→node以下全部?
全部です
668 :
デフォルトの名無しさん :2005/08/01(月) 18:47:55
[1]授業単元: アルゴリズム [2] 問題文(含コード&リンク): (問い1) 長さがN文字である文字列Sの中で,異なる場所に2回以上繰り返して登場する部分列の うち,最も長いものを見つけるアルゴリズムを設計し,その詳細を説明せよ.ただし,部 分列同士の一部が重なるような場合を許すものとする(例えばS=“ababa”の場合,求め る部分列は“aba”となる).また,そのアルゴリズムの最大時間計算量のオーダーをNで 表せ.なお,授業で紹介したストリングマッチングのアルゴリズムを一部で使用する場合 には,その詳細を省略してよい. (問い2) C言語(あるいはそれに類似した他の言語でも可)を用いて「複素数」というデータ構造 を定義し,これに対する四則演算(加算,減算,乗算,除算),絶対値の計算,および値の 表示を行う関数をプログラムせよ.値の表示は,実部と虚部による直交座標表現と,絶対 値と偏角による極座標表現の,2通りを用意すること.解答はそれぞれの関数についてソ ースコードの形で示せ.構造体,ポインタ,クラスなどの概念を使用してもよい. [3] 環境 [3.1] OS:Unix [3.2] コンパイラ(バージョン):emacs [3.3] 言語:C [4] 期限:2005年8月4日24:00まで [5] その他の制限:高度過ぎなければよいです
ブロックソーティングでいいんじゃないかい?
emacsはコンパイラじゃねーべよ。 紹介したストリングマッチングのアルゴリズム、そんなんエスパーじゃないんでわかりません。
>>668 力技。
typedef struct{ char *p1, *p2; int len; }result_t;
result_t *substrcmp(char *str, result_t *result)
{
unsigned int len = strlen(str);
char *str_end = str + len;
for(; len != 0; --len)
{
char *p1,*p2;
for(p1 = str; p1 != str_end - len; ++p1)
for(p2 = p1+1; p2 != str_end - len; ++p2)
if(0 == strncmp(p1,p2,len))
{
result->p1 = p1;
result->p2 = p2;
result->len = len;
return result;
}
}
return NULL;
}
672 :
671 :2005/08/01(月) 21:21:58
訂正
貼り忘れた。スマソ typedef struct{ char *p1, *p2; int len; }result_t; result_t *substrcmp(char *str, result_t *result) { unsigned int len = strlen(str); char *str_end = str + len; for(; len != 0; --len) { char *p1,*p2; for(p1 = str; p1 != str_end - len + 1; ++p1) for(p2 = p1+1; p2 != str_end - len + 1; ++p2) if(0 == strncmp(p1,p2,len)) { result->p1 = p1; result->p2 = p2; result->len = len; return result; } } return NULL; }
[1] 授業単元: コンピュータ言語 [2] 問題文(含コード&リンク): 下記の条件を満たすクラスstudentを作成し、メインプログラムにて 個人名オブジェクトを設定して、出席回数に応じて成績判定し、出力せよ。 1.データメンバとして、出席回数、点数を含むこと。 2.メンバ関数として、出席回数増・減、点数計算、成績判定するものを定義せよ。 点数の計算は 5点×出席回数(全15回)+25点=100点 成績判定はA・B・C・D 4段階 判定の度合いは自由に決めていい ※5回以上欠席するとD(不可)になるようにすること。 3.コンストラクタにより、点数、回数の初期化を行うこと。 4.メインプログラムは複数名の入力を可能とすること。 5.ファイルはstudent.h ・・・データメンバ定義、メンバ関数宣言 student.cpp ・・・メンバ関数定義、コンストラクタ定義 test.cpp ・・・オブジェクト宣言、点数・成績判定 の構成にすること。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ(バージョン):Visual C++ 6.0 [3.3] 言語:C++ [4] 期限:2005年8月3日9:00まで [5] その他(どこまで習っているか):教科書を早足でなぞった位・・・
676 :
デフォルトの名無しさん :2005/08/02(火) 02:17:44
>>674 全部書き込めるか不安
/****************************************************/
/*student.h内*/
/****************************************************/
typedef enum{
RANK_A = 1,
RANK_B,
RANK_C,
RANK_D,
} RANK;
#define POINT_A 85
#define POINT_B 90
#define POINT_C 80
//RANK_Dは0~55
class student{
// データメンバとして、出席回数、点数を含むこと。
int point;
int student::CalcPoint(void); // pointとnum_existから計算
public:
int num_exist;
student::student(void); // num_exist
int student::ControlNumExist(int); // 増減
RANK student::JudgeResult(void);// pointから計算
};
>>674 ごめん、改行が多くて書き込めないから他の誰かにがんばってもらって。
>>674 なんか問題文がおかしいような気もするが、
とりあえずそれなりに仕様を満たすように書いてみた。
// --- student.h -------------------------------
#ifndef __student_h__
#define __student_h__
#ifndef UINT
#typedef unsigned int UINT;
#endif
#define MAX_DAYS 15
class student{
public:
student();
void Attend();
void Absent();
UINT GetCount();
UINT GetScore();
char GetGrade();
private:
UINT m_Attendance; // days attended
UINT m_Absence; // days absented
UINT m_Score; // scoring point
};
#endif //__student_h__
679 :
678 :2005/08/02(火) 02:23:19
他にも書いてる人いたのか・・・ // --- student.cpp (1) ------------------------- #include "student.h" #define BORDER_A 95 #define BORDER_B 85 #define BORDER_C 75 student::student() { m_Attendance = 0; m_Absebce = 0; m_Score = 25; } void student::Attend() { if(m_Attendance + m_Absence < MAX_DAYS) { m_Attendance++; m_Score += 5; } } void student::Absent() { if(m_Attendance + m_Absence < MAX_DAYS) m_Absence++; }
680 :
678 :2005/08/02(火) 02:24:02
// --- student.cpp (2) ------------------------ UINT student::GetCount() { return m_Attendance; } UINT student::GetScore() { return m_Score; } char student::GetGrade() { UINT totalAbsence = MAX_DAYS - m_Attendance; if( totalAbsence > 5 || m_Score < BORDER_C){ return 'D'; }else if( m_Score < BORDER_B ){ return 'C'; }else if( m_Score < BORDER_A ){ return 'B'; }else{ return 'A'; } }
681 :
678 :2005/08/02(火) 02:26:25
// --- test.cpp -------------------------------- #include "student.h" #include <iostream.h> #include <stdlib.h> int main() { student A; student B; int i; // A for(i=0; i<rand()%MAX_DAYS; i++){ A.Attend(); } for( ; i<MAX_DAYS; i++) { A.Absent(); } cout<< "A: count = "<< A.GetCount(); cout<< ", score = "<< A.GetScore(); cout<< ", grade = "<< A.GetGrade() << endl; // B for(i=0; i<rand()%MAX_DAYS; i++){ B.Attend(); } for( ; i<MAX_DAYS; i++) { B.Absent(); } cout<< "B: count = "<< A.GetCount(); cout<< ", score = "<< A.GetScore(); cout<< ", grade = "<< A.GetGrade() << endl; return 0; }
682 :
678 :2005/08/02(火) 02:29:16
ちなみに、たぶん↑のやり方は普通じゃないので
>>676 の方を参考にした方が良いと思う。
つか、これそのままコピペしたら絶対先生に呼び出されるw
せめて7行きぼん
684 :
デフォルトの名無しさん :2005/08/02(火) 03:12:49
685 :
デフォルトの名無しさん :2005/08/02(火) 03:16:07
Bresenham でぐぐれ。 画像描画系は、ライブラリの指定をください。
687 :
685 :2005/08/02(火) 04:33:25
>>686 ライブラリの指定ってなんなんでしょうか?
私無知すぎですよね。。
688 :
デフォルトの名無しさん :2005/08/02(火) 07:17:16
Pascalの宿題なんですがここでもよろしいでしょうか?
以下URLに問題と答えを載せたのですが、答えがどうも腑に落ちません。
F(2)を行った結果x=1+2=3になりましたが、これがF(3)におけるx=1の宣言後であるにも関わらず
F(3)ではx=1に戻ってしまっています。
またF(3)でx=4となった後メインプログラムに戻りますが、
ここでもx=3の宣言後にF(3)をしたはずですがX=3が最終出力になっています。
根本的に私の考えがおかしいのでしょうか?どうも流れからして納得できません。
よろしくお願いします。
http://www.za.ztv.ne.jp/yosi-h/
>>688 残念、ここは解説スレでもなければPascalスレでもない。
ヒント:xはどこで宣言されて、どの範囲で有効かな?
[1] 授業単元:プログラミング 配列 [2] 問題文(含コード&リンク): L行M列の行列Xと M行N列の行列Y の積を求めるプログラムを 作成しなさい.ただし,任意の大きさの行列が計算できるようにしなさい. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:05年8月3日まで [5] その他の制限: お願いします。
>>685 何回かに分けてみます
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_WIDTH 100
#define MAX_HEIGHT 100
#define POINT_NONE 0x30
#define POINT_EXIST 0x31
#define _DEBUG_
typedef struct{
int x, y;
} Point;
int main(void)
{
int ret = 0;
char buf[128];
Point s_point, e_point;
int set_flag = 0;
double a, b;// y = a * x + b
int i;
int h;
char pix[MAX_WIDTH][MAX_HEIGHT];
#ifdef _DEBUG_
FILE *d_file;
#endif
>>685 // ピクセルの初期化
for(i=0; i<MAX_WIDTH; i++){
for(h=0; h<MAX_WIDTH; h++){
pix[i][h] = POINT_NONE;
}
}
while(set_flag == 0){
// 始点入力
printf("Please Input Start Point x:");
gets(buf);
s_point.x = atoi(buf);
printf("Please Input Start Point y:");
gets(buf);
s_point.y = atoi(buf);
// 終点入力
printf("Please Input End Point x:");
gets(buf);
e_point.x = atoi(buf);
printf("Please Input End Point y:");
gets(buf);
e_point.y = atoi(buf);
set_flag = 1;
>>685 // 始点、終点チェック
if((s_point.x < 0) || (s_point.y <0) || (s_point.x >= MAX_WIDTH) || (s_point.y >= MAX_HEIGHT)){
printf("Irregular Start Point\r\n");
set_flag = 0;
}
if((e_point.x < 0) || (e_point.y <0) || (e_point.x >= MAX_WIDTH) || (e_point.y >= MAX_HEIGHT)){
printf("Irregular End Point\r\n");
set_flag = 0;
}
}
// ライン計算 height = A * width + B
if(s_point.x != e_point.x){
a = (double)(e_point.y - s_point.y) / (e_point.x - s_point.x);
b = (double)e_point.y - a * e_point.x;
}
else{
a = 0.0;
b = 0.0;
}
>>685 // 上記width, heightの整数部を取り出し
// 該当pointの値をチェック
if(s_point.x < e_point.x){
for(i=s_point.x; i<=e_point.x; i++){
h = (int)(a * i + b);
pix[i][h] = POINT_EXIST;
}
}
else if(s_point.x > e_point.x){
for(i=e_point.x; i<=s_point.x; i++){
h = (int)(a * i + b);
pix[i][h] = POINT_EXIST;
}
}
else{// start = end
if(s_point.y < e_point.y){
for(h=s_point.y; h<=e_point.y; h++){
pix[s_point.x][h] = POINT_EXIST;
}
}
else{
for(h=e_point.y; h<=s_point.y; h++){
pix[s_point.x][h] = POINT_EXIST;
}
}
}
>>685 #ifdef _DEBUG_
d_file = fopen("debug.txt", "w+");
// ピクセルの初期化
for(h=0; h<MAX_HEIGHT; h++){
for(i=0; i<MAX_WIDTH; i++){
if(pix[i][h] == POINT_EXIST){
fprintf(d_file, "1");
}
else{
fprintf(d_file, "0");
}
}
fprintf(d_file, "\r\n");
}
fclose(d_file);
#endif
return(ret);
}
おわり。いかがでしょうか?
696 :
695 :2005/08/02(火) 09:19:24
>>695 // ピクセルの初期化
これはウソです。
コメントはウソしか書いていないというのはまさに真実ですね、まったく。
藻前ら(特に回答者)アプロダ(
>>1 )使えよ
スレが読みにくくてたまらん。。
700 :
デフォルトの名無しさん :2005/08/02(火) 20:46:17
>700 (1). int hash(char *name) { int h = 1; while(*name != '\0'){ h *= (*name)%100; } return h%100; } (2). 名前の文字列の中に偶数値を持つバイトがあると ハッシュ値が必ず偶数となり、ハッシュ値の出現に偏りが出る。 (3). 上記の問題から法とする数を奇数にすればよいと考えられる。
>>700 [1] int h(const char * str) { return 0; }
[2] 確実に0が返ってしまう
[3] ハッシュ関数 : 各バイトを“終端文字を除いて”すべて掛け算し、その下2桁を採用する。
より良い性能を与えると思われる根拠 : 0以外も返るようになる。
[3] 足し算にする
704 :
デフォルトの名無しさん :2005/08/02(火) 23:14:50
1] 授業単元: プログラム [2] 問題文(含コード&リンク): ●□□□□ □□□□□ □□□□□ □□□□□ □□□□□ 1:← 2:→ 3:↑ 4:↓ キーボードで数値を入力した時、矢印方向に●が動くようなプログラムを作成せよ。 (□から出たら終わらせる) [3] 環境 [3.1] OS:WindowsXP [3.2] Microsoft Visual C++ .NET [3.3] 言語:C [4] 期限:8月3日まで
>>704 指定どおりに動いたらはみ出す場合にはどうする?
あ、終わらせるって書いてあった。失礼しますた。
708 :
704 :2005/08/02(火) 23:25:23
>>708 了解
#include <stdio.h>
#define WIDTH (5)
#define HEIGHT (4)
int main(void) {
int x = 0, y = 0, i, j, c;
for (; ; ) {
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) if (j == x && i == y) printf("●"); else printf("□");
printf("\n");
}
printf("1:← 2:→ 3:↑ 4:↓\n"); if (scanf("%d", &c) != 1) return 1;
switch (c) {
case 1: --x; break;
case 2: ++x; break;
case 3: --y; break;
case 4: ++y; break;
default: return 1;
}
if (x < 0 || WIDTH <= x || y < 0 || HEIGHT <= y) return 0;
}
}
710 :
704 :2005/08/02(火) 23:44:44
>>709 すいません
図形は下の行に書かずに上書きでお願いします。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
>>700 (2)
・文字の出現順は関係ないので、アナグラムしたものは同じハッシュ値を持つ。
・文字コードが100の倍数を含んでいるとき、常に0を返す
(3)
文字コードだけでなく、出現位置も利用してハッシュ値を生成する。
>>710 画面消去のエスケープシーケンスってば↓だっけ? ためしてないけど。
"\x1B[0K"
715 :
デフォルトの名無しさん :2005/08/03(水) 03:08:03
716 :
715 :2005/08/03(水) 03:16:47
やっぱりいいです。失礼しました。
717 :
OS :2005/08/03(水) 05:51:20
次スレからの指示できました。 [1] 授業単元:オペレーティングシステム [3] 環境 [3.1] OS:Unix [3.2] コンパイラ(バージョン): ちょっとわかりません [3.3] 言語:C言語 [4] 期限:今年の8月10日までです。 問題文は ・マルチスレッドプログラミング (1)簡単なスレッドプログラミング及びスレッドの動作について解説せよ。 (2)相互封鎖や相互実行が起こるプログラムを作成し、その動作を解説せよ。 (3)マルチスレッドで、turnやflagを使った排他制御のプログラムを作成し、その動作を解説せよ。 (4)消費者・生産者問題のプログラムを解説せよ。 ・プロセス (1)簡単なプロセスを使ったプログラミング及びプロセスの動作について解説せよ。 (2)スレッドとプロセスの違いを具体的な例を挙げて解説せよ。 (3)プロセス間通信で、turnやflagを使った排他制御のプログラムを作成せよ。 (4)2つのプロセスが共有変数を操作するプログラムを作成し、その動作を解説せよ。 ・ライブラリ (1)スレッドについてどのようなライブラリがあるか調査し、 簡単なプログラムを作成して、そのライブラリの使い方を解説せよ。 (2)プロセスについて、どのようなライブラリがあるか調査し、 簡単なプログラムを作成して、そのライブラリの使い方を解説せよ。 です。よろしくです。
718 :
717 :2005/08/03(水) 06:17:56
やっぱりいいです。失礼しました。
719 :
デフォルトの名無しさん :2005/08/03(水) 07:42:44
可読性の低いコードなので却下
721 :
デフォルトの名無しさん :2005/08/03(水) 10:32:15
>>721 test1_1.cには
#include <stdio.h>
#include "my_header.h"
とmain関数全体をそのまま書き写す。
my_func1.cには
#include "my_header.h"
#define NUM 100
とfunc1関数全体をそのまま書き写す。
my_header.hはint func1(int value);の一行。
723 :
721 :2005/08/03(水) 10:59:52
>>722 お答えいただき有難うございます。
ソースはこれで合っているのでしょうか?↓
#include <stdio.h>
#include "my_header.h"
int main(int argc,char **argv)
{
int input,output;
scanf("%d",&input);
output = func1(input);
printf("%d\n",output);
return 0;
}
#include "my_header.h"
#define NUM 100
int func1(int value)
{
int i,ans=0;
for(i=0;i<NUM;i++){
ans+=value;
}
return ans;
}
my_header.h
int func1(int value);
724 :
OS ◆hCRkzTKxdQ :2005/08/03(水) 11:17:15
>>719 見ず知らずの他人が置いたアーカイブを展開するなんて怖いことできないから却下。
問題文くらい自分で書き直すくらいのことしなさいよ。
>>724 ここはプログラミングの宿題を片付けるスレ。
文章問題はスレ違い。
つーか、教科書ないのか?
[1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク): STLであるSETを編集し(必ずファイルのバックアップを取るように注意してください)、 データの比較回数、データの移動回数(実際のデータ挿入、回転は別のものとし てとカウントすること)を計測するコードを追加しなさい。 ・ポイント データの比較及び移動がどの部分で行われているかを考慮してください。 どのようにカウントしたデータを受け渡すべきか。grobalとして定義するべきか。 [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ(バージョン):Visual Studio C++.NET [3.3] 言語:C++ [4] 期限:8月6日 詳細を訪ねたところ、 C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\set を(バックアップ後に)編集し、比較回数、移動回数をmainに渡すということで した。どうかよろしくお願いします。
>>727 アホかい。そこまでやることが指示されてて何もできないなら諦めた方がいいぞ。
つーか、他人の宿題のために自分の環境に手を入れるなんて酔狂なことしたかないぞ。
>>719 ヒント:
(1)自明なので割愛
(2)Aでは探索に掛かる計算量が面積比例、Bでは毎回のスキャンの計算量が面積比例でスキャンの最大数は面積比例。
(3)Aはスタックが必要。Bは画像内に情報を持たせているので不要。
但し、画像内に情報を持たせることができないのなら、面積に比例したフラグの分メモリが必要になる。
どっちにしても、よりよいアルゴリズムを採用すべきw
#つーか、素晴らしく汚いコードだな。
730 :
デフォルトの名無しさん :2005/08/03(水) 12:47:08
731 :
デフォルトの名無しさん :2005/08/03(水) 12:53:56
最大公約数と、最小公倍数を求めるプログラムです #include<stdio.h> int gcd( int m, int n ); int lcm( int m, int n ); int main(void) { int m,n,x,y; while(1){ printf("(実数)\n"); scanf("%d%d",&m,&n); if(m>2000000000||n>2000000000) printf("ERROR\n"); else break; } x=gcd(m,n); y=lcm(m,n); printf("\n%d\n",x); printf("%d\n",y); return 0; }
732 :
731 :2005/08/03(水) 12:54:33
/********************************************************* // 最大公約数(Greatest Common Divisor)を返す。 //********************************************************* int gcd( int m, int n ) { while( m != n ) { if ( m > n ) m = m - n; else n = n - m; } return m; } //********************************************************* // 最小公倍数(Least Common Multiple)を返す。 //********************************************************* int lcm( int m, int n ) { return ((m / gcd(m, n)) * n); } このプログラムを最小公倍数が20億を超えないように、また、mainプログラムで入力したときにオーバーフローするかどうか判定するにはどうすればよろしいでしょうか?? よろしくお願いいたしますm(__)m
734 :
デフォルトの名無しさん :2005/08/03(水) 13:03:17
>>733 すみませんm(__)m
でも、結構切実です。m(__)m
>>734 >でも、結構切実です。m(__)m
それがどうした?
>>734 藻前が切実であろうと漏れらには何の問題もない。うせろ。
kyoto-uと見せかけてkyoto-suか・・・なんでSANGYOなんだろorz
To: yamada
Subject: 課題について
拝啓
おたくの学生が宿題を丸投げしています。
urlは……。
ところで、
上達するために、でコーディングスタイルを述べてらっしゃいますが、
#define MAX_INDEX;
ちゅーのはなんですか?
きちんとした言葉を使うを参考にされてください。
>>739 Kyoto Sangyo University だそーで。
>>730 左上からスタートして、左上に帰ってくる順回路を求めているということに注目。
左上を 0,0 ( コード上では 2,2 ) とした場合、2,1 と 1,2 の両方が埋まってしまうと
左上に帰ってこれなくなるので、n < M * N-1 でかつboard[3][4]とboard[4][3]の
両方が非ゼロの場合は枝刈りして良し。
具体的には、例えばfindSolutionでcycle[0][0]=2;cycle[0][1]=2; board[2][2]=-1;
backtrace(board,cycle,1, 4, 3) とまず東南東へ飛んだところから開始して、
backtrack の頭で if (n<M*N-1 && board[3][4]<0) return; と帰還1歩前より前で
北北東の帰還路がふさがっている枝を刈る。
>>730 前略
#define ABS(x) ((x)>0?x:-(x))
int isMovable(const int * start, const int * goal) {
return (ABS(goal[0] - start[0]) == 2 && ABS(goal[1] - start[1]) == 1) ||
(ABS(goal[1] - start[1]) == 2 && ABS(goal[0] - start[0]) == 1);
}
int printCycle(int cycle[M*N][2])
{
int i, j;
char board[M][N];
for (j = 0; !isMovable(cycle[j], cycle[M*N-1]) || !isMovable(cycle[j+1], cycle[0]); j++) if (j == M*N - 1) return 0;
for (i = 0; i <= j; i++) board[cycle[i][0]-2][cycle[i][1]-2] = i;
for (i = M*N - 1; i > j; i--) board[cycle[i][0]-2][cycle[i][1]-2] = j + (M*N - i);
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) printf(" %2d", board[i][j]);
puts("");
}
return 1;
}
void backtrack(int board[M+4][N+4], int cycle[M*N][2], int n, int i, int j)
{
if (n == M * N) {
if (printCycle(cycle))
exit(0);
後略
>きちんとした言葉を使うを参考にされてください。 参考になさってください。
きっと受動態なんだろ。 参考にされるような、言葉を使えるようになってくださいという意味だ。
745 :
デフォルトの名無しさん :2005/08/03(水) 22:22:22
[1] 授業単元: [2] 問題文(含コード&リンク): コンソール上でキャラクタ(半角1文字)を動かす関数を作成する。 ・縦だけに動く関数 ・横だけに動く関数 ・ランダムに動く関数 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン): Microsoft Visual C++ .NET [3.3] 言語:C++ [4] 期限:2005年8月3日(できるだけ早くお願いします) [5] その他の制限: 特になし
>>745 ということは、コンソールの制御を自前でやることになるわけで、激しく
環境依存になるし、main()の手前のスタートアップで勝手にコンソールの
初期化とかされたら困るからWinMain形式のソースになるわけで、すると
必然的にその「動かす関数」とやらだけでは済まなくなるわけだが、
どうすればいいんだ?
わかんなけりゃ黙ってればいいのに
748 :
745 :2005/08/03(水) 23:09:54
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
とりあえずWin32API 直に弄ってた漏れはやる気なくした
751 :
デフォルトの名無しさん :2005/08/03(水) 23:53:44
ぼるじょあって誰ですか?
(・3・)エェー ぼるじょあですYO!
753 :
フィボナッチ :2005/08/04(木) 01:01:40
200までのフィボナッチ数列を列挙するCのプログラムが書きたいのですがわかりません。 48くらいを超えるとint型では無理になりますよね?そこで配列と関数を使いたいのです。 c[0]には1の位、c[1]には2の位・・・といった感じで。 f = f1 + f2をフィボナッチとすると、 関数は、加算をする関数。 f2 = f1をする関数。 f1 = fをする関数。 出力する関数。 といった感じで作りたいのです。 あと、#includeは<stdio.h>のみで。 誰かわかる方はいらっしゃいませんか??
>>753 フィボナッチに特化して考えずに、多桁演算ライブラリを作るような積もりで作るといいと思う。
で、1の位2の位って2進一桁を格納するんかい(苦笑)。
素直に10進1桁(or8桁)ずつ格納した方がよさそうな希ガス。
755 :
フィボナッチ :2005/08/04(木) 01:14:18
早いレスありがとうございます!なんせ学校のゼミの課題なのでこの「配列を使う」 とか「関数」と使うって条件は必須なんですよ(涙) ただ48までのフィボナッチだったらなんてことなく書けるのですが配列を使うとなると ぜんぜんわからないんです・・
756 :
フィボナッチ :2005/08/04(木) 01:16:23
あ、ちなみに一桁ずづ格納しろってのも変更できないんです・・
ヒント:足し算 void ladd(int a[], int b[], int c[]) { /* a[] <- b[] + c[] */ int i, carry = 0; for( i = 0 ; i < 100 ; i++ ) { /* 任意桁は面倒なので100桁以下と仮定する。 */ a[i]=b[i]+c[i]+carry; if(a[i]>9){ carry = 1; a[i] -= 10; } else carry = 0; } }
280571172992510140037611932413038677189525 眠い。
漏れも、書いてみる。 #define RADIX 10 #define COLUMN 50 int add(int a[], int b[], int c[]) { int i, tmp, carry = 0; for (i = 0; i < COLUMN; i++) { tmp = b[i] + c[i] + carry; a[i] = tmp % RADIX; $nbsp; $nbsp; carry = tmp / RADIX; } return carry; }
760 :
フィボナッチ :2005/08/04(木) 02:30:14
まだまだぜんぜん完成してませんけどヒントを参考にこんな感じで書いてみました。 間違えだらけなきがする・・・未熟でほんとうにごめんなさい。改行が多すぎるってエラー が出ちゃったんで分割して書き込んでみます。 #include <stdio.h> int a[0] = 0; int b[0] = 0; void outputC(void) { for(i = 0;i < 50;i++) printf("%d", a[i]); } void copyBtoA(void) { c[i] = b[i]; } void copyCtoB(void) { b[i] = a[i]; }
761 :
フィボナッチ :2005/08/04(木) 02:31:10
void copyBtoA(void) { c[i] = b[i]; } void copyCtoB(void) { b[i] = a[i]; } void addBCintoA(int a[], int b[], int c[]) { int i, carry = 0; for( i = 0 ; i < 50 ; i++ ) { a[i] = b[i] + c[i] + carry; if(a[i] > 9) carry = 1; a[i] -= 10; else carry = 0; } }
762 :
フィボナッチ :2005/08/04(木) 02:32:11
carry = 1; a[i] -= 10; else carry = 0; } } void main(void) { printf("%d %d",a[0],b[0]); for(i = 3;i < 199;i++) { addABintoC(); copyBtoA(); copyCtoB(); outputC(); }
763 :
フィボナッチ :2005/08/04(木) 02:34:21
} ながくなっちゃいましたがこれで終わりです。
まー。コンパイルくらいはしてるんだろうし、 思いどおりに動かないと言ってるわけでもないので、 動作はするんだろう。 いいじゃん、動けば。課題はそんな程度で出してOKよん。
765 :
フィボナッチ :2005/08/04(木) 03:28:40
なぜかコンパイルが通りませんがアドバイスありがとうございました。 非常に助かりました!なんか2chって初めて使ったんですけど 書き込もうとするとなぜかエラーになることが多いですね。
766 :
デフォルトの名無しさん :2005/08/04(木) 04:42:50
もしそれが本当なら今後のみの振り方考えた方がいいんじゃない?
768 :
766 :2005/08/04(木) 05:33:25
>>767 3年になったら転学科しようかと思ってたりしてます。
そのためにも単位は落としてはいけないわけでして。
(もともと今の学科は第三志望でした。)
なんだかなぁ。身の上話のほーがメインな気がする。 理系に向いてないかもしれん。とは思うな。
( ´ー`)y―┛~~夏だねぇ・・・・・
>>769 少なくとも短気でバカなおいらにプログラミングは荷が重すぎます。
同じ悩むなら電子工学系の問題で悩む方がよっぽど幸せです。
>766程度で悩むようじゃ、何専攻したってダメだろ。 つーか、その程度の問題文で一々アップローダにアクセスさせる神経が気に入らん。
>>772 すみません、ちょっと図形が入っていたので
ウプローダーつかったほうがいいかなあと思いまして…。
演習のページに載ってある内容で試しても
自分ではどうにもうまくいかないんですよ。
ググッてみても今の自分にはわからない事が使われていたりして
チンプンカンプンだったりしてどうにも…。
775 :
デフォルトの名無しさん :2005/08/04(木) 10:58:40
■■■■■■■■■■■■■■■■ ■ ■ 違う板にコピペすると、四角の枠の中に ■ ■ メッセージとURLが現れる不思議な絵。 ■ ■ ■ ■ (その仕組みがリンク先に書いてある) ■ ■ ■ ■ この原理を応用すると、まったく新しい ■ ■ コピペが作れる予感。 ■■■■■■■■■■■■■■■■
珍しい宿題ですね。
>>766 >774の置き換え
#つまらぬものを作ってしまった..._|⌒iO
778 :
デフォルトの名無しさん :2005/08/04(木) 12:46:35
1] 授業単元: プログラム [2] 問題文(含コード&リンク): 与えられた有向グラフGに対し,強連結成分を求めるプログラムを作りなさい(言語は何でも良い) ただし,Gの入力は以下の形式に記述されたテキストファイルによるものとする: Gの頂点数 Gの隣接行列 たとえば、次は頂点数が4のグラフの例である. 4 0 1 -1 0 -1 0 1 -1 1 -1 0 -1 0 1 1 0 また,出力は各強連結成分について,含まれる頂点を1行に書き出すこと. たとえば,上の例のグラフの場合,出力は以下のようになる: component 1: 4 component 2: 1 2 3 [3] 環境 [3.1] OS:WindowsXP [3.2] Borland [3.3] どちらでも可 [4] 期限:8月10日まで おねがいします
781 :
デフォルトの名無しさん :2005/08/04(木) 12:53:57
すみません・・・
1] C初級 [2] RPGにおけるアイテムの売買のフローチャート [3] 環境 [3.1] OS:Windows/ [3.2] VisualStudio(2003): [3.3] 言語:C [4] 期限:8月4日 15:30迄 無理なら今日中 [5] その他の制限:ポインタまで てかフローチャートっておkなのかな? ちょっとあいまいですけど基本的な部分だけでいいのでおねがいします。
おkじゃないです。
VisualStudio と C で、フローチャートかけって言われてもなw
そこをなんとかかんとか(;´Д`)人" と言いたいけどスレ汚しスマソ ノシ
786 :
782 :2005/08/04(木) 13:54:19
>>785 そうなんだけどさw
↑みたいにろだ使ってみたいな感じに…期待してた
787 :
786 :2005/08/04(木) 13:57:34
789 :
OS ◆hCRkzTKxdQ :2005/08/04(木) 17:45:59
たびたびすいません。 (4)flagやturnを使い、排他制御を行い、2つのプロセスが共有変数を操作するプログラムを作成しせよ。 ひとつだけ問題がわかりません。 [1] 授業単元:オペレーティングシステム [3] 環境 [3.1] OS:Unix [3.2] コンパイラ(バージョン): ちょっとわかりません [3.3] 言語:C言語 [4] 期限:今年の8月10日までです。 [5] 問題;flagやturnを使い、排他制御を行い、2つのプロセスが共有変数を操作するプログラムを作成しせよ。 です。わかる方いたら是非お願いします。
791 :
766 :2005/08/04(木) 21:24:40
>>774 さっそくの解答本当にありがとうございました。
習ってないものが使われてるみたいで自分にとっては
難しいですがなんとか理解したいと思いますm(__)m
それはともかく、ぼるじょあが宿題をかたづけてくれた試しはあるのか? 書き逃げのチキン鮮人野郎? CもC++も知らないくせにスレだけ立てるってやつか?
>>792 何度か回答側にまわった事はあるが、バカまるだし頓珍漢ばかりなシロモノだった
ぼるじょあがC/C++の宿題で片づけられたわけだなw
迷惑な奴だよな・・・
ぼるじょあ◆yEbBEcuFOUが質問を聞いてあげるYO! ぼるじょあ◆yBEncckFOU は共同体で連続体で群生体だから 無限の知識と無尽蔵の体力を持ってるんだYO! (・3・)アルェー こっちが嫌になるほど質問しろYO! 雑談したり答えたりする人は、みんなぼるじょあ◆yBEncckFOUだYO! ぼるじょあ◆yBEncckFOUはコテハンじゃないYO! 名前欄に「ぼるじょあ#ぶるじょあ」で、キミも今日からぼるじょあ◆yBEncckFOUだYO! (・3・)エェー 最近ぼるじょあ不足だからドンドン書き込んでNE!
801 :
デフォルトの名無しさん :2005/08/05(金) 09:19:28
そのうちジョルジュ長岡と荒巻スカルチノフも出てきそうだ
803 :
デフォルトの名無しさん :2005/08/05(金) 11:17:57
こんにちは 日本語の正規表現をつかいたいんですけど どうすればいいですか?
>>804 (・3・)エェー まじめに答えてやれYO!
>>805 (・3・)エェー まじめに答えてやれYO!
何人いるんだ。ぼるじょあ。
(・3・)エェー 共同体で連続体で群生体の特徴だNE!
(・3・)エェー これで僕もぼるじょあかYO!
>>803 (・3・)エェーC++だったらboost::regexを使うといいYO!でも、日本語を
扱うならワイド文字列にしなくちゃダメだNE!
[1] 授業単元:情報処理概論(最終レポ) [2] 問題文(含コード&リンク): (1)指定した2点間に線分を描く関数を作成せよ。引数は始点のX座標とY座標、終点のX座標とY座標、色番号の5つとする。 (2)次に、その関数を使って「H.K」「E.T」「M.S」「M.W」という文字を線で描画せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):不明 [3.3] 言語:どちらでも可(Cで出来ればなるべくそちらでお願いします) [4] 期限:2005年8月10日15:00まで 2つあるのですが、よろしくお願いいたします。
813 :
デフォルトの名無しさん :2005/08/05(金) 23:17:43
>>812 GDI使っていいならLineToなり使って・・・
使っちゃいけないなら点は何で打つの?
>>812 (・3・)エェー Cには線を引く機能はないし標準ライブラリにもそんな関数存在しないYO!
だから画像描画系の宿題はライブラリの指定があるとうれしいYO!
もう片方の言語がわからないけどそっちの方が最適かもしれないNE!
ほんとにこれでぼるじょあになれるべか?
>>814 テンプレ読め。そうでなくてもこのスレなんだからC++って想像くらいできるだろ。
>>815 名前欄に「ぼるじょあ#ぶるじょあ」で、キミも今日からぼるじょあ◆yBEncckFOUだYO!
>>816 (・3・)エェー C++にも線を引く機能はないYO!
(・3・)エェー なまえをいれわすれたYO!
820 :
812 :2005/08/06(土) 00:15:40
「C言語を使ってプログラムを作成する」というのが課題だから その条件さえ満たしていれば何使ってもいいと思うんですけど
(・3・)エェー 最近ぼるじょあが暴れすぎですYO!
826 :
デフォルトの名無しさん :2005/08/06(土) 01:07:15
ぼるじょあ詩ね
(・3・)アルェ~ 暴れてないYO!
(・3・)アルェ~ 質問なんか書くなYO!
だからぼるじょあはやめろとあれほど
ヤバイ。ぼるじょあヤバイ。まじでヤバイよ、マジヤバイ。 ぼるじょあヤバイ。 まず質問を聞いてあげるYO♪。もう質問を聞いてあげるYO♪なんてもんじゃない。超質問を聞いてあげるYO♪。 質問を聞いてあげるYO♪とかっても 「いつならいいの?」 とか、もう、そういうレベルじゃない。 何しろ24時間、いつでも質問オッケー。スゲェ!なんか時間に制限とか無いの。無限の知識とか無尽蔵の体力とかを超越してる。 名前欄に「ぼるじょあ#ぶるじょあ」って書けばキミも今日からぼるじょあ◆ySd1dMH5Gkだしなんでも質問を聞いてあげるYO♪。 しかもいつだって全力投球らしい。ヤバイよ、いつだって全力投球だよ。 だって普通はコテハンとか共有しないじゃん。だって自分のコテハンが人に使われたら困るじゃん。騙りとか煽りとか困るっしょ。 自分のコテハン使われて、マジレスしてたのに、他人に「ウンコ」とか書かれたら泣くっしょ。 だからトリップとか公開しない。話のわかるヤツだ。 けどぼるじょあはヤバイ。そんなの気にしない。公開しまくり。>>1とか見れば誰でもぼるじょあ。ヤバすぎ。 24時間、いつでも質問オッケーって言ったけど、もしかしたら寝てるときもあるかもしんない。でも寝てるときもあるって事にすると 「じゃあ、ぼるじょあの共同体で連続体で群生体ってナニよ?」 って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。 あと超自作自演。IDが出ない。専門用語で言うと(・∀・)ジサクジエンデシタ。ヤバイ。自作自演しすぎ。他人がレスする暇もなく自演。怖い。 それに超雑談。超マターリ。そのくせ超進行速い。次スレとか1日で立ってくる。偉大なる軌跡て。革命家でも言わねぇよ、最近。 なんつってもぼるじょあはAAが凄い。コピペとか平気だし。 うちらなんてAAとかたかだかモナー板で出てきただけで上手く扱えないから職人さんを待ったり、 作成依頼スレに置いてみたり、AAエディター使ったりするのに、 ぼるじょあは全然平気。モナーの顔を・3・のまま扱ってる。凄い。ヤバイ。 とにかく貴様ら、ぼるじょあのヤバさをもっと知るべきだと思います。 そんなヤバイぼるじょあスレに出て来た「油デブ」とか「よゐこ」超偉い。もっとがんばれ。超がんばれ。
832 :
七七四 :2005/08/06(土) 12:05:57
[1]情報処理技術者実習Ⅰ [2]ある文字列tの中に別の文字列sが含まれているかを調べて、t中のsの出現位置を整数型配列nに格納し、sの出現回数を関数strchknum(t,s,n)を作成せよ。」 [3-1]os:windowsXP [3-2]visualC? [3-3]C言語 [4]期限:できるだけはやくでお願いします。
834 :
デフォルトの名無しさん :2005/08/06(土) 12:23:42
調子に乗るな。おたく野郎が。
はぁ? 在日は本国に帰ったら?
>>832 #include <string.h>
#include <stdio.h>
int strchknum(const char * t, const char * s, int * n) {
int i;
const char * const p = t;
for (i = 0; (t = strstr(t, s)) != NULL; ++t, ++i)
n[i] = t - p;
return i;
}
int main(void) {
const char * const t = "abababacbabbab";
const char * const s = "ab";
int n[256], n2, i;
n2 = strchknum(t, s, n);
printf("出現回数: %d\n出現位置:", n2);
for (i = 0; i < n2; ++i) printf(" %d", n[i]);
putchar('\n');
return 0;
}
837 :
812 :2005/08/06(土) 15:46:37
>>837 (・3・)エェー それくらいWinMainでぐぐれYO!
>>837 名前のない引き数がエラーになるのはC言語の制約。
>828はC++を前提としたのだろう。
したがって、ファイル名を*.cではなく*.cppとすればエラーではなくなし、最後の警告も消える。
どうしてもCとしてコンパイルしたいなら、適当な名前を補い、最後の警告は無視しろ。
>>840 (・3・)アルェ~ チミ頓珍漢な事言ってるNE!
>>841 それでは「WinMainでぐぐ」って
>>837 のエラーをなおすためにどう役立てたのか教えてください。
>>842 ポカーン
あんたぼるじょあより低レベル?
(・3・)エェー まさに頓珍漢だNE!
もしかして、>843や>844は引き数の名前を調べないといけないなんて戯けたことを言いたいのだろうか。 別に、 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE foo, LPSTR bar, int baz) { でいいのだけれど。
(・3・)エェー まさに頓珍漢だNE!
焦り捲くった挙句、ついにトリップ付け忘れるぼるじょあ
予想 ↓今度はError: 外部シンボル '_main' が未解決というエラーが出てコンパイルされません ↓これをなおすにはどうしたらいいのでしょうか? ↓
│ │ ≡ ( ( ( (・3・) │≡ ~( ( ( ( ~) │ ≡ ノノノノ ノ サッ ↓
(・3・)アルェ~ コンソールとWindowsのプログラムの区別もつかないのかYO!
だからぼるじょあはやめろとあれほど
だからぼるじょあはやめろとあれほど
>>854 (・3・)エェー 真面目に答えてるんだから良いじゃねぇかYO!
あ?馬鹿ネタ解答専用のコテで真面目に答えるなよ ・・・とおもったら内容見たら馬鹿解答だから問題は無いようだ 本人真面目に答えてるつもりならネタ通り越して寒すぎる所だがな
859 :
606です :2005/08/07(日) 00:44:56
>>639 ↑のロジックを変更し、前回のC:\野球の内容をクリアしないようにするにはどこをどう変更したらよいでしょうか?
860 :
606です :2005/08/07(日) 00:47:17
連レス申し訳ありません。
>>606 ↑に問題があります。
>>859 追記したいってこと? それなら"w"の代わりに"a"を指定。
>>859 main()でのwhileの前にファイルをリストに読み込む処理を追加すればいいと思う。
>>861 ファイルの内容を並び替えたりしなくちゃいけないから、多分ファイルに追記というよりも
リストそのものに追加ということだとオモタ。
[1] 授業単元:プログラミング概論 [2] 問題文(含コード&リンク): 駅の電光掲示板をC言語によって表現せよ。ただし、2行目は30秒後に文字が流れるように設定すること。 こんな感じ↓ tp://curiosat.jpn.org/atos1/led/images/led_led3_nos1l.jpg [3] 環境 [3.1] OS:Windows [3.2] コンパイラ(バージョン):Borland [3.3] 言語:C言語 [4] 期限:2005年8月8日17:00まで
>>863 だーかーらー
描画ライブラリくらい指定しろっての
文字が流れればいいだけですが、何か?
は?なにいってんだこいつ
868 :
デフォルトの名無しさん :2005/08/07(日) 01:46:03
標準関数でできるのか、期待しちゃうよ
は?標準関数?
871 :
863 :2005/08/07(日) 02:28:48
さっさと答えろこの脳無しどもめ
描画ライブラリっていう言葉の意味すら分からないんじゃねーのw
874 :
606、859です :2005/08/07(日) 03:13:45
すみません。修正したロジックをロダ内にUPしていただけませんでしょうか?
876 :
606、875です :2005/08/07(日) 08:52:55
>>875 はい。コードをいただけますか?
>>862 を参考に自分なりに書いてみたんですけど、
同一背番号のときに上書きせず追加登録になってしまったり、何やらかんやらで・・・。
>>864 OSがWindowsって書いてあるんだからWindowsのAPIを利用するのが一番親切だと思う。
>>876 こんなのをwhileの前に突っ込んでもダメ?試してないけど。
/* ファイルを読む */
void ReadFromFile() {
Person person;
FILE* stream = fopen(OUTPUT_PATH,"r");
if (stream) {
while (fprintf(stream,"%d\t%s\t%s\n",&person.number,
&person.name,
&person.position) == 3)
SetMember(&person);
fclose(stream);
}
}
思ったんだが
>>863 はそのまんま電光掲示板を表現したいんジャマイカ?
環境があいまいだと色んな妄想がふくらむな。
とりあえず
>>863 が帰ってくる前にさりげなく
つ [printf("<marquee (ry]
(#・3・)エェー Homepage Builder付属の電光掲示板Javaアプレットでも改造すれBa?
だからぼるじょあはやめろとあれほど
ぼるじょあさん、もっと来て来て~
886 :
606、875です :2005/08/07(日) 21:59:38
>>878 試してみたんですけど駄目でした。
関数の呼び方が悪いのでしょうか?
できれば、関数を突っ込んだすべてのコードをUPしていただけると
ありがたいのですが。。。すみませんお願いします。
887 :
デフォルトの名無しさん :2005/08/07(日) 22:41:10
よくEXEにアイコンみたいなイメージがついてるのがありますが それはどうすればできますか?ウィンドウクラスの登録とかの時に Iconの設定を変えればかわるのはわかってるんですがウィンドウを作成 しない場合はどうすればできますか? 現在int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow) の中ですぐにtxtよみこんでいろいろしててウィンドウを作る理由がありません。 そういった場合はどうすればできますか? どなたか教えていただければ幸いです )
何もかもスレ違いなんだよボケが
>>887 (・3・)エェー 釣りなんか書くなYO!
だからぼるじょあはやめろとあれほど
あと100レスほどの辛抱だ
>>892 100レスほどで内藤ホライゾンな訳だが
>>885 画像とか読み込み関数とかって全部自前?
画像形式の指定とかないの?
野球.txtがあるなら配列<もしくはリスト>に読む while("終わり"になるまで) 配列<もしくはリスト>に背番号、名前の入力操作を行う 配列<もしくはリスト>から野球.txtに"消去"以外のものを書き出す ってだけだ
>>895 >
>>885 > 画像とか読み込み関数とかって全部自前?
はいそうです。
> 画像形式の指定とかないの?
画像形式の指定はR,G,Bがそれぞれ1バイトで表現されているデータということでした。
.rgbファイルです。
追記ですが、ロイドアルゴリズムを用いてコードブックを作るとありますが、
最悪の場合、データからランダムに代表ベクトルを選出したコードブックでもいいので誰か
お願いできませんか。ぜひお願いします。
899 :
863 :2005/08/08(月) 14:46:29
なんか偽物がたくさんいるようですが…
>>879 さんの言う通りで、できればそのまんま表現していただきたいです
なんとか明日くらいまでには出来ませんでしょうか?
>>899 お前の書き込みはどれだ?番号で言ってくれ
901 :
863 :2005/08/08(月) 16:22:18
>>901 こちらからの質問は無視という事か
よくわかった
>>899 (・3・)アルェ~ まだいたのかYO!
時間が無いという割には質問投げっぱなし。 気分のいいものじゃないな。
>>901 時間をかけて作ったコード出してもらっておいて、そいつを無視かよ!!!
そうは言うがな大佐 性欲をもてあます
電光掲示板をそのまんま表現ってどういう意味?
いい加減スルー汁
だからぼるじょあはやめろとあれほど
[1] 授業単元: プログラミング言語C [2] 問題文(含コード&リンク): Cプログラムからすべてのコメントを除去するプログラムを書け。 引用符で囲まれた文字列や文字定数を正しく扱うことを忘れないこと。 Cのコメントは入れ子になっていない。 [3] 環境 [3.1] OS: Windows / Linux [3.2] コンパイラ(バージョン): LSI C / gcc [3.3] 言語:ANSI C [4] 期限:2005年08月10日 [5] その他の制限:どこまで習っているか、等々
>>911 ケータイで書いてたら意味不明になってしまった。(+_+)
#include<stdio.h>
int unko(){
int c=fgetc(stdin);fputc(c,stdout);return c;}
int main(void){int c;
while(1) {
c=fgetc(stdin);
if(c==EOF)break;
if(c=='"'){
fputc(c,stdin);
while(1) {c=unko();
if(c=='\\') fgetc(stdin);
else if(c=='"') break;}continue;}if(c=='\''){
fputc(c,stdout);
c=unko();
if(c=='\\') unko();unko();
}if(c=='/') {
c=fgetc(stdin);
if(c=='/'){while(c==EOF||c=='\n'||c=='\r')c=fgetc(stdin);
if(c!=EOF)fputc(c,stdout);continue;}if(c=='*'){
while(1){while(c!='*')c=fgetc(stdin);c=fgetc(stdin);
if(c=='/')break;
}}fputc('/',stdout);fputc(c,stdout);
}}
return 0;
}
914 :
912 :2005/08/09(火) 07:45:35
あーダメだ。間違えまくってる。
>>912 は危ないから実行しないように!
>>918 >引用符で囲まれた文字列や文字定数を正しく扱うことを忘れないこと。
がちゃんと処理されていないようですが。
916 :
913 :2005/08/09(火) 10:08:21
917 :
913 :2005/08/09(火) 10:16:39
[1] 授業単元: [2] f(x)=4・x-x・e^(2x)+2=0の根をニュートン・ラフソン法で求めよ。ただし初期値 x1=1 収束判定定数ε=0.00001 とする。 ガウスの単純消去法、ガウスの消去法、改頂コレスキー法、LU分解法のどれかにより次の連立一次方程式の解を求めろ。 │623│ │6│ │234│(x) = │9 │ │347│ │15│ θ=0°、10°、20°、30°、40°~90°までのsinθの値を与え、線形、ラグランジュ、ニュートン、スプラインのどれかの補間法によりθ=5,15,・・・・・85 °における値を補間して誤差を求めろ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):borland C/C++ 5.5 [3.3] 言語:C/C++どちらでも可 [4] 8月15日 [5] その他の制限:あまりない 3問あります。友達もみんなできません。全員であきらめる前に皆様に頼りに来ました。お願いします。
2問めは行列がずれてますねすいません。 │623│ │6 │ │234│(x)= │9 │ │347│ │15 │
すいません・・・なんどやってもずれます 3行3列X(x) = 3行1列 です。
>>918 とりあえず1問目
double newton_raphson(double x, double (* f)(double), double (* fprime)(double))
{
const double e = 0.00001;
double next = x - f(x) / fprime(x);
if (std::fabs(next - x) <= e) return next;
return newton_raphson(next, f, fprime);
}
double f(double x)
{
return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x)
{
return 4 - (1 + 2 * x) * std::exp(2 * x);
}
おっと、呼び出し(main内?)はこんな感じで double x = newton_raphson(1, f, fprime); std::cout << "x = " << x << std::endl << std::endl;
>>918 3問目。ラグランジュ補間法による。
#include <stdio.h>
double lagrange_interpolation(double* data, unsigned int n, double x) {
int i, j;
double result = 0., temp;
for (i = 0; i < n; ++i) {
temp = 1.0;
for (j = 0; j < n; ++j)
temp *= (i == j ? 1 : (x - j) / (i - j));
result += data[i] * temp;
}
return result;
}
int main(void) {
double data[] = {0., 0.17364817766693033, 0.3420201433256687, 0.5, 0.6427876096865393, 0.766044443118978, 0.8660254037844386, 0.9396926207859083, 0.984807753012208, 1.};
int i;
const unsigned int n = sizeof(data) / sizeof(data[0]);
for (i = 5; i <= 85; i += 10)
printf("sin%d°≒%f\n", i, lagrange_interpolation(data, n, i / 10.));
}
925 :
デフォルトの名無しさん :2005/08/09(火) 16:43:58
>>921 様
感謝感激です 本当にありがとうございます 3番はそのままコンパイルが通りました。
1番なのですが、
#include<stdio.h>
#include<math.h>
double main(double x = newton_raphson(1, f, fprime);
std::cout << "x = " << x << std::endl << std::endl; )
{
double newton_raphson(double x, double (* f)(double), double (* fprime)(double)) ;
{
const double e = 0.00001;
double next = x - f(x) / fprime(x);
if (std::fabs(next - x) <= e) return next;
return newton_raphson(next, f, fprime);
}
double f(double x)
{
return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x) ;
{
return 4 - (1 + 2 * x) * std::exp(2 * x);
}
return 0;
}
そのまま通らなかったのでいろいろいじったけどなんかエラーが三つでるのです。もしよければアドバイスおねがいします。
エラー E2293 suutikaiseki1.c 4: ) が必要
エラー E2141 suutikaiseki1.c 5: 宣言の構文エラー
エラー E2040 suutikaiseki1.c 5: 宣言が正しく終了していない
すげぇジョークだなぁおい。
main内って、仮引き数リスト内にコード書くなんて思いもつかなかったぜ。
>>925 楽しいネタをありがとよ。
928 :
921 :2005/08/09(火) 17:27:38
>>925 #include <iostream>
#include <cmath>
int main()
{
std::cout << "x = " << newton_raphson(1, f, fprime) << std::endl;
return 0;
}
っていうか実はCで書けって話だった?
その場合は
#include <stdio.h>
#include <math.h>
int main() { printf("x = %f\n", newton_raphson(1, f, fprime)); return 0; }
あとは std:: を全て削除で。
929 :
デフォルトの名無しさん :2005/08/09(火) 17:48:57
>>928 様
#include <iostream>
#include <cmath>
int main()
{
std::cout << "x = " << newton_raphson(1, f, fprime) << std::endl;
return 0;
}
double newton_raphson(double x, double (* f)(double), double (* fprime)(double))
{
const double e = 0.00001;
double next = x - f(x) / fprime(x);
if (std::fabs(next - x) <= e) return next;
return newton_raphson(next, f, fprime);
}
double f(double x)
{
return 4 * x - x * std::exp(2 * x) + 2;
}
double fprime(double x)
{
return 4 - (1 + 2 * x) * std::exp(2 * x);
}
致命的エラー F1003 c:\Borland\Bcc55\include\stdcomp.h 5: error 指令: Must use C+
+ for STDCOMP.H
なんどもすいません。致命的なエラーが一つです。後期からはしっかり反省して勉強したいです(;・Д・)
CでもC++でもどっちもいいはずです。2年のときにはC言語の授業があって、なんとかそれは単位をとったのですが、 3年の数値解析学からぜんぜんついていってないんですorz。 レポートだけの授業なんでレポートをだせば単位は取れるらしいです。必修ではないけどなんとかしなければ。
>>929 まさか、ファイル末尾が".c"だったりしないだろうな。
>>931 拡張子をcからcppにしましたこっそり。それでもエラーみっつです。orz
エラー E2268 suutikaiseki1.cpp 5: 未定義の関数 'newton_raphson' を呼び出した(関
数 main() )
エラー E2451 suutikaiseki1.cpp 5: 未定義のシンボル f(関数 main() )
エラー E2451 suutikaiseki1.cpp 5: 未定義のシンボル fprime(関数 main() )
*** 3 errors in Compile ***
>>932 関数の順番をfとfprime→newton_raphson→mainの順にしろ。(fとfprimeは順不同)
関数を呼ぶ前までに呼び出す関数が見つかっていなければならないから。
>>933 関数の順番を変えるというのが私にはわからないです。馬鹿ですいませんorz
936 :
918 :2005/08/09(火) 18:37:38
学校のパソコン室しまるんで今日は帰ります。自宅だとパソコンあってもネットないんです。 短い間でしたがいろいろアドバイスくれた人に感謝します。 いままでずっと放置だったのに、せっかくやろうとしてるので、締め切りまで頑張ってみたいと思います。 本当に僕みたいなのでも助けてくれようとする人がいて感動しました(;´Д`) 今日はありがとうございました。また明日くるかもしれないです。
>>929 2行目と3行目の間(includeの直後・mainの直前)に以下の3行を挿入してくれ。
double newton_raphson(double x, double (* f)(double), double (* fprime)(double));
double f(double x);
double fprime(double x);
これは
>>933 の方法とは別の方法だけど。
あと、エラーの意味もちょっとは考えてみそ(上達したいのなら)。
5行目でエラーでてるわけだけど、それより上の部分(1~4行目)には
newton_raphson とか f とか fprime とか一度も登場してないでしょ。
だからコンパイラ様にとっては5行目の時点では未定義なの。
コンパイラ様にきちんとわかってもらうために上記の方法か
>>933 の方法のどちらかを使う。