トップページ⇒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】
0153デフォルトの名無しさん2005/04/20(水) 21:37:56
>>152
それは、残念だったな。
0154デフォルトの名無しさん2005/04/20(水) 22:15:37
結局使わなければ忘れるから、内容が薄くなっても…。
0155sage2005/04/20(水) 22:20:33
[1] 授業単元: 情報処理入門
[2] 問題文(含コード&リンク):
---hoge.txt---
商品名aaaa
商品名bbbb
商品名cccc
商品名dddd
商品名eeee
---hoge.txt---
問1:hoge.txtから文字列を読み込み、構造体に格納せよ。malloc()を用い
動的に確保し、双方向リストを作成し、DOS窓に行番号付きで表示せよ。
---DOS窓---
01 商品名aaaa
02 商品名bbbb
…
05 商品名eeee
---DOS窓---
問2:問1で作成した双方向リストを用い、「i」を入力したら任意の行に
適当な商品名を追加し、「d」を入力したら任意の行を削除せよ。
問3:問2のコマンド入力後の状態をDOS窓に表示せよ。また、その状態をhoge.txt
に反映し上書きせよ。
[3] 環境
 [3.1] OS: windows xp
 [3.2] コンパイラ(バージョン):gcc3.2.3
 [3.3] 言語:C
[4] 期限:できるだけ早く
[5] その他の制限:初心者なので双方向リストのアドレス取得方法が分かりません。
ぼるじょあ様よろしくお願いします。
0156デフォルトの名無しさん2005/04/20(水) 22:24:49
できるだけはやくっていつだよ
0157デフォルトの名無しさん2005/04/20(水) 22:25:58
>>156
ぼるじょあに聞いてるんだから、他の奴はだまってろ
0158ぼるじょあ ◆yBEncckFOU 2005/04/20(水) 22:27:29
できるだけはやくっていつだよ(・3・)
0159デフォルトの名無しさん2005/04/20(水) 22:28:28
[1] 授業単元: C言語
[2] # 「Boyer-Moore法」を用いる.
# 探索を行う関数名は bm_search2 とする.

* 引数として以下の3つを受け取る:
1. ファイル中の文字列 haystack
2. 検索対象の文字列 needle
3. 連結リスト(needle のすべての出現位置を格納するため)
* 戻り値は,一致した文字列の総数.

# プログラムは一致した文字列と前後 10 文字を表示する.
# プログラムは一致したすべての文字列を表示する.

* 関数 bm_search2 の中で一致した文字列を表示することは禁止する.

# プログラムはコマンドライン引数としてファイル名と検索文字列を指定できること.

[3] 環境
 [3.1] OS:Linux
 [3.2] わからないです
 [3.3] C言語
[4] 4月22日までです

よろしくお願いします
0160デフォルトの名無しさん2005/04/20(水) 22:31:05
自分が使ってるコンパイラすら分からないような
無能・無才は素直に単位落としとけよ
01611552005/04/20(水) 22:34:16
>>156-158
ぼるじょあ様へ
できるだけ早くとは2005年4月22日です。
よろしくお願いします。
0162デフォルトの名無しさん2005/04/20(水) 23:54:19
保守
0163デフォルトの名無しさん2005/04/20(水) 23:55:13
C言語でコンパイラはボーランドCです。
あるファイル、例えば

2 6 -7 0 0 6 48
4 5 3 -1 0 8 12
9 0 -7 5 1 9 -2

があった場合に何行何列かを表示するプログラムを
作って欲しいです。ちなみに行数によって列数は変わり
ません。条件としてはmalloc関数を使ってほしいです。
だれかお願いしますm(__)m


0164デフォルトの名無しさん2005/04/21(木) 00:09:39
2問あるのですが・・・初心者でわかりません。

3値の中央値(2番目に大きい数)をもとめるアルゴリズムを
C言語で実装せよ。(if文を使うこと)

以下を参考にして3×3のマスにおける○×ゲームの表示プログラムを
作成したい。とりあえず以下のように出力させるには?
どこに×をおきますか?:2 2
○○○
○×○
○○○
0165デフォルトの名無しさん2005/04/21(木) 00:10:23
上の続きです
#include <stdio.h>

int main(void)
{
int i, j, n,m;

printf("どこに×を置きますか?:");
scanf("%d %d", &n,&m);
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {

ここを考えること。


}
putchar('\n');
}

return (0);
}

となっています。
明日提出なので、できればよろしくお願いします。
0166デフォルトの名無しさん2005/04/21(木) 00:15:30
int middle(int a, int b, int c)
{
if(b <= a && a <= c || c <= a && a <= b) return a;
if(a <= b && b <= c || c <= b && b <= a) return b;
return c;
}

2問目
if(i == n && j == m) printf("×");
else printf("○");

入力に時間がかかったせいで3分もかけてしまった。
0167デフォルトの名無しさん2005/04/21(木) 00:20:22
>>151
それをやったらbad allocationになるんですよ。
0168デフォルトの名無しさん2005/04/21(木) 00:20:38
163もやっていただけませんか?
明日提出でやばいです・・・。
お願いします。
0169デフォルトの名無しさん2005/04/21(木) 00:40:44
>>155
ぼるじょあじゃないけど問1と問2答えといたよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/327.c
0170デフォルトの名無しさん2005/04/21(木) 00:44:18
>163
具体的に例題ファイルの場合にはどうなればいいのか説明できますか?
例題ファイルの場合、
3行7列と 画面に表示すればいいということでしょうか?
それだとmalloc関数を使う必要がないので違いますよね 
0171デフォルトの名無しさん2005/04/21(木) 00:47:17
>>168
163の問題の意味が全然わからない
0172デフォルトの名無しさん2005/04/21(木) 01:00:23
>170
作りたいプログラムはファイルの中身を表示するのが目的です。
下のプログラムで3行7列は#defineによって定義してますよね。
自分ででもファイルの中は実際はわからないわけですから何行何列
かはプログラム自体がファイルを開いたときに認識するように
したいのです。つまり例題ファイルを開いたときに下のプログラム自体が
3行7列を認識して2次元行列ma[][]を表示したいようにしたいのです。
プログラムさえできればmalloc関数は使わなくても大丈夫です。
説明不足があったらすみません。お願いします。

#include <stdio.h>
#define COL 7
#define ROW 3
int main(void)
{
FILE * f;
int data[ROW][COL], i, j, is_error = 0;
if ((f = fopen("data.txt", "r")) == NULL) return 1;
for (i = 0; !is_error && i < ROW; ++i)
for (j = 0; !is_error && j < COL; ++j)
if (fscanf(f, "%d", &data[i][j]) != 1) is_error = 1;
fclose(f);
if (is_error) return 1;
printf("%d行%d列\n", ROW, COL);
return 0;
}
01731552005/04/21(木) 01:00:49
>>169
ありがとうございました

ぼるじょあ様、なにとぞ問3をお願いします。
0174972005/04/21(木) 01:10:06
>>167
ちょっとやってみたけどそのエラーは別な場所で起きてるみたい。
直しといたんであげとくよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/328.txt
01751692005/04/21(木) 01:11:38
>>173
問3もファイルに書く以外の事はやってあるよ。
じゃあ後はぼるじょあ様にまかせよう。
0176デフォルトの名無しさん2005/04/21(木) 01:55:39
172ですが説明不足でしたかね?
それとも説明がわかりにくかったですかね?
0177デフォルトの名無しさん2005/04/21(木) 02:01:14
>172
>2次元行列ma[][]を表示したいようにしたいのです
>printf("%d行%d列\n", ROW, COL);
だから、どっちなんだと…

>条件としてはmalloc関数を使ってほしいです
>プログラムさえできればmalloc関数は使わなくても大丈夫です
これも矛盾してるしな。

