[過去ログ]
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1500329247/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [sage] 2017/07/18(火) 07:07:27.20 ID:vzMDiUgd エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 【アップローダー】(質問が長い時はココ使うと便利) http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用) 前スレ 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 http://mevius.2ch.net/test/read.cgi/tech/1478440682/ http://mevius.5ch.net/test/read.cgi/tech/1500329247/1
978: デフォルトの名無しさん [sage] 2017/11/02(木) 20:49:14.23 ID:QvGPm7pP 読むのと書くのを関数に分けるべきかな http://mevius.5ch.net/test/read.cgi/tech/1500329247/978
979: はちみつ餃子 ◆8X2XSCHEME [sage] 2017/11/02(木) 23:14:01.04 ID:4tfXXWiS >>975 個人的にはこんな感じにするかな……。 #include <iostream> #include <fstream> std::istream& operator>>(std::istream& in, double (&data)[4]) { for(auto& e: data) in >> e; return in; } std::ostream& operator<<(std::ostream& out, double (&data)[4]) { for(auto e: data) out << e << " "; return out; } int main(void) { std::ifstream fin( "xxx.txt", std::ios::in ); double data[6][4]; int i = 0; for(auto& data_line: data) { if((fin>>data_line).fail()) break; std::cout << data_line << std::endl; } return EXIT_SUCCESS; } 配列のままがお望みらしいのでこう書いたけど、専用の型を用意した方が綺麗っちゃ綺麗 http://mevius.5ch.net/test/read.cgi/tech/1500329247/979
980: デフォルトの名無しさん [sage] 2017/11/03(金) 00:03:21.41 ID:4eJ/7N9T >>975 while( [&]{ for(auto& e: data[i]) fin >> e; }(), fin.good() ){ for( auto& e: data[i] ) std::cout << e << " "; http://mevius.5ch.net/test/read.cgi/tech/1500329247/980
981: デフォルトの名無しさん [sage] 2017/11/03(金) 00:49:56.36 ID:LOXVFC/o 975です,sage方法すら忘れててすまぬ. >>976 そのソースを示してくれると嬉しい >>977 いや,これだと生理的にダメなんすよ >>978, 979 大層なことするわけじゃないからなるべく短く行きたいんや >>980 つか,whileの条件式に登場する , は何ぞや,なレベル. 以下のソースだと,ラムダ式部分に警告 expression result unused が出る. バイナリは吐くが,実行すると大量のコンソール出力があり, しかも全く読めていないっぽいうえ,Segmentation faultしやがる. 以下,試したソース #include <iostream> #include <cstdlib> #include <fstream> int main(){ std::ifstream fin( "xxx.txt", std::ios::in ); double data[6][4]; int i = 0; while( [&]{ for( auto& e : data[i] ) fin >> e; }, fin.good() ) { for( auto& e : data[i] ) std::cout << e << " "; std::cout << std::endl; ++i; } return EXIT_SUCCESS; } http://mevius.5ch.net/test/read.cgi/tech/1500329247/981
982: デフォルトの名無しさん [sage] 2017/11/03(金) 01:05:35.02 ID:4eJ/7N9T >>981 https://www.google.com/search?q=カンマ演算子 http://mevius.5ch.net/test/read.cgi/tech/1500329247/982
983: デフォルトの名無しさん [saga] 2017/11/03(金) 01:56:10.83 ID:LOXVFC/o >>982 カンマ演算子か.なるほど. whileの条件式に与えたラムダ式を評価してその成否は破棄しつつ カンマ演算子の右にあるfinがまだ使えるかどうか, で処理継続の可否を判断している,という理解でいいのかな. でも,981のソースだと,while文が終わらずに,無限ループに突入しているもよう. この現象を説明しつつ,問題を解決するソースをくれると喜びます. http://mevius.5ch.net/test/read.cgi/tech/1500329247/983
984: デフォルトの名無しさん [sage] 2017/11/03(金) 04:19:30.63 ID:4eJ/7N9T >>983 >>980 http://mevius.5ch.net/test/read.cgi/tech/1500329247/984
985: デフォルトの名無しさん [sage] 2017/11/03(金) 06:53:03.34 ID:LOXVFC/o 975です, >>981 のソースでいう while( [&]{ for( auto& e : data[i] ) fin >> e; }, fin.good() ) { を while( [&]{ for( auto& e : data[i] ) fin >> e; }(), fin.good() ) { にしたら正常に動作しました. まずはありがとうでした. http://mevius.5ch.net/test/read.cgi/tech/1500329247/985
986: デフォルトの名無しさん [sage] 2017/11/03(金) 16:37:14.49 ID:t+2N1bPb c++初心者向けの名著コードない? http://mevius.5ch.net/test/read.cgi/tech/1500329247/986
987: デフォルトの名無しさん [sage] 2017/11/03(金) 20:48:45.38 ID:fZH3r81G お前の頭は既にしてバーコードだろ? http://mevius.5ch.net/test/read.cgi/tech/1500329247/987
988: デフォルトの名無しさん [sage] 2017/11/03(金) 20:59:39.93 ID:t+2N1bPb 坊主頭なんだが、ストレスで10円ハゲがたくさんできてQRコードだ。安心しろ。 http://mevius.5ch.net/test/read.cgi/tech/1500329247/988
989: デフォルトの名無しさん [sage] 2017/11/04(土) 09:57:38.12 ID:io7R91TU char a[8]="12 34 56"; と言うのがあったとして これを数値の123456にしたい時、一番速い書き方ってどんなだろうか http://mevius.5ch.net/test/read.cgi/tech/1500329247/989
990: デフォルトの名無しさん [sage] 2017/11/04(土) 10:21:35.26 ID:KEPGzX0z >>989 aの内容は書き換えても良い? 数値は必ず2桁の空白区切り? http://mevius.5ch.net/test/read.cgi/tech/1500329247/990
991: デフォルトの名無しさん [sage] 2017/11/04(土) 10:58:19.72 ID:OnkwfBEU 普通に文字列の先頭から、数字が表れたら'0'との差を加算して桁上げして、ってのを繰り返すのが速いと思うが。 http://mevius.5ch.net/test/read.cgi/tech/1500329247/991
992: デフォルトの名無しさん [sage] 2017/11/04(土) 11:09:08.10 ID:XesRBOxx >>989 スレッド終盤に面白い問題を出してくれるなぁ。 a[8] と要素数を明示して "12 34 56" を代入する部分に罠の臭いを感じる。 '\0' 終端の一般的なCの文字列ではない、8byte専用のトリックが存在するのかも。 http://mevius.5ch.net/test/read.cgi/tech/1500329247/992
993: はちみつ餃子 ◆8X2XSCHEME [sage] 2017/11/04(土) 11:29:59.70 ID:oNhsu9lL 条件次第ではあるけど、 平均的には標準で用意されている関数を使うのがまともな速さになると思う。 ↓こんなの *std::remove(std::begin(a), std::end(a), ' ') = '\0'; http://mevius.5ch.net/test/read.cgi/tech/1500329247/993
994: デフォルトの名無しさん [sage] 2017/11/04(土) 11:47:30.29 ID:zGy4Oklk 速さってコーディンクの速さ? 実行速度? http://mevius.5ch.net/test/read.cgi/tech/1500329247/994
995: デフォルトの名無しさん [sage] 2017/11/04(土) 11:51:36.02 ID:zGy4Oklk a[0]*100000+a[1]*10000+a[3]*1000+a[4]*100+a[6]*10+a[7]-'0'*(111111) http://mevius.5ch.net/test/read.cgi/tech/1500329247/995
996: デフォルトの名無しさん [sage] 2017/11/04(土) 11:59:30.61 ID:zGy4Oklk int v = 0; for (int i = 0 ; a[i] != '??0' ; i++){ if (a[i] == ' ') continue; v = v*10+(a[i]-'0'); } http://mevius.5ch.net/test/read.cgi/tech/1500329247/996
997: デフォルトの名無しさん [sage] 2017/11/04(土) 12:28:06.26 ID:io7R91TU みんなありがとう >>991を参考にこんな感じでやってみたけど、どうなんだろうか。 #include <stdio.h> #include<time.h> int main(){ char a[8]="12 34 56"; int b; clock_t c c; c=clock(); for(int d=1000000000;d;d--){ b=10*(10*(10*(10*(10*(a[0])+a[1])+a[3])+a[4])+a[6])+a[7]-5333328; } printf("%d\n%.3f\n",b,(double)(clock()-c)/CLOCKS_PER_SEC); } スマホで書いたからミスってるかもw http://mevius.5ch.net/test/read.cgi/tech/1500329247/997
998: デフォルトの名無しさん [sage] 2017/11/04(土) 16:35:05.69 ID:NYxCuvMY 次スレ 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1509780815/ http://mevius.5ch.net/test/read.cgi/tech/1500329247/998
999: デフォルトの名無しさん [sage] 2017/11/04(土) 20:16:28.54 ID:wPtyVAZ4 文字化けしてる奴がMZくさい http://mevius.5ch.net/test/read.cgi/tech/1500329247/999
1000: はちみつ餃子 ◆8X2XSCHEME [sage] 2017/11/04(土) 20:57:59.73 ID:oNhsu9lL 結果を整数で得たいならこういうのでもいいかな。 std::accumulate(std::begin(a), std::end(a), 0, [](int acc, int e) { return std::isdigit(e) ? acc*10+e-'0' : acc;}) http://mevius.5ch.net/test/read.cgi/tech/1500329247/1000
1001: 1001 [] ID:Thread このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 109日 13時間 50分 32秒 http://mevius.5ch.net/test/read.cgi/tech/1500329247/1001
1002: 1002 [] ID:Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ https://login.5ch.net/login.php http://mevius.5ch.net/test/read.cgi/tech/1500329247/1002
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s