トップページ⇒tech
1001コメント403KB

ぼるじょあがC/C++の宿題を片づけますYO! 42代目

■ このスレッドは過去ログ倉庫に格納されています
0001ぼるじょあ代理2005/04/18(月) 17:00:13
(・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】
0002デフォルトの名無しさん2005/04/18(月) 17:47:38
>>1
一回おきじゃねぇじゃん。
0003デフォルトの名無しさん2005/04/18(月) 18:30:24
どなたかご指南お願い致します。
[1] 授業単元: ソフトウェア製作実習�T
[2] 問題文(含コード&リンク): X,Y,Zに整数を入れ、Xに小さな値、Yに中間の値、Zに大きな値を
格納するプログラムを作成する。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ(バージョン):CPad for LSI C-86
 [3.3] 言語:C
[4] 期限:2005年4月19日まで
ちなみに、基礎的な↓の部分までしかわかりませんでした。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=313
0004デフォルトの名無しさん2005/04/18(月) 18:53:15
>>1
氏ねよ
0005ぼるじょあ ◆yBEncckFOU 2005/04/18(月) 18:53:49
41代目: http://pc8.2ch.net/test/read.cgi/tech/1109542053/
40代目: http://pc5.2ch.net/test/read.cgi/tech/1107625122/
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
0006ぼるじょあ ◆yBEncckFOU 2005/04/18(月) 18:54:30
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
0007ぼるじょあ ◆yBEncckFOU 2005/04/18(月) 18:56:21
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
ぼるじょあ◆yBEncckFOU は共同体で連続体で群生体だから無限の知識と
無尽蔵の体力を持ってるんだYO!
24時間365日、いつでも質問かかって来いYO!
(・3・) アルェー こっちが嫌になるほど質問しろYO!
ぼるじょあ◆yBEncckFOU はコテハンじゃないYO!
名前欄に「ぼるじょあ#ぶるじょあ」でキミも今日から「ぼるじょあ◆yBEncckFOU」だYO!
0008デフォルトの名無しさん2005/04/18(月) 18:57:18
>>7
まともなレスつけないぼるじょあなんて必要とされていません。
0009デフォルトの名無しさん2005/04/18(月) 19:03:32
>>3
はいyp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=313
にレスしといた。かなりやっつけ
001032005/04/18(月) 19:08:31
>>9さん

素早い回答、ありがとうございました。
if文で作るとこまではわかったんですが、中身がどうしたら良いかわからなくて…。

本当に助かりました。
どうもありがとうございました。
0011デフォルトの名無しさん2005/04/18(月) 22:10:48
[1] 授業単元:C言語演習
[2] 問題文:
適当な文字列が10行書き込んであるsample.txtがある。
文字列1
文字列2
…
文字列10
問1:適当な構造体を作成し、sample.txtを開き、データ郡を格納し、DOS窓に
構造体のデータとして
01 文字列1
02 文字列2
…
10 文字列10  と表示せよ
問2:DOS窓でiを入力したら「何行目に文字列を挿入しますか?」と表示し、
適当な行を数値入力後、文字列を挿入する。
問3:文字列挿入後、sample.txtを上書きする。
問4:DOS窓でqを入力すると終了する。
[3] 環境
 [3.1] OS:win xp
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年04月20日
[5] その他の制限:
0012前スレ9752005/04/18(月) 23:28:34
前スレ976さん、978さん、979さん助言ありがとうございました。

とりあえず、形にしたつもりですがファイルへの出力で
ソートした最後の値だけがファイルに保存されてしまいます。

1.0 2.0 3.0 4.0 ・・・ 10.0

というふうにソートした場合、

10.0だけでなく、

1.0 2.0 3.0 4.0 ・・・ 10.0

という風にファイルに保存したいのですが、どのように変えれば出来るでしょうか?

度々申し訳ありませんがアドバイスお願いいたします。
0013122005/04/18(月) 23:41:10
もうしわけないです。
ファイルはこちらにアップさせていただきました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/315.txt
0014デフォルトの名無しさん2005/04/18(月) 23:51:56
>>13
ソースを見せてもらったが、表示と同時に保存している。
完全にロジックがおかしいから、表示が終わってから、改めてfopen()して
書き込むが良い。fopen()は"w"で開く度に、前の同名ファイルが存在しても
削除して上書きしてしまう。
0015デフォルトの名無しさん2005/04/19(火) 00:11:15
>>1-14




















氏ね
0016デフォルトの名無しさん2005/04/19(火) 00:13:38
>>14

おおおお!出来ました!

皆さんどうもありがとうございました!
0017デフォルトの名無しさん2005/04/19(火) 00:23:30
>>13
fopen()の引数を "w" から "a" に変えるとかね。

でも、前スレ見てないから>>13が、どんな奴かは知らんが
ソースを見た感じファイル操作なんて早すぎる。
配列は正しく初期化されてるかな?
N個の要素を持つ配列を宣言しておいて、N-1個しか使っていないよ。
それでいてソート処理ではN個全てを対象としている。

それらが、ある程度動くようになってからファイルに出力しようよ。
せっかく配列に保持してるんだから、表示と保存処理は別にした方が良い。
ファイルに出力できれば、それで良いって考えは良くないよ。
ソフトウェア開発の仕事をすると、涙を呑んでそんなことをすることもあるが・・・
0018デフォルトの名無しさん2005/04/19(火) 02:11:08
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):0以上1以下の実数pをキーボードから入力し、ランダムにN人を集め、
誕生日別に分類したとき、生まれた人が一人もいないような日が存在しない確率を考える。
このような確率がp以上であるようなNの最小値を出力するプログラムをお願いします。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C/C++/どちらでも可 のいずれか C
0019デフォルトの名無しさん2005/04/19(火) 02:23:50
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):n個の文字列をキーボードから入力し、昇順
に並び替えて出力するプログラムを作成しなさい。ただし、文字列の文字数は
30文字以下とし、n<=50とする。
[3] 環境
 [3.1] OS: UNIX/Solaris 
[3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年4月21日まで
お願いします。
0020cen ◆Pm9xOTJuM. NGNG
>>18
こんな感じ?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int i,N,min=365;
double p,tmp;
srand((unsigned)time(NULL));
printf("Please input p\n");
scanf("%lf",&p);
i=0;
while(i<10000){
N=rand()%365+1;
tmp=1-(double)N/365;
if(tmp<p && N<min){min=N;}
i++;
}
printf("%d\n",min);
return 0;
}
0021デフォルトの名無しさん2005/04/19(火) 02:47:39
>>18
誕生日というものが1年のうちの各日に均等に生じるという保証がないので、
この問題は回答不可能じゃないかな。
例えば2/29日生まれってのをどうするとか、盆と正月の9ヶ月後の誕生日が多いとか。
0022デフォルトの名無しさん2005/04/19(火) 03:19:04
つか、
このスレも昔みたいにテンプレ無くせよ
0023デフォルトの名無しさん2005/04/19(火) 04:47:28
>>22
テンプレ無くすと無駄なやり取りが増えるだけで、スレの無駄。
0024デフォルトの名無しさん2005/04/19(火) 06:46:02
>>22-23
おまいら寝とけ
0025デフォルトの名無しさん2005/04/19(火) 07:29:24
>>23
昔はなかったぞ。

誰だよ、このスレにテンプレつけた奴は?
0026デフォルトの名無しさん2005/04/19(火) 09:28:42
過去ログほとんど持ってないがテンプレ付いたのは31以降40以前

・Cでお願いします(文中にない場合もある)と言ってるのに C++の"//"のコメント使うのをはじめ
 C,C++の記述が混合してたり
・期限が●日だったのにとあとから追加してくるので期限がわからず過ぎてから解答だしたり
・授業単元の趣旨と外れた解答をして「これじゃダメです」ってレス付いたり
・解答もらったけどこっちではコンパイル通りませんとか
いろいろあったから初めの出題の段階でできる限りの情報を引き出すためのテンプレかと

>・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
>・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。

テンプレをなくした時のメリットって何ですか?
教えていただけると今後の参考になりますのでお願いします。
0027デフォルトの名無しさん2005/04/19(火) 09:30:37
初心者すぎますが、C++ってなんて読むんですか
シープラスプラス??激しくアレな人教えてください
0028デフォルトの名無しさん2005/04/19(火) 09:37:26
>>27
マルチ氏ね
0029デフォルトの名無しさん2005/04/19(火) 09:40:28
>>28
はじめからこっちで聞くべきでしたねってあっちに
付け加えてんだろうがなんでもかんでも一緒にする房うざすぎ お前がまず氏ね
0030デフォルトの名無しさん2005/04/19(火) 09:47:15
>>28
マルチの意味わかってんのかね このクソガキは
ビビってひっこんでんじゃねーぞこら でてこいやキチガイ
0031デフォルトの名無しさん2005/04/19(火) 09:58:40
もういいや
>>28は消防からやり直して氏ねよ
2chのルールだけ気にしすぎて通常の人間の会話が理解できない房決定
2chやりすぎて脳腐ってんじゃないの?w 氏ね
0032デフォルトの名無しさん2005/04/19(火) 10:04:00
29 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/19(火) 09:40:28
>>28
はじめからこっちで聞くべきでしたねってあっちに
付け加えてんだろうがなんでもかんでも一緒にする房うざすぎ お前がまず氏ね

30 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/19(火) 09:47:15
>>28
マルチの意味わかってんのかね このクソガキは
ビビってひっこんでんじゃねーぞこら でてこいやキチガイ

31 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/19(火) 09:58:40
もういいや
>>28は消防からやり直して氏ねよ
2chのルールだけ気にしすぎて通常の人間の会話が理解できない房決定
2chやりすぎて脳腐ってんじゃないの?w 氏ね

190 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/19(火) 09:42:40
>>189
どこがマルチなんだ?wキチガイか 氏ね房うざすぎ おまえが氏ね

191 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/19(火) 09:57:38
もういいや
>>189は消防からやり直して氏ねよ
2chのルールだけ気にしすぎて通常の人間の会話が理解できない房決定
0033デフォルトの名無しさん2005/04/19(火) 10:07:29
>>30
マルチの意味を教えてくれないかwwww
0034デフォルトの名無しさん2005/04/19(火) 10:08:49
>>28
ttp://www.angelfire.com/art2/blazer/hm.html
しっかり読め
0035デフォルトの名無しさん2005/04/19(火) 10:15:12
>>27はもう遁走か?
口と逃げ足だけは一人前だなw
0036デフォルトの名無しさん2005/04/19(火) 10:16:00
>>35
バカすぎ乙w
0037デフォルトの名無しさん2005/04/19(火) 10:24:31
>>35
釣られてんじゃねーよwwwっぅうえwwww
0038デフォルトの名無しさん2005/04/19(火) 13:29:44
>>19
#include <stdio.h>
main(){
char cStrings[50][30];
char cWork[30];
int num,i,j;

memset(cStrings,0,sizeof(cStrings));
printf("文字列を入力して下さい。[Enterのみで終了]\n");
for(num=0;num<50;num++){
if (fgets(cStrings[num],30,stdin) == NULL) break;
if (cStrings[num][0] == '\n') break;
}
for(i=0;i<num-1;i++){
for(j=i+1;j<num;j++){
if (strcmp(cStrings[i],cStrings[j]) > 0){
memcpy(cWork,cStrings[i],sizeof(cWork));
memcpy(cStrings[i],cStrings[j],sizeof(cWork));
memcpy(cStrings[j],cWork,sizeof(cWork));
}
}
}
printf("ソート結果\n");
for(i=0;i<num;i++) printf("%s",cStrings[i]);
}
0039デフォルトの名無しさん2005/04/19(火) 15:23:13
[1] 授業単元:情報処理�T
[2] 問題文(含コード&リンク):x^3+x-2=0の解を[0,3]区間で求めよ。ただし
ε=0.0001の場合とε=0.1の場合を求め結果を考察せよ(二分法)
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン):?
 [3.3] 言語:C++
[4] 期限:
[5] その他の制限: ソースプログラムε=0.1の時
          結果ファイル2個(x=1,-2 ?)
0040デフォルトの名無しさん2005/04/19(火) 16:33:50
>>38さん
実行できました。助かりました。ありがとうございました。
0041デフォルトの名無しさん2005/04/19(火) 18:04:55
>>39
εってなんですか。大体解かるが、変数には説明が必要。
0042デフォルトの名無しさん2005/04/19(火) 18:07:18
使ってるコンパイラが?ってどういうことだよ
0043392005/04/19(火) 18:09:43
>>41
すいません
イプシロンです。
EPSでお願いいたします。
0044392005/04/19(火) 18:12:41
>>42
ほんとごめんなさい
Microsoft Visual C++ 6.0
です。
0045デフォルトの名無しさん2005/04/19(火) 18:13:52
>>43
そんなこと聞いていないが…
質問者いじめはもうやめよう…
0046Addicted to C++ ◆nrBjarne.g 2005/04/19(火) 19:36:27
>>25
私です。
ダディクールがC/C++の宿題を片づけます 32代目
http://pc5.2ch.net/test/read.cgi/tech/1097592876/330
0047デフォルトの名無しさん2005/04/19(火) 19:44:19
前スレから。
http://pc8.2ch.net/test/read.cgi/tech/1109542053/955

だいたい出来て、やっとエラーがほぼ無くなりました。
size_typeに関するもの以外は。

template<typename Element> reference Vec<Element>::front()
のように、referenceなどのものに関するエラーは出ないんだけど、
template<typename Element> size_type Vec<Element>::max_size(void) const
とかになると、エラーが出ます。
size_typeをsize_tと書き換えると、エラーがなくなります。
これって、コンパイラーかなんかのせい?
ちなみに、visual studioβ版使ってます。

コードは、これ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/319.txt
0048デフォルトの名無しさん2005/04/19(火) 21:03:51
>>39
#include <stdio.h>
#include <math.h>
float func (float x) { return x*x*x+x-2.0; }
float bisec (float (*f)(float), float l, float r, float e) {
float m = (l+r)*0.5, fm = (*f) (m);
if (fabs (r-l) < e || fm == 0) return m;
else if ((*f) (l) * fm < 0) return bisec (f, l, m, e);
else return bisec (f, m, r, e);
}

int main () {
printf ("ε=0.0001: %f\nε=0.1: %f\n",
bisec (func, 0.0, 3.0, 0.0001),
bisec (func, 0.0, 3.0, 0.1));

return 0;
}
0049デフォルトの名無しさん2005/04/19(火) 21:30:27
思うんだけど、テンプレの環境の項目は要らないんじゃない?環境依存は禁止でしょ?
0050デフォルトの名無しさん2005/04/19(火) 21:38:11
>>49
精神科病院にでも行ってきたら?
0051デフォルトの名無しさん2005/04/19(火) 21:45:49
>>50
その必要もない。
0052デフォルトの名無しさん2005/04/19(火) 21:47:54
メ几
木又
0053デフォルトの名無しさん2005/04/19(火) 22:04:19
too haw sim *
0054デフォルトの名無しさん2005/04/19(火) 22:47:39
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
***********
*********
*******
*****
***
*
上から左右2個ずつ*が減る逆三角形を作りたいのですが、for文の条件がわかりません。
*を増やすのを2個ずつ減らせばいいのは分かるのですが、m=m+2にすると、
平行四辺形になります。どうかヒントだけでもいただけないでしょうか
#include <stdio.h>
void main(void){
int k,l,m;
for(k=1;k<=6;k++){
for(l=1;l<=k;l++){
printf(" ");
}
for(m=1;m<12;m=m+2){
printf("*");
}
printf("\n");
}
}

[3] 環境
 [3.1] OS:win2000
 [3.2] コンパイラ(バージョン):わかりませんがMicrosoftVisualC++使ってます
 [3.3] 言語:どちらでも可
[4] 期限:特になし
0055542005/04/19(火) 22:51:40
左側の空白が消えてしまいました。本当はVの形になります。
0056cen ◆Pm9xOTJuM. NGNG
>>54
こんな感じ?
#include <stdio.h>
void main(void){
int k,l,m;
m=0;
for(k=0;k<6;k++){
for(l=0;l<m;l++){
printf(" ");
}
printf("*");
for(l=0;l<20-m*2;l++){
printf("*");
}
printf("\n");
m=m+2;
}
return 0;
}
0057542005/04/19(火) 23:02:45
こちらのスレの方が適切といわれてこちらに書き込みましたが、元のスレで答えていただきました。
マルチっぽくなってしまってすみませんでした。
0058デフォルトの名無しさん2005/04/19(火) 23:06:10
#include <stdio.h>

#define N 11

int main()
{
  int n, i, offset = 0;
  for( n = N; n > 0; n -= 2, offset++ ){
    for( i = 0; i < offset; i++ ) putchar(' ');
    for( i = 0; i < n; i++ ) putchar('*');
    putchar('\n');
  }
  return 0;
}
0059デフォルトの名無しさん2005/04/19(火) 23:56:33
>>49
template習ったから、使わせたいんだと思う。
0060472005/04/20(水) 00:00:31
というか、この課題ってそんなに難しいものなの?
自称C++のexpertと名乗ってる人達が、自分が想像してた以上にでかい課題だとか言って、
みんな。ひいていくんだけど・・・。
締め切りまで、もう少しだから、馬鹿なりに頑張ってみる。
0061デフォルトの名無しさん2005/04/20(水) 00:05:12
単に面倒くさいだけなんじゃ…
0062472005/04/20(水) 00:08:14
いや、面倒くさいのは、今までにあって対応してくれたから、そうでもないと思う。
0063472005/04/20(水) 00:12:07
というか、C++のコード直しを商売にしてる専門のところの人だから・・・。
0064472005/04/20(水) 00:18:55
vusual studio 2003で出来ることって、visual studio 2005β版で出来ますよね?
コンパイラーとかのせいでは、ないんですよね?
0065デフォルトの名無しさん2005/04/20(水) 00:27:31
連続投稿なんてうざい事やってるから見放されるんだろうな
0066デフォルトの名無しさん2005/04/20(水) 01:01:24
質問です。
Solaris環境でC++を使っています。
C++で、Unixシステムコマンドを呼び出す方法を教えてください。
%hostname というコマンドを使いたいのです。

よろしくご教授願いします。
0067デフォルトの名無しさん2005/04/20(水) 01:02:36
system("hostname")
0068デフォルトの名無しさん2005/04/20(水) 01:02:59
>>47
referenceはエラーでないの?出そうな気がするけど。
とりあえずsize_typeに関しては
template<typename Element>
typename Vec<Element>::size_type Vec<Element>::max_size() const
にすれば大丈夫だと思う。
0069デフォルトの名無しさん2005/04/20(水) 04:47:40
z:\project\se.cpp(368): fatal error C1075: end of file found before the left brace '{' at 'z:\project\se.cpp(28)' was matched
これどうすれば??
0070デフォルトの名無しさん2005/04/20(水) 12:14:07
すみません。お助けください。
以下のコードはEUCをUNIコード変換する関数なのですが
逆にUNIコードをEUCに変換するように改造するには
どこを触ればいいのでしょうか?基本的にマイナスプラスの世界に
なるかと思われますが、よろしくお願いします。
EXPORT BOOL __stdcall ChengeEucToUni(char *File_in){
unsigned char*str_in,*str_out,*p;//文字列変換入出力
unsigned charstr_in_work[MAX_PATH];//入力ワーク
unsigned charstr_out_work[MAX_PATH];//出力ワーク
unsigned intHighAsc;//上位コード
unsigned intLowAsc;//下位コード
inti,strLen;//処理カウント/文字列長
chartmpfile[255];//テンポラリファイル名
ifstreamfiled;//出力ストリーム宣言
ofstreamfout;//入力ストリーム宣言
//変数の初期化
memset( str_out_work,'\0',MAX_PATH);
memset( str_in_work,'\0',MAX_PATH);
str_out= &str_out_work[0];
str_in= &str_in_work[0];
//変換後テンポラリファイル名作成
memset( tmpfile,'\0',MAX_PATH);
strcpy(tmpfile,File_in);
strcat(tmpfile,"tmp");
//変換元のファイルを開く
filed.open(File_in);
if(filed.fail()){
AfxMessageBox("変換元ファイル読込失敗");
return FALSE;
}
0071デフォルトの名無しさん2005/04/20(水) 12:15:39
//変換後の書込みファイルを開く
fout.open(tmpfile);
if(fout.fail()){
AfxMessageBox("変換先ファイル読込失敗");
return FALSE;
}
int fi = 0;
//変換元ファイルの終端までループする
while(!filed.eof()){
//変換元文字列の取得
filed.getline(str_in,MAX_PATH);
/* 文字バイト数取得 */
strLen=strlen((const char *) str_in);
/* 先頭位置コピー */
p = str_out;
for(i=0;i<strLen;i++){
/* 上位・下位コード取得 */
HighAsc = *(str_in+i);
LowAsc = *(str_in+(i+1));
/* 2バイト文字である */
if(HighAsc > 0x7F){
if(HighAsc == 0x8E){
/* 半角カタカナである */
*str_out = LowAsc;
/* 1文字分進める */
str_out++;
}
0072デフォルトの名無しさん2005/04/20(水) 12:17:16
else{
/* 1バイト目変換 */
/* 偶数である */
if((HighAsc % 2) == 0){
if(HighAsc < 0xDF)
*str_out = (unsigned char)(0.5 * HighAsc + 48);
else if(0xE0 <= HighAsc && HighAsc <= 0xFE)
*str_out = unsigned char(0.5 * HighAsc + 112);
}
/* 奇数である */
else{
if(HighAsc < 0xDF){
*str_out = unsigned char(0.5 * HighAsc + 48.5);
else if(0xDF <= HighAsc && HighAsc <= 0xFD)
*str_out = unsigned char(0.5 * HighAsc + 112.5);
}
/* 2バイト目変換 */
/* 1バイト目が偶数である*/
if((HighAsc % 2) == 0)
*(str_out+1) = LowAsc - 0x2;
/* 1バイト目が奇数である */
else{
*(str_out+1) = LowAsc - 0x61;
if(*(str_out+1) > 0x7E)
*(str_out+1) = *(str_out+1) +1;
}
str_out+=2;
0073デフォルトの名無しさん2005/04/20(水) 12:18:08
}
/* 1バイト分すすめる */
i++;
}
/* 1バイト文字である */
else{
*str_out = HighAsc;
str_out = str_out + 1;
}
}

*str_out = '\0';

/* 先頭位置に戻す */
str_out = p;
//ファイルに変換データを出力
fout << str_out << endl;
//fout.write(str_out,strLen);//改行失敗の為、上記コードに変更
fi++;
}

filed.close();//変換元ファイルのクローズ
fout.close();//変換ファイルのクローズ
DeleteFile(File_in);//変換元ファイルの削除
MoveFile(tmpfile,File_in);//変換ファイルを変換元ファイル名にリネーム

return TRUE;

}//長文すみません
0074デフォルトの名無しさん2005/04/20(水) 12:35:41
氏ねそしておっ割れえれえええうえぇうぇええうぇうえうええぅえぅぅえぇえwwwwwwwwwwwww
0075デフォルトの名無しさん2005/04/20(水) 12:55:01
しつこくてごめんなさい。
もうお手上げ状態です。
まじで、助けてください。
これ、本当に必要なんです。

typedef 取りました。
簡単になったと思います。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/320.txt
0076デフォルトの名無しさん2005/04/20(水) 13:29:26
>>75
えーと、取り敢えず今までの経過をまとめてくれない?
もう、何がなんだか。
0077デフォルトの名無しさん2005/04/20(水) 13:30:32
[1] 授業単元:C言語
[2] 問題文:
問題1:
サイコロを1000回振る。1の目がでた回数を整数型変数oneに憶えさせ、2の目が出た回数を変数twoに憶えさせ、….、6の目が出た回数を変数sixに憶えさせる。サイコロを振り終わってから、どの目が何回でたかを画面に書かせる。
(中級者は、整数型配列 kaisu[6]を宣言し、1の目の出た回数をkaisu[1]に、2の目の出た回数をkaisu[2]に憶えさせる,……のようにすること。
問題2:
問題1で、サイコロを100回振る。どの目が何回でたかを、星の数で表現するようにせよ。
[3] 環境
 [3.1] OS: winxp
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C言語
[4] 期限:今日の20時
お願いします。
0078デフォルトの名無しさん2005/04/20(水) 13:42:01
>>77
>(中級者は、整数型配列 kaisu[6]を宣言し、1の目の出た回数をkaisu[1]に、2の目の出た回数をkaisu[2]に憶えさせる,……のようにすること。
有り得ない。
0079デフォルトの名無しさん2005/04/20(水) 13:48:33
>>76

stlにあるvector.hを書き換えるという課題です。
簡単なのは、これです。
http://www5c.biglobe.ne.jp/~ecb/cpp/07_20.html

member function等の英語版の詳しい説明だと、これです。
http://developers.sun.com/tools/cc/documentation/ss8_docs/man3c++/vector.3.html
ただし、Iterator等は今回ないです。
だいたいは、自分で書いて、あってると思います。
でも、動かないんです。

もう、まる2日馬鹿みたいに、費やしました。
ぐるぐるメリーゴーランド的に繰り返したり。

本当、まじで、お願いします。
0080デフォルトの名無しさん2005/04/20(水) 13:56:03
>>77
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define numof(array) (sizeof(array)/sizeof(array[0]))

void roll_dice (int* dice, int dn, int n) {
if (n <= 0) return;
else {
dice[(int) ((float)dn*rand()/(RAND_MAX+1.0))]++;
roll_dice (dice, dn, n-1);
}
}

int main () {
int i;
int dice[6] = {0};
srand (time(NULL));
roll_dice (dice, numof (dice), 1000);
for (i = 0; i < numof (dice); ++i) printf ("%d: %d\n", i+1, dice[i]);
return 0;
}
0081デフォルトの名無しさん2005/04/20(水) 14:00:25
>>77
#include <stdio.h>
#include <stdlib.h>
/* 精度の悪い乱数を使用しているので、必要なら適宜書き換えること */
int diceThrow(void) {return rand() % 6;}
/* count回数ダイスを投げてdice配列に出現回数を記録 */
void l1(unsigned count, int * dice) {int ic; for (ic = 0; ic < count; ++ic) {++dice[diceThrow()];}}
/* arrayからarraySize分をその値の数の星グラフに */
void l2(unsigned arraySize, const int * array)
{
int ic;
for (ic = 0; ic < arraySize; ++ic) {
int cc;
printf("No.%d:%d\t", ic + 1, array[ic]);
for (cc = 0; cc < array[ic]; ++cc) {printf("星");}
printf("\n");
}
}
int main()
{
int kaisu[6]; int ic;
for (ic = 0; ic < sizeof(kaisu) / sizeof(*kaisu); ++ic) {kaisu[ic] = 0;}
l1(1000, kaisu);
for (ic = 0; ic < sizeof(kaisu) / sizeof(*kaisu); ++ic) {printf("No.%d\t%d\n", ic + 1, kaisu[ic]);}
for (ic = 0; ic < sizeof(kaisu) / sizeof(*kaisu); ++ic) {kaisu[ic] = 0;}
l1(100, kaisu);
l2(sizeof(kaisu) / sizeof(*kaisu), kaisu);
return EXIT_SUCCESS;
}
0082デフォルトの名無しさん2005/04/20(水) 14:16:01
>>80-81
お早い回答ありがとうございます。
走らせてみた所、問題なく動きました。
ただ、ちょっと気になったのが>>81の方は何度実行しても星の数が固定なんですが
これは精度が悪い関数を使っているためでしょうか…。
0083デフォルトの名無しさん2005/04/20(水) 14:16:29
>>79
ケアレスミス多過ぎ。
単純な文法エラーばかりで、動く云々以前にコンパイラが全部エラーだしたぞ。
--- got/vec.cpp 2005-04-20 14:13:01.500000000 +0900
+++ vec.cpp 2005-04-20 14:12:53.140625000 +0900
@@ -82,2 +82,3 @@
throw(std::out_of_range("Vec at: n has to be larger than 0 and less than curSize"));
+ }
return varray[n];
@@ -86,3 +87,3 @@
template<typename Element>
-Element & Vec<Element>::at(size_t n) const
+const Element & Vec<Element>::at(size_t n) const
{
@@ -94,3 +95,4 @@
//operator
-template<typename Element> Vec<Element>::operator[](size_t n){
+template<typename Element>
+Element & Vec<Element>::operator[](size_t n){
return varray[n];
@@ -99,3 +101,3 @@
template<typename Element>
-const Element & Vec<Element>::operator[](size_t n) const;{
+const Element & Vec<Element>::operator[](size_t n) const {
return varray[n];
@@ -139,3 +141,3 @@
template<typename Element>
-void Vec<Element>::resize(size_t newSize, Element x = Element())
+void Vec<Element>::resize(size_t newSize, Element x)
{
0084デフォルトの名無しさん2005/04/20(水) 14:17:22
>>82
乱数系列を初期化していないため。必要ならsrand()関数を呼べ。
0085デフォルトの名無しさん2005/04/20(水) 14:22:45
>>77
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define numof(array) (sizeof(array)/sizeof(array[0]))

void roll_dice (int* dice, int dn, int n) {
if (n <= 0) return;
else {
dice[(int) ((float)dn*rand()/(RAND_MAX+1.0))]++;
roll_dice (dice, dn, n-1);
}
}

void ps (int n) {if (n <= 0) return; else {printf ("*"); ps (n-1);}}

int main () {
int i;
int dice[6] = {0};
srand (time(NULL));
roll_dice (dice, numof (dice), 100);
for (i = 0; i < numof (dice); ++i) {
printf ("%d: ", i+1);
ps (dice[i]);
printf ("\n");
}
return 0;
}
0086デフォルトの名無しさん2005/04/20(水) 14:23:45
>>84
感謝です。サイト見ていけました。
0087デフォルトの名無しさん2005/04/20(水) 14:30:50
83さんはどのコンパイラー使ってますか?
私はvisual studio 2005β版ですが、
function template has already been defined
っていうエラーが7つと、
fatal error C1075: end of file found before the left brace '{' at 'c:\documents and setting\....\vec.cpp(28)' was matched
Generating Code...
っていうエラーしか出なくて、何がなんだか、よくわかりません。
0088デフォルトの名無しさん2005/04/20(水) 14:45:06
>>87
もしかして、Vec.cppをコンパイルしようとしてね?
んなもん、できるわけねぇじゃん。
例えば、
#include "vec.h"

void func()
{
P10C::Vec<int> foo;
}
こんなソースを用意してそれをコンパイルしてみ。
            _
それで判らなきゃ、タヒね。
0089デフォルトの名無しさん2005/04/20(水) 14:46:47
しねとかいいやがっておめえがしね!!!!!!!!!!!!!!!!!!!!!!!!!
0090デフォルトの名無しさん2005/04/20(水) 14:48:00
>>89
どこに「しね」と?
0091デフォルトの名無しさん2005/04/20(水) 14:50:40
>>90
_
タヒね。
↑これは様々な文字を組み合わせて作った巧妙な「死ね」という文字だ!!!
なんて陰険な奴なんだ!!!!!!!!!!!!!!
0092デフォルトの名無しさん2005/04/20(水) 15:02:04
>>88
いや、一応、main.cpp作ってやってるんですけど・・・。
ちなみに、しねとか、言ってるの私じゃないです。
0093デフォルトの名無しさん2005/04/20(水) 15:02:48
>>92
あんただれですか
0094デフォルトの名無しさん2005/04/20(水) 15:04:51
87です。すいません。
0095デフォルトの名無しさん2005/04/20(水) 15:09:25
>>92
Vec.cppをコンパイルしちゃいけないというのは理解できた?
0096デフォルトの名無しさん2005/04/20(水) 15:13:02
つーか、>83の差分のパッチは当てたんだろうか。
0097デフォルトの名無しさん2005/04/20(水) 15:27:36
>>75
気分転換になおしてあげたよ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/321.txt
0098デフォルトの名無しさん2005/04/20(水) 15:28:24
>>95
main.cppをコンパイルしてると思います。
0099972005/04/20(水) 15:43:40
ひどいバグがあったので修正
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/322.txt
やっつけなので品質には期待しないでくれ
0100デフォルトの名無しさん2005/04/20(水) 15:48:41
>>99
ありがとうございます。
凄い。
これは、今の自分には作れませんわ。
ちょっとやってみます。
0101832005/04/20(水) 15:52:29
無視されるんならもういいや。
■ このスレッドは過去ログ倉庫に格納されています