行と列の数が分かればそれでいいのか?
それとも、配列の中身のデータが必要なのか?
と>170は聞いているんだ。質問に答えろよ。
読み込む前には行や列の数が分からん、なんて分かってる。

例として、>163を読み込んだときにはどういう結果が出力されるべきなのかを書け。
課題に「ただし、mallocを使う事」とか「ただし、データは一度配列に読み込む事とする」みたいな条件がついてるならそれもな。
0178デフォルトの名無しさん2005/04/21(木) 02:17:43
>177
>だから、どっちなんだと…
>行と列の数が分かればそれでいいのか?
>それとも、配列の中身のデータが必要なのか?
両方表示していただきたいです。

>これも矛盾してるしな。
malloc関数はどうでもいいです。
個人的に使わないと無理かなと思っただけなんで。

>例として、>163を読み込んだときにはどういう結果が出力されるべきなのかを書け。

2 6 -7 0 0 6 48
4 5 3 -1 0 8 12
9 0 -7 5 1 9 -2
3行7列の行列です。

>課題に「ただし、mallocを使う事」とか「ただし、データは一度配列に
>読み込む事とする」みたいな条件がついてるならそれもな。
mallocはどうでもいいです。配列ma[][]をあとで計算に使うので
ma[][]に格納して欲しいです。

これで大丈夫ですか?
0179デフォルトの名無しさん2005/04/21(木) 02:20:51
178の続き。
ma[][]じゃなくてdata[][]でした。どちらでもいいです。
すみません。
0180デフォルトの名無しさん2005/04/21(木) 05:49:18
>>163
つくってみたよ。動いたからあげてみる。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/329.txt

読み込んだデータをまたつかうんならデータ構造に問題あるぽい。
テスト環境はLinuxのgccね。
0181デフォルトの名無しさん2005/04/21(木) 08:22:42
>>97=174
ありがとうございます。うれしいかぎりです。
でも、またassertionが出るようになったのですが・・・。

Debug Assertion Failed!
C:...\Microsoft Visual Studio 8\...\VC\include\vector
Line:223
Expression'vector literators incompatible
0182デフォルトの名無しさん2005/04/21(木) 08:36:15
>>181
そのassertionってSTLのvectorからでてる様に見えるんだが。俺の気のせいかなぁ。
0183デフォルトの名無しさん2005/04/21(木) 08:42:09
>>182
そうそう。
その通りだと思います。
それって、STLのVectorが違うってこと?
でも、今までも、他のSTLから出てるエラーはあって、
自分のプログラムを治したら、出なくなったっていうのは、あるんですけど・・・。
0184デフォルトの名無しさん2005/04/21(木) 09:16:42
>>163はマルチです。
>>170 は私が作ったへぼソースw
まるで自分が作ったかのように質問してるし。
良識を疑うよw

>>180 乙です。
01851842005/04/21(木) 09:17:54
>>170は>>172の間違い
0186デフォルトの名無しさん2005/04/21(木) 09:20:15
>>これも矛盾してるしな。 
>malloc関数はどうでもいいです。 
>個人的に使わないと無理かなと思っただけなんで。 
 ^^^^^^^^^^
嘘を付くな嘘を。
0187デフォルトの名無しさん2005/04/21(木) 09:26:16
>>183
そういうことではなくて、
このソースそのものがvectorに取って代わるものなんではないの?ってこと
なのに、vectorのassertionを出すっていうのは、おかしくないのかなと思っただけ。

どっちもincludeしてたりするのなら、やめた方がいいと思うんだけど。
俺の認識がおかしいならスルーしてくださいな。
0188デフォルトの名無しさん2005/04/21(木) 09:36:05
↑で説明足らずだったから、追記。
両方のvectorクラスをincludeしてると予想して書くけど、
名前空間が違うから、基本的には両方includeしてても、
おかしいことにはならないと思う。

けど、同様の機能を提供するものをincludeしてるという状況の為、
意識しないミスによって、例えば自作vectorクラス側のオブジェクトを
STL::vectorとして扱ってしまっている場所が出てしまう可能性がある。
上記のassertionもその手のバグじゃないかと疑っているということです。
0189702005/04/21(木) 10:19:46
>>118様 お助けください
作成していただいたソースをなんとかVCでコンパイル可能になったのですが
デバッグ時に←個所でエラーが発生してしまいました。
原因がわかりません。ヒントお願いします。


int sjis2euc(unsigned char *dest, unsigned char *src) {
unsigned code1 = src[0];
unsigned code2 = src[1];
code1 = code1 * 2 - 0xe1;
code1 &= 0x7f;// 1バイトカナの隙間
code2 -= 0x1f;
if (code2 > 0x7f - 0x1f) --code2; // 0x7fの穴
if (code2 >= 0x7f) {// 偶数ブロック
code2 -= 0x5e;
++code1;
}
dest[0] = code1 | 0x80;
dest[1] = code2 | 0x80; //← 最初にここを通過させるとメモリ参照系エラーになります。
return 2;
}
int sjis2eucKana(unsigned char * dest, unsigned char * src) { //一バイトカナはこれ(戻り値は上と同じ)
char * str;
dest[0] = 0x8e;
dest[1] = str[0];
return 2;
}
0190702005/04/21(木) 10:20:08
static BOOL isSjisKanji1(unsigned char src){return src >= 0x81 && src <= 0x9f || src >= 0xe0 && src <= 0xfc;}
static BOOL isSjisKanji2(unsigned char src){return src >= 0x40 && src <= 0x7e || src >= 0x80 && src <= 0xec;}
static BOOL isSjisKana(unsigned char src) {return src >= 0xa1 && src <= 0xdf;}
static BOOL isSjisKanji(const unsigned char * src){return isSjisKanji1(src[0]) && isSjisKanji2(src[1]);}
EXPORT __stdcall sjis2eucMain(char * str) { //変換の本体
char tmp;
unsigned char * src = reinterpret_cast<unsigned char *>(str);
unsigned char * buf;/// = malloc((char)strlen(str) * 2);
unsigned ic = 0;
for (; src[0] != '\0'; ++src) {
if (isSjisKana(src[0])) ic += sjis2eucKana(& buf[ic], src);
else if (isSjisKanji(src)) {
ic += sjis2euc(&buf[ic], src);
++src;
}
else buf[ic++] = src[0];
}
buf[ic] = '\0';
free(buf);
return tmp;
}
0191702005/04/21(木) 10:22:09
追記ですが、外部宣言している本体のsjis2eucMain(char * str)
のstrには試験的に作ったVBからの呼出し元で
明示的に「あいうえおかきくけこさしすせそ」を格納しており
パラメタとしては正常に引き継がれておるようです。
0192デフォルトの名無しさん2005/04/21(木) 10:25:26
>>183
テストコードが悪い(多分)
>>182
テストコードを見たら、STLのvectorと独自のvector両方に対してテストしてる模様。
0193デフォルトの名無しさん2005/04/21(木) 10:27:44
>>182,183,192
確かにSTLのvectorをincludeしてる。
0194702005/04/21(木) 10:34:04
失礼しました。
unsigned char * buf;/// = malloc((char)strlen(str) * 2);
コンパイル通す為にお馬鹿な事をしていました。
ここを直したらうまく動きました。お騒がせしました。
0195デフォルトの名無しさん2005/04/21(木) 10:34:04
erase function でreserve, operator=,assign とかを使うことって可能ですかね?
0196デフォルトの名無しさん2005/04/21(木) 10:49:18
>>195
ごめんなさい。言うの忘れてました。
もし、capacityがなくなったら、そのたびに、2倍にするそうです。
だから、bad reallocationってメッセージが出てるのでしょうか?
0197デフォルトの名無しさん2005/04/21(木) 10:52:09
>>196
まず何が起きてるのか言ってくれ。
はっきりいってわけがわからない。
0198デフォルトの名無しさん2005/04/21(木) 11:03:19
>>197 196の訂正。
さっきのvector関連のassertは出なくなって、また
=== A std::bad_alloc EXCEPTION REACHED main() ===
Message: [bad allocation]
The type reported may not be most-derived.
っていうメッセージが出るんです。
つまり、bad allocationなんだと・・・。
これって、capacity==sizeになったとき、
またvectorを増やすけれど、その時の大きさをcapacity*2にするってことなんだけど、
そこから来てる、エラーなのかなって思ったのです。
0199デフォルトの名無しさん2005/04/21(木) 11:15:14
>>198
>>174のやつ使ってる?
0200デフォルトの名無しさん2005/04/21(木) 11:16:26
教授の助手に聞いたところ、
reallocationはcapacityを2倍にしようとするんだけど、
その2倍のcapacityがmax_sizeを超えていたら、max_sizeは新しいcapacityを
取られるべきだそうです。
defaultによって、メモリーがなくなったときに、new[],delete[],がthrowする。
size_type max_size(void) constに関して、throw std::length_errorが必要だそうです。

