ぼるじょあがC/C++の宿題を片づけますYO! 41代目
1 :
ぼるじょあ ◆yBEncckFOU :
05/02/28 07:07:33 (・3・)アルェー 一回おきに登場することにしたC++房のぼるじょあですYO!
わからない宿題を片づけますYO!
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 【歴代スレは
>>2-13 】
2 :
ぼるじょあ ◆yBEncckFOU :05/02/28 07:09:11
3 :
ぼるじょあ ◆yBEncckFOU :05/02/28 07:10:45
4 :
ぼるじょあ ◆yBEncckFOU :05/02/28 07:11:30
5 :
ぼるじょあ ◆yBEncckFOU :05/02/28 07:14:17
ぼるじょあ◆yBEncckFOU は共同体で連続体で群生体だから
無限の知識と無尽蔵の体力を持ってるんだYO 24時間365日、いつでも質問かかって来いYO
(・3・) アルェー こっちが嫌になるほど質問しろYO
ぼるじょあ◆yBEncckFOU はコテハンじゃないYO
名前欄に「ぼるじょあ#ぶるじょあ」で、キミも今日から ぼるじょあ◆yBEncckFOU だYO
ぼるじょあ◆yBEncckFOU の心得
良い子には優しく、悪い子はむっしっし、自作自演はちょっとだけだYO
ぼるじょあ ◆yBEncckFOU のフリーソフトとか置いてくれてるHPだYO
http://www.geocities.co.jp/SiliconValley/3908/
6 :
デフォルトの名無しさん :05/02/28 07:27:15
unsigned char array[8]; ←この書き方ってダメ? Error E2040 ..\lab3.c 18: Declaration terminated incorrectly ↑このエラーはどういうことでしょうか?
7 :
デフォルトの名無しさん :05/02/28 07:29:25
>>1 実生活では誰にも相手してもらえないから、せめてここではかまってもらいたくて
こんなクソスレ立てるんだね
どこまでも迷惑な奴だ
10 :
デフォルトの名無しさん :05/02/28 09:09:56
>7 よくわかんないです。 unsigned char array[8]; この8を16に変えたんだけど、同じエラーが出ました。 よかったら、もう少し細かく説明もらえませんか?
>>10 前の行がきちんと終了していないか、副作用のあるマクロ定義があるかも試練。
周辺のソースを貼ってみるよろし。
但し、宿題でないのならスレ違い。
>>6 直訳すると
「失敗 E2040 ..\lab3.c 18: 宣言が間違って終了した」
心当たりはないですか?
すぐ上の行でセミコロンがないとか・・・
13 :
デフォルトの名無しさん :05/03/01 01:52:09
>>6 コンパイルしたけどそんなエラーでなかった。
15 :
デフォルトの名無しさん :05/03/01 11:40:14
[1] 授業単元: OS [2] 問題文(含コード&リンク): 問題文というか、宿題の中の分からない事なのですが質問させてください。 1.ユーザーから実行ファイル名を含むコマンドラインを受け取り、いずれかのexecにより実行せよ。 (例 "emacs test.txt"等と入力されたらそれを実行する。 だけど、プログラムによっては引数が複数あるのでどのexecを使えばいいのでしょう?) 2.もし、コマンドラインの最後に"&"がある場合は特殊な動作をせよ。 (例 "emacs test.txt &"等 strtokを使っているのですが、最後のトークンを特定して引き出すのはどうすればよいのでしょうか) 変な質問の形になってしまいましたがよろしくお願いします。 [3] 環境 [3.1] OS: UNIX [3.2] コンパイラ(バージョン): G++ [3.3] 言語:C
すみません。orz とりあえず1はなんとかしますので2をお願いします。 シェルもどきのような簡単なコマンドプロンプトを作る宿題なのですが、 fgets( cline, 128, stdin ); cline[strlen(cline)-1] = '\0'; のような形でユーザーからclineにスペースによって分けられた文字列を受け取ります。 それをstrtokで一つ一つ読み込んでいるのですが、”もし最後の文字列が"&"なら〜をせよ”と書いてありまして、 最後のトークンだけ先に引き出すのは可能なのかお聞きしたかったのです。 それともやはり、ループで一つ一つ呼んでNULLになったらその一つ手前が最後、みたいにしなければならないのでしょうか。
結局すべてのトークンが揃わないと何もできないんだから 全部トークンに分けてから最後が&か見ればいいと思う
分かりました、そうします。 ありがとうございます。 あと、すみませんができればもう一つお願いします。 execv関数を使いたいのですが、 char cline[128]; fgets( cline, 128, stdin ); で得た文字列をchar* []型にするにはどうすればよいのでしょうか。 どのサイトを見てもargv用だと書いてあって、何を試してもcannot convertかinvalid initializerしか出てくれません。orz
// トークン数がn個までとわかってるなら↓ char** token; token=malloc(sizeof(char**)*n); for(i=0;i<n;i++){ token[i]=malloc(128); } // なんか処理 // 解放 for(i=n-1;i>=0;i--){ free(token[i]); } free(token);
21 :
デフォルトの名無しさん :05/03/01 12:51:08
LNK2005: _DllMain@12 がでます。たすけてください
↑ちゃんとプロジェクト作り直す
23 :
デフォルトの名無しさん :05/03/01 13:14:44
includeに入るDOS.hって何でしょうか?
↑↑ms-dos寄りの関数のヘッダ int21とかエロいのが入ってる
最近のDOS.Hにはレジスタ関連の構造体入ってないんやね
リアルタイムにネットワークの転送量を表示したいのですが、 式はどうなるのでしょうか? dwInOctets dwInUcastPkts dwInNUcastPkts は表示できるのですが、Octetsは通信してない時も値が入ってますし・・ どうかよろしくお願いします。
28 :
Cとアセンブリの混合 :05/03/02 12:03:16
charデータをストリーミングファイルから読み16ビット unsigned numberのodd parity を計算して、 8ビット(7ビット+parity bit)をアウトプット書き出す作業をして ボーランドプロジェクトとしてコンパイルするという cコード書けという問題です。 "Odd parity" forces the number of "1s" to be odd including the parity bit. Some examples are: x1001110 -> 11001110 x0011001 -> 00011001 どなたかヒントください。
>>28 どこがCとアセンブリの混合なんだ?
バカ?
アセンブリはアセンブリでも、6502のアセンブリで書いてやれw
33 :
デフォルトの名無しさん :05/03/02 15:24:50
ここのスレは宿題片付けんじゃねーのか??
34 :
デフォルトの名無しさん :05/03/02 15:26:29
テンプレも読めん奴のことなど知らん
35 :
デフォルトの名無しさん :05/03/02 15:28:19
いきがってますねー。
ぼるじょあが片付けるのであって、俺らは知らんよ
37 :
>>28 :05/03/02 15:38:03
こいつらは分かってねーだけだよ。親切な私が解いて差し上げました。 この問題は一つ一つのビットをxorでmaskしたりするのなんかもある。 unsigned short mask; unsigned int result = 0; for ( mask = 0x40; mask; mask >>= 1 ) ここまでの結果はbitsの中の1の数によって0になったり1になったりする。 { result ^= !!(mask & value); ←odd parity } if ( odd ) { result = !result; } value |= result << 7; unsigned short parity(unsigned short value, int odd) { /* ... */ return value; } parity(0x4E,1) = 0xCE ←test results parity(0x19,1) = 0x19
38 :
デフォルトの名無しさん :05/03/02 19:00:04
[1] 授業単元:ファイル処理 [2] 問題文(含コード&リンク):下記参照 [3] 環境 [3.1] OS:汎用 [3.2] コンパイラ(バージョン):gcc [3.3] 言語:c++ [4] 期限:無期限 [5] その他の制限:なし 問題文: CSV形式のテキストファイルを読み込み、2次元配列に展開しなさい。 1行のフィールド数は行ごとに可変個であり、フィールドには数字が格納されているものとする。 メモリー効率を考慮して配列のサイズは最小限に留める事。 10, 20, 30 20, 30, 40, 50 30, 40, 50 よろしくお願いします。
39 :
デフォルトの名無しさん :05/03/02 20:15:53
10,,30,30 とか 20,40,50, とか 12,13,3F,ab とか あったらどうすればいいの?
41 :
デフォルトの名無しさん :05/03/02 20:22:38
>>39 >1行のフィールド数は行ごとに可変個であり、フィールドには数字が格納されているものとする。
数字というのは10進数のことです。
文面から察するに空のフィールドは存在しないと思います。
43 :
デフォルトの名無しさん :05/03/02 21:55:52
AからZの文字を1から26に変換しなさい。 また、27はAA,28はABとなります。 上記の変換が出来れば逆の変換も考えなさい。 さっぱり出来ないです…
>>43 char c = 'A';
printf("%d", c-'A'+1);
>>43 >また、27はAA,28はABとなります。
AAが27になるんじゃなくて?
どっちにしても逆の変換もあるなら同じか
>>43 #include <stdio.h>
#include <string.h>
#include <ctype.h>
unsigned alpha2int(const char * s) {
unsigned n = 0;
const char * const alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (; isupper(*s); ++s) {
n *= 26;
n += strchr(alpha, *s) - alpha + 1;
}
return n;
}
int main(void) {
char s[256];
while (scanf("%255s", s) == 1)
printf("%s -> %d\n", s, alpha2int(s));
return 0;
}
>>44 失礼しました。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):VC++
[3.3] 言語:C/C++/どちらでも可
[問題]
AからZの文字を1から26に変換しなさい。
また、AAは27,ABは28となります。
上記の変換が出来れば逆の変換も考えなさい。
英数から数値は、
>>45 >>46 のレスで理解できました。
ありがとうございます。
数値から英数を自分なりに考えたんですが
26進数でやれば良いんでしょうか?
それだと、0〜25になるし・・・
'A'+0〜25
[1] 授業単元:C言語 [2] 問題文:スキュターレ暗号文を以下に示すように自動解読するプログラム Level1B.Cを作成しなさい。 [3] 環境 [3.1] OS: unix [3.2] コンパイラ [3.3] 言語:C [4] 期限:今日の朝まで・・ 例: 原文 あすミケーネでアテネぐんをむかえうつ 暗号文 あでをすアむミテかケネえーぐうネんつ 暗号文 さいれがいてるんしんよばはをうろよとにう 実行結果 何文字ごとに読みますか?3 さがるんはろにいいんよをようれてしばうと 何文字ごとに読みますか?4 さいしはよいてんがとれるようにがんばろう 明日の再試の問題です、 どなたかお助けを・・さっぱりわかりません。3問あります>< 夜分遅くにすみませんが、お願いします!!!!
51 :
2問め :05/03/03 01:36:05
[1] 授業単元:C言語 [2] 問題文:吉○家のメニューデータを管理できる構造体を作成し、以下のように必要データランキング を収集するプログラムlevel2a.c(main)level2b.c(func:並替表示関数)、level2.hを作成しなさい [3] 環境 [3.1] OS: unix [3.2] コンパイラ [3.3] 言語:C [4] 期限:今日の朝まで・・
52 :
2問め :05/03/03 01:36:41
豚丼 583kcal 320円 牛焼肉丼 785kcal 420円 牛カレー丼 510kcal 290円 焼鳥丼 740kcal 380円 豚キムチ丼 605kcal 370円 実行結果 吉○屋メニューランキング 1:カロリーランキング 2:安価ランキング etc:終了 No.?1 品名 カロリー 値段 牛焼肉丼 785kcal 420円 焼鳥丼 740kcal 380円 豚キムチ丼 605kcal 370円 豚丼 583kcal 320円 牛カレー丼 510kcal 290円 吉○屋メニューランキング 1:カロリーランキング 2:安価ランキング etc:終了 No.?2 品名 カロリー 値段 牛カレー丼 510kcal 290円 豚丼 583kcal 320円 豚キムチ丼 605kcal 370円 焼鳥丼 740kcal 380円 牛焼肉丼 785kcal 420円
53 :
3問め :05/03/03 02:03:21
[1] 授業単元:C言語 [2] 問題文:Mバーガーのメニューデータより注文したい商品番号と数量と時刻に対する 売上分布の結果を出力するプログラムlevel3a.c(main)、level3b.c(func:集計用関数)level3.hを作成せよ [3] 環境 [3.1] OS: unix [3.2] コンパイラ [3.3] 言語:C [4] 期限:今日の朝まで・・
54 :
3問め :05/03/03 02:05:39
Mバーガーメニューデーター 甘辛チキンバーガーセット 504円 ベーコンエッグバーガーセット 556円 エビカツバーガーセット 525円 てりやきバーガーセット 504円 フィシュバーガーセット 504円 ハンバーガーセット 399円 チーズバーガーセット 399円 実行結果 1:甘辛チキンバーガーセット 504円 2:ベーコンエッグバーガーセット 556円 3:エビカツバーガーセット 525円 4:てりやきバーガーセット 504円 5:フィシュバーガーセット 504円 6:ハンバーガーセット 399円 7:チーズバーガーセット 399円 0:集計 何番?6 数量?3 何時?12
55 :
3問め :05/03/03 02:06:18
1:甘辛チキンバーガーセット 504円 2:ベーコンエッグバーガーセット 556円 3:エビカツバーガーセット 525円 4:てりやきバーガーセット 504円 5:フィシュバーガーセット 504円 6:ハンバーガーセット 399円 7:チーズバーガーセット 399円 0:集計 何番?6 数量?4 何時?13 1:甘辛チキンバーガーセット 504円 2:ベーコンエッグバーガーセット 556円 3:エビカツバーガーセット 525円 4:てりやきバーガーセット 504円 5:フィシュバーガーセット 504円 6:ハンバーガーセット 399円 7:チーズバーガーセット 399円 0:集計 何番?5 数量?2 何時?20 1:甘辛チキンバーガーセット 504円 2:ベーコンエッグバーガーセット 556円 3:エビカツバーガーセット 525円 4:てりやきバーガーセット 504円 5:フィシュバーガーセット 504円 6:ハンバーガーセット 399円 7:チーズバーガーセット 399円 0:集計 何番?0
56 :
3問め :05/03/03 02:08:05
1:甘辛チキンバーガーセット 2:ベーコンエッグバーガーセット 3:エビカツバーガーセット 4:てりやきバーガーセット 5:フィシュバーガーセット 6:ハンバーガーセット 7:チーズバーガーセット どのデータ売上分布を見たいですか?5 0時 0個 : 1時 0個 : 2時 0個 : 3時 0個 : 4時 0個 : 5時 0個 : 6時 0個 : 7時 0個 : 8時 0個 : 9時 0個 : 10時 0個 : 11時 0個 : 12時 0個 : 13時 0個 : 14時 0個 : 15個 0個 : 16時 0個 : 17時 0個 : 18時 0個 : 19時 0個 : 20時 2個 : 21時 0個 : 22時 0個 : 23時 0個 : フィッシュバーガーセット売上個数:2個 フィッシュバーガーセット売上金額:1008円 0時 0個 : 1時 0個 : 2時 0個 : 3時 0個 : 4時 0個 : 5時 0個 : 6時 0個 : 7時 0個 : 8時 0個 : 9時 0個 : 10時 0個 : 11時 0個 : 12時 3個 : 13時 4個 : 14時 0個 : 15個 0個 : 16時 0個 : 17時 0個 : 18時 0個 : 19時 0個 : 20時 2個 : 21時 0個 : 22時 0個 : 23時 0個 : ハンバーガーセット売上個数:7個 ハンバーガーセット売上金額:2793円 3問目が長すぎで読みづらくなってすみません。。 朝まで待ってみます。どうか〜!!
おまえマルチやったんかい
>>57 氏
すいません、さっきのスレにも書きました。
今日のテストがんばります!
> cat level2.h #include <stdio.h> #include <stdlib.h> struct menu { char name[16]; int cal; int val; }; void display(struct menu *m, int n); void func(struct menu *m, int n, int f);
> cat level2a.c #include "level2.h" struct menu yoshimaruya[] = { { "豚丼", 583, 320 }, { "牛焼肉丼", 785, 420 }, { "牛カレー丼", 510, 290 }, { "焼鳥丼", 740, 380 }, { "豚キムチ丼", 605, 370 } }; int main(void) { int n, f; n = sizeof(yoshimaruya) / sizeof(struct menu); display(yoshimaruya, n); while(1){ printf("吉○屋メニューランキング\n"); printf("1:カロリーランキング\n"); printf("2:安価ランキング\n"); printf("etc:終了\n"); printf("No.?"); scanf("%d", &f); switch(f){ case 1: func(yoshimaruya, n, 1); break; case 2: func(yoshimaruya, n, 2); break; default: return 0; } } }
> cat level2b.c #include "level2.h" void display(struct menu *m, int n) { int i; for(i = 0; i < n; i++){ printf("%-16s %5dkcal %5d円\n", m[i].name, m[i].cal, m[i].val); } } int sortfunc1(const void *a, const void *b) { return ((struct menu *)b)->cal - ((struct menu *)a)->cal; } int sortfunc2(const void *a, const void *b) { return ((struct menu *)a)->val - ((struct menu *)b)->val; } void func(struct menu *m, int n, int f) { if(f == 1) qsort(m, n, sizeof(struct menu), sortfunc1); else qsort(m, n, sizeof(struct menu), sortfunc2); display(m, n); }
>level2a.c #include <stdio.h> #include "level2.h" int main(void) { MenuData md[5] = {{"豚丼", 583, 320}, {"牛焼肉丼", 785, 420}, {"牛カレー丼", 510, 290}, {"焼鳥丼", 740, 380}, {"豚キムチ丼", 605, 370}}; int i; while (1) { //入力待ち printf("\n吉○屋メニューランキング\n1:カロリーランキング\n2:安価ランキング\netc:終了\nNo.?"); scanf("%d", &i); switch (i) { case 1: case 2: //並び替え func(md, i); break; default: return 0; } } }
#include <stdio.h> #include "level2.h" void func(MenuData *lpmd, int fSort) { int i, j; MenuData mdTemp; switch (fSort) { case 1://カロリーランキング for (i = 0; i < 4; i++) { for (j = i + 1; j < 5; j++) { if (lpmd[i].Calorie < lpmd[j].Calorie) { mdTemp = lpmd[i]; lpmd[i] = lpmd[j]; lpmd[j] = mdTemp; }}} break; case 2: //安価ランキング for (i = 0; i < 4; i++) { for (j = i + 1; j < 5; j++) { if (lpmd[i].Price > lpmd[j].Price) { mdTemp = lpmd[i]; lpmd[i] = lpmd[j]; lpmd[j] = mdTemp; }}} break; } //結果表示 printf("品名 カロリー 値段\n"); for (i = 0; i < 5; i++) { printf("%-10s%6dkcal%6d円\n", lpmd[i].Name, lpmd[i].Calorie, lpmd[i].Price); } return; }
>level2.h typedef struct _MenuData { char *Name; int Calorie; int Price; } MenuData; void func(MenuData *, int);
>level3a.c #include <stdio.h> #include "level3.h" int main(void) { MenuData md[7] = {{"甘辛チキンバーガーセット", 504, 0}, {"ベーコンエッグバーガーセット", 556, 0}, {"エビカツバーガーセット", 525, 0}, {"てりやきバーガーセット", 504, 0}, {"フィッシュバーガーセット", 504, 0}, {"ハンバーガーセット", 399, 0}, {"チーズバーガーセット", 399, 0}}; int i, amount, hour; while (1) { //入力待ち for (i = 0; i < 7; i++) { printf("\n%d:%-29s%5d円", i + 1, md[i].Name, md[i].Price); } printf("\n0:集計\n何番?"); scanf("%d", &i); switch (i) { case 0://集計 func(md); return 0; case 1: case 2: case 3: case 4: case 5: case 6: case 7: //数量と時間の入力待ち printf("数量?"); scanf("%d", &amount); do { printf("何時?"); scanf("%d", &hour); }while (!(hour >= 0 && hour <= 23)); md[i - 1].Amount[hour] += amount; break; } } }
>level3b.c #include <stdio.h> #include "level3.h" void func(MenuData *md) { int i, j, total; while (1) { //入力待ち for (i = 0; i < 7; i++) { printf("\n%d:%s ", i + 1, md[i].Name); } printf("\nどのデータ売上分布を見たいですか?"); scanf("%d", &i); switch (i) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: //集計表示 --i; total = 0; for (j = 0; j < 24; j++) { if (j % 4 == 0) { printf("\n"); } printf("%2d時:%4d個 : ", j, md[i].Amount[j]); total += md[i].Amount[j]; } printf("\n%s売上個数:%d個\n%s売上金額:%d円\n", md[i].Name, total, md[i].Name, md[i].Price * total); break; default: return; } } }
>level3.h typedef struct _MenuData { char *Name; int Price; int Amount[24]; } MenuData; void func(MenuData *);
>>500 氏
ありがとうございました!間に合いそうです。
がんばるぞぉぉー!本当に夜分遅くから朝早くにかけてお世話になりました。
本当に感激です、、ここはイイ板ですね。イイ住人さん達がいるから
みなさん、問題をたくさん張ったりたくさん書き込みしちゃって
見ずらしくなしたり色々と迷惑かけちゃってすいません。迷惑かけた分
自分はテストがんばってきます。ありがとうございましたー!!!!!
>>500 氏
ありがとうございました!間に合いそうです。
がんばるぞぉぉー!本当に夜分遅くから朝早くにかけてお世話になりました。
本当に感激です、、ここはイイ板ですね。イイ住人さん達がいるから
みなさん、問題をたくさん張ったりたくさん書き込みしちゃって
見ずらしくなしたり色々と迷惑かけちゃってすいません。迷惑かけた分
自分はテストがんばってきます。ありがとうございましたー!!!!!
500?
これからはうpろーだーを使うこと!
76 :
ななし :05/03/03 17:44:41
levele3.h levele3a.c levele3b.c levele2.h levele2a.c levele2b.c って間違ってない?コンパイル出来ないけど。大丈夫ね?
(´・ω・`)
,,,,,,,,,,,,,,,,,,,, /": : : : : : : : \ /-─-,,,_: : : : : : : : :\ / '''-,,,: : : : : : : :i /、 /: : : : : : : : i ____________ r-、 ,,,,,,,,,,、 /: : : : : : : : : :i / L_, , 、 \: : : : : : : : :i / 先生に気づかれたら /●) (●> |: :__,=-、: / < 負けかなと思ってる l イ '- |:/ tbノノ \ l ,`-=-'\ `l ι';/ \ 回答者(年齢・性別不詳) ヽトェ-ェェ-:) -r'  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヾ=-' / / ____ヽ::::... / ::::| / ̄ ::::::::::::::l `──'''' :::|
_....._{{ 〃 , - ' ,..、、.ヾ{{フ'⌒`ヽ、 / ,:', -‐‐` ´ '´⌒ヽ ヾ:、 . ,' ,'´ ,ィ ,ィ ,' , `ヽ', ',-< ,' .i /|. /.| { i, i, }. }_,,}} ! | ! .,'-.{ ! !|; |`、.}゙!.! |. ! ヽ. ', ', |Vァ=、゙、 `゙、!-_:ト,リ', l ! | ゙', ヽ、', l:!Kノ}. f:_.}i゙i: リ ! l ル' | l!iヾ- ' , .!__:ノ ゙ ,リ l リ'´ ほえ〜、知世ちゃん . ',|!!、 r‐┐ ` ノ' /,イ プログラミングわかんないよ〜 'i!゙、ヽ、 ゙ー' _, ィ,:',:''´ ゙:、ィ、jヾー::: 'iヘ ノ',リ ,、- '´ ヽ、゙、 { `>"、 /\\ ', } //`ヽ _,.. ----- 、_
>>79 気づかれた負けなのは質問者じゃないの
(´・ω・`)
昨日、再試の問題について質問したものです。無事出来ました! 親切な方々、どうもありがとうございます。。
おめでと。
お、無事に済んだのか。よかったな。
今日は赤飯だな。
俺の家では青飯だ
塩化銅
硫酸銅で良くない?
まぁ何か拘りがあるんだろうよ
91 :
デフォルトの名無しさん :05/03/04 19:49:17
92 :
デフォルトの名無しさん :05/03/04 19:49:46
問題文は、 「仮定」 #滑走路は1本。 #すべての離陸にかかる時間一定。 #すべての着陸にかかる時間一定。 #着陸と離陸にかかる時間が同じである必要はない。 #飛行機はランダムタイムでくる。 #飛行機がくる時間は確立によって与えられる。 #着陸の飛行機は離陸の飛行機より優先。 「インプット」 #着陸にかかる時間。 #離陸にかかる時間。 #着陸にくる飛行機の平均時間(確率) #離陸にくる飛行機の平均時間(確率) #クラッシュなしで着陸する飛行機がまてる最大の時間 #ランニングタイムの時間 「アウトプット」 output参照。
93 :
デフォルトの名無しさん :05/03/04 19:50:17
手伝ってください。よろしくお願いします。
ふつう、シミュレーションって書かない?
こいつは今までずっとシュミレーションと言ってきたのだろうか… 周りも指摘してやればいいのに
いや、
>>91 は趣味でやってるからそれであってる
シュミレーションで検索 約 513,000 件 シミュレーションで検索 約1,490,000 件
>>97 何からとってきたソースなのか書いていない。
しかも、件ってどういう単位だよ。どう比較すればよいのかも書いていない。
それが意味するところは?
役に立たない資料だな。
おまえしねよ。
趣味だから良いんだよ バーカ
100 :
デフォルトの名無しさん :05/03/04 21:28:32
間違ったところあった…
103 :
デフォルトの名無しさん :05/03/04 22:40:10
101さん最高ーーーーーーーーーー!!!!!まじで超うれしーーーーー!!!! 本当、ありがとうごさいました。
VC++でもいいのかな?
105 :
void :05/03/05 00:52:28
[1] 授業単元:C言語 [2] 問題文:32bitの掛け算 long型×long型→long型の配列[2]([0]は上位32bit、[1]は下位32bitが格納される) [3] 環境 [3.1] OS: Unix [3.2] コンパイラ:GCC [3.3] 言語:C [4] 期限:月曜まで
106 :
113 :05/03/05 02:49:17
>>105 long long 型を使っていいんだったら簡単なんだけど
配列に戻す意味がないような・・
#include<stdio.h>
static void
Mul( long p1, long p2, long pV[2] ) {
long long w = (long long)p1 * (long long)p2;
pV[ 0 ] = (long)( w >> 32 );
pV[ 1 ] = (long)w;
}
static void
Test( long p1, long p2 ) {
long v[ 2 ];
Mul( p1, p2, v );
printf( "%lx * %lx = %llx\n", p1, p2, ( (long long)v[ 0 ] << 32 ) | ( v[ 1 ] & 0x00000000ffffffffLL ) );
}
>>106 シフトと加算でやろうと思ったが、符号付きなので面倒くさくてヤメタ。
Cだとキャリーフラグもオーバーフラグも使えないのでマンドクセ。
>>107 出来ない言い訳をわざわざ書いて恥をさらしてる椰子発見
>>108 アホか。long longを使わないで何とかしてやろうと思ってたんだが、
ビール飲んだので頭が回らなくなったんだよ。
>>107 じゃないけど、出来たから晒してみまつ。
#include <stdio.h>
#include <stdlib.h>
#define LOWORD(l) ((unsigned short)(l))
#define HIWORD(l) ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))
int main(void)
{
unsigned long i, j, k[2];
unsigned long L1, L2, H1, H2, H1H2, H1L2, L1H2, L1L2;
unsigned long HH, HL, LH, LL;
scanf("%lx,%lx", &i, &j);
L1 = LOWORD(i);
H1 = HIWORD(i);
L2 = LOWORD(j);
H2 = HIWORD(j);
H1H2 = H1 * H2;
H1L2 = H1 * L2;
L1H2 = L1 * H2;
L1L2 = L1 * L2;
LL = LOWORD(L1L2);
LH = HIWORD(L1L2) + LOWORD(L1H2) + LOWORD(L1H2);
HL = HIWORD(LH) + HIWORD(L1H2) + HIWORD(L1H2) + LOWORD(H1H2);
HH = HIWORD(HL) + HIWORD(H1H2);
k[0] = (HH << 16) + LOWORD(HL);
k[1] = ((unsigned long)LOWORD(LH) << 16) + LL;
printf("0x%.8lx * 0x%.8lx = 0x%.8lx%.8lx\n", i, j, k[0], k[1]);
return 0;
}
>>110 これだと引数が負のとき、うまくいかないのでは?
>>105 long long を使わないとこんな感じかな
#include<stdio.h>
static void
_Mul( unsigned short p1[ 4 ], unsigned short p2[ 4 ], unsigned short pV[ 4 ] ) {
int i, j;
for ( i = 0; i < 4; i++ ) {
for ( j = 0; j + i < 4; j++ ) {
int wI = i + j;
unsigned int w = p1[ i ] * p2[ j ];
while ( w ) {
w += pV[ wI ];
pV[ wI++ ] = (unsigned short)w;
if ( wI >= 4 ) break;
w >>= 16;
}
}
}
}
>>112 の続き
staticvoid
Nanashi( long p, unsigned short pV[ 4 ] ) {
pV[ 0 ] = (unsigned short)p;
pV[ 1 ] = (unsigned short)( p >> 16 );
if ( p < 0 ) {
pV[ 2 ] = pV[ 3 ] = (unsigned short)-1;
} else {
pV[ 2 ] = pV[ 3 ] = 0;
}
}
static void
Mul( long p1, long p2, long pV[2] ) {
unsigned short w1[ 4 ];
Nanashi( p1, w1 );
unsigned short w2[ 4 ];
Nanashi( p2, w2 );
unsigned short wV[ 4 ];
wV[ 0 ] = 0;
wV[ 1 ] = 0;
wV[ 2 ] = 0;
wV[ 3 ] = 0;
_Mul( w1, w2, wV );
pV[ 1 ] = wV[ 1 ] << 16 | wV[ 0 ];
pV[ 0 ] = wV[ 3 ] << 16 | wV[ 2 ];
}
>>113 static void
Test( long p1, long p2 ) {
long v[ 2 ];
Mul( p1, p2, v );
long long w = ( (long long)v[ 0 ] << 32 ) | ( v[ 1 ] & 0x00000000FFFFFFFFLL );
printf( "%lx * %lx = %llx(must be %llx)\n", p1, p2, w, (long long)p1 * (long long)p2 );
}
115 :
デフォルトの名無しさん :05/03/05 07:06:27
116 :
デフォルトの名無しさん :05/03/05 07:10:53
117 :
デフォルトの名無しさん :05/03/05 10:07:48
116です。確率をdoubleで入れるの忘れてただけでした。 出来ました。
>>117 とりあえずcoutでlcとtcが逆になってるところある
あと<algorithm>は消し忘れた
119 :
デフォルトの名無しさん :05/03/05 16:38:41
何この糞コード。
つーか、関数ってコメントの後の大量の変数は一体何さ。
CGIってなんなのさ?
最後のprintfで結果を出力している部分にタグ出力を追加すればいいのかな。 それにしてもこのソースをリファクタリングしろって問題の方がふさわしい気がする。 この問題を出した先生を知りたい。
なんかかわいそうだな…
125 :
119 :05/03/05 17:44:36
このC++で作成したプログラムをCGI上で実行させるために書き換えたいのですが どうしたらいいか分かりません 関数の算術式ですが S=1−(V-V')/(V+V') V=√ i=n j=m Σ Σ V^2 i=0 j=0 ij という式を使っています
入出力だけちゃんとすればあとは弄らなくてもいいよ
先ずは入出力を整理して、出力は必要ならタグにするって処かな。
>>119 問題はやらなくていい。
そのソース書いたキチガイを滅多打ちにしてこい。
俺CGI言語って知ってるよ。 なんかDragonForceとかいうやつが考え出した言語らしいよ。 想像(妄想)するだけでプログラムができるみたい。 DragonForceの得意言語の中にも”CGI”ってあった。
130 :
119 :05/03/05 22:11:29
とりあえず入出力の部分をいじってみます みなさまの助言ありがとうございました
>>119 詳細きぼんぬ。
そのソースって自分で書いたわけじゃないの?
137 :
デフォルトの名無しさん :05/03/06 12:50:57
>>119 すごいなこのソース。
一番びっくりなのはC++と書いてありながらC++な記述がないところだな。
コメントは最近のCコンパイラだと微妙だし。
138 :
デフォルトの名無しさん :05/03/06 12:58:48
>>119 134行目、void Input_image(void);って意味を成してないな。
140 :
ゆう :05/03/06 13:24:23
大学でファイルをやってるんですが、 ファイルをオープン、文字を1文字づつ読み込んで表示、 クローズ、オープンの時のエラー処理あり。のプログラムを Cでお願いします。
それ以前に
>>140 はマルチですから!残念!
二度とくるなよ
143 :
ゆう :05/03/06 13:44:22
【質問テンプレ】 [1] C言語 [2] ファイルをオープン、文字を1文字づつ読み込んで表示、 クローズ、オープンの時のエラー処理あり。 [3] 環境 →テストに向けての暗記のためなし [3.1] OS: Windows [3.2] コンパイラの暗記したいだけなのでなし [3.3] 言語:C [4] 期限:今日の夕方 [5] その他の制限:簡単に、とにかく簡単に‥ すみません‥よろしくです‥
144 :
デフォルトの名無しさん :05/03/06 13:47:06
>>139 確かに、意味がわからないな。
ここまでくるとわざとやってるとしか思えないな。
>>143 他所で答えてもらってただろ
何が不満なんだ
146 :
デフォルトの名無しさん :05/03/06 13:50:24
簡単がいいっていってんだろ
どんなに簡単に書いても文句言ってくるだろうな
148 :
デフォルトの名無しさん :05/03/06 13:55:28
それはいえてるな‥
149 :
デフォルトの名無しさん :05/03/06 14:02:07
暗記云々とかわけわからん
しょうがないなぁ int main(void){ char b; long size,i; FILE* in = fopen(ファイル名,モード); if(in == NULL)exit(0); fseek(in,0,SEEK_END); size = ftell(in); fseek(in,0,SEEK_SET); for(i = 0;i < size;i++){ fread(&b,1,1,in); fputc(b,stdout); } fflush(stdout); if(fclose(in) < 0)puts("Close Fault"); return 0; }
>>150 size要らないじゃん。
fread()よりfgetc()の方が適当だろうし。
>>143 入力ストリームのクローズではエラーが発生しないよ。
>>143 >コンパイラの暗記したいだけなのでなし
ならスレ違い
>>151 ・ファイルをオープン、
・文字を1文字づつ読み込んで表示、
・(ファイルを)クローズ
・オープンの時のエラー処理あり。
の箇条書きでは
155 :
デフォルトの名無しさん :05/03/06 23:27:46
[1] 授業単元:ガウスの消去法 [2] 問題文:ガウスの消去法を用いて以下の連立一次方程式を解きなさい。 |2 -2 1| |x1| |-9| |x1| |-2| |1 -1 2| |x2|=|-3| 解 |x2|=| 3| |-1 3 1| |x3| |12| |x3| | 1| [3] 環境 OS:Rinux 言語:C どなたか教えて下さい。お願いします。
もうぐぐれば腐るほど出てくるのに・・・Σ( ゜д゜)釣りか
158 :
155 :05/03/06 23:44:49
>>155 Rinux というOSがある場所または購入できる店を教えてくれ
160 :
デフォルトの名無しさん :05/03/06 23:56:15
プログラミング上達させるコツってありますか?
>>160 1.質問する前に自分がすべきことを考え、実行すること
2.質問のタイミングを見極めること
3.質問の仕方、内容を充分に吟味すること
プログラミングに限らないと思うけどな
「物を知らない」ってのは何の障害にもならない。知らなきゃ調べればいいだけ。 でも「調べ方を知らない」ってのは致命的。おまいらの周りにもそういう奴いない?
[1] 授業単元: C [2] 問題文: 従業員番号、氏名、年齢を1組にsた構造体の変数をmain関数で宣言し、そのアドレスを副関数に引き渡す 副関数では、従業員番号、氏名、年齢を入力し、main関数にもどる。main関数で構造体の内容を表示する [3] 環境 [3.1] OS: win [3.2] コンパイラ(バージョン):Visual C [3.3] 言語:C よろしく おねがいします
>>164 #include <stdio.h>
typedef struct {int no; char name[64]; unsigned age;} EMPLOYEE;
int in(EMPLOYEE * e) {
return scanf("%d%63s%u", &e->no, e->name, &e->age) == 3;
}
int main(void) {
EMPLOYEE e;
if (!in(&e)) return 1;
printf("no == %d\nname == %s\nage == %u\n", e.no, e.name, e.age);
return 0;
}
ts
167 :
デフォルトの名無しさん :05/03/08 10:59:27
[1] 授業: Cプログラミング [2] 問題文 (下記のプログラムを参照して ) 次のオプションを加えよ。 wordcase(各語の最初の文字だけを大文字に変換 例:hello world -> Hello World) sentencecase(各文の最初の文字だけを大文字に変換 例: see spot. see spot run. -> See spot. See spot run.) reverseall (ファイルの文を逆に並べよ 例: the quick brown fox. -> .xof nworb kciuq eht) [3] 言語: C [4] 期限: 早ければ早いほどいいです。 #include <stdio.h> #include <ctype.h> int main(void) { FILE *f1 = fopen("file1.txt","r"); FILE *f2 = fopen("file2.txt","w+"); char buff[128]; int br; while( (br = fread(buff, 1,1, f1)) > 0) { int i; for (i = 0 ; i < br ; ++i) { buff[i] = toupper(buff[i]); } fwrite(buff, 1, br, f2); } fclose(f1) ; fclose(f2); return 0; }
>>167 関数だけ
void wordcase(char buff[128]){
int i;
for(i=0;i<128;i++){
if(buff[i]=='\0'){return;}
if(i==0 || (i>=1 && buff[i-1]==' ')){
if(buff[i]>=0x61 && buff[i]<=0x7A){
buff[i]=buff[i]-0x20;
}}}}
void sentencecase(char buff[128]){
int i;
for(i=0;i<128;i++){
if(buff[i]=='\0'){return;}
if(i==0 || (i>=1 && buff[i-2]=='.')){
if(buff[i]>=0x61 && buff[i]<=0x7A){
buff[i]=buff[i]-0x20;
}}}}
void reverseall(char buff[128]){
int i,l=0;
char rebuf[128];
for(i=0;i<128;i++){if(buff[i]=='\0'){break;}l++;}
for(i=0;i<l;i++){rebuf[l-i-1]=buff[i];}
for(i=0;i<l;i++){buff[i]=rebuf[i];}
}
169 :
デフォルトの名無しさん :05/03/08 13:15:10
>>168 ありがとうございます。
しかし、これをどうmainと関連付けたらいいのでしょうか?
自分で考えろ低脳
171 :
デフォルトの名無しさん :05/03/08 14:57:20
自分で考えろ無能
あんまり酷いこと言わないで下さい。 自殺したい心境なんですから。
つ[練炭]
>>174 するならWebカメ回しながら首吊ってくれ
文字列逆順に並べるやつ、たしかライブラリ関数であったよね。 なんだったかな・・・
>>171 しかし、パッと見むだの多いぷろぐらむだな。
std::reverseとかか? Cのstrrevなら非標準だし
181 :
デフォルトの名無しさん :05/03/09 14:29:07
>>178 すいませんmain関数は僕が作りました。
ぱっと見の無駄という部分を教えて頂ければ今後の勉強にもなるので
どうか教えてください m(_ _)m
同じインタフェースの関数を使い分けるんなら、
関数ポインタの配列にしろとか?
つか
>>167 のmainって、1文字ごとに fread なんかして、
しかも読んだ個数でループして、むしろこっちの方が無駄が多い。
ところで、171の 使用方法:%s の %s には何の意味があるんですか?
>>181 確かにパッと見で気になるできだったので列挙してみた。
main()
・使用方法表示のfprintf()は何度も呼び出さない。必要なら文字列リテラルの連結を使うといい。
・コマンドラインのargcのチェックとファイルオープンは別にした方が見通しがよくなる。
・ファイルオープンできないときにも使用方法を表示するのに、オプション番号が異常の時には何も表示が無くアンバランスな設計になっている。
・全く同じ構造のwhileループが3つもある。ループ内で分岐しても問題はないだろう。
a2i()
・atoi()を使わないのは何故? #使用禁止ということなら仕方ないが。
wordcase()
・この関数で長さ制限する理由は? 単純に文字終端に達するまでループすればよい。
#寧ろそうしないのであれば、128文字以上の行で誤動作することになる。
・文字をコードで表すのは判りにくい。単純に0x61ではなく'a'を使うほうがよい。
・toupper()を使わない理由は? そうでなくても0x20ではなく'a' - 'A'などとする方がよい。
sentencecase()
・行の先頭を見つけるロジックとして、行の先頭かピリオドを見つけたらフラグを立て、最初の英文字を大文字化したらフラグを落とすという戦略はどうだろう。
#wordcase()にも応用しやすいし、空白が複数来た場合にも対応できる。
reverseall()
・ここでは何故文字列終端を見つけるのにstrchr()を使わないのだろう。
・一次バッファを動的に確保するようにすれば、この関数も文字数制限が無くなる。
#このままでは128文字以上の行で破綻を来たす。
・一次バッファから戻すときにstrcpy()を使わない理由は?
全体
・一文でも複文化するのはいいが、その場合は一行野郎に拘る必要ないだろう。
>>183 おーほんとだ。これは拙いな。こんな感じにでもしとくのがいいね。
fprintf(stderr, "Usage: %s ...\n"
"option_number:\n"
"1:...\n"
"2:...\n"
"3:...\n", argv[0]);
ところで、なぜ171はfputs つかわないで、removeN なんてうんちな関数作ったんですか?
argc<2 || argc>3 これって argc != 3 でよくなくない?
ひどいでつね、これは
>186が何を言いたいのか判らない…
>>187 ですね。
コマンドラインの設計としては、オプション番号を先にしてファイル名は任意なのがいいけど。
#その場合、ファイル名が無ければ標準入力、複数あったらそれぞれのファイルを処理すると。
190 :
デフォルトの名無しさん :05/03/09 17:22:42
>>183-189 さま
指摘ありがとうございます。 m(_ _)m
>使用方法:%s の %s
これは
>>185 さんの指摘通りargv[0]を表示させようと思ってて書き忘れてました^^;
>argc<2 || argc>3
確かにargc!=3ですね^^;
精進します。。
>>189 なにがわからないんだ?
printf("%s\n",s); を fputs にかえりゃいいっつってるだけですが
192 :
デフォルトの名無しさん :05/03/09 18:16:04
そうすれば、removeN をわざわざ作らなくていい。わかった?
>>189
>>191 あのやり方だとreverseallで改行ごとひっくり返して
まずいことになりますけど。
なにいってんの?
>191-192 =>186? 阿呆は引っ込んでていいよ。
返信がとぎれたんですけど。 184 でやったみたく、ツッコミどころ満載のソースに偉そうに長文レスしてみろよ
>>197 ・opt_numのチェックをしとかんと。ついでに言えば、配列は0オリジンで仕様は1-3。
・sentencecase()のスイッチは','じゃなくて'.'じゃないと。
・で、そのスイッチ(sw)、グローバル変数にする理由は?
・改行コードの扱いは?
やべ、微妙なところで間違えだらけだな。 もういないのか?
ほへほへ、じゃ、次は君がソース作ってお手本みせてちょ 待ってるよ
>>197 他にもあるっぽいけど確認するの面倒だからパス。
>>201 指摘したことを念頭に丹念に書き直せば大体同じようなものになるよ、きっと。
・opt_numのチェックをしとかんと。ついでに言えば、配列は0オリジンで仕様は1-3。ー>reverseall 間違ってますね。確かにチェックはあった方がいいか ・sentencecase()のスイッチは','じゃなくて'.'じゃないと。ー>ほんとだ ・で、そのスイッチ(sw)、グローバル変数にする理由は? −>引数を減らそうと思って ・改行コードの扱いは? ー>いまいちわからん 作ってください、できるでしょ、すぐに。使用に詳しい人のソースが見たいなぁ
>>197 気になったところだけ追記。
・「間違え」ではなく「間違い」。
・exit()の引き数はEXIT_FAILUREなのにmain()からのreturnでは0。
・toupper()の*++pはおかしかないか?
・toupper()の*++pはおかしかないか? これは絶対いわれると思ったけど、なにがいけないの?
>>205 副作用完了点が曖昧コードは保守性を落とす。
それに、先にインクリメントしちゃダメじゃね?
けっきょく作る気はないのか。 おまけに日本語の指摘をされてお仕舞いとは。
じゃねぇや、スイッチの直後が先頭文字って仮定が問題なのか。
>副作用完了点が曖昧コードは保守性を落とす。 けど、だいたいの本は、優先順位が、前置演算が一番高かったりするわけなのだが・・・ 少し、スレを汚しすぎたのでこれぐらいにしときます。
>>208 そういうこと。
>>209 私なら別の文にするねぇ。
>>207 最早作る気ないよ。
だって既に二人も作ってるんだから0から作る楽しみがないし、
改修するにしても既に指摘済みだから同じことの繰り返しになっちゃう。
似たような別の問題があったらそんときはやらんでもないけど。
ついでに日本語の指摘をもう一言。
主語を省くなら、二文の主語を一致させないと混乱の元。
作る気がないのは私だけど、指摘されるのは私じゃない。
>>209 toupperは実装がマクロである可能性がある。特にCコンパイラでは。
[1] 授業単元:配列 [2] 問題文(含コード&リンク): 1.標準入力よりgetchar()関数で文字列を入力し、暗号文字にして出力する。暗号文字にするには%→&に、1→2に、A→BにZ→[に{→|に… とひとつずつずらすやり方で変換する(アスキーコード表による)ただし入力は0x20〜0x7dのにゅうりょくとし、それ以外は変換しない。また入力は50文字を限度とする。 2.2次元配列に各月の英単語を宣言時に初期化する。 各月の単語はjanuary〜decemberの文字列で。 しょりとして標準入力より月数を入力すれば表より対応する英単語を出力する。 これを999が入力されるまで繰り返す。 (入力は数値の入力とし、正常な月数でなければ"input ERROR!!"を出力する。また数値以外の場合のエラー処理は考えなくてもいい。) [3] 環境 [3.1] OS:WINNT [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:明後日 [5] その他の制限:printfやscanf程度の命令文で
>>213 (・3・) エェー そんくらい自分でやれYA
ぼるじょあが片付けると言ってるわりには何もやってねえよな
偽者であろうがなかろうが ぼるじょあが片付けると言ってるわりには何もやってねえよな
>>215 (・3・) エェー じゃあ嫌々やってやるYO
カップラーメンくったらNE
ぼるじょあが嫌々宿題を片付けるスレかよ
結局やらねえのか
(・3・) エェー 飯くったけど無理 getcharで文字列入力って意味わかんない
(・3・) エェー なに?1文字毎にエンター押すの? 50字限度って言ってるけどそれより短い状態で終わりたいときはなにをもって終わりとするの?
>>224 (・3・) エェー 馬鹿だから教えてYO
つか、getcharなんて使ったことねーYO
226 :
デフォルトの名無しさん :05/03/10 01:29:25
今宿題やって下さるぼるじょあさんはいらっしゃいますか?
ぼるじょあさんがいらっしゃるのに、私めごときが答えるわけにはいきません
>>229 (・3・) エェー EOF?
なんか僕ダメポだから君がやってYO
getcharわかんね
>>230 (・3・) エェー そんくらい自分でやれYA
232 :
デフォルトの名無しさん :05/03/10 01:41:52
[1] 授業単元: 単元って科目名ですか?科目はC++言語です [2] 問題文(含コード&リンク):簡単な四則演算プログラムの作成 キーボードもしくはファイルから入力して、そのデータの四則演算を行う 処理結果をファイルに出力を行うこと 二項演算が出来ればよい 各演算の処理ごとにメンバ関数を作成すること プログラムの動作と機能を説明せよ クラスやストリームI/OなどC++の機能を使って作成せよ [3] 環境 [3.1] OS: windowsXP pro [3.2] コンパイラ(バージョン): Microsoft Visual C++ 6.0 [3.3] 言語:C++ [4] 期限:2005年3月10日 午前9時半提出(9時までにお願いします) [5] その他の制限: 作成時の苦労した点も発表しなきゃいけないんで出来ればお願いします
>>231 (・3・) エェー gets使っていい?
>>213 #include<stdio.h>
void
Q1( void ) {
int i;
for ( i = 0; i < 50; i++ ) {
int wC;
if ( ( wC = getchar() ) == -1 ) break;
putchar ( wC < 0x20 || wC > 0x7d ? wC : wC + 1 );
}
}
void
Q2( void ) {
char wMeses[][ 12 ] = {
"enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"
};
int wMes;
while ( scanf( "%d", &wMes ) == 1 ) {
if ( wMes == 999 ) break;
if ( wMes < 1 || wMes > 12 ) fprintf( stderr, "input ERROR!!\n" );
else printf( "%s\n", wMeses[ wMes - 1 ] );
}
}
月の名前が西語になってるのは英語でのスペルに自信がなかったからで他意はありません。
Ctrl-C≠EOF ここのぼるちゃんのらべる低いなぁ…
>>234 (・3・) エェー なんでお前がやってんだYO
ぼるじょあがんばってやってんだYO
余計なことするなYO
(・3・) エェー ぼるじょあ増殖中だZO!!
>>230 WindowsのEOFはCtrl-Zだ!
つーか、Ctrl-CでEOFって何?OS/2?
>>232 作成時の苦労した点
1:問題が曖昧すぎて何をさせたいのか推測するのが大変でした。
2:組み込み演算子を使えばいいものをわざわざメンバ関数にする意図がわからず苦労しました。
と苦労する前に予測してみる。
(・3・) エェー しらねーYO!!
>241 組み込み演算子とか習ってないんですよまだ 好きなように記述していいんでしょうけどかえってよくわかりません ここって今いる人が居なくなっちゃったら夕方まで人来ませんよね……
>>243 +とか-とか*とか/とか習ってないって?
>>243 組み込み演算子って、+ とか - とかのことよ?
>245 あ、それは習いました!さらにメンバ関数を作るってことだと思います
誰かがやってくれてると信じて、また9時に参ります。よろしくお願いします。
>>213 短いし簡単な関数しか使ってないYO!内容も簡単になっているからこのまま
コピペして出してNE!
1問目。改行で終了するようになっているのは勝手に直してNE!
#include <stdio.h>
int main(void){int c,i=0;while((c=getchar())!='\n'&i++<50)putchar(31<c&c<126?++
c%125:c);}
2問目。
#include <stdio.h>
int main(void){char m[][10]={"january","february","march","april","may","june",
"july","august","september","october","november","december"};int i;for(;;){
scanf("%d",&i);if(0<i&i<13){puts(m[i-1]);continue;}if(i==999)break;puts(
"input ERROR!!");}}
>248 ぼるじょあさん 名前名前!
>>247 #include <iostream>
using namespace std;
struct Calc {
double Add( double p1, double p2 ) { return p1 + p2; }
double Sub( double p1, double p2 ) { return p1 - p2; }
double Mul( double p1, double p2 ) { return p1 * p2; }
double Div( double p1, double p2 ) { return p1 / p2; }
};
int
main() {
double w1, w2;
cin >> w1 >> w2;
Calc wC;
cout
<< wC.Add( w1, w2 ) << endl
<< wC.Sub( w1, w2 ) << endl
<< wC.Mul( w1, w2 ) << endl
<< wC.Div( w1, w2 ) << endl
;
}
ファイル出力は ./a.out > ファイル名、これがやだったら ofstream でググってね。
苦労した点は 241 に書いた通りだよ。
>>249 忘れたことに書き込みボタンを押した直後に気がついたYO!
>250 ありがとうございました。これでやっと卒業できます(つдと)
>>252 最初からそう言えば誰もやらなかったのに・・・
>253 ^^
ここの住人ってわざわざ文字コードを使うよね… 文字定数を使えば処理系依存を無くせるのに… あと ctype.h の関数も覚えた方がいいよ…
( ´_ゝ`)フーン
文字定数は使ってるけど、ctypeなんてコンソールじゃなきゃ使わないからなぁ。 てかcinしかつかわね。
cursesライブラリの端末制御関数を利用、言語はC、OSはLINUXでKtermを使っています。 ソース内とは別にあるpbmファイルを読み込むようにするためには、ソースをどのように実行&コンパイルすれば良いでしょうか?
262 :
デフォルトの名無しさん :05/03/10 14:10:13
>>262 ほう、EBCDICもOKとな、すげーな
256 なんか(・∀・)イイ って気づいた
>>262 ナカーマ(*・∀・)人(・∀・*)
>>263 'A' - 'a' みたいのはダメだヨ。規格は '0' から '9' までは続いている事を保証してるけどネ
>>264 目的が違うけど
>>212 で ctype.h 使ったヨ。ツッコミあればどうぞ
char CH[] = { 'A', 'B', 'C', ... , 'Z' }; char ch[] = { 'a', 'b', 'c', ... , 'z' }; OK
[1] 情報処理 [2] 次の微分方程式を解くプログラムを作成せよ L(d^2Q/dt^2)+R(dQ/dt)+Q/C=V L=100(mH)、C=0.01(μF)、R=510Ω、V=1(V) t=0でQ=0とする [3] 環境 [3.1] win [3.2] CPad for Borland C++Compiler Ver2.31 [3.3] C [4] 3月11日夜12時までにメールで提出 [5] 特になし LCR回路についての方程式です。どなたかお願いします〜
>>267 2階の微分方程式なのに、
初期条件1つって、
何か書き忘れてない?
あと、解析的に解けると思うけど、
数値積分して、プロットする必要があるのかなあ?
>>268 ああー言っちゃったw
意外とこの先生面白いよ
>>267 専門的すぎて分からん。
だいたい、微分方程式ってもいろいろ方法あった気がするんだが指定されてないのか?
オイラー法とかルンゲ・クッタ法だね。ポピュラーなものは。
それから
>>268 の言うように、t=0の時のdQ/dtの初期値がわからないと
どちらにしろ解けん。
/** ==== 俺用memo ==== やったなぁ昔、なつかしい。>電気回路 L di/dt + Ri + 1/c S i dt = Vに変換するんだったっけ。忘れた。 明日暇なので教科書引っ張り出してやってみよ。 ==== 俺用memo ==== **/
確かに初期条件1コ抜けてました・・・スマソ
ステップ電圧をかけたときだから、t=0で(dQ/dt)=0です。
これが終わらないと俺に春休みが来ない・・・つД`)
方法は特に指定されてないッス。
>>272 お願いします!
もう一つの条件 >LCR回路についての方程式
あとついでに抵抗にかかる電圧Vr=RIも出してもらえるとむっちゃ助かります。 連投スマソ
(・3・) エェー ぼるじょあが皆の質問聞き流してやるYO
>>267 解
double Q(double t){
return 0.01-(2201*cosh((sqrt(2201)*t)/20.)+51*sqrt(2201)*sinh((sqrt(2201)*t)/20.))/(220100.*pow(2.71828182845904523536029,(51*t)/20.));
}
>>277 ( ゚Д゚)ゴルァ!!Mathematica使ったら反則。
【質問テンプレ】 [1] 授業単元: C言語 [2] 問題文(含コード&リンク): 整数10個を入力し、その中の同じものの個数をかぞえる プログラムを作成せよ。 入力例 10 20 30 16 12 10 43 30 10 12 入力 回数 出力結果 10 3 20 1 30 2 16 1 12 2 43 1 [3] 環境 [3.1] OS:XP [3.2] コンパイラ(バージョン): borland 5.5 [3.3] 言語:C [4] 期限:明日の昼までに提出 [5] その他の制限: 高校のプログラミングの時間に出された宿題です。 自分で悩んでやってましたが、 入力した数値が10個全部出てしまい、上手く 出力結果通りなりませんでした。 どうかどなたかご教授願います。
>>278 ばれたか。しかし単純な線形微分方程式だからプログラムで
解くまでもない…例が悪いよなぁ。
>>279 int
main( void ) {
int i, j;
int w[ 10 ];
for ( i = 0; i < 10; i++ ) {
if ( scanf( "%d", &w[ i ] ) == 0 ) return;
}
int wC[ 10 ];
for ( i = 0; i < 10; i++ ) wC[ i ] = 1;
for ( i = 0; i < 9; i++ ) {
if ( wC[ i ] ) {
for ( j = i + 1; j < 10; j++ ) {
if ( w[ i ] == w[ j ] ) {
wC[ i ] += wC[ j ];
wC[ j ] = 0;
}
}
}
}
for ( i = 0; i < 10; i++ ) if ( wC[ i ] ) printf( "%d\t%d\n", w[ i ], wC[ i ] );
}
書き方悪かったかな。方程式を解くっていうか、Q,RIのtに対する値を返すプログラムを作成せよ、でした。 度々スンマソン
#include<stdio.h> int main(void) { int a[10],i,j; int kaisu; printf("数を10個入力してください:\n"); for(i = 0; i < 10; i++) scanf("%d", &a[i]); for(i = 0; i < 10; i++){ kaisu = 1; for(j=i+1; j<10;j++) if(a[i]==a[j]) kaisu++; printf("%d %d \n",a[i],kaisu); } return 0; } このようにやってみたのですが、上手く数えれませんでした。 根本的な考えが間違ってるのかもしれませんが どうかよろしくお願いします。
(・3・) エェー ぼるじょあ最強だZO
まずkaisu=1の初期値の場所が・・・
289 :
デフォルトの名無しさん :05/03/11 09:41:06
[1] 授業単元:アルゴリズム [2] 問題文(含コード&リンク): 二つのbinary search treeを作り、与えられたコマンドを実行する。 コマンド: Ix string1 string2 .... //x番目のtreeのデータにstringを挿入 Dx string1 string2 .... //x番目のtreeから与えられたstringを削除 Px //x番目のtreeのデータを表示(post-order) Sx string //x番目のtreeに与えられたstringがあるかどうか示す IS //二つのtreeが同じ形をしているかどうか示す ID //二つのtreeが全く同じものかどうか示す xには1か2が入ります。 コマンドは上の書式で書かれていて、ファイルから読み込む。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ(バージョン): borland 5.5 [3.3] 言語:C++ [4] 期限:4-5時間内 [5] その他の制限: 期限を見てアホかと思われるでしょうが、 どなたかお力添え頂けないでしょうか。 もしもの時の連絡先:nyamuri@ホットメール
>>283 さん
色々参考にさせてもらいました。
無事解決し、提出できそうです。
どうもありがとうございました。
おかげさまで留年決定しました
>>291 あと1時間くらいあります。
IS、IDがどうにもこうにも。
>>293 IS //二つのtreeが同じ形をしているかどうか示す
ID //二つのtreeが全く同じものかどうか示す
「同じ形」は何となく意味がわかるけど
「全く同じ」はどういう意味なんだろう?
>>294 データも同じって事です。
bool ID(node t1, node t2)
{
if(t1->data != t2->data)
return false;
else{
return ID(t1->right, t2->right);
return ID(t1->left, t2->left);
}
return true;
}
こんなんかと。
>>295 だとすると、こうじゃない?
bool ID( node t1, node t2 ) {
if ( t1->data != t2->Data ) return false;
if ( ! ID( t1->right, t2->right ) ) return false;
if ( ! ID( t1->left, t2->left ) ) return false;
return true;
}
IS は if ( t1->data != t2->Data ) return false;
の代わりに if ( strcmp( t1->data, t2->Data ) ) return false;
かな?
bool is_id::iSO(BinaryNode<string> *&t1, BinaryNode<string> *&t2) { if((t1->right != NULL)&&(t2->right == NULL)) return false; else if((t1->right == NULL)&&(t2->right != NULL)) return false; else if((t1->left != NULL)&&(t2->left == NULL)) return false; else if((t1->left == NULL)&&(t2->left != NULL)) return false; else { iSO(t1->right, t2->right); iSO(t1->left, t2->left); } return true; } 長すぎますよね。。 strcmpか。
>>295 分かりやすく書けば、こんな感じかなあ。
t1 == null で言いたいことが伝わればいいけど。
末端の扱いだけ注意すれば、再帰で一発。
bool ID(node t1, node t2)
{
if (t1 == null && t2 == null) return true;
if (t1 == null && t2 != null) return false;
if (t1 != null && t2 == null) return false;
return ( (t1->data == t2->data) // IS はここを省略
&& ID(t1->right, t2->right)
&& ID(t1->left, t2->left) );
}
>>298 なるほどです。
ありがとうございます。
>>298 最初の3行
if ( t1 == null ) return t2 == null;
if ( t2 == null ) return false;
でもいいね。
ちょっと別の質問になるんですが、 "BinarySearchTree"(insert,delete,search,print用)ってクラス(A)と、 "is_id"(IS,ID用)ってクラス(B)を作りまして、BはAをインクルードしてます。 mainがAもBもインクルードしているんですが、これって問題でしょうか? インクルード自体は問題ないのかもしれないけど、 main内に BinarySearchTree T1,T2; is_id(T1,T2); としたら、”外部シンボル〜が未解決”を食らいました。 まったりで結構です。 期限過ぎた。。 IS,IDを加えられないまま提出しました。
>>300 分かりやすくということで大目に見てください。
実際には、
>>297 のように親ノードの段階で、
子ノードの有無を確認した方がいいでしょうし。
303 :
デフォルトの名無しさん :05/03/11 20:27:40
#include<stdio.h> void main(void) { int moto[8]={8,5,1,4,2,3,6,7};//← int n; int i=7; int tmp=0; int tmp2=0; int nn; int s=0; for(n=7;n>0;n--) { if(moto[i]<moto[i-1]) { tmp=moto[i]; tmp2=moto[i-1]; moto[i-1]=tmp; moto[i]=tmp2; } i--; } for(n=7;n>0;n--) { printf("%d",moto[n]); } return 0; }こうやった場合、うまくバブルソートされません、、 どうしてー・・・(つДT)
面倒でも実際にトレースしてみろ あと数字を入れ替えるのに必要な変数は1つだ。2つも要らん
305 :
デフォルトの名無しさん :05/03/11 20:56:15
>>304 すいません、実際紙に書いてやるとできました。m(_ _)m
おめでとう、じゃあそのコードは間違っていないんだよ
よかったじゃないか。
308 :
デフォルトの名無しさん :05/03/12 09:58:29
>301 >としたら、”外部シンボル〜が未解決”を食らいました。 エラーメッセージはなるべく全部書きましょう。 あなたには意味不明でも識者には有用であったりします。 ちなみに 1.C/C++言語ではコンパイルはソースファイル単位で行われる。つまり他のソースとの整合性はチェックしない。 2.includeは単にそのソースファイルにincludeのファイルを挿入するだけである。 3.コンパイル時には関数宣言があるかはチェックするが、定義があるかどうかをチェックするわけではない。 4.関数を呼び出してるところと関数の定義をするのはリンカの仕事である。 で宣言があって定義がない関数とかはリンカがエラーをはく。 VC++あたりだとおまえさんが少し書いたようなエラーメッセージを出す。
309 :
308 :05/03/12 09:59:59
間違えた。 4.関数を呼び出してるところと関数の定義をするのはリンカの仕事である。 ↓ 4.関数を呼び出してるところと関数の定義をリンクするのはリンカの仕事である。
[1] 授業単元: C言語 [2] 問題文 次のプログラムが実行されたとき各変数の値がどうなってるか書け [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ(バージョン):Visual C++ [3.3] 言語:C [4] 期限:なるべく早く ・・・ char c = 'x', *p; p = &c; (*p)--; /* ? */ ・・・
・・・ int a[] = {1,2,3} , *q; q = &a [ 1 ] *(q+1) += * (q) ; /* ? */ ・・・ ?の部分がわかりません 基本かもしれませんがわからないのでお願いします
>>310 char c = 'x', *p;
p = &c;
//c の値はxの文字コード、pはcへのポインタ
(*p)--;
//ここでpの指しているものにデクリメントをかけている。
//pはcを指しているのでcの値が1減る。
//cの値は文字コードでxの一つ前、wになるハズ。
>>311 int a[] = {1,2,3} , *q;
q = &a [ 1 ];
//aは要素数3のint配列、qはintへのポインタ
//qが指しているのはa[1]、つまりaの二番目の要素
*(q+1) += * (q) ;
//*(q)はaの二番目の要素、*(q+1)はaの三番目の要素、
//aの三番目にaの二番目を加えているから
//a[0] == 1, a[1] == 2, a[2] == 5 になるはず。
先生の悪口とか書いたら大丈夫じゃないだろ
[1] 授業単元:配列 [2] 問題文(含コード&リンク): 1.9行9列の二次元配列に掛け算の九九の値を格納し、格段ごとに出力する。 2.scanfにより文字列データを入力し、最後から一文字ずつ縦に出力する。ただし入力は20文字までとし、エラーは考えない。 [3] 環境 [3.1] OS:WINNT [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:なるべく早め [5] その他の制限:printfやscanf程度の命令文で
nn[9][9] = { {1, 2, 3, 4, 5, 6, 7, 8, 9}, {2, 4, 6. 8. 10, 12, 14, 16, 18}, ..... }; 終わり
>>316 普通のキャラ文字入力でいいんでないでしょうか?
わかるところまで書いてみろ 適当に手直ししてやるから
#include <stdio.h> int main(void){ long i,j; long kuku[9][9]; for(i=0;i<9;i++){ for(j=0;j<9;j++){ kuku[i][j] = (i+1)*(j+1); } } for(i=0;i<9;i++){ for(j=0;j<9;j++){ printf("%d ",kuku[i][j]); } printf("\n"); } return 0; } ( ・ 3 ・ ) エェー こんな漢字?
#include <stdio.h> int main(void){ char sos[21]; long i=0; scanf("%s",&sos); while(sos[i] != '\0'){ i++; } for(;i>0;i--){ printf("%c",sos[i-1]); } return 0; } ( ・ 3 ・ ) エェー なもたいなもたいYO
#include <stdio.h> int main(void){ char sos[21]; long i=0; scanf("%s",&sos); while(sos[i] != '\0'){ i++; } printf("\n"); for(;i>0;i--){ printf("%c\n",sos[i-1]); } return 0; } ( ・ 3 ・ ) エェー 出力縦だからこうだNE
お馬鹿なソースだなおい
>>315 1.
#include <stdio.h>
int main(void){
int i, j, res[9][9];
for (i = 1; i <= 9; i++)
for (j = 1; j <= 9; j++)
res[i - 1][j - 1] = i * j;
printf(" 1 2 3 4 5 6 7 8 9\n");
for (i = 1; i <= 9; i++){
printf("%d", i);
for (j = 1; j <= 9; j++)
printf("%3d", res[i - 1][j - 1]);
printf("\n");
}
}
ぼっぼぼぼぼるじょあ〜〜〜ん
>[5] その他の制限:printfやscanf程度の命令文で
ってあるから仕方ないが,
>>324 のprintf("\n"); は冗長に見えてしまう。
putchar('\n'); とか puts(""); とかする人挙手!!
|Д`)
>>326 改行するためだけにputsを使うのは許せない俺がいるw
小さい春、み〜つけたw
gccでprintf("\n")と書いてもputs("")に置き換えられる罠。
>>324 冗長なのがやなら、こうすればいいんじゃない?
for (i = 1; i <= 9; i++) {
printf("%d%3d%3d%3d%3d%3d%3d%3d%3d%3d\n" , i
,res[i - 1][0], res[i - 1][1], res[i - 1][2]
,res[i - 1][3], res[i - 1][4], res[i - 1][5]
,res[i - 1][6], res[i - 1][7], res[i - 1][8]
);
}
冗長なのが嫌だったら最初から配列に格納したりしない罠。
[1] 授業単元: 数学?(ゲーム作ってて必要になった) [2] 問題文 円と直線の共有点を求める [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ(バージョン):Visual C++ .NET [3.3] 言語:C [4] 期限:無 共有点って解が無い時と複数出る時があるけど そこら辺をどうCで対処すればいいのか解らんとです。
中心から直線までの距離はすぐ出せるよな? それが半径と一緒か大きいか小さいかで全部判るよな?
>>335 スマソ説明足らんかった
共有点の「座標」が求めたいんでつ
>>337 円と直線がどういう形式(構造体)で与えられるか
決め手もらえると、とっつきやすいんだが。
どういうレベルかも分かって、説明の手間が省ける。
つーか、流石にそのくらい自力でできなきゃ話にならんだろ。
>>338 直線はY=AX+Bより、AとB
円は半径Rと中心点(a,b)が既に値が入ってる状態です。
頭で計算する分には連立方程式解けばいいだけなんだけど
プログラムとなると解が複数出る場合
左辺の変数とかどうすりゃいいのかで悩んでるっす
あぁ、さらに簡潔に言うと 例えばx*x+x=2の場合xは-2と1の解を持つけど プログラムの場合、xの値を求めるにはどうプログラムを書けばいいのかで悩んjです なんかマジで無能でスマソorz
二次方程式には解の公式があるのをご存知無いとですか?
>>342 ぐぐってみたら確かにあったねぇ。つかこの公式の存在すっかり忘れてたORZ
あとは自分でなんとかしまふ。皆参楠です。
・・・
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):下記 [3] 環境 [3.1] OS:LINUX [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:明朝まで [5] その他の制限:特にありません。
問題: ファイル table.c は、表の合計を計算するプログラムの未完成なソースである。 このプログラムの入力データは次のような表である。 2 3 1 3 5 2 4 6 ただし、1 行目は表の大きさ(2 行 3 列)を表わす。実行結果は、次のようになる。 1 3 5 | 9 2 4 6 | 12 -----------------------+-------- 3 7 11 | 21 このプログラムについて、以下の問題を解け。レポートには、最終的に得られる 4 つのファイル(3 つの分割ソースファイルおよび Makefile)の内容を書くこと。 (1) コメント Q1 部の ?????????? 欄に適切なコードをおぎなえ。 (2) コメント Q2 部の ?????????? 欄に適切なコードをおぎなえ。 (3) コメント Q3 部の消滅関数 void FreeTable(Table *t) を定義せよ。 (4) コメント Q4 部のアクセス関数 void TableSetVal(Table *t, int row, int col, int val) を定義せよ。 ただし、表の外部へアクセスした場合、何も書き込まないようにすること。 (5) コメント Q5 部のアクセス関数 int TableGetVal(Table *t, int row, int col) を定義せよ。 ただし、表の外部へアクセスした場合、0 を返すこと。 (6) ソースコードを次の 3 つのファイルへ分割せよ。 main.c: main(),LoadTable() など,本プログラムの中心的な処理(表構造体に対する応用的な操作)を行なう関数群 table.c: NewTable() など,表構造体に対する基本的な操作を行なう関数群 table.h: table.c の関数のプロトタイプなど (7) 分割コンパイルのための Makefile を作成せよ。
(1)malloc(sizeof(Table)) (2)calloc(row * col, sizeof(int)) (3) void FreeTable(Table *t) { free(t->val); free(t); } (4) void TableSetVal(Table *t, int row, int col, int val) { t->val[t->col * row + col] = val; } (5) int TableGetVal(Table *t, int row, int col) { return t->val[t->col * row + col]; }
349 :
デフォルトの名無しさん :05/03/15 17:04:35
(7) Makefile ================================ main : main.o table.o cc -o main main.o table.o main.o : main.c cc -c main.c table.o : table.c table.h cc -c table.c ================================
[1] 授業単元:データベース [2] 問題文(含コード&リンク):下記 [3] 環境 [3.1] OS:WindowsMe [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C? [4] 期限:明日いっぱいまで [5] その他の制限:特にありません
353 :
デフォルトの名無しさん :05/03/16 00:54:06
以下のサンプルプログラムは、PostgreSQLのサンプルデータベース(test_db)に対してデータを検索して表示するプログラムである。 問題:サンプルのデータベースの内容をpoinの値で降順で表示するプログラムに変更しなさい。 #include<stdio.h> #include<stdlib.h> #include"libpq-fe.h" main(int argc,char *arrgv[]) { char query_string[512]; PGconn *conn; PGresult *res; int i; conn=PQconnextdb("dbname=test_db"); if(PQstatus(conn)==CONNECTION_BAD){ fprintf(stderr,"Connection to database failed.\n%s",PQerrorMessage(conn)); exit(1); } sprintf(query_string,"SELECT *FROM test_db where point>50"); res=PQexec(conn,query_string); for(i=0;i<PQntuples(res);i++){ printf("%s %s\n",PQgetvaluee(res,i,0),PQgetvalue(res,i,1)); } PQclear(res); PQfinish(conn; }
学生以外は受け付けません
学生です。プログラムとかが全くわからないダメ学生です。本当問題の意味がわからないんです。本当助けてください。
356 :
デフォルトの名無しさん :05/03/16 01:03:23
[1] 授業単元:データ構造とアルゴリズム [2] 問題文:下記 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):Visual C++ [3.3] 言語:C [4] 期限:明日まで <問題文> xとyをそれぞれ0から10まで1きざみで変え、その全てを組み合わせた平面上の 11*11個の点(x,y)を考える。これらの点のうちで、 y=−(x−4)^2+10 y=3 の2つの線に囲まれた領域内(線上は除く)に含まれる点の数を出力する プログラムを作成せよ。 色々考えましたがわかりません。どなたか教えて下さい。
>>355 本当か?
俺が先生なら、postgreじゃ無く、
INICED file を教える
>>357 マジです。この課題出来ないと卒業できないって言われました。わらをもすがる思いです・・・
>>356 こうかな?
#include<stdio.h>
void main(){
int i,j,y,num=0;
for(i=0;i<=10;i++){
for(j=0;j<=10;j++){
y=-(i-4)*(i-4)+10;
if(y>3 && j>3 && j<y){num++;}
}
}
printf("%d\n",num);
}
360 :
356 :05/03/16 01:34:08
>>359 ありがとうございます!スッキリ解決しました!
>わらをもすがる思い まあ、なんというか、我々はワラにされてしまったわけだが。
>>361 妙なテンプレができてからこのスレは藁にも満たん。
>>366 【質問テンプレ】のどこが妙だと聞いてるんだボケ
>>367 あれができてから気軽に丸投げする雰囲気じゃなくなったと思う。
>>368 【質問テンプレ】のどこが妙だと聞いてるんだボケ
>>369 強いて言えば「授業単元」なんかの項目があるところかね。
どっちにしても俺はテンプレの存在自体が気に食わん。
テンプレ要らないね。
質問テンプレ要らないわ。
あったほうがいいのでないの Cでやった後になってC++で書き直してくださいとか言われると面倒だし どういう授業かによって書き方も変えたりするし 例えば、初級C言語とかの場合、難しい書き方とかするとかわいそうだし
要ると思う、 質問の仕方わかんないやつ多いし
まったく役に立たないぼるじょあ要らないわ。
それは言えてる
ぼるじょあはNGワードです。
アホなコードしか出さないからなぁ
ここは大原ゆきに帰ってきてもらうしかない
382 :
デフォルトの名無しさん :05/03/16 21:07:00
383 :
デフォルトの名無しさん :05/03/16 21:08:04
Expression Tree(Tree, Stack) : 二分木、stackを使っての計算
参照 :
http://www.programmersheaven.com/articles/images/expressionexptree.gif 3つのコードファイルを作成 ExprNode.h, ExprTree.h and ExprTree.cpp
【class ExprNode】ExprNode::Eval()、ExprNode::PrintInfix()を含む。
ExprNode::Eval() 計算する
ExprNode::PrintInfix() プリントする。
【class ExprTree】ExprTree constructors、ExprTree copy constructor、ExprTree destructor、ExprTree::Clear()、
Overloaded operators、ExprTree::Build(const string expr)、ExprTree::Evaluate()、ExprTree::PrintInfix()含む
ExprTree::Clear()、二分木をclearにする。プライベート関数。
Overloaded operators、「+, -, *, /, ^」
ExprTree::Build(const string expr)
ExprTree::Evaluate() 計算
ExprTree::PrintInfix() プリント
どうか、よろしくお願いします。
384 :
デフォルトの名無しさん :05/03/17 00:58:08
静かだな・・・・
385 :
デフォルトの名無しさん :05/03/17 02:12:42
[1] 授業単元:関数の作成 [2] 問題文:int judgement(int x,int y)という関数を作成せよ。 〔関数の意味〕入力パラメータであるx,yを組み合わせた平面上の点(x,y)を考え、 この点が y=-(x-2)^2+10 y=4 の二つの線に囲まれた領域内(線上は除く)に含まれるなら戻り値は1、 含まれないなら戻り値は0. [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ(バージョン):Visual C++ [3.3] 言語:C [4] 期限:明朝 ご教授ください。お願いします。
教授する気はないが、こんなもんかな。 int judgement(int x,int y) { int y1 = -(x - 2) * (x - 2) + 10; int y2 = 4; return y1 < y2 && y1 < y && y < y2 || y1 > y2 && y1 > y && y > y2; }
>>386 ANSI-Cの論理演算の結果って必ず0か1になる事が保証されてるん?
0か0以外の値じゃなかった?
>>387 保証されてる
あと ANSI は古いんじゃないか?
>>387 なんだなんだ?VB厨が紛れ込んだのか?
>>386 y1 < y2 && y1 < y && y < y2
こっちは囲まれてるとは言わないのでは?
そうか、無限の彼方が開放なのか。
>>387 (a == b ? 1 : 0)と、(a == b)の結果は等しい。
if(n)が真となるのはn != 0のとき。
これがごっちゃになってるのでは。
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 角速度=(今回入力した角度ー前回入力した角度)/(今回入力した時刻ー前回入力した時刻) を求めるプログラムを求める。 [3] 環境 [3.1] OS:windowsXP [3.2] コンパイラ(バージョン): gcc [3.3] 言語:C [4] 期限:できれば今日中でお願いします。 [5] その他の制限:特にありません。
そこをなんとかお願いします。 この板のこと知らなかったもので、すいません。
397 :
デフォルトの名無しさん :05/03/17 22:18:37
1から100までの自然数を素因数に分解して出力しなさい 誰かC言語でプログラム書いてもらえませんか?
>>394 if 2回目以降 then
角速度=(今回入力した角度−前回入力した角度 )/(今回入力した時刻−前回入力した時刻)
これでわかっただろ?
>>397 int sPrimes[ 4 ] = { 2, 3, 5, 7 };
void
PrintFactor( int p ) {
int i;
for ( i = 0; i < 4; i++ ) {
if ( ( p % sPrimes[ i ] ) == 0 ) {
printf( " %d", sPrimes[ i ] );
return PrintFactor( p / sPrimes[ i ] );
}
}
if ( p != 1 ) printf( " %d", p );
}
int
main( void ) {
int i;
for ( i = 2; i <= 100; i++ ) {
printf( "%d:", i );
PrintFactor( i );
printf( "\n" );
}
}
405 :
デフォルトの名無しさん :05/03/19 03:47:21
406 :
デフォルトの名無しさん :05/03/19 03:49:10
Expression Tree(Tree, Stack) : 二分木、stackを使っての計算
参照 :
http://www.programmersheaven.com/articles/images/expressionexptree.gif http://santamartadotnet.hp.infoseek.co.jp/documents/cpp/polish.html 3つのコードファイルを作成 ExprNode.h, ExprTree.h and ExprTree.cpp
【class ExprNode】ExprNode::Eval()、ExprNode::PrintInfix()を含む。
ExprNode::Eval() 計算する
ExprNode::PrintInfix() プリントする。
【class ExprTree】ExprTree constructors、ExprTree copy constructor、ExprTree destructor、ExprTree::Clear()、
Overloaded operators、ExprTree::Build(const string expr)、ExprTree::Evaluate()、ExprTree::PrintInfix()含む
ExprTree::Clear()、二分木をclearにする。プライベート関数。
Overloaded operators、「+, -, *, /, ^」
ExprTree::Build(const string expr)
ExprTree::Evaluate() 計算
ExprTree::PrintInfix() プリント
期限まであと5時間くらいしかないんですが、どなたか本当に助けてください。
マンドクサ
408 :
デフォルトの名無しさん :05/03/19 05:22:26
そういわずにお願いします。 なんかC++のヘルプの会社みたいところにお願いしたのですが、出来なかったと言われました。 もう最悪。。。
>>408 C++のヘルプの会社?
とりあえず、自分が手をつけた範囲をアップすれば、マンドクサ度も減って、手伝ってくれるぼるじょあが現れるかも。
あと5時間で、ゼロってことはないよね。
留
411 :
デフォルトの名無しさん :05/03/19 06:24:56
412 :
デフォルトの名無しさん :05/03/19 06:26:16
413 :
デフォルトの名無しさん :05/03/19 06:37:39
そう。他のクラスがテスト等で超超忙しくて、この宿題できないなって思って、 宿題ヘルパーみたいなところに、頼んだんだけど、 6時間前になって、いきなり出来ませんでしたって言われちゃいました。 このクラス、落第鴨。。。
先生の心境からすると、がっかりです。
415 :
デフォルトの名無しさん :05/03/19 06:58:24
これは何をしろと?
417 :
デフォルトの名無しさん :05/03/19 07:44:10
時間切れ?
419 :
デフォルトの名無しさん :05/03/19 08:10:11
420 :
デフォルトの名無しさん :05/03/19 08:26:09
あ、でも、main.cppみたらExprTreeに入ってくるのは、stringなんだ・・・・。 あ〜、もうわかんない。。。。
>>420 そのstring ってSTL (#include <string> )を使えばいいの?
422 :
デフォルトの名無しさん :05/03/19 08:35:56
そうそう
423 :
デフォルトの名無しさん :05/03/19 08:37:43
Treeを使ってるけどstackなしのexpression Tree、 stack使ったexpressionはネットにたくさんのってるんだけど、 両方使うっての、ないんだよね〜(泣)
>>423 アップしました。手抜きしまくり(数字は一桁のみ対応)ですが参考になれば。
これだけでコンパイルできるはずです。
stackの使い方が、出題者の意図に適っているか不明ですが。
時間切れです
426 :
デフォルトの名無しさん :05/03/19 09:41:27
すご!短時間に!!とりあえず、転ばないようにダッシュでガッコー行ってくる。
427 :
デフォルトの名無しさん :05/03/19 10:46:15
>>424 助けてくれてありがとうございました。
ヘルプセンターからは、全額refundされました。
世界トップの大学卒のエキスパート揃いって、ありゃ嘘ですね。
3日あって直前になって出来ませんでしたって・・・。
まぁ、頼む人間が一番悪いのは承知なんですが。。。。
てか、やっぱ2ch凄いよ。
ちょっと待って。そのヘルプセンターって何よ?(AA略) 人の宿題で金儲けする会社? そんな商売ありえないwww じゃ、ここでCM入ります。
429 :
デフォルトの名無しさん :05/03/19 11:50:24
>>428 たぶん、ここで手伝っている人は、絶対そこではエースになれると思う。
アメリカのサイトだから、英語できなきゃいけないけど、
コンピューター用語とか英語だから、大丈夫じゃないかな。
そういう系のサイト(ネットを通じてチューター)、アメリカじゃよくあるよ。
プログラミングだと、問題を受け取り、プログラムして、exe fileだけ渡す。
お金を振り込んでもらって、cpp file渡すみたいな流れね。
モノによるけど、平均したらだいたい30分$30くらい、もらえるんじゃないかな。
能力給だから、ここにいる人達は、もっと貰えそうだね。
430 :
ぼるじょあ ◆yBEncckFOU :05/03/19 16:28:07
ほー!
,,. : ‐'' "´;;;;;``'ー- 、..,,_ /. ;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ヽ, ,,./. ;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .\ 〃. ;,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ヽ , 彳. ;,;;;;;;;;;;;;;;;;;;;;;;;/バ;ヾメ;:`ミ_;;;;;;;;;;;;;;;;;;;;;;;,; .゙、 //. ;,;;;;;;;;;;;;;;;;;;;;;;;;;//:7- __ _ ヾ;;;;;;;;;;;;;;;;;;;;;,; .ヽ ´/. ;,;;;;;;;;;;;;;;;;;;;;;;;;//_/ ̄ ゙、;;;;;;;;;;;;;;;;;;;;;,; .', 〃. ;,;;;;;;;;;;;;;;;;;;;;;;;// / _,,._ i;;;;;;;;;;;;;;;;;;;;;;;,; .゙, 《, ;,;;;;;;;;;;;;;;;;;;;;;;;;;∧ヾ、 ,;ii〃"゙`ミ;.i;;;;;;;;;;;;;;;;;;;;;;;,; .i| 、{. ;,;;;;;;;;;;;;;;;;;;;;;;/ト〈、`゙,. , ´ ,._.,.,、,_ `゙|;;;;;;;;;;;;;;;;;;;;;;;;,; .゙, i". ;,;;;;;;;;;;;;;;;;;;;;リヘソ,> Y! i〃 <.(;・),゙ゞノ;;;;;;;;;;;;;;;;;;;;;;;,; .《 ふぉおぅ! ((. ;,;;;;;;;;;;;;;;;;;;;;;;人"´`.:;;l l;.゙ `^''ーヾ`,リ!;;;;;;;;;;;;;;;;;;;;;;;;;,; .リ ソ. ;,;;;;;;;;;;;;;;;;i r'(;. );:.. l |;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ヾ, ゞ. ;,;;;;;;;;;;;;;;;;;;i┘ ヽヘ、;ハ ,) /!;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ゞ ヾ". ;,;;;;;;;;;;;;;;;;;;;|ヾ;: ,:; 人;;;;;;;;;;;;;;;;;;;;;;;;;,; .((._ .`゙》. ;,;;;;;;;;;;;;;;;;;;| :;;i 、-‐‐:v.‐-:、_ 〃;: !;;;;;;;;;;;;;;;;;;;;;;;;;;,; .〃 .ノリ. ;,;;;;;;;;;;;;;;;;;;;゙、:;| `ヾニゞ‐;;;;ニフ j|;. /;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .{{ ((. ;,;;;;;;;;;;;;;;;;;;;;;;;;;`、 - ̄ ,./;:. /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ソ, _.)). ;,;;;;;;;;;;;;;;;;;;;;;;;/ilヽ、._ ;,. ,.:-‐'"/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,; .ノノ
ここってそんなにすごい人達ばっかりなんですか?
まぁ、マイケルもいるし・・・
スリラーのレーザーディスク持ってる(´・ω・`) あの頃は良かった。
すいません VisualStuido.net2003で、Tahomaフォントを選びたいのですが、 なぜか、Tahoma Boldしかえらべません。 これって仕様?
>>429 そんな低レベルなのに金取ってるのかよ('A`)
ありえねえことになってるな。
勉強できないやつを食い物にする、うまいねw
441 :
sage :05/03/19 22:52:33
ここの人たちってプログラム歴何年くらい?
プログラム暦10年。 セックスよりプログラムが好きです。
ここにいる人達は、在宅プログラマーですか?
ここにいる人達は、ホモプログラマーですか?
レズプログラマーです
えっ女?
iteratorがいまいち、よく分からないんですけど、 ポインターでなぞるのと、どう違うの?
ポインタ∈イテレータ
あ、わかった。 イテレータってその時々で自分でクラスを作らなきゃいけないんだよね? Treeのときや、Queueの時など。。。 違う?
クラスとインスタンスの区別がつかない馬鹿がいるスレはここかな?
今学生で学習中なんで。。。 インスタンスって初めて聞いた。。。
インスタンス=オブジェクト CMyData data; ↑ ↑ クラス インスタンス
class A { ............. class B{ .............. } } ってなってるのって、 class A{ ............ } class B{ ............ } ってのと、同じ?
classにスコープ?
質問は質問スレへいけ、はげ。
つーか、名前空間か。
459 :
デフォルトの名無しさん :05/03/20 13:49:23
[1] 授業単元:ファイル処理 [2] 問題文(含コード&リンク):下記参照 [3] 環境 [3.1] OS: Windows 2000 [3.2] コンパイラ(バージョン): G++ [3.3] 言語:C C++ どちらでもOK 問題文: ソースファイルのコメントを削除するツールを作成せよ。 ソースファイルをその実行モジュールにドラッグ&ドロップすることで、 以下の形式に従った部分を削除する。 1./* */ に囲まれた部分 2.// がある行 3.なお、出来る人は、#if 0 〜 #endif に囲まれた部分も削除するように作る。 ※注意 ”(ダブルクォート)に囲まれたところは文字列として扱うためそこには注意すること。 おねがいします。
テキストデータが入ってる先頭ポインタから、順次検索していけばよろしい。 検索して検出されたら、その開始と終了位置のポインタを取り出して、 再度ソースファイルをファイル操作でWriteするとき、取り除けばいい。 簡単な話だ。
簡単な話でも僕にはわかりません。 特に、※注意 printf("/*"); とかってあると、誤って 検出されてしまいます。さらに、// */ なんて部分も入れたりすると、 もうフラグ管理なんてしてたら頭ぐちゃぐちゃになっちゃって。 模範解答・・・ください。
>>462 // */は単に"//"が現れたら無条件に'\n'まで読み飛ばせば良いだけでは?
質問スレじゃねぇんだから、グダグダ言ってねぇで、できるんだったらさっさと回答示せばいいんだよ。
>”(ダブルクォート)に囲まれたところは文字列として扱うためそこには注意すること。 単に、""文字列内を検索してるときは、コメントの検出をオフにすればいいだけのこと。
まぁ、模範解答だけよこせや。 そんなこと説明されたところで、俺でもわかるしな。要は同じものを藻前らが どうやって作るか知りたいだけだし。
470 :
459 :05/03/20 14:44:57
違います! 偽者消えてください!
結局、御託は並べられるが、コーディングはできない奴らばっかか。
たぶん
>>419 みたいのは稀なんだろうな。
ドラッグ&ドロップすることでって条件は満たされていなかったみたいですけど、 本当にこんな短時間でやってのけてしまうとは。
K&Rでこういう問題あったよね 自分で解いたことあったからHDにソース眠ってるかも
この手の問題は、誰しも組んだことがあるからHDDの中に眠ってたりするよ。
俺も似たような課題をやらされたな 印刷した紙しか残っていないが
>>478 一応突っ込み。
入力://**/
出力(誤):/
出力(正):
[1] 授業単元:Intro C++
[2] 問題文(含コード&リンク):下記参照
[3] 環境 BCC developer
[3.1] OS: Windows XP home
[3.2] コンパイラ(バージョン): BCC
[3.3] 言語:C++
[4] 期限:二千五年年三月二十二日まで
[5] その他の制限:下記の268.zipの中にあるClassを使わなければいけない。
カジノダイスゲーム作成
1.ユーザーに何度もプレイさせることが出来るダイスゲームプログラムを
2.所持金$100で毎ゲームごとに掛け金を入力させ、その所持金をゲーム終了時に表示させる。
3.特別なルールを加える
例:以下の条件を加えてください。
T.2か3がオープニングロールで振られた場合ユーザーの勝利
U.7か11か12がオープニングロールで振られた場合ユーザーの負け。
Va.もし次のロールで3,4,9,10,11が出た場合、ユーザーは0の利益($5賭けた場合$5が返済)
Vb.もし次のロールが2か12の場合ユーザーは二倍の掛け金を得ることができる。
Vc.もし次のロールが5,6,7,か8ならばユーザーの負け。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/268.zip = 乱数クラスファイル
一応自分で書いたプログラムも・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/269.txt よろしくお願いします。
>459 "状態遷移"って知ってるか? 通常、""文字列中、/**/のコメント中、//のコメント中 の4状態で考えろ
ありがとうございます・・助かりました。 自分でSystem clockを使って乱数を発生させるようにしてみたのですが上にあげているRandomクラスを使わなければいけなかったようでプログラムをどの様に変えていいのか迷っていました。 仕様が違うのは後で気づいた為です、混乱させてしまってすみません。なので自分の書いたほうの仕様は違っていて問題として書いたほうが実際にしなければならないことです。 書いていただいたプログラムに#include "random.h"を忘れずインクルードします。忠告ありがとうございました。忘れないようにしたいと思います。
移転完了!
[1] 授業単元:C言語 [2] 問題文:下記 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ: [3.3] 言語:C [4] 期限:明日まで [5] その他の制限:特にありません。 長さ4の文字列に数字を初期設定し、4桁の10進数に変換して表示するプログラム #include < stdio.h > int main(void) { char suuji[5]="1234"; unsigned int r1=0,r2; unsigned int mask= @ ; int cnt; for(cnt=0;cnt<4;cnt++){ r2 = (unsigned int)suuji[cnt]; r2 = r2 A mask; r1 = (r1 B 3) + (r1 C 1); r1 = r1 + r2; } printf("10進数= %u\n",r1); } @には16進数の値 AからCには演算子を補うそうです。 どなたかよろしくお願いします。
@0x30 もしくは'0' A-もしくは^ B<< C<< @,Aは0x09 、& かも
訂正 0x09じゃなくて0x0fだった…
何で16進数のfとそれらの演算子になるんですか?
漏れは
>>487 じゃないけど、もしよかったらそこも補足して欲しいかも
文字コードをASCIIと仮定すると '0' = 0x30,,,'9' = 0x39 まずコレの下4bitを取り出すために0x0fで論理積を取る (面倒なら0x30との差を取ってもいい) そうすると一桁分が取れるからあとはぐるぐる回しながら 10進数なので10倍しつつ加算していけばいい この時、出題者は10倍をわざわざビットシフトでやらせたいらしい 2*2*2*a+2*a = 10*a
>>492 なるほど。即レスありがとうございます。
あほらし。おまえらアホだ。もううんざりだ。こんな場所なくなってしまえばいいのに!!!
>>494 ここは宿題できないアホのためのスレ
ここは宿題できるあるいはしたい回答者のためのスレ
他の理由でここに住み着くやつもいるが
>>494 のためのスレではない
無くなって欲しいなら
ほざいてないで削除依頼でも出すか
>>494 が消えてください
のし
>>495 違う。CやC++スレで宿題やってくれと言うアホを隔離するスレだ。
>>498 社会的に迷惑で害になるからどんどんスレをなくしていけばいいんだ!
そうすれば誰も来ない!!!ふはははは
500 :
デフォルトの名無しさん :2005/03/23(水) 14:17:37
>>499 社会に出てない君がなにいってんのwww
>>499 ここは幼稚園児が来るスレではないぞ
幼稚園児でも社会に貢献はできるからがんばれ
ともかく、この2chは今日限りで閉鎖です。 みなさん、今までありがとうございましたー。
なんだよ!俺だけが悪者かよ!! みんな2chなんかが残って欲しいのかよ!!!!
>>505 >なんだよ!俺だけが悪者かよ!!
どう悪者なのか説明してあげる
・何が「あほらし。」なのか説明がない
・「おまえらアホだ。」って思う理由がない
・「2ch自体社会的に迷惑なんだよ!!! 」って思う根拠がない
・「社会的に迷惑で害になるから」の主語がない。もしかして自分のこと?なら納得
・スレは誰でも建てられるから
「どんどんスレをなくしていけばいいんだ! 」なんてイタチごっこ
そもそも削除依頼出した?どうやってスレを無くすの?
・説明になっていないのに「そうすれば誰も来ない!!!」って一人で納得してる
・「ふはははは」もはや電波。意味不明
・アホのための隔離スレだと説明があるのに
「アホだ こいつアホだーーーーー!!!!!!!!! 」って頭悪いですね
・自分の発言を無効にする「ともかく」って何?バカですね
>みんな2chなんかが残って欲しいのかよ!!!!
・それを2chで話し合おうっての?
・板違い。なぜム板?
・すれ違い。なぜ宿題スレ?
>>506 アホだアホだー!!!気づいてねー!!!!!!
気づいてないのは
>>507 残念!!
-------------------以下何事もなかったかのように宿題スレをお続けください-------------------
>>508 死ねよボケ!死ねよったら死んじまえ!!!!!
ばか者ドモ質問出せ、冷やかしてあげるから
>>509 通報しますた。アク禁になってから泣くなよw
アク禁にされる理由がないぞ(藁
>>509 ぎゃはははは お前アク禁でやんの!!!!! アホだアホーーーーーーー
春ですねぇ…私も最近ようやく風物詩と思えるようになりました。
>>515 お前ひきこもりだろ?
だからそんな事にしか季節を感じられないんだろ
日本語が読めないと悲惨ですね
フーン。 私がしばらくいない間に、スレが荒れてますね。 私の一番嫌いなものは荒らしなんです。 荒らしは何も生み出さず、ただ無駄にスレを消費するからね。 そういう輩は、きっとプログラムコンプレックスに陥っているんだろうね。 確率の問題で、どうしてもそういう人間が世に出てしまうが、 私としては、その存在を全力で否定したく思う。 私は善の権化であり、このスレのオーソリチーであり、このスレ住人からの信頼も厚いし、 私自身、その使命をまっとうする覚悟がある。
>>518 またお前か。
せっかくしばらく消えてくれてこっちはせーせーしていたのによ。
荒らしが嫌い?
へぇ〜じゃあ毎日自己嫌悪に陥ってるんだろうねぇw
俺がこのスレで一番嫌いなやつの名前を教えてやるよ。
常 識 人
お前だ、お前。
スレが腐るからもう二度とくるんじゃねーぞ。
ごのごみ以下のくそ蛆蝿うんこやろうが。
またこの一連のコピペか
>>520 私は、荒らしではない。
なぜなら、私のレスには心があるから。
やすらぎ、癒しがあるから。
下らないコピペ、バカアホだけのおもしろみのかけらもない荒らしと
私のどこかノスタルジーにも似た気持ちを抱くレスとは似て非なるもの
という意見が多数を占めていると聞く。
私はどちらかというと、癒し系だから。
プログラミングで溜まったストレスを私のレスで癒す。
それがこのスレの一つのあり方であってもいいと思う。
また宿題欠乏の禁断症状ですか。
>>522 常識人君。
君ねぇ。どうも妄想癖、虚言癖があるようだねぇ。
お前みたいなやつは、ロボトミー手術でも受けて
廃人にでもなってしまえばいいと思うよw
ああ、ごめん。君はすでに廃人だったねw
廃人よりもっと下かぁ・・・
う〜ん・・・
やっぱ、氏んだほうがいいんじゃない?
曰く、生きているだけで邪魔になるw
わかりやすいなぁ (・∀・)ニヤニヤ
あー、ちょっといい?ねたがないからってダラダラやめてくんない? スクロールさせるのめんどいから。
え? ダラダラする合間に宿題をするスレじゃないの?
>>527 やるべき宿題が今ないのが問題
早く宿題やらせろよなー、マルチでもなんでもいいから
おまえらアホだろ なに自作自演にだまされてんの? アホアホだ。アイダホポテトでも食べてろwww
春休みだからなぁ。どうしても宿題は少なくなるわな。やっぱり 一番楽しいのは夏休みの終わりでしょ(w
>>531 お前もアホかwww アホが多いなぁ、この板は。ははは
癒し系というより、卑しい系?
535 :
デフォルトの名無しさん :2005/03/24(木) 01:39:42
【質問テンプレ】
[1] 授業単元:己を磨け。Failed。
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=158 のNo.278
シンプルにメソッド・Prevを実装せよ。
・メソッド・Nextのデクリメントバージョン。
--デクリメントというのは、ポジションのことです。リバースしたりはしないでください。
・要約すると、クラス変数のtopとbtmをゴニョゴニョしてメソッド・Nowを呼ぶと動作するようになっています。
--ゴニョゴニョとは、topは切り出す場所の頭を、btmは切り出す場所の尻尾を指すことになっています。
・このクラスは、パーサーのためのクラスで、区切り文字を含まず、区切り文字から区切り文字までを切り出すクラスです。
--文字コードはchar型きめ打ちです。
[3] 環境
[3.1] OS: 問わず。
[3.2] VC7.1
[3.3] 言語:C++ のクラス関連。
[4] 期限:3月26日
[5] その他の制限:
よろしくお願いします。
536 :
535 :2005/03/24(木) 01:49:20
ところで、たとえばboostとかそこら辺にこんな感じ(
>>535 )のクラスってありますか?
車輪の再発明は面倒なので、既にあるならそっちを使いたいのですが。
多分、既にあるほうがパワフルで使い勝手も良いことでしょうから。
>>536 boost::tokenizerとiterator使えば同じことができそうだけど…
パッと見ただけだから違ってたらスマソ。
StrTalkerってTokenizerのTypoか?
538 :
デフォルトの名無しさん :2005/03/24(木) 02:59:39
【質問です】 [1] 授業単元: クラスのインヘリタンス [2] 問題文: 下記記入 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ(バージョン): VC++6.0 [3.3] 言語:C++ [4] 期限:無期限 [5] その他の制限: 総合点算出時、privateの変数にアクセスできず計算ができないので 他のやり方があれば教えてください。 下記クラスを使い、数名の科目別成績を入力し総合点を算出する。 class SEISEKI { public: SEISEKI(); ~SEISEKI(); private: int nEnglish; //英語 int nMath; //数学 int nKokugo; //国語 }; class GAKUSEI { public: GAKUSEI(); ~GAKUSEI(); SEISEKI clsSeiseki; private: char pchName[ NAME_LEN_SIZE + 1 ]; //名前 };
539 :
538 :2005/03/24(木) 03:03:03
例) ・Aさん:英語90点 数学100点 国語85点 ・Bさん:英語100点 数学80点 国語60点 総合英語:190点 総合数学:180点 総合国語:145点 簡単な問題だとは思いますが、C++始めたばかりで理解に苦しんでます。 教えてください。
>>538 SEISEKIにはアクセサなどは一切付けたらだめなのか?
キャストして無理やりいじれってこと・・・?
#define private public
544 :
535 :2005/03/24(木) 03:12:34
>>537 英語苦手なんです。それはいいとして。
boost::tokenizerは区切り文字を指定できるかどうかですね。
ちょっと調べてみよう。
std::string str = "abcdeefghijkkklnm opqrstuvwxyz"; typedef boost::tokenizer<boost::char_separator<char> > tokenizer; boost::char_separator<char> separator("aek "); tokenizer tk(str, separator); for (tokenizer::iterator it=tk.begin(); it!=tk.end(); ++it) std::cout << *it << std::endl;
548 :
544=535 :2005/03/24(木) 03:33:24
>>546 レスthx!リロードしてなかった。
まさに探してた機能ですよ。
あー。すごいなー。
>>538 C++の場合。というか、最近の流行だと、メソッドとしてgetterという総称のものをつけるんですよ。
まー、僕は手を抜いて合計だけ実装とかやりますけどね・・・。
それと、ワンポイントとして、学生の名前は、std::stringにしたほうが、安全だし便利だよ。<string>に書かれているよ。もー目からうろこ。
550 :
デフォルトの名無しさん :2005/03/24(木) 09:37:26
#include<stdio.h> #include<stdlib.h> int main() { int i,x,y; int count; count = 0; printf("何回試行するか?"); scanf("%d",&y); for(i=1;i<y+1;i++){ x=rand(); if(x==1){ count++; } printf("%d回目 %d \n",i,x); } printf("\n1 %d回",count); return 0; } 指定回数試行して1〜32765まで何回出たかカウントしていきたいです。 1は出すことは出来るんですが・・・orz 2〜32765まで出すにはどうすればいいんでしょうか? お願いします。
unsigned long count[32766]; for(i=0;i<y;++i){ ++count[x = rand()]; printf("%d回目 %d \n",i+1,x); } for(i=0;i<32765;++i)printf("%5d: %d\n",i,count[i]); こんな感じかなぁ
>>550 先越されたけどもったいないから貼り付けるヨ
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define N 32765
int main(void) {
unsigned times, i, count[N] = {0};
srand((unsigned)time(0));
printf("何回試行するか?");
if (scanf("%u", ×) != 1) return 1;
for (i = 0; i < times; ++i) {
int n = rand();
if (n < 1 || N < n) continue;
++count[n-1];
}
for (i = 0; i < N; ++i) printf("%5u - %3u回\n", i+1, count[i]);
return 0;
}
553 :
552 :2005/03/24(木) 10:09:19
あれ?× が × になってるヨ なにこれ?こんな実体参照があるの?知らなかったヨ
これか× www.w3.org/TR/html4/sgml/entities.html
555 :
552 :2005/03/24(木) 15:27:40
>>554 激しく板違いだけど勉強になった
× は multiplication sign なんだね
ありがd
正確には×な
time(&x) と x = time(); って書き方どっちがいいの。
その場合、どっちでもいいんじゃない?
>>557 timeには引数を与えないとだめだろ。
x = time(0);
C++なら time_t x = time(0); と書くのが自然だろうなぁ。
561 :
538 :2005/03/25(金) 02:29:44
>>540 アクセサについて調べたんですがいまいちわかりませんorz
クラスの中に関数を作ってるかんじですか??
むずい・・・_| ̄|○
なんで継承していないの?
>>561 ??
メンバ変数をいじくりたいときは、アクセサとかいう、まぁ、ただのメンバ関数を定義して
アクセスするようにするってこと。
メンバ変数をいじるときは決められたいじくりかた以外は禁止したいのね。
だから、いじくりかたを制限するためにアクセサを使うの。
つうか、継承の課題なんだから、ちゃんと継承しろよ。
次スレはこのスレを継承しません。
次スレは独立です。
[1] 情報 [2] 1000以下の3つの正の整数を入力しそれぞれの長さを3辺とする三角形が直角 三角形である場合にはYES,NOと出力して終了するプログラムを作成してください [3] 環境 [3.1] winXp [3.2] CPad for Borland C++Compiler Ver2.31 [3.3] C [4] 無期限 [5] 入力 辺1 (整数) 辺2 (整数) 辺3 (整数) 整数なので3:4:5の倍数で判断すればいいと思うのですが倍数かどうかを判断させるための 書き方がわかりません。お願いします
>>568 3,4,5に相似なやつ以外にもあるよ。5,12,13とか。
a*a + b*b = c*c
とりあえず、いらなくなったぽいけど 一応、割って余りが出なかったら倍数だからね
571 :
568 :2005/03/26(土) 18:04:18
ありがとうございます。 なんか中学の数学の自信がなくなってきました・・・
let is_right_triangle a b c = let a2 = a*a and b2 = b*b and c2 = c*c in a2+b2=c2 || a2+c2=b2 || a2=b2+c2;;
>>568 #include <stdio.h>
#define SWAP( p1, p2 ) { p1 ^= p2; p2 ^= p1; p1 ^= p2; }
static void
Body( int p1, int p2, int p3 ) {
if ( p1 > p2 ) SWAP( p1, p2 );
if ( p2 > p3 ) SWAP( p2, p3 );
puts( p1 * p1 + p2 * p2 == p3 * p3 ? "YES " : "NO" );
}
int
main() {
int w1, w2, w3;
if ( scanf( "%u%u%u", &w1, &w2, &w3 ) != 3 ) return;
Body( w1, w2, w3 );
}
>>573 スワップさせるのは無駄。
a2+b2+c2 == max(a2, b2, c2)*2;
ぐらいか?
>>575 と思ったが、足し算が2回増えるのは痛いかも。
まあ、最後の足し算は並行して処理できるので、それほど悪くはない気もするが。
>>572 付け加えてやるよ。
let is_right_triangle a b c =
let a2 = a*a and b2 = b*b and c2 = c*c in
a2+b2=c2 || a2+c2=b2 || a2=b2+c2;;
let rec loop lst =
match lst with
a::b::c::[] ->
if is_right_triangle a b c then print_endline "YES"
else print_endline "NO"
| _ -> loop ((read_int ())::lst) in
loop [];;
数字以外だと例外発生するから対策しとこう。 let rec loop lst = match lst with a::b::c::[] -> if is_right_triangle a b c then print_endline "YES" else print_endline "NO" | _ -> loop ((read_int ())::lst) in try loop [] with Failure _ -> print_endline "数字ちゃうやん";;
何語?
>>578 OCamlで書くと効率良く書けるって言いたいのはわかったから、いい加減スレ違いだ
>>578 _
'´ ヽ
! j リノ))))
l ll ;゚ ヮ゚ノ∫ まんこ濡れてきた
li人 Y /
|!( ヽ し
(_)_)
>>568 #include <stdio.h>
#define D(i) printf("辺%d ",i);scanf("%d",&a##i);
#define Q(x,y,z) a##x*a##x+a##y*a##y==a##z*a##z
int main(void){int a1,a2,a3;D(1)D(2)D(3)(a1>a2?a1-a2:a2-a1)<a3&a3<a1+a2&(Q(1,2,
3)|Q(1,3,2)|Q(2,3,1))?puts("YES"):puts("NO");}
入出力部はおいといて。直角三角形かどうかの判定ってばこんなカンジか? int is_tyokkaku(long a, long b, long c) { long tmp; if (a < 1 || b < 1 || c < 1) return 0; /* 0や負の長さの辺なんてない */ /* c に長辺が来るようにする */ if (a > c) { tmp = a; a = c; c = tmp; } if (b > c) { tmp = b; b = c; c = tmp; } if (a + b <= c) return 0; /* 3角形なら長辺より残りの辺の長さの和のほうが大きいはず */ if (a*a + b*b == c*c) return 1; return 0; }
if (a*a + b*b == c*c) return 1; if (b*b + c*c == a*a) return 1; if (c*c + a*a == b*b) return 1; return 0;
int AA = a*a, BB = b*b, CC = c*c; #define check(A,B,C) (A+B==C) puts ((check(AA,BB,CC) || check(AA,CC,BB) || check(CC,BB,AA)) ? "OK" : "NG");
586 :
デフォルトの名無しさん :2005/03/27(日) 20:47:05
【質問です】 [1] 授業単元:再帰 [2] 問題文:下記参照 [3] 環境 [3.1] OS:windows XP [3.2] コンパイラ(バージョン):Borland C++Compiler5.5 [3.3] 言語:C [4] 期限:2005年03月28日07:00まで [5] 整数値1〜5まで C初心者です。 power関数を再帰呼び出して入力したxのy乗を返したいのですが、 再帰の方法が分からず悩んでます。 どうか宜しくお願い致します。 /* power関数の定義 */ int power(int x,int y) { int i; int pw=1; for(i=1; i<=y; i++) { pw=pw * x; } return (pw); }
>>586 if (y==0) return 1;
else if(y>0) return pw * power(x,--y);
else return pw / power(x,++y);
あってるか知らんが再帰はこうする。
y==0で定数を返すのが味噌。
OCamlだとこんなに簡単! let rec power x y = match y with 0 -> 1 | 1 -> x | _ -> x * (power x (y-1));;
すばらしいのは分かるんだが、 いいかげんOCamlで書きたい奴は OCaml宿題スレでも作っては如何か?
それをCで書き換えると、 int power (int x, int y) { if (y == 0) return 1; else if (y == 1) return x; else return x * power (x, y-1); }
592 :
デフォルトの名無しさん :2005/03/27(日) 21:13:20
>587 レスありがとうございます。 しかしコンパイルが通りませんでした。><
593 :
587 :2005/03/27(日) 21:13:29
if (y==0) return 1; else if(y>0) return x * power(x,--y); else return 1/x * power(x,++y); こうか。相変わらず試してないが。
普通、Cで書けばこうだろ? int power(int x, int y) { return !y ? 1 : x * power(x, y-1); }
int power(int x, int y) { if(y == 0) return 1; else if(y > 0) return x * power(x, y - 1); else return 1 / power(x, -y); } こんなもん?脳内コンパイルは通った。 elseは要らんなぁとは思うが・・・。
1〜5までならいらんわな intなら0にされて意味ないし^^;
597 :
586 :2005/03/27(日) 21:28:13
コンパイルも通り上手く行きました。 みなさん本当にありがとうございました。
お前ら馬鹿だな これで瞬殺じゃないか #include <math.h> int power(int x, int y) { return pow(x, y); }
どこで再帰使ってるのか教えて貰いたい所だ。
[1] 情報技術 [2] 2004/01/01から2004/12/31までの日付を入力し、その日の曜日を出力して終了するプログラムを作成しなさい 2004/01/01は木曜日であり2004年はうるう年であることに注意すること [3] 環境 [3.1] winXP [3.2] CPad for Borland C++Compiler Ver2.31 [3.3] C [4] 無期限 [5] 特にありません、お願いします
>>586 他のよりちょっと早いはず。
int power(int x, int y) {
int r=1;
if(y) {
r=power(x, y/2);
r*=r;
if(y%2) r*=x;
}
return r;
}
>>600 #include <stdio.h>
int day_of_week(int y, int m, int d) {
return y -= m < 3, (y + y/4 - y/100 + y/400 + "032503514624"[m-1]-'0' + d) % 7;
}
int main(void) {
char * week[] = {"日","月","火","水","木","金","土"};
unsigned year, month, day;
if (scanf("%u/%u/%u", &year, &month, &day) != 3) return 1;
puts(week[day_of_week(year, month, day)]);
return 0;
}
>>601 r=power(x, y/2);
を
r=power(x, y
>>2 );
にしたら2倍速くなった
つーかさ、 再帰を使うことが指定されている問題で 速さを競って一体どうするつもりなのさ?
遊びでしょ。
607 :
601 :2005/03/27(日) 23:25:36
>>604 そんじゃy%2もy&1にしてみればどうよ
>>604 そりゃあ2で割ってるものを4で割るようにすればな。
610 :
デフォルトの名無しさん :2005/03/28(月) 15:01:09
質問ないっすか!!!!!!!!!!!!!!!!!!!!
611 :
デフォルトの名無しさん :2005/03/28(月) 16:11:38
本当に質問ないんすかねぇ!!
ここは質問スレじゃないって言いたいんだろ
私の出番ですかね?
スレ伸びないね。やっぱりスレタイがry・・・・
春休みちゃうんかぃ
一週間後には大賑わいと予想。
621 :
デフォルトの名無しさん :2005/03/29(火) 11:37:07
お願い致します 標準入力から読み込んだ文字列に対し,ランレングス符号化を行うプログラムを作成せよ. ランレングス符号化とは,データ内における同記号の列を,その記号と数値で置き換えることで情報圧縮を行う技術のことである. 例えば, aaaaabbbccdddda の入力に対し, a5b3c2d4a1 と出力する (* ここに解答を書き加える *) int main(void){ char buf_r[1024] = {0}; char buf_w[1024] = {0}; int length; printf("文字列の入力\n"); scanf("%s",buf_r); runlength(1024,buf_r,buf_w); printf("[ランレングス符号化]\n%s\n",buf_w); return(0); }
あなたはお願いされますか・・・
>>621 C言語勉強して三日目の俺が答えてやる
間違ってても知らん
#include <stdio.h>
#include <string.h>
void runlength(int max, char *buf_r, char *buf_w)
{
int i, cnt = 0;
char str[120];
for (i = 1; i < max ; i++){
if (buf_r[i - 1] == buf_r[i]){
cnt++;
} else {
sprintf(str, "%c%d", buf_r[i - 1], cnt + 1);
strcat(buf_w, str);
cnt = 0;
}
}
}
>>621 いっしょうけんめい考えました。しょうがく6ねん生です。
void runlength(int max, char *buf_r, char *buf_w)
{
int err=0,cnt=0,fig=1,rgl ;
char ch ;
ch = *buf_r ;
for( ; ; err++, buf_r++ ){
if( err == max )
{printf("over flow.\n"); break ;}
if( ch != *buf_r ){
*(buf_w)++ = ch ;
while( fig <= cnt ) fig *= 10 ;
fig /= 10 ;
while( cnt ) *(buf_w)++ = ( rgl = cnt / fig ) + '0', cnt -= rgl * fig, fig /= 10 ;
*(buf_w) = '\0', ch = *buf_r ,cnt = 1, fig = 1 ;
if( *buf_r == '\0' ) break ;
}
else cnt++ ;
}
}
>>624 × while( cnt )
○ while( fig )
>>621 一つの文字が10個以上続いた場合はどうするの?
疑問点 (1)626が言うように10個以上続いた場合 →Aが12個の場合 … A9A3 or A3A9に? (2)出力バッファが足りなかったら? →止めるだけ? (3)main()のint length;って何?何使うの? →まぁ関係無いか
>>621 aaaaaaaaaa の時 a9a1 になるタイプで作ってみたヨ
#include <stdio.h>
void runlength(size_t max, const char * in, char * out) {
size_t size = 0;
while (*in) {
size_t len = 0;
for (*out = *in; len < 9 && *in == *out; ++in, ++len) ;
++out;
*out++ = len + '0';
}
*++out = '\0';
}
629 :
621 :2005/03/29(火) 18:45:52
すいませんレス書くの遅れました
みなさん解答ありがとうございます
>>623 さんの解答で正解もらえました
しょうがねーな。OCamlの答えを出してやろうか
let run_char buf n = let len = String.length buf and c = String.get buf n in let rec loop n = if len <= n then n else if String.get buf n = c then loop (n+1) else n in loop n ;; let enc c n = let rec loop s nn = if nn = 0 then s else if nn <= 9 then s^c^(string_of_int nn) else loop (s^c^"9") (nn-9) in loop "" n ;; let runlength buf = let len = String.length buf in let rec loop s n = if n >= len then s else let next = run_char buf n in loop (s^(enc (String.sub buf n 1) (next - n))) next in loop "" 0 ;; print_string (runlength "aaaaaaabbbbbcccc1111111111111111") ;;
(s^c^"9")
>>634 次はOS(規模はお好きにどうぞ)書いてくれ。
Windowsなどの上で動作する仮想的なものではなく
本当のOS。
[1] 情報技術 [2] 英語の文章に出現する単語の中で文字数が最も多い単語を出力して終了する プログラムを作成しない。入力データには英文字、スペースのみが含まれているものとします。 単語とは、スペースで区切られた連続する英文字の列です。文章の文字数は80文字以下です。 ひとつの単語の文字数は32文字以下です。最長の文字数を持つ単語は文中にただ一つだけ存 在します。 [3] 環境 [3.1] WinXP [3.2] CPad for Borland C++Compiler Ver2.31 [3.3] C [4] 無期限 [5] 文字数のカウントを単語できっていく方法がわかりません。スペース をカウントの終了条件にすればいいと思いますがそこで止まってしまいます お願いします
「英語の文章に出現する単語の中で文字数が最も多い単語を出力して終了する プログラムを作成しない」ってなめてんの?
じゃあ作成しねーよヽ(`Д´)ノウワァァァン
>>638 int main(void)
{
return(0);
}
642 :
638 :2005/03/30(水) 16:34:41
よりによってとんでもないところで脱字を・・・orz 「作成しない」→「作成しなさい」 でお願いします。
天然? むちゃワロタ
一行しか入力できんけど 適当にやったからたぶん間違ってる #include<stdio.h> #include<string.h> char* aaa( char* ) ; int main( void ) { char buf[255] ; fgets( buf, sizeof buf, stdin ) ; buf[strlen(buf)-1] = '\0' ; printf( aaa( buf ) ) ; return 0; } char* aaa( char* s ) { char *p = s, *max= s; int cnt = 0, maxlen = 0 ; while( *s != '\0' ){ if( *s == ' ' ){ maxlen < cnt ? maxlen = cnt, max = p : 0 ; cnt = 0,*s='\0',s++, p =s ; continue ; } else cnt ++ ; s++ ; } return max ; }
ボクも適当にやってみた。たぶん間違ってる。 #include <stdio.h> #include <string.h> int main() { char str[1024]; char *tp; char *temp; int max, length; puts("文章を入力してください"); gets(str); tp = strtok(str, " "); /* 最初の文字列を取り出す */ temp = tp; /* 文字列を保存 */ length = strlen(tp); /* 文字列の長さを得る */ max = length; /* 文字数の最大値として保存 */
というか全く同じ問題を過去何度も見てる希ガス…
while( tp != NULL){ /* 最後の文字列までを取り出す */ tp = strtok(NULL, " "); if (tp != NULL){ length = strlen(tp); if (max < length){ max = length; temp = tp; } } } printf("\n文字数が最も多い単語は%s\n", temp); printf("その文字数は%d\n", max); return 0; }
非決定性有限オートマトンだよー
正規表現を扱う関数なんか作ろうと考えないでねー
>>638 let maxlength text =
let rec loop p (mb,mn) (b,n) =
if p = (-1) then
let (mmb,mmn) = if mn < n then (b,n) else (mb,mn) in
String.sub text (mmb-mmn+1) mmn
else match String.get text p with
'a'..'z' | 'A'..'Z' | '0'..'9' | '-' ->
loop (p-1) (mb, mn) ((if b = 0 then p else b), (n+1))
| _ -> loop (p-1) (if mn < n then (b, n) else (mb, mn)) (0, 0)
in loop (String.length text-1) (0, 0) (0, 0)
;;
print_string (maxlength "Day before yesterday I saw a rabbit, and yesterday a deer, and today, you.")
;;
>>650 OCaml厨はウザイしスレ違い。今度書いたらアク禁要望出すよ。
だから
>>589 で言ったのに。
OCamlは良いと思うけど、ここにソース上げまくっても反感買うだけで意味内でしょうに。
普及活動したいなら、他のトコでやるべきでしょうよ。
どうせ過疎だしなぁ。 OCamlも行くとこないだろうし、いいんじゃね?
じゃ、考える過程でOCamlを使った。それを元にCで書く、っていうのはどう?
OCamlスレを作ればいいのか?これ以上ガタガタ言うならそっちでやれよ
>>656 そんなの寂れるにきまってるやん。
ひどいよぉ。一緒にやろうよぉ。こっちの方が人が多いんやもん。
そんな義理は無い せめてもの情けだ、テンプレを作れ。それで立ててやる テンプレ作らないのであれば、こちらが適当に作る
>>659 ここでOCamiやっても反感買うだけだと思います。荒らしのつもりですか。
HSPスレでやればいいのに
>>660 だから、荒らしにならないように、OCamlはただの前置きにして、本番のC/C++のソースコードも張ります。
OCamlで書いたものをC/C++に移植する事によって、C/C++のコードに関数的な設計という+αを備えさせる
事が楽になります。
どうでもいいけど、ここはC/C++の宿題スレだから 関数型言語の考え方をするのは勝手だけど、貼るのはスレ違い。 解答になってないし。
>>662 わかったわかった。スレ立ててやるからテンプレ作れ。
まだ続けるなら適当に立てる。
>>664 もし宿題スレにするなら、絶対に過疎になります。
なぜなら、もともとOCamlを教材に使っている講義はとても少ないからです。
宿題が出なければ宿題すれは成り立ちません。
質問をするだけなら
>>659 のスレで十分まかなえます。
これ以上OCamlのスレは必要ではないのです。
連動スレという手もありますが…。
わかりました。引き下がります。
迷惑だ。
OCaml厨よ、関数型MLスレにでも頼んで、 コッチの宿題の回答張らせてもらえば? 若しくはそう言うスレ1個立てるとか。過疎化は覚悟で。 んでコッチには、Cの回答+OCamlスレの該当レスへのURLを張る。 OCamlに興味がある奴は辿るだろうし、興味ない奴にも 1行URLが増えるだけだから、反感は買い難いと思う。 まぁ、障りない程度なら、いい刺激にもなるんだよ。 特に宿題が今少ないから目先が移っていけないことでもない。 ただ、今までの君のやり方は一方的押し付けでしかない。 そこらを考慮してくれれば、こちらのスレにも理解が生まれると思う。
>>671 OCamlなんて知らなかったが、結構面白そうだと思ったぞ
OCaml云々言ってるやつは
>>672 含めて一人だけなわけだが。
674 :
667 :2005/03/31(木) 03:28:41
どうでもいいが宿題をくれ
学校が休みだっちゅうねん。
>>677 あなたのようなアンチな人がいるのはかまいませんが、うざいです。
OCamiが嫌いならスルーすればいいのです。
>>679 いやですねぇ。あなた自身が粘着という自覚が無い人は。
>>680 粘着特有の言い回しを使って、厨丸出しですよ。あら恥ずかしー
>>681 いやですねぇ。あなた自身が厨という自覚が無い人は。
二人ともウザイぞ!どこか他行ってやれ!!!!
宿題なくて失職中だからそういうことになるんだよ はやく喧嘩する暇ないくらい宿題だしてやれ
685 :
デフォルトの名無しさん :2005/03/31(木) 07:18:09
2数の最大/最小値を求める関数int max(a,b), int min(a,b) を作りなさい。 それらを用いて、2数の最大/最小値を同時に返す関数void max_and_min(a,b,max,min)を作りなさい。 よろしくです
686 :
デフォルトの名無しさん :2005/03/31(木) 08:51:41
int max(int a, int b) { return a >= b ? a : b; } int min(int a, int b) { return a <= b ? a : b; } void max_an_min(int a, int b, int* max, int* min) { if(a >= b) { *max = a; *min = b; } else { *max = b; *min = a; } }
#include <algorithm> // max(), min() の戻り値の型から、int を取り扱えばいいと仮定。 // int max(int a, int b) {return std::max(a, b);} int min(int a, int b) {return std::min(a, b);} void max_and_min(int a, int b, int & max, int & min) { max = std::max(a, b); min = std::min(a, b); }
あ、「それら」を使ってないや。 void max_and_min(int a, int b, int & max, int & min) {max = max(a, b); min = min(a, b);} って、名前が被るからコンパイルできねぇって。
>>687 int max(int a, int b) {return std::max(a, b);}
int min(int a, int b) {return std::min(a, b);}
おい、この定義に意味はあんのかい?
int max (int a, int b) { return a > b ? a : b; } やね。
【不幸のレス】 このレスを見た人間は四日以内に死にます。 ※あなたに訪れる死を回避する方法が 一つだけ/⌒ヽあります。 それは / ´_ゝ`)5つの板のスレに十分以内に これを | / コピペすることです。 | /| | // | | U .U 失礼。ここ通らないと行けないので、ちょっと通りますね・・・
バーカ
宿題: Brainfuckのインタプリタを作りなさい。 C言語 期限は明日まで。
>>689-691 >688はalgorithmのmax/minを使いたかったんジャマイカ。
#つーか、ネタだろ。
>>638 #include <stdio.h>
int main(void){int ch,maxlen=0,count=0;while(EOF!=(ch=fgetc(stdin))){if(ch==' '){if(maxlen<count)maxlen=count;count=0;}else count++;}printf("%d\n", maxlen);return 0;}
>>685 #include <stdio.h>
int max(int a, int b) {
return a>b?a:b;
}
int min(int a, int b) {
return a<b?a:b;
}
void max_and_min(int a, int b, int* a_max, int* a_min) {
*a_max = max(a, b);
*a_min = min(a, b);
}
>>697 I am Sam,and He is Taro.
これはどう評価するの?Sam,andっていうのは2つの単語だよね。
>>700 英字と空白だけだってさ。(>638参照)
それはいいけど、>699といい他の連中といい、空白が複数並んでいたら破綻来たすって気付かないんだろうか。
[1] 授業単元:C言語 [2] 問題文:自己参照構造体をつかって 4つのデータをファイルの保存するプログラムをつくりなさいという問題で Add Delete Search Editの機能がいります Delete Search EditともにIDで検索で削除 表示 変更という感じです 4つのデータというのは int ID char 名前 int 年齢 long 電話番号 です 説明がわかりにくくてすみません よろしくお願いします [3] 環境 [3.1] OS:Windows XP [3.2] コンパイラ(バージョン):borland c++ 5 [3.3] 言語:C [4] 期限:一週間後です
704 :
702 :2005/03/31(木) 23:01:38
>>703 ありがとうございます
コードきれいにまとまってますね
自分のは無駄に変数使ってて見にくいって気づきました
ファイルの保存なんですけど
かなり行き詰まってます
ヘタレなOCaml厨はどこ逝った?
705 == ヘタレなOCaml厨
>>706 あなたの非論理的な思考にはついて行けません。
なに?やっぱりOCamlが恋しくなったの?
709 :
703 :皇紀2665/04/01(金) 00:25:43
>>704 めんどいのでファイルへの保存はあえて残したままにしとく。
この宿題のなかでは一番めんどい部分かもしれんが、
これくらいは自分でやってみるのも一興。
最近はScheme(Lispの方言)で遊んでたので、
変数を導入すると間違いの元ってことと、
「スコープを限定する」ってのがかなり重要と気づいた。
このスレに粘着してるOCaml厨くんも、
単にOCamlがすばらしいってことだけじゃなくて、
そこから学んだことをC/C++の宿題で悩む人に啓蒙していく
方が建設的ではないかなと思うわけだ。
OCamlがいかに素晴らしくても、それを使う人間の根性が腐ってるんじゃねぇ┐(´ー`)┌
あ、ごめん++
>皇紀2665/04/01(金) 15:21:08 てか、いつだこれ
>>703 // タブ区切りで出力
// AddressBook->nameには区切り文字が入ってないことが前提
int write(const char* filename)
{
Record* p;
FILE* fp;
fp=fopen(filename,"w");
if(fp!=NULL){
for(p=AddressBook; p!=NULL;p=p->nextRecord){
fprintf(fp,"%d\t%s\t%d\t%d\n",p->ID,p->name,p->age,p->tel);
}
fclose(fp);
return 1;
}
return 0;
}
>>714 C++でfopen()かよ。ってのはまぁいいとして、
折角エラーチェックするならfprintf()とfclose()もエラーチェックした方が…
…まぁいいか。
716 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:22:12
今、宿題やってるんですけど、 2 5,11 3 5 9 みたいなインプットをint arrayの中に収めたいのですが、上手くいきません。 9を読み込むと終わるプログラムです。 5,9だと続行です。 int main(){ int count = 0; int command_array[10]; char temp; int curr=0,prev=0; cout << "\tEnter commands : " << endl; while(true){ cin >> temp; if(temp!=','&&temp!='.'){ curr = static_cast<int>(temp); command_array[count] = curr; if(count!=0) prev = command_array[count-1]; count++; } cout << curr << prev<< endl; if(prev!=5&&curr==9) break; } return 0;
717 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:24:18
char tempをint型のものに代入しようとすると、違う数字が入ってしまうんですよね。 cout << tempだとちゃんとそのままの数字が表示されるのに・・・
>>715 言語はCって
>>702 に書いてあるだろ。
C++使えるならvectorで書いてるよ。
宿題スレなんだから宿題っぽい回答でいいじゃん。
本格的に利用するならそもそも単純なリストじゃ話にならん。
719 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:26:55
例えば5,9だと","を無視して、int arrayにその数字を5 9のように収めたいのです。
>>716 特に指定が無ければscanfを使うのが宿題ってものさ。
>>719 それを厳密な仕様で固めてみろ。
それができれば書くのなんてすぐできる。
722 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:29:35
c++なんですけど・・・。
>>716 じゃあ、入力の次の行に
','入力されたフラグ変数でも追加すれば?
ループ抜けるときの条件に加えればOKだと思うけど
変数増やしちゃだめなの?
>>717 tempの中身が数字ならtemp - '0'でint型の値になる。
725 :
デフォルトの名無しさん :皇紀2665/04/01(金) 18:56:14
良いです。 つまり、読み込みからint型で読み込むということですか? int temp; cin >> temp; みたいな。 でも、”,”を読み込むと、どうやってもうまくいかないんですよね。 フラグ変数をどういう風に使えば良いのでしょうか?
>>725 いやわざわざint型に変えんでも
if(temp!=','&&temp!='.'){
の部分を活用すれば...
後は自分で考えるべし
727 :
デフォルトの名無しさん :皇紀2665/04/01(金) 19:11:41
本当はこれは関数の一部で、このint arrayをあとでいろいろいじくるんですよ。 ただinput : 3 5 7 5,11 9 をarrayに 3 5 7 5 11 9といれたいだけなんですよ。 読み込みの際に、int tempを使うと、","を読み込むと、プログラムがおかしくなっちゃう。 char tempを使うと、int arrayに入れるときに、全く違う数字が入ってしまうんです。 例えば、 char temp; cin >> temp; // 1 cout >> temp; // 1 int num = temp; cout << num; //49 となるんですよね
>>727 tempに入っているのは文字としての'1'であり、数値の1とは別物。
>>727 atoiつかっちゃだめなの
それか48ひくとか
731 :
デフォルトの名無しさん :皇紀2665/04/01(金) 19:23:30
読み込みの際に、charを使ってはいけないことに気付きました。 なぜなら、2桁の整数を読み込むこともあるからです。 atoiですか? 初めての言葉なので、ちょっと調べてみます。
一行ずつ処理なさいな。
>>727 C++を使わずにCの範囲でやってみた。
エラーチェックとかはぜんぜんしてないし、
コンパイルが通るかも疑問だけど。
配列の最初に9が来た場合に不正な参照が起こることと、
数値以外は全部空白扱いってことに注意。
int main(void) {
int array[10];
char temp[10];
int i=0, j=0;
while(EOF != (ch=getc(stdin))) {
if(isdigit(ch)) temp[i++]=ch;
else {
temp[i] = '\0';
if(i!=0) array[j++] = atoi(temp);
if(array[j-2] != 5 && array[j-1]==9) break;
i=0;
} } }
これも有限状態オートマトンで解ける問題だな。
日付欄いまいちだな。シロウト臭い。
今日は土曜か。明日は休みだ。
737 :
デフォルトの名無しさん :int 2ch =05/04/01(金) 21:02:44
>>727 一様できました
>>733 なるほど、俺のはだめだな余分な処理が多くて
暇なひとは指摘してくだされ
int main(){
int count = 0;
int command_array[10];
char temp[10];
int curr=0,prev=0,flag=0;
cout << "\tEnter commands : " << endl;
while(!(prev==5 && curr==9 && flag)){
flag = 0;
cin >> temp;
const int ilen = strlen(temp);
for(int i = 0; i<ilen; i++) {
if(temp[i] == ',' && curr==5){
flag = 1;
} else {
curr = static_cast<int>(temp[i]-'0');
command_array[count] = curr;
if(count!=0)
prev = command_array[count-1];
count++;
if(0<=curr && curr<=9)
cout << curr << endl;
}
}
}
return 0;
}
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): ■機能 WindowsXPのようこそ画面(ユーザーアイコンの並んだログイン画面) において、マウスでクリックすることなく、自作アプリからログインしたい。 ■状況・条件等 ・ログインしたいユーザー名とパスワードは分かっています。 ・ようこそ画面は表示したままで、自動的にログオンしたいです。 ・ようこそ画面上で、自作アプリの起動は、できています。 ・トップウィンドウにフォーカスをあてて、キーを送信(矢印キーとパスワード) してもログインできました。が、沢山のユーザーがある場合、非常に見た目が悪い。 ・GINA?!とかいう画面差し替えの技術は使わないで行いたいです。 何かAPI一発で出来そうな気もするのですが、WEBを検索しても見つけることができませんでした [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ(バージョン): Visual C++ V6.0 [3.3] 言語:C++ [4] 期限:2005年04月06日 [5] その他の制限:
>>733 ,737
なるほど。ありがとうございます
日付の"int 2ch="は激しくうざいな。そもそもどの言語だ。
…とか書いた時点で無くなってる…(´・ω:;.:...
どんまい
745 :
デフォルトの名無しさん :2005/04/03(日) 03:46:04
[1] 授業単元: C [2] 問題文(含コード&リンク): zlibを使い、文字列を圧縮・展開する関数compression(char *instr[], char *outstr[]); decompression(char *instr[], char *outstr[]);を作りなさい。 [3] 環境 [3.1] OS: WindowsMX SP2 [3.2] コンパイラ(バージョン):VC .NET2003(VC7.1) [3.3] 言語:C [4] 期限:2005年04月12日05:00 [5] その他の制限: zlib以外のライブラリは使えません。
WindowsMXとか書くバカは市ね
ワロタw WinMeの後継OSか?w
はぁ?おまえらWindowsMX知らないの?そんなんでよくプログラマやってんな
この板来てる奴がプログラマだけとは限らん
WindowsMX の検索結果のうち 日本語のページ 約 840 件中 1 - 50 件目 (0.39 秒) もしかして: Windows me
はて、Windows MeにSP2なんてあったっけ?
WindowsXPのアカデミックパックのことだろ。 「WindowsMX」なんてOSは存在しないから。
>>745 int compression(char *inbuf, char *outbuf, int inbufsize, int outbufsize)
{
z_stream z;
int status;
z.zalloc = Z_NULL;
z.zfree = Z_NULL;
z.opaque = Z_NULL;
if(deflateInit(&z, Z_DEFAULT_COMPRESSION) != Z_OK){
fprintf(stderr, "deflateInit: %s\n", (z.msg) ? z.msg : "???");
return -1;
}
z.next_in = (Bytef *)inbuf;
z.avail_in = strlen(inbuf) * sizeof(char);
z.next_out = (Bytef *)outbuf;
z.avail_out = outbufsize;
status = deflate(&z, Z_FINISH);
if(deflateEnd(&z) != Z_OK){
fprintf(stderr, "deflateEnd: %s\n", (z.msg) ? z.msg : "???");
return -1;
}
return 0;
}
3,4の引数は適当に改造してくれ。
int decompression(char *inbuf, char *outbuf, int inbufsize, int outbufsize) { z_stream z; int status; z.zalloc = Z_NULL; z.zfree = Z_NULL; z.opaque = Z_NULL; if(inflateInit(&z) != Z_OK){ fprintf(stderr, "inflateInit: %s\n", (z.msg) ? z.msg : "???"); return -1; } z.next_in = (Bytef *)inbuf; z.avail_in = strlen(inbuf) * sizeof(char); z.next_out = (Bytef *)outbuf; z.avail_out = outbufsize; status = inflate(&z, Z_FINISH); if(inflateEnd(&z) != Z_OK){ fprintf(stderr, "inflateEnd: %s\n", (z.msg) ? z.msg : "???"); return -1; } return 0; }
755 :
デフォルトの名無しさん :2005/04/03(日) 21:06:04
まず >z.avail_in = strlen(inbuf) * sizeof(char); \0はどーすんだ。
[1] 授業単元:C++独習
[2] 問題文(含コード&リンク):複数の生徒の成績をテキストファイルから読み込み二つの異なった評価方法でのGPAを表示させるプログラムを作成する。
例:Student #1 Old GPA: 2.71 New GPA: 2.64
Student #2 Old GPA: 2.88 New GPA: 3.08等
二つの異なったGPAのテーブル表と具体的な例を、あぷろだに置かせてもらってます。↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/291.txt [3] 環境:BCC developer
[3.1] OS:Windows XP
[3.2] コンパイラ(バージョン):BCC
[3.3] 言語:C++
[4] 期限:2005年二月五日まで
[5] その他の制限
制限 1.次の関数を含まなければいけない。num_students(これはファイルの中に書かれている生徒数の数) num_class(これはファイルに書かれている生徒の取ったクラスの数)
2.メイン関数はCompute_Student_GPAとしなければならない。ファイルストリームをパラメーターとして扱わなければいけない。 ファイルはリファレンスを通さなければならない。(よくわからないので無視して下さっても結構です。)
3.Old GPAとNew GPAどちらも表示させる。
よろしくお願いします。
>>758 制限がよく判らない。
特に、"1"の関数ってどれ? 生徒の数やクラス数を返す関数を用意するということ?
"2"では、「ファイルはリファレンスを…」が意味不明。
大体プログラムはイメージできたけど、私が書くと当然クラスを使うことになる。
それは問題ないのかな?
それとも、あくまでもBetterC程度にしておいた方がいいのかな?
既に期限を過ぎてる件について
>>758 一応物はできたけど、練習と思ってあれこれ実験しながら作ったから汚い汚いw
今夜辺りまでにMoreBetterSolutionがなければ貼り付けるけど、制限はほぼ無視状態。
763 :
761 :2005/04/05(火) 01:44:17
お〜、OtherSolutionが提示されたから私のはお蔵入りでいいね。
>>758 処で、A+は4.3じゃないのかな?
764 :
758 :2005/04/05(火) 01:56:02
わざわざありがとうございます!! Vector等まだ習い始めたものも書いてあったので参考になりました。 独習なので自分で期限を決めているだけなので多少遅れてもなんてことはありませんでした。 後はこれで成績ファイルを作成して読み込ませて確認して、仕組みを理解してから次を学ぼうかと思います。 ありがとうございました。
765 :
758 :2005/04/05(火) 01:59:37
A+も4ですね。 どこかの大學のサイトのGPA計算表を見て作ろうと思ったのですが。 もしよければ761氏のプログラムも参考にみさせていただくと幸いです。
766 :
761 :2005/04/05(火) 02:44:52
>>758 同じと頃の293.txt。
そうそう、NewMethodとOldMethodを共通化しちゃってるので要注意。
#あとなんかあったかなぁ…
うギャー
こういうブラクラに引っかかる香具師多いよな
>>771 770じゃないけど
counts を NULL で初期化してなくない?
もし new 失敗したら例外をはかない環境だと値が不定になって
delete のときにセグメンテーションフォルトになるよ
>>772 ふむふむ。
つーか、new失敗したら直後のmemset()が拙い悪寒。
いっとくがatoiは予期せぬ入力があったときの動作不定だったと思う。
予期せぬ入力ってなんだろ。数字以外の文字が出現したら変換終了なんだけどな。
>>775 int で表現できない場合,結果は処理系依存
だが,
>>774 はたぶん分かっていなかっただろう
>>762 メンバ変数の初期化には、
初期化リストを使ったほうがいいんじゃないかな。
あと、コーディング規約みたいなのは適用しないの?
num_clas は numClass とか統一したほうが。。
あ、これってもしかしてメンバ変数とメンバ関数の
名前がかぶらないように num_clas にしたの??
それだったらひどい気がするんだけど。。
メンバ変数は numClass_ とか m_numClass にしたほうがよくない?
num_clas --- num_class()
num_student --- num_students()
これはひどいと思う。
record::record() : m_numClass(0), m_number(0), m_count(0)
{
++s_numStudent;
++s_currentNumber;
m_number = s_currentNumber;
m_count = new double[NEW_METHOD_SIZE];
if(m_count){
memset(m_count, 0, sizeof(double) * NEW_METHOD_SIZE);
}
}
>>777 doubleをmemsetするかねぇ…
というかm_countのif分岐は無駄
つーかそもそも設計がおかしくね? なんだってまたいちいちstaticメンバでカウントしたり妙なグローバル変数使うかな。
MS もよく T* = new T; if (T == NULL) { ... } とか書いてるが、正直アホかと思う。何考えてんだろ
まだ春休みなの?
NULLになることはありえる事だよ??なんでアホなのか納得できる説明を。
>>782 例外をキャッチしてないからじゃね
でも VC6 とかはその例外自体が壊れてなかったっけ
T* t = new(std::nothrow) T; if (t == NULL) { ... } なら分かるんだがな つかバカばっかだなここ
一応移植性を考えれば、古いコンパイラ対策でNULLチェックするのは分かるけど 例外をcatchせずにNULLチェックだけしてるのはどうかと思う
またお前ら悦にはいってますね。
質問が少ないから暇なんだよ
VC6は酷かったな…
>>787 C厨だからC++はよくワカランのだ
ちゃんとコード書いてから煽っているところ好きだぜ
793 :
762 :2005/04/08(金) 23:01:42
>>770-779 いろいろつっこまれてる。(^^;)
もっともなご指摘です。ためしにNULLでmemsetしたら
・・・の命令が0x0000000のメモリを参照しました。・・・
のエラーが発生。このエラーNULLでメモリアクセスしたときに発生してたのか。
new失敗を気にすると常にtry catchか
>>787 のように書いたほうがよいのでしょうか?
>>778 doubleをmemsetするのは自分でもなにか気持ち悪いのですが、他の方法が思い浮かばなかったものでつい
ところでdoubleでの0.0の表現が0x00....という保証はあるのだろうか・・・
>>779 たしかに設計に問題がありますね・・・
おすすめのコーディング規約教えて下さい
>>793 >ところでdoubleでの0.0の表現が0x00....という保証はあるのだろうか・・・
処理系依存
>>793 細かいことは兎も角、>780のは設計方針として参考にならない?
コンストラクタでファイル読み込みを全部やるのは如何なものかと思うけど。
こんなスレののびが悪いなら宿題スレはこのスレで最終回にするか。
まだ大学は本格的に授業始まってないからなぁ もうちょっと傍観
[1] 授業単元: 計算機(C/C++) [2] 問題文(含コード&リンク): 標準入力で (名前) 得点1 得点2 得点3(enter) …* を項目の間はTABで区切って入力し、"data.txt"というファイルに(追加)出力する また以下の条件に沿うこと (1) *の条件に合わない入力があった場合プログラムを終了させる そうでない場合は入力を続ける。 (2) "data.txt"は ・1行が "(名前) 得点1 得点2 得点3(改行)"で項目はTABで区切られていること ・得点1、得点2、得点3の合計で昇順になっていいること (3) 名前は終端'\0'含めて半角16文字。得点はintで扱える値であること。 これに関して構造体を用いてもかまわない [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ(バージョン): 汎用(gcc,bcc) [3.3] 言語:C [4] 期限:2005/04/15 まで [5] その他の制限: ライブラリはstdio.h,stdlib.hおよびstring.hのみ認める。
800 :
デフォルトの名無しさん :2005/04/11(月) 14:00:22
宿題依頼と言うか、質問です。スルーしてもらっても構いません。でも、出来たら力を貸してください。 [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): ・隣接リスト形式の入力データを読み込み、頂点を順に表示する。(原点はどこでもいい) 入力データ例: 1 3 4 2 4 3 1 4 4 2 1 3 1 2 4 2 1 3 3 2 4 4 1 3 出力データ例: グラフ1 1, 3, 4, 2 グラフ2 1, 2, 4, 3 [3] 環境 [3.1] OS: XP [3.2] コンパイラ(バージョン):borland C++ 5.51 [3.3] 言語:C++ [4] 期限:2,3日中 [5] その他の制限: グラフ1のみ、2のみ、という様になら出来たのですが、 与えられているように、いくつかのリストが空行で分けられている時の 空行の判別方がわからずに困っています。
>>800 取り敢えず、できたものを晒して味噌。
データ数固定でもいいから。
>>798 未だ時間があるから少しは自分でやってみ。
>>800 一行をfgets()などで読み込み、strtok()で取り出した数字をatoi()などで
数字に直す。トークンが一つもなければ空行とみなし、その時点で深さ優先
探索もしくは幅優先探索を行い、頂点を出力。
探索が終わったら、メモリをfree()して、改めて最初に戻る。
804 :
デフォルトの名無しさん :2005/04/11(月) 18:51:01
×再帰版 ○スタックを使っている
808 :
807 :2005/04/11(月) 23:43:42
標準入力って書いてあった… ってことは stdin からであってるね 今のコードだと合計の降順にソートされる(バグだヨ) どうすれば昇順になるかはすぐ分かるよね これだけ宿題
え、入出力部分はbridgeパターンで作るんじゃないの?
810 :
800 :2005/04/12(火) 03:05:56
811 :
800 :2005/04/12(火) 09:04:31
僕のやったの、アレーも無駄に使ってますね。 行列とそんなに変わんないじゃない。 やっぱり読み込みがおかしいのかな・・・
とりあえず、ぱっと見てぁゃιぃと思った部分を。 #includeの上3つ → .hを無くす。 下3つ → cstdio cstring cstdlib にする。同様に .h 不要 char *str, *numbers → malloc 等されていないのに free されてる。ついでに言うと str はプログラムの最後までは free 不要。 CとC++がごっちゃになって読みづらいよぅ。
>>811 42行に追加
str = (char *)malloc(num_size * sizeof (char));
46行を変更
while(numbers != NULL && isnumber(numbers[0]))
59行の後に追加
if (feof(input)) break;
114行のfreeは削除
ちゃんと見てないけど、こんなもんでとりあえずは動く?
fopenのIってのはよく分からんが、問題ないのかな。
問題大蟻だろう。 "I"じゃなくて"r"だね。 それから、sizeof(char)は常に1なので掛ける必要なし。
>>813 はどうか知らないが
あえてsizeof(char)を書くセンスの良さというものもある
ふつう、あえて書くよな。
817 :
800 :2005/04/12(火) 10:31:54
レスありがとうございます。
>>812 インクルード部分、訂正しました。
どこがCでどこがC++なのかよくわからないのです…
ごめんなさい。自分でも見づらいと思う。
>>813 fopen の "I"、本を見間違えてました…小文字の r でした。
isnumber関数が見つからなかったので、
<cctype>の isdigit(int ch) で代用してみたんですが、
あ、ダメか。numbersはポインタだ。
?
>>814 r でした。。
mallocしなくていいという事ですか?
これがmemory allocationの略だと知ったのもついさっきなので。。
コンパイル後の強制終了は無くなったんですが、
"output.txt"に何も出力されていない状態です。
聞いてばかりで申し訳無いですが、何がおかしいのでしょうか。
while(!Q.empty()) の中身には届いてる筈だと思うのですが。
818 :
800 :2005/04/12(火) 10:53:45
どうやら、visitの動きがおかしいみたいです。 やってみます。
819 :
800 :2005/04/12(火) 11:36:20
↑の追記ですが、 g++ main.cpp -o pj3 でコンパイルしました。バカの一つ覚えです。 ./pj3 を実行すると、segmentation faultが出ます。 bccで動いたのに、どうしてgccでダメなのかもわかってません。 アドバイスを戴けませんでしょうか。
821 :
デフォルトの名無しさん :2005/04/12(火) 13:15:54
手違いにより、時間が迫っているので、上げさせてもらいます。 セグメンテーションフォルトって事は、コードが全然ダメなのかな・・・
>>821 VCでコンパイルしたら普通に警告(値の割り当てられていない変数への参照)が出たんだが、
char *str;
↑こいつを初期化してないのに
fgets(str, num_size, input);
これはマズいだろう。
どこに書き込んでるんだ…
823 :
デフォルトの名無しさん :2005/04/12(火) 13:44:23
>>822 とりあえず、strにスペースを入れてみました。
しかし、何でbccでは動くのか。ばぐ?
>>823 スペースじゃなくて…
char *str = new char[num_size];
mainの最後の方で
delete [] str;
825 :
デフォルトの名無しさん :2005/04/12(火) 14:00:00
>>824 「ポインタ作ったら消せ」って事ですか。
あー、ホントすいません。
頭弱杉だ。
>>824 やばい。動いた。
ちゃんと動いた。gccで。
いいのかな。これで。
全部正しく表示するには
入力データの最後に一行空行が必要みたいだけど、
これはほっといてもいいと思うし。
なんてお礼を言えばいいのかわかりませんが、
800からお付き合いいただいた方々、本当にありがとうございました。
あなた達からしたら大した事じゃ無いものなんだろうけど、
わざわざ僕なんかのために貴重な時間を割いていただいて、本当にありがとうございました。
マジで。
軽く涙目ですよマジで。宿題一つで大げさですけど。
あー、また来る。来るなとか言われても来るよ。マジ感謝。
いつか教える側になってみたいね。全然そんなレベルじゃないですけど。
あー、駄文スマソ。ありがと。
827 :
デフォルトの名無しさん :2005/04/12(火) 14:13:31
質問おねがいします。 複素数を標準入力で入れたいのですが方法がわかりません。 普通のだと %d%c%d%*c で、大丈夫なのですが i や、 4 などと入力する場合があるので 文字列からやればいいのかどうすればいいのか全くわかりません
>>827 質問お願いされても困ります。
つーか、何を言いたいのか判りません。
あれやらこれやらごちゃごちゃ書いてありますが全く判りません。
>>827 複素数の入力形式が何種類あるのかまずはっきりしろ。
それから、そのすべての形式に対応する入力解析ルーチンを作るしかない。
>>827 i は 0+1*i
4 は 4+0*i
と入力するのはダメかい?
悪いことは言わない、こうしとけ、 (%はプロンプト) %complex_input.exe % 実数部を入れてください > 10 % 虚数部を入れてください > -5 % あなたの入力したのは 10 - 5 i です。 %
>>831 日本語がダメ。
あなたが入力したのは 10 - 5 i です。
あなたの入力した複素数は 10 - 5 iです。
あなたらは馬鹿ですか?
836 :
デフォルトの名無しさん :2005/04/12(火) 22:53:06
*NULL=ぬるぽ
大学を主席で卒業できました。いままでありがとうございました。
839 :
デフォルトの名無しさん :2005/04/13(水) 18:02:47
840 :
デフォルトの名無しさん :2005/04/13(水) 18:04:24
上の追加 (a){4,6,1,6,9}を使って6つの整数をinputし、平均をoutputする。 (b)vector of 10 accumulator objects を宣言する。 vector<accumulator<int>> count(10) 100万のランダム整数(範囲0-9)を生成しする。 count[value]をインクリメントする。 アウトプットする。 ================== そもそも、 vector<accumulator<int>> count(10)が初めてでよくわからないのです。 よろしくお願いします。
842 :
デフォルトの名無しさん :2005/04/13(水) 19:01:16
>>841 ありがとうございます。
これは、本の問題なので、先生からは何も言われてません。
そもそも後半のvector<accumulator<int> > count(10);からがよく分からなかったんですよね。
乱数0-9のいずれかを100万回足すというのですが、それでもオーバーフローになりますか?
0〜9なら大丈夫かと
844 :
デフォルトの名無しさん :2005/04/13(水) 19:03:40
もしかして、r.random()%10 にすべきなのかな?
845 :
デフォルトの名無しさん :2005/04/13(水) 19:11:46
なんか上手くできました。 ありがとうございました。
846 :
助けて :2005/04/13(水) 20:58:31
質問です。 整数を一桁ずつを一文字として、文字列に格納したい。 これは、1000 を 1,000のようにカンマで区切ってあらわしたいからです。 どのような関数を使ってやるのかどうか。。。 さっぱりわかりません。知識ある人どうか教えてください。 説明不足だと思うので、いろいろ質問してくださいm( __ __ )m
>>846 char str[10];
sprintf(str, "%d", 100);
848 :
846 :2005/04/13(水) 22:04:57
>847 レスありがとうです さっきの質問なのですが、もう少し詳しい状況を説明します。 @数値を入力 >A 文字列に交換 >B 出力 をしたいです。 Aの文字列に変換する目的は、例えば1000を入力した場合、1,000というように 3桁ごとにカンマを挟みたいからです。 文字列を交換する部分には、 itoa という関数を使用し、 main関数から呼び出そうと考えています。 そこで、知りたいことは何かというと、 itoa関数を使って、何桁かの数値を 3桁ごとにカンマで区切って表示する、、、、 プログラムを教えてください。
itoaよりsprintfの方がよい。(Cなら)
850 :
デフォルトの名無しさん :2005/04/13(水) 22:17:56
[1] 授業単元: C言語演習 [2] 問題文(含コード&リンク): 学籍番号、氏名、電話番号、住所 がsample.txtに 001,名前1,09012345678,日本 002,名前2,09012222222,韓国 003,名前3,08012345678,台湾 とある。この時、 問1:sample.txtを読み込み、,を抜かしてDOSプロンプトに表示せよ。 問2:適当な構造体を作成し、問1で読み込んだデータ郡を格納せよ。 問3:問2で構造体に格納したデータをsample.csvに出力せよ。その際、学籍番号 の前に行番号を付加せよ。 [3] 環境 [3.1] OS: [3.2] コンパイラ(バージョン): [3.3] 言語:C [4] 期限:2005年04月19日 [5] その他の制限: お願いします。
>>848 ぐおっ、マルチかよてめえ。
次からレス付かなくなるぞ。
>>850 #include <stdio.h>
typedef struct {
unsigned num;
char name[6];
char tel[12];
char address[5];
} PERSON;
int main(void) {
FILE * in_f, *out_f; int c, i; PERSON p;
if ((in_f = fopen("sample.txt", "r")) == NULL) return 1;
if ((out_f = fopen("sample.csv", "w")) == NULL) {
fclose(in_f);
return 1;
}
while ((c = getc(in_f)) != EOF) if (c != ',') putchar(c);
rewind(in_f);
for (i = 1; fscanf(in_f, "%u,%5s,%11s,%4s", &p.num, p.name, p.tel, p.address) == 4; ++i)
fprintf(out_f, "%d,%03u,%s,%s,%s\n", i, p.num, p.name, p.tel, p.address);
fclose(in_f);
fclose(out_f);
return 0;
}
855 :
846 :2005/04/13(水) 22:46:19
すいません。 書き込むとこがよくわからなくって、結果マルチになってしまいました。 不快にさせてすいません。 そして、ありがとう
856 :
850 :2005/04/13(水) 22:52:01
>>854 さっそくの書き込みありがとうございました。
857 :
デフォルトの名無しさん :2005/04/14(木) 00:42:23
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク):自然数nを入力し、x^2+y^2=z^2(x<y)を満たすようなn以下の自然数の組(x,y,z) がいくつあるかを出力するプログラムをお願いします。 [3] 環境 [3.1] OS: XP [3.2] コンパイラ(バージョン): cygwin [3.3] 言語:C [4] 期限:明後日
cygwinはコンパイラじゃない。
859 :
デフォルトの名無しさん :2005/04/14(木) 01:13:22
>>857 #include <stdio.h>
int main(void)
{
int n, x, y, z, count = 0;
scanf("%d", &n);
for (x = 1; x <= n; x++)
for (y = x; y <= n; y++)
for (z = 1; z <= n; z++)
if (x * x + y * y == z * z) count++;
printf("%d", count);
return 0;
}
>>860 を少々改良してスピードを速くしてみた。
#include <stdio.h>
#include <stdlib.h>
#define MAXL 128
int main(void)
{
int i, x, y, n, count = 0;
char buf[MAXL];
printf("自然数 n = ");
fgets(buf, MAXL, stdin);
n = atoi(buf);
if (n <= 0) {
fprintf(stderr, "nは1以上の整数を入力して下さい\n");
exit(1);
}
for (i = 1; i <= n; i++)
for (y = 1; y < i; y++)
for (x = 1; x < y; x++)
if (x * x + y * y == i * i) {
count++;
printf("%d^2 + %d^2 = %d^2\n", x, y, i);
}
printf("%d個見つかりました\n", count);
return 0;
}
862 :
デフォルトの名無しさん :2005/04/14(木) 01:31:30
>>850 なんだかよくわかりませんが、トーカナイザ書いときますね。
int tokenizer (char* tok, FILE* fin) {
int i;
char c;
for (i = 0; i < MAX_TOKSIZE; ++i) {
c = fgetc (fin);
switch (c) {
case ',':
case '\n': tok[i] = '\0'; return 1+strlen (tok);
case EOF: tok[i] = '\0'; return EOF;
default: tok[i] = c;
}
}
}
自然数って0を含むか含まないか、人によって違うよね。
>>857 はどっちのタイプ?
典型的な数学では自然数は0を含まないのだが。
>>857 haskellなら1行なんだがなあ。
f n = length [(x,y,z)|(x,y,z)<-[(x,y,z)|x<-[1..n],y<-[1..n],z<-[1..n]],x<y,x^2+y^2==z^2]
0を含むのはブルバキ流。それだけのこと。
別にどちらでもいいんじゃないか?
大変です〜答えが変わってしまいます〜
古典数学の時代には0は発見されていなかった
875 :
デフォルトの名無しさん :2005/04/14(木) 07:49:13
下に示す行列x,y,の積を求めるプログラムを作成せよ。 x[2][3] = { { 1 , 2 , 3 } , { 4 , 5 , 6 } } y[3][2] = { { 1 , 5 } , { 5 , 3 } , { 8 , 1 } } って問題なんですが、for文を使ってやることは分かるんですが、どういう式を書けばいいのかわかりません。 よろしくおねがいします
>>875 int z[2][2];
int sum;
for (i=0; i<2; i++) {
for (j=0; j<2; j++) {
sum = 0;
for(k=0; k<3; k++) sum += x[i][k]*y[k][j]
z[i][j] = sum;
}
}