エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
探検
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
2016/11/06(日) 23:23:55.86ID:AHO3vAwR
>>3-1000は射精魔
2016/11/07(月) 09:27:53.95ID:vooGYje+
2016/11/07(月) 09:34:35.19ID:dSd+kVnH
何がしたいのかわからないので回答しようがないな
2016/11/07(月) 09:36:19.79ID:dSd+kVnH
あ、初期化子か
インデントがないから見間違えた
インデントがないから見間違えた
2016/11/07(月) 09:38:54.66ID:e8hpdnod
引数の int b[] って int* b と同じやしなぁ
2016/11/07(月) 09:47:42.61ID:HQzTq5fm
std::array
2016/11/07(月) 12:11:29.58ID:56hqYy7l
C++11以降なら
A(int (&b)[2]) : a{b[0], b[1]} {}
A(int (&b)[2]) : a{b[0], b[1]} {}
2016/11/07(月) 14:52:37.34ID:fwwW9lIx
だがint b[2][3]はポインタ引数は・・・
2016/11/07(月) 14:56:04.42ID:6MsAvbZq
↑幻覚をみた糖質のつぶやき
12デフォルトの名無しさん
2016/11/07(月) 15:00:49.14ID:3Xim9e5h >>4
C++11以降ならstd::initializer_listが使える
#include <iostream>
#include <initializer_list>
#include <algorithm>
class A {
int a[6];
public:
A(std::initializer_list<int> b) {
std::copy(std::begin(b), std::end(b), a);
}
void print() const {
for (int i : a)
std::cout << i << std::endl;
}
};
int main()
{
A a({10, 4, 2, 8, 5, 66});
a.print();
}
C++11以降ならstd::initializer_listが使える
#include <iostream>
#include <initializer_list>
#include <algorithm>
class A {
int a[6];
public:
A(std::initializer_list<int> b) {
std::copy(std::begin(b), std::end(b), a);
}
void print() const {
for (int i : a)
std::cout << i << std::endl;
}
};
int main()
{
A a({10, 4, 2, 8, 5, 66});
a.print();
}
2016/11/07(月) 18:18:06.75ID:hOJqMng1
1413
2016/11/07(月) 18:21:04.82ID:hOJqMng1 2行目「6個より多く」だったね
2016/11/07(月) 18:44:55.40ID:3Xim9e5h
2016/11/07(月) 19:07:23.45ID:hOJqMng1
要求は固定長の配列であって、動的に増やせるようにしろとは言ってないので
それのコードは非効率にしかならないと思うよ
それのコードは非効率にしかならないと思うよ
2016/11/07(月) 19:25:01.70ID:fwwW9lIx
2016/11/07(月) 19:50:01.21ID:Z2RT26Su
2016/11/07(月) 20:07:47.59ID:Z2RT26Su
ID:hOJqMng1 の主張の変遷
1.わざと大きい初期化子を与えると実行時にアクセス違反になると主張
→だから動的に対応できるようにした
2.すると今度は非効率的だからarrayを使えという
→arrayが特に効率的なわけではないし、今度は「要求は固定長の配列だ」と言い出す
どう考えても言ってることがコロコロ変わってるんだが
1.わざと大きい初期化子を与えると実行時にアクセス違反になると主張
→だから動的に対応できるようにした
2.すると今度は非効率的だからarrayを使えという
→arrayが特に効率的なわけではないし、今度は「要求は固定長の配列だ」と言い出す
どう考えても言ってることがコロコロ変わってるんだが
20デフォルトの名無しさん
2016/11/07(月) 21:12:34.93ID:L762Pvtq !!喧嘩の予感!!
2016/11/07(月) 21:25:52.93ID:nZ1H9hgf
A() : a{b[0], b[1]} {}がダメだった人にC++11を押しつけてどーすんだ
>>12に至ってはもとの質問と全然関係ねーし
>>12に至ってはもとの質問と全然関係ねーし
2016/11/07(月) 21:26:20.26ID:Rr8tj+hR
VC++で、マウスオーバーで色が少し変わって、クリックしたら沈んだみたいになる画像ボタンを作るにはどうしたらいいですか?
2016/11/07(月) 22:16:57.66ID:hOJqMng1
2016/11/07(月) 22:20:22.76ID:JXtVbtZ4
>>21で結論でてるじゃねえか
C+11を押し付けてる時点でおまえら全員ダメだ!
C+11を押し付けてる時点でおまえら全員ダメだ!
2016/11/07(月) 23:34:44.46ID:lMECrzfj
いいぞ、もっとやれ〜♪
2016/11/08(火) 00:32:16.33ID:t0HdCoBm
沸点低すぎワロタw
2016/11/08(火) 00:33:05.07ID:2SYrs2Uf
2016/11/08(火) 15:38:54.44ID:FW358liz
using std;
int main() {
int a;
cout<< "数を入力してください" <<endl;
cin>> a;
cout<<a <<"ですね?" <<endl;
}
aを確実に入力させたくて困っています
ご教授ねがいます
int main() {
int a;
cout<< "数を入力してください" <<endl;
cin>> a;
cout<<a <<"ですね?" <<endl;
}
aを確実に入力させたくて困っています
ご教授ねがいます
2016/11/08(火) 16:03:34.41ID:j/2yZvJO
まず確実ってなんやねん
数以外だったり未入力は弾くってか
数以外だったり未入力は弾くってか
2016/11/08(火) 16:26:08.25ID:FW358liz
そうです
未入力で無限ループみたいに表示されて困っています
未入力で無限ループみたいに表示されて困っています
2016/11/08(火) 16:26:29.50ID:Or+T0geg
教示ならしてやっても良いが、教授はお断りだ
2016/11/08(火) 16:58:49.59ID:sBMnjDSh
>>28
http://ideone.com/dpolU5
一応単なる改行や数字で始まらない文字列は弾くようにした
ただしコメントにも書いてあるけど 123def みたいな数字で始まる文字列を
入力したときは数字だけ返すんでそれが駄目なら自前で作るしかないね
http://ideone.com/dpolU5
一応単なる改行や数字で始まらない文字列は弾くようにした
ただしコメントにも書いてあるけど 123def みたいな数字で始まる文字列を
入力したときは数字だけ返すんでそれが駄目なら自前で作るしかないね
2016/11/08(火) 17:22:56.70ID:FW358liz
2016/11/10(木) 10:52:07.29ID:8ULjF/bN
独習C第4版 P197ページの再帰のプログラムなのですが、
#include <stdio.h>
void recurse(int i);
int main(void)
{
recurse(0);
return 0;
}
void recurse(int i)
{
if(i < 10) {
recurse(i + 1);
printf("%d " , i);
}
}
実行結果は
9 8 7 6 5 4 3 2 1 0
の動作がわかりません。10になるまでprintfが実行されずに+1され続けるのはいいのですが、
なぜ10になったらiが戻り始めるのでしょうか?
あまりに初心者な質問ですみません。
#include <stdio.h>
void recurse(int i);
int main(void)
{
recurse(0);
return 0;
}
void recurse(int i)
{
if(i < 10) {
recurse(i + 1);
printf("%d " , i);
}
}
実行結果は
9 8 7 6 5 4 3 2 1 0
の動作がわかりません。10になるまでprintfが実行されずに+1され続けるのはいいのですが、
なぜ10になったらiが戻り始めるのでしょうか?
あまりに初心者な質問ですみません。
2016/11/10(木) 11:03:28.04ID:6ImFpJhK
引数だけ書くと
0+1
1+1
・・・
9+1
ここまではprintfまで来ないまま再帰
9+1でifに入らないからrecurseからリターン
printfがiを表示(9)してリターン
printfがiを表示(8)してリターン
の繰り返し
0+1
1+1
・・・
9+1
ここまではprintfまで来ないまま再帰
9+1でifに入らないからrecurseからリターン
printfがiを表示(9)してリターン
printfがiを表示(8)してリターン
の繰り返し
3634
2016/11/10(木) 11:07:42.28ID:8ULjF/bN >>35
早速のレスありがとうございます。
>9+1でifに入らないからrecurseからリターン
ということはmain関数のreturn 0でプログラムは終了してしまうのではないですか?
なぜprintfが呼ばれるのかわからんのですが。(iが減算される理由もわかりません)
早速のレスありがとうございます。
>9+1でifに入らないからrecurseからリターン
ということはmain関数のreturn 0でプログラムは終了してしまうのではないですか?
なぜprintfが呼ばれるのかわからんのですが。(iが減算される理由もわかりません)
3734
2016/11/10(木) 11:12:33.48ID:8ULjF/bN if(i < 10) {
recurse(i + 1);
printf("%d " , i);
}
で
recurseとprintfは同じifブロックに入っているので、ifが偽なら両方共スキップされると思うのですが、
なぜprintfだけ呼ばれるのでしょうか?
recurse(i + 1);
printf("%d " , i);
}
で
recurseとprintfは同じifブロックに入っているので、ifが偽なら両方共スキップされると思うのですが、
なぜprintfだけ呼ばれるのでしょうか?
2016/11/10(木) 11:20:27.66ID:69ogPHI/
丁度再帰打ち切り付近の挙動
i=8 で受けた recurse
recurse(8+1) の呼び出し
i=9 で受けた recurse
recurse(9+1) の呼び出し
i=10 で受けた recurse
条件合致せず戻る
printf("%d", i) で 引数の 9 を書く
i=9 で受けた recurse から戻る
printf("%d", i) で 引数の 8 を書く
i=8 で受けた recurse から戻る
i=8 で受けた recurse
recurse(8+1) の呼び出し
i=9 で受けた recurse
recurse(9+1) の呼び出し
i=10 で受けた recurse
条件合致せず戻る
printf("%d", i) で 引数の 9 を書く
i=9 で受けた recurse から戻る
printf("%d", i) で 引数の 8 を書く
i=8 で受けた recurse から戻る
2016/11/10(木) 11:28:04.25ID:6ImFpJhK
>>37
9+1で入って偽で抜けたら
8+1で入ってきたif内のrecurseから抜けて次のprintfが実行されて抜ける
8+1で抜けたら7+1で入ってきたif内のrecurseから抜けて次のprintfが実行される
の繰り返し
9+1で入って偽で抜けたら
8+1で入ってきたif内のrecurseから抜けて次のprintfが実行されて抜ける
8+1で抜けたら7+1で入ってきたif内のrecurseから抜けて次のprintfが実行される
の繰り返し
4034
2016/11/10(木) 11:40:24.95ID:8ULjF/bN2016/11/10(木) 12:42:30.91ID:69ogPHI/
再帰呼び出し後に書く recurse(i+1); printf("%d ", i);
と
書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
の違いとか
呼び出しの出入りを整理する
printf("in:%d\n", i);
recurse(i+1);
printf("out:%d\n", i);
と見えてくると思うよ
と
書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
の違いとか
呼び出しの出入りを整理する
printf("in:%d\n", i);
recurse(i+1);
printf("out:%d\n", i);
と見えてくると思うよ
2016/11/10(木) 13:57:04.04ID:gEXUDT4B
なんか遠回りな説明ばかりだな
スタックフレームというキーワードを出してやれよ
スタックフレームというキーワードを出してやれよ
4340
2016/11/10(木) 14:01:09.75ID:8ULjF/bN >>41
>再帰呼び出し後に書く recurse(i+1); printf("%d ", i);
>と
>書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
>の違いとか
これはこの本の次のページにも書いてありました。
書いてから再帰呼び出しの場合は昇順(1,2,3,4,5,6~)になりますね。
相変わらず曖昧な理解なんですが、
どのiの場合もi=10に達するまではrecurse(i+9)までしか実行されていなくて、
printfは実行されていない待機中の状態だと考えればいいのでしょうか?
それでi=10でif条件文を抜けて、i=9からi=0まで数字が大きい方から順番にまだ実行していなかった
printfを降順で実行していくのでしょうか?
この本(独習C)には
> 引数の値が10に達すると、recurse()の再帰呼び出しから戻りはじめます。関数は、呼び出し元に戻る
>ものなので、recurse()は直前の呼び出し元に戻り、そこでprinf()を文を実行して「9」と表示し、
>さらに前の呼び出し元に戻ります。こうしてrecurse()は、今度は「8」と表示します。 その後も同じ>プロセスが繰り返され、すべての呼び出しから戻った段階でプログラムが終了します。
実行される順番が、最初のi=0からではなく、直近のi=9からなのはなぜなのでしょうか?
>再帰呼び出し後に書く recurse(i+1); printf("%d ", i);
>と
>書いてから再帰呼び出し printf("%d ", i); recurse(i+1);
>の違いとか
これはこの本の次のページにも書いてありました。
書いてから再帰呼び出しの場合は昇順(1,2,3,4,5,6~)になりますね。
相変わらず曖昧な理解なんですが、
どのiの場合もi=10に達するまではrecurse(i+9)までしか実行されていなくて、
printfは実行されていない待機中の状態だと考えればいいのでしょうか?
それでi=10でif条件文を抜けて、i=9からi=0まで数字が大きい方から順番にまだ実行していなかった
printfを降順で実行していくのでしょうか?
この本(独習C)には
> 引数の値が10に達すると、recurse()の再帰呼び出しから戻りはじめます。関数は、呼び出し元に戻る
>ものなので、recurse()は直前の呼び出し元に戻り、そこでprinf()を文を実行して「9」と表示し、
>さらに前の呼び出し元に戻ります。こうしてrecurse()は、今度は「8」と表示します。 その後も同じ>プロセスが繰り返され、すべての呼び出しから戻った段階でプログラムが終了します。
実行される順番が、最初のi=0からではなく、直近のi=9からなのはなぜなのでしょうか?
2016/11/10(木) 14:02:24.39ID:69ogPHI/
再帰でどう動いてるか理解するのに
スタックフレーム出されても困らないか? 値の保持の実装でそうなってるってだけだし
スタックフレーム出されても困らないか? 値の保持の実装でそうなってるってだけだし
2016/11/10(木) 14:09:10.79ID:gEXUDT4B
この手の人は、具体的な実装例を見さえすれば、すぐさま疑問が解消されるんだよ
>>43でも「待機する」だとか
なんで逆順になるのか分からないとか
言っているが
スタックフレームさえ知れば全ての疑問は解決だし
C/C++するのにスタックフレームさえ知らない状態だと
このさき困難だろう
>>43でも「待機する」だとか
なんで逆順になるのか分からないとか
言っているが
スタックフレームさえ知れば全ての疑問は解決だし
C/C++するのにスタックフレームさえ知らない状態だと
このさき困難だろう
2016/11/10(木) 14:10:50.73ID:69ogPHI/
おっけー まかせた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市早苗総理 G20サミット“遅刻” 会議後の夕食会出席も見送り [Hitzeschleier★]
- 【毎日世論調査】高市内閣の支持率65% 日中関係悪化も高水準維持、若年層に強み [蚤の市★]
- 小泉進次郎防衛相「共産党が日本の弾薬の数や配備を質問してきた、そんなこと言うわけない、手の内を見せるべきではない」 [お断り★]
- 【産経新聞】高市政権をバッシングする勢力、中国と一部のオールドメディアと緊縮財政派か [Hitzeschleier★]
- 【裁判】山上徹也被告の妹「大好きなお兄ちゃん」「旧統一教会信者の叔母から、選挙時に自民党の特定の候補に入れてほしいと…」奈良地裁 [1ゲットロボ★]
- 【石破茂前首相】台湾有事巡る高市発言に苦言 神経使う日中関係「よく認識しながらやって」 [ぐれ★]
- 他サポ 2025-265
- 京都競馬4回6日目マイルチャンピオンシップ
- 2025 SUPER FORMULA Lap21 【歩夢、伝説へ】
- @@@令和七年大相撲九州場所 vol.12@@@
- ベガルタ仙台実況 ★3
- 札幌実況
- 【悲報】ツイッター愛国アカウント、続々と外国産だということが判明 つまり愛国者は外国人ということ? [158478931]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★6
- 【悲報】Twitter、登録国を表示できる機能を追加し大炎上 [347751896]
- 吉本芸人ほっしゃん、遂にほんこんはんを批判。「腐った犬笛」 [523957489]
- 勤労感謝🙏の日のちゅちょ👶り放題スレ🏡
- 【悲報】「みいちゃんと山田さん」とうとう一流紙に名指しで批判される [811796219]