本当、手間取らせちゃってごめんなさい。
0201デフォルトの名無しさん2005/04/21(木) 11:22:32
>>199
はい。
そうすると、198で言った風になります。
0202デフォルトの名無しさん2005/04/21(木) 11:28:38
つけたし。
defaultによって、メモリーがなくなったときに、
new[],delete[],がstd::bad_allocをthrowする。
私の日本語表現、おかしくて、読みずらいかもしれません・・・・。
0203デフォルトの名無しさん2005/04/21(木) 11:29:51
>>201
おれは問題なくテスト通ってるけどな。
今使ってるソース見せてよ。
0204デフォルトの名無しさん2005/04/21(木) 11:34:12
>>203
これです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/330.cpp
0205デフォルトの名無しさん2005/04/21(木) 11:37:05
>>204
insert(pointer before, size_type howMany, const_reference x)
が直ってない
0206デフォルトの名無しさん2005/04/21(木) 11:40:25
size_type max_size() const{ return size_type(-1);}
これじゃ、不十分なんでしょうか?
0207デフォルトの名無しさん2005/04/21(木) 11:55:46
むずかしいです。

[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
任意の文字列を検索し、指定文字列に置換える関数を作りなさい。
なお、置換文字列は任意の文字列と同じ長さとは限らない。
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005年4月22日まで
[5] その他の制限: 23日の授業で提出なので御願いします;
0208デフォルトの名無しさん2005/04/21(木) 12:02:43
英語ですいません。
某サイトによると、

size_type max_size() const;
Returns size() of the largest possible vector.

size_type capacity() const;
Returns the size of the allocated storage, as the number of elements
that can be stored.

今まで、ネットで、こういう系統のcppファイルをたくさん集めて研究してたんですけど、
これより、簡単で、size_type max_size() const っていう関数は使ってないんですよね。
なので、ないがしろにしてたけど、これのせいの気がするんですが・・・。
0209デフォルトの名無しさん2005/04/21(木) 12:05:11
>>205
あ、それを直しても、198でいうようなのが出てきます。
assertとかは出ないんですけど・・・。
0210デフォルトの名無しさん2005/04/21(木) 12:06:17
int main(){
int pid;
pid=fork();
if(pid==0){
cout<<"a";
}
else{
cout<<"b";
}
}

上記のコードだと、実行後 aa と出力されてしまいます。
forkから、親側pidにはプロセスID、子側pidには0が返るはずなので、
親はbを、子はaを出力すると思うのですが、私は何か勘違いを
しているのでしょうか?
0211デフォルトの名無しさん2005/04/21(木) 12:06:56
>>207
void replaceString(char* string, const char* from, const char* to)
{
   const int len1 = (int)strlen(from);
   const int len2 = (int)strlen(to);
   char* found = strstr(string, from);

   while (found) {
      if (len1 != len2) {
         memmove(found + len2, found + len1, strlen(found + len1) + 1);
      }

      memcpy(found, to, len2);

      found = strstr(found + len2, from);
   }
}
0212デフォルトの名無しさん2005/04/21(木) 12:07:43
>>209
じゃあ、もう一回直したやつをアップしてみて。
0213デフォルトの名無しさん2005/04/21(木) 12:12:01
>>212
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/331.cpp
なんでも、すいません。
本当、助かります。
0214デフォルトの名無しさん2005/04/21(木) 12:13:57
>>212
すいませんが、212さんのoutputかexe fileアップしてもらっていいですか?
0215デフォルトの名無しさん2005/04/21(木) 12:15:47
>>213
const_refernce copy(x)
->
const value_type copy(x)
0216デフォルトの名無しさん2005/04/21(木) 12:16:09
また池沼がこのスレに這いつくばってるのか
0217デフォルトの名無しさん2005/04/21(木) 12:22:39
>>215
そうするとassertが出るので、const_referenceであってると思います。

>>216
そうですよね。
自分でも、嫌になってるから、皆さんには、もっと迷惑かけてると思います。
すいません。
0218デフォルトの名無しさん2005/04/21(木) 12:36:04
>>217
const_referenceだったら何も修正されないじゃん。
そのassertの内容は?
0219デフォルトの名無しさん2005/04/21(木) 12:56:20
>>218
template<typename Element>
void Vec<Element>::insert(pointer before, size_type howMany, const_reference x){
const size_type prev = size();
const difference_type offset = before - begin();
const_reference copy(x);
copy とか習ってなかったので、よく分からなかったのですが、
const_reference x なので、const_referenceかなと思って。
value_typeにすると、またさっき言ったように、
STLのVectorからのエラーになります。
0220デフォルトの名無しさん2005/04/21(木) 13:06:30
落ち着け。思いつきであれこれいじっても事態は悪くなるばかりだ。
0221デフォルトの名無しさん2005/04/21(木) 13:09:58
>>219
それでいい。
STLのvectorがassertするのは多分>>192
0222702005/04/21(木) 13:17:00
118様!!
「結果」という漢字が正常に変換されません。
02232102005/04/21(木) 13:18:23
どなたか、お助けくださいいいいい
02242072005/04/21(木) 13:19:49
>>211

void replaceString(char* string, const char* from, const char* to);

main(){
char *string1 ="good mornig america!";
char *string2 ="good";
char *string3 ="bad";
replaceString(string1,string2, string3);
printf("%s\n",sting1);
}
void replaceString(char* string, const char* from, const char* to)
{
const int len1 = (int)strlen(from);
const int len2 = (int)strlen(to);
char* found = strstr(string, from);

while (found) {
if (len1 != len2) {
memmove(found + len2, found + len1, strlen(found + len1) + 1);
}

memcpy(found, to, len2);

found = strstr(found + len2, from);
}
}

ってやったらコアダンプしちゃいました;;
どこが悪いんでしょうか・・・
0225デフォルトの名無しさん2005/04/21(木) 13:31:14
char string1[] ="good mornig america!";
char string2[] ="good";
char string3[] ="bad";
0226デフォルトの名無しさん2005/04/21(木) 13:47:49
>>Vector classでお世話になったみなさん。

長い間付き合っていただいて、ありがとうございました。
なんか悪いので、締め切りまであと15時間あるので、
自分なりにやってみます。
本当にありがとうございました。
02272072005/04/21(木) 13:53:31
すみません・・ついでといっちゃあなんですが・・??
224はだめで225はOK
↓もOKな理由がわかりません・・・なぜなんでしょうか;
main(){
char *string1 ="good mornig america!";
char *string2 ="good";
char *string3 ="bad";
printf("%s\n",string1);
printf("%s\n",string2);
printf("%s\n",string3);
}
0228デフォルトの名無しさん2005/04/21(木) 13:57:16
>>223
動かしてみた
baと表示された
0229>>2262005/04/21(木) 14:01:40
VC8のvectorを見てみたが、Debugモードでvectorのiteratorとポインタを比較するとassertに失敗するようになっている。
VC8を使わないか、Releaseモードにすれば大丈夫。
0230デフォルトの名無しさん2005/04/21(木) 14:26:25
>180
ありがとうございました。

>>170 は私が作ったへぼソースw
>まるで自分が作ったかのように質問してるし。
>良識を疑うよw
自分が作ったなんて一言も書いてないです。
もしそのように感じたらすみませんでした。

>>malloc関数はどうでもいいです。
>>個人的に使わないと無理かなと思っただけなんで。
^^^^^^^^^
>嘘を付くな嘘を。
嘘ではないです。宿題を出された日に大学で教授にmalloc関数を
使えばできるよ。と言われたので個人的に解釈してmalloc関数を
使わなければできないと思ったのでそのように書いたのです。
------------------------------------------------------------
言い訳みたいな文になってしまってすみません。
本当にありがとうございました。
0231デフォルトの名無しさん2005/04/21(木) 14:47:22
>>227
それは、宿題の範疇を超えるんだが(^^;;
簡単に説明すると、

・文字列トークンは普通、(書換えできない)文字列へのポインタとして扱われる。
・例外として文字列配列の初期子として書かれたときは、その文字列配列の初期値を決める。
・配列の名前だけ書く([]を着けない)と、最初の要素へのポインタとして扱われる。

わからんよーなら、丁寧な教科書なら図解つきで載ってるんで、読んでおくれ。
0232118辺り2005/04/21(木) 15:17:04
>>70
なんだよ、C++でいいならそのまま使えよ。
Cかと思ってmalloc()辺りの説明したけど、文字列の扱い慣れてないみたいだから
>190みたいな阿呆なコード書いてるんだろうし。
0233デフォルトの名無しさん2005/04/21(木) 15:50:28
>>229
明日学校行って、他のコンパイラーでやってみます。
本当ありがとうございました。
0234デフォルトの名無しさん2005/04/21(木) 15:51:48
>>233
>229を理解してその台詞? いくらなんでも酷すぎるなぁ。
0235デフォルトの名無しさん2005/04/21(木) 16:46:05
>>234
>>Releaseモードにすれば
マジであほなんで、その仕方がよく分からなかったけど、また聞くと悪いから、
VC8以外のコンパイラーで一度試してみようかなって思っただけです。
0236デフォルトの名無しさん2005/04/21(木) 16:49:14
>>234
今ままでずっと書いてもらったコードを理解するために、色々調べてて
返事おくれました。
STLの授業始まったばかりで、まだ定かではないことがたくさんあって・・・。
ほんと、ありがとうございました。
0237デフォルトの名無しさん2005/04/21(木) 16:50:24
>>236
前にもIDEの使い方くらい勉強しとけって書かれてたよなぁ。
レスがその場凌ぎ以外のなんにも役に立ってないわけだ。
0238デフォルトの名無しさん2005/04/21(木) 17:33:14
>>237
ちゃんと勉強するやつがここに来るわけないだろw
0239デフォルトの名無しさん2005/04/21(木) 17:38:04
>>237
マジレスすると、私事なのですが、学校が進むの早いんですよ。
去年の10月にC++の最初、basic classから始まって、
data structure,STL&SLと、とんとんと。
その場凌ぎ以外のなんにも役に立ってないわけじゃなくて、
進むの学校が進むの早すぎて、あれもこれもとやること多すぎで、
消化不良起こしてるんです。
まだC++初めて6ヶ月しか経ってないので。
もちろん、このクラスの以外にも3クラス取ってるわけで・・・。
でも、コンパイラーのこと、書かれていた基礎知識が抜けていて、
マズイのは、ご指摘どうり、自分でも承知しているので、
週末にでも時間作れるように努力して、勉強します。
0240702005/04/21(木) 18:03:49
>>232
レスありがとうございます。
AHOなソースにしてしまい申し訳ありません。
何故か当環境でコンパイルすると、ズラーとエラーが出てきてしまいました。
『結果』という文字がなぜうまくいかないのかヒントお願いいたします。
0241デフォルトの名無しさん2005/04/21(木) 18:23:55
半年もあれば……
0242232らしい2005/04/21(木) 18:26:05
>>240
文字列は、char変数には入らない。
stringでエラーを起こしているなら、
#include <string>
すればいい。
教えるの面倒だから、元の方でエラーをなくす努力をしてくれ。
0243デフォルトの名無しさん2005/04/21(木) 18:51:17
漏れはC++初めて二ヶ月でEffectiveシリーズ三冊やらExceptionalやら
ModenやらFAQやら禿本やらboostやらと読んだが…
自分が適当にやってるのを他のせいにするなと言いたい
やる気さえあれば誰だって出来る。よっぽどアホでない限りな
0244デフォルトの名無しさん2005/04/21(木) 19:01:52
的外れな意見だな
0245デフォルトの名無しさん2005/04/21(木) 19:09:39
Ψ1s=1/sqrt(PI)*γ1^(3/2)*e^(-γ1*r)
Ψ2p=1/sqrt(PI)*γ2^(5/2)*r*e^(-γ2*r)*cosθ

という式で|Ψ(x,y,z)|^2を、数値的に求め
その結果から|Ψ(x,0,z)|^2のグラフを
gnuplotでえがくプログラムを組む課題です。
どのようなプログラムを組めばよいでしょうか。
0246デフォルトの名無しさん2005/04/21(木) 19:20:52
[1] 授業単元:プログラム技術
[2] 問題文(含コード&リンク):3つの商品を買うとき会員券がある場合2割引 無ければ定価で売るプログラムを作りなさい。消費税も5%ととして計算すること
[3] 環境
 [3.1] OS:Win2k
 [3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:無し
for文からおかしいので治してみたりしたのですが
forを無視する、1つしか入力できない、数を入力してもループが終わらないといったバグがでます。
(型指定)の練習問題で初めて使用したのですが表示がおかしいのもわかりません。
お願いします
int pr[2];
int a,b,goke,sin;
printf("品物の値段を入力してください\n");
for(a=0;a<=2;a++){
scanf("%d",&a);
goke=pr[a]+goke;
}
printf("会員券があるなら1、ないなら0を入力してください\n");
scanf("%d",&b);
if(b==1){
sin=(float)goke*0.8;
sin=(float)sin*1.05;
}
else if(b==0){
sin=(float)goke*1.05;
}
else{
printf("エラー\n");
}
printf("\\%d",sin);
return 0;
0247デフォルトの名無しさん2005/04/21(木) 19:42:11
>>245
LinuxかMacかwindowsかそのほかのUNIXか。
0248デフォルトの名無しさん2005/04/21(木) 19:50:06
>>245
テンプレに従え。C++なのかCなのかも分らないので宿題として正答はできない。
0249デフォルトの名無しさん2005/04/21(木) 20:04:14
>>246
3つの商品なのにpr[2]ではおかしいでしょ。
prは品物の値段を入れる変数でaは添え字でしょ。
入力された品物の値段をどこに入れるの。
考えてね。

0250デフォルトの名無しさん2005/04/21(木) 20:14:11
>forを無視する、1つしか入力できない、数を入力してもループが終わらないといったバグがでます。

for(a=0;a<=2;a++){
scanf("%d",&a);

ループに使ってる a で scanf するな!
っていうか pr[] に scanf に汁!


>(型指定)の練習問題で初めて使用したのですが表示がおかしいのもわかりません。

goke 初期化汁!

02512452005/04/21(木) 20:29:26
失礼いたしました。

[1] 授業単元:なし
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:fedora core
 [3.2] コンパイラ(バージョン):不明
 [3.3] 言語:C
[4] 期限:4月末日
0252デフォルトの名無しさん2005/04/21(木) 20:41:02
ファイルの入出力のフローチャートがわかりません
■ このスレッドは過去ログ倉庫に格納されています