【初心者歓迎】C/C++室 Ver.59【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.59【環境依存OK】 - 暇つぶし2ch981:デフォルトの名無しさん
08/04/24 01:14:03
>>976
移動前のスレのコメントにもありましたが、
「君が参考にしてるものは信用しないほうがいい」
です。void main(...) はまずい。

982:デフォルトの名無しさん
08/04/24 01:17:45
void main は g++ でエラーになるしな。
gcc だと警告ですむけど。

983:981
08/04/24 01:34:22
rewind() も、あるのかわからない.....。stdin に対して rewind() ?

984:デフォルトの名無しさん
08/04/24 03:35:46
1~100までの数字でひとつだけない数字があるのでそれを探すという問題なのですが
URLリンク(kansai2channeler.hp.infoseek.co.jp)
でひとつひとつ探す方法はあるのですが
他の方法で、まず
1~50までの個数と51~100までの個数を数えて
1~50が49個
51~100が50個で1~50にあるとして
次は1~25、26~50とどんどん減らして
26~38と39~50の割り切れないときは13と12にしたりなどして
最後2つの数字にし
48が1個
49が0個で49がない数字とするプログラムを作りたいのですが
どなたか例みたいなものを書いていただけないでしょうか?

985:デフォルトの名無しさん
08/04/24 03:41:23
数えながら2つのファイル(小さい,大きい)に書き出していけばいいんじゃねの?

986:デフォルトの名無しさん
08/04/24 03:42:37
どこにあるのかわからないなら、ひとつひとつしらべるのが最善

987:デフォルトの名無しさん
08/04/24 03:48:07
問題でこのような方法で作りなさいとあるので作りたいんですがダメでしょうか?
#include<stdio.h>
#define N 100
int main(void){
int min , max , mid;
int count1, count2;
int data, i;
FILE *fp

ここまでの指定はあるのですが、今自力でやってみてるんですが
どう二つに分けそれ以降どのように区切っていけばいいのかよくわからないんです

988:デフォルトの名無しさん
08/04/24 04:42:58
物凄い無駄な処理だなw

再帰呼び出しを使うのが良いよ

989:988
08/04/24 04:46:09
ああ、ごめん。数字は順番に並んでるわけじゃないのか

990:デフォルトの名無しさん
08/04/24 04:54:26
諦めて全部足して5050から引け

991:デフォルトの名無しさん
08/04/24 05:18:22
#include <vector>

//trueならmidより上、falseなら下
bool hilow(int min, int mid, int max,
  std::vector<int> src, std::vector<int> dst)
{
dst.clear();
std::vector<int> hi, low;

//中間数超と以下でhi, lowに分ける
for(size_t c=min; c <= max; c++) {
if(src[c] <= mid) low.push_back(src[c]);
else hi.push_back(src[c]);
}

//個数が規定値か調べて多い方を返す
if(hi.size() == max - mid ) {
dst.swap(hi);
return ture;
}

dst.swap(low);
return false;
}


続く

992:デフォルトの名無しさん
08/04/24 05:33:54
続き
void main() {
std::vector<int> num;
//ファイルからnumに一度全部読み込む
//ここは自分で書けるでしょ?

int min, mid, max;
min = 1;
max = 100;

do {
(max - min + 1) % 2 ? mid = (max - min + 1) / 2 + 1 : mid = (max - min + 1) / 2;
if( hilow(min, mid, max, num, num) ) min = mid + 1;
else max = mid;
} while(max - min > 2);

//完了

}


993:デフォルトの名無しさん
08/04/24 05:36:05
あー色々間違ってたw

bool hilow(int min, int mid, int max,
  std::vector<int>& src, std::vector<int>& dst)

dst.clear(); は無し


f(hi.size() == max - mid ) {
dst.swap(low);
return false;
}
dst.swap(hi);
return true;
}

994:デフォルトの名無しさん
08/04/24 05:37:10
試してないけどこんな感じで良いと思うよ。
中間の出し方は微妙に間違ってるかもしれんので、自分で検証してね。

995:デフォルトの名無しさん
08/04/24 05:56:21
exeを逆アセンブルしてソースコードに組み込む定番のやり方教えて下さい

996:デフォルトの名無しさん
08/04/24 06:00:08
ソースコードでよくみかける10Lや1Lってなんのことなんでしょうか?
「1Lとは」などで検索したのですが見つかりません。
環境はC++、BCCです。どなたか回答頂ければ幸いです。

997:デフォルトの名無しさん
08/04/24 06:09:58
>>996
整数のあとにつくLはlong intであることを表す。
10はintの10。10Lはlong intの10。

998:デフォルトの名無しさん
08/04/24 06:31:33
>>997
ありがとうございます!
long intをキーワードに検索したら大体わかってきました。
long intを代入するときはLをつけるという解釈であってますか?

999:デフォルトの名無しさん
08/04/24 06:39:42
違うよ。整数リテラルそのものにも型があるの。

1 は int型
'1' は char型
1.0 は double型
1L は long型

1000:デフォルトの名無しさん
08/04/24 06:49:16
重ねてありがとうございます!
詳しい説明でよくわかりました(多分)。
単なる1でも勝手にintにされてるんですね。

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch