[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 12/31 01:11 / Filesize : 246 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.59【環境依存OK】



1 名前:デフォルトの名無しさん [2008/03/30(日) 01:50:26 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.50【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1204124447/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm



962 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:51:55 ]
>>>944は、charの取りうる最大値を指していた場合
>+1すると、オーバーする。

するってーと current_c=~str[0]; が適切?

963 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:53:43 ]
オーバーフローしても大丈夫だろ。

964 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:55:39 ]
あ、一文字目が処理されない

965 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:56:06 ]
>>963
実動はともかく、規格的にはアウトだろ

966 名前:959 mailto:sage [2008/04/23(水) 18:12:21 ]
リベンジ

#include <algorithm>
#include <string>
#include <iostream>
#include <functional>

int main() {
  std::wstring src = L"ああいうええお";
  ::setlocale(LC_ALL, "ja_JP.UTF-8");
  std::wstring::iterator i = src.begin();
  if (!src.empty()) {
    do {
      std::wcout << *i << std::distance(src.begin(), i) << std::endl;
      i = std::adjacent_find(i, src.end(), std::not_equal_to<wchar_t>());
    } while(i++ != src.end());
  }
}



967 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:15:31 ]
そして通告されるeucJP

968 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:01:21 ]
vectorの配列を作ろうと思い

vector<vector<string> > vecStrDim;
vector<string> vecStr;
string strTest = "test";

vecStr.push_back(strTest);
vecStrDim[0].push_back(vecStr);

とやってみました。コンパイルは通るのですが
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
とでて実行してもデバッグエラーになります

vecStrDim[0].push_back(vecStr);が悪いのはわかるのですが、方法が思いつきません
どうすればデバッグエラーを対処できるのでしょうか?

969 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:06:06 ]
>>968
×vecStrDim[0].push_back(vecStr);
○vecStrDim.push_back(vecStr);

970 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:10:40 ]
>>969
あわわ……とんでもなく馬鹿なことしてすみません
解決しました



971 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:14:36 ]
そのコードがコンパイルが通ることが不思議だ…

972 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:29:14 ]
シングルバイト限定なら、current_cをintか何かにして、charで表現できないデカい値にしとけばいい。

973 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 20:44:51 ]
class内で、static付けたものは、配列にしたときコピーは作られないんですよね? すべて同じ物を参照するんですよね

974 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:27:08 ]
まあ配列にしなくても1つしか実体が存在しないようになるけどな

975 名前:デフォルトの名無しさん [2008/04/24(木) 00:49:34 ]
#include <stdio.h>
void main(void)
{
int a;
pirntf("何か入力してください\n\n");
scanf("%d",&a);
while(1){
printf("ぐははははははは!!\n\a");
}
}
この程度しか俺は中なので書けません。プログラマーさん
お願いします。



976 名前:デフォルトの名無しさん [2008/04/24(木) 00:50:21 ]
↑MISSりました

#include<stdio.h>
void main(void)
{
int a,b,c;
printf("数字を入力してください\n");
scanf("%d",&a);
printf("数字をまた入力してください\n");
rewind(stdin);
scanf("%d",&b);
printf("数字をまたまた入力してください\n");
scanf("%d",&c);

if(a == b == c)
printf("等しいです,\n");
else
printf("等しくないです,\n");
}


これでa==b==cだったら"等しい"と表示させるように組んでるのに 1、1、1以外の数字は入力してもは全部"等しくないです"になるのは
なんででしょうか?

977 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:52:43 ]
>>976
a == b == c は、(a == b) == c と解釈される。つまり、使い方が間違っている。
その場合、恐らくa == b && b == c でいいだろう。


978 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:57:13 ]
980あたり、次スレたのむぜ

979 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:59:27 ]
>>977
おおwなるほど!
ありがとうございました^^

980 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:11:37 ]
>>990にパス



981 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:14:03 ]
>>976
移動前のスレのコメントにもありましたが、
「君が参考にしてるものは信用しないほうがいい」
です。void main(...) はまずい。

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

983 名前:981 mailto:sage [2008/04/24(木) 01:34:22 ]
rewind() も、あるのかわからない.....。stdin に対して rewind() ?

984 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:35:46 ]
1〜100までの数字でひとつだけない数字があるのでそれを探すという問題なのですが
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6318.cpp
でひとつひとつ探す方法はあるのですが
他の方法で、まず
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 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:41:23 ]
数えながら2つのファイル(小さい,大きい)に書き出していけばいいんじゃねの?

986 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:42:37 ]
どこにあるのかわからないなら、ひとつひとつしらべるのが最善

987 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 04:42:58 ]
物凄い無駄な処理だなw

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

989 名前:988 mailto:sage [2008/04/24(木) 04:46:09 ]
ああ、ごめん。数字は順番に並んでるわけじゃないのか

990 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 04:54:26 ]
諦めて全部足して5050から引け



991 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 05:37:10 ]
試してないけどこんな感じで良いと思うよ。
中間の出し方は微妙に間違ってるかもしれんので、自分で検証してね。

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

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

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

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

999 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 06:39:42 ]
違うよ。整数リテラルそのものにも型があるの。

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

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



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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef