c++言語初心者スレ

  • 1c難民22/05/27(金) 16:34:59
    c言語できる人急募|あにまん掲示板for whileで積んでるんだけど助けてくれbbs.animanch.com

    自分で頑張りますが、本当に困ったときだけ頼らせてください!

  • 2二次元好きの匿名さん22/05/27(金) 16:54:41

    ガンバ!!!!

  • 3二次元好きの匿名さん22/05/27(金) 16:55:28

    前スレの最後の疑問は分かったのかい?

  • 4二次元好きの匿名さん22/05/27(金) 16:56:44

    「++」を「パート2」的なスレの枕詞にすなーーっ☝️💦

  • 5二次元好きの匿名さん22/05/27(金) 16:59:14

    トリップとコテハンは違うよ
    コテハンだけだとなりすましされる可能性あるよ

  • 6二次元好きの匿名さん22/05/27(金) 16:59:39

    このスレはCなのかC++なのか

  • 7二次元好きの匿名さん22/05/27(金) 16:59:59

    多分C言語だと思うよ

  • 8二次元好きの匿名さん22/05/27(金) 17:02:07

    紛らわしスレタイだな~

  • 9二次元好きの匿名さん22/05/27(金) 17:02:51

    C++だとばかり。というかサムネもC++だ
    ま、紛らわしい…

  • 10二次元好きの匿名さん22/05/27(金) 17:06:12

    これがC言語
    これがC++
    これがC#

  • 11二次元好きの匿名さん22/05/27(金) 17:09:36

    そんなC++の入門書をもらってちょうどいいところにと思ったのに...

  • 12二次元好きの匿名さん22/05/27(金) 17:09:43

    さすがにサムネ詐欺だろw
    マジでC++スレにしか見えんぞ

  • 13二次元好きの匿名さん22/05/27(金) 17:23:21

    >>4

    インクリメント演算子としての++だったなんて…

  • 14二次元好きの匿名さん22/05/27(金) 18:13:03

    ブラウザのタイトル、+が化けてスペースになってるのでC言語になってるwww

  • 15二次元好きの匿名さん22/05/27(金) 18:17:05

    まじやんスレ主ここまで計算して...?
    いやそれならサムネをCにしてくれ

  • 16c難民22/05/27(金) 18:34:24

    ようやく5限目終わりました
    皆が何言ってるか理解できないっす…cとc++の違いとは…
    スレ消しもできないしなりすまされたら詰みなのでしないでくださーい!

  • 17c難民22/05/27(金) 18:39:35

    残り5個の内2個終わりました。まだ取り組んでないけど次のやつヤバそうです。今日終わったのは個数を入力してそれと同じ数だけ記号を交互に出すみたいなやつです。

  • 18二次元好きの匿名さん22/05/27(金) 18:42:59

    >>17

    まず、どんな変数が必要だと思うんや?

  • 19c難民22/05/27(金) 18:50:49

    >>18今日のやつは

    int x,y;

    for(y=x;y>0;y=y-1)

    みたいな感じでできました

    なんとなくつかんできたような気がします

  • 20二次元好きの匿名さん22/05/27(金) 18:52:31

    今日のやつ言われてもわからん
    分からん課題の問題文とどんな変数が必要そうか書こうよ

  • 21二次元好きの匿名さん22/05/27(金) 19:05:39

    >>16

    c小さくて少ないパーツで作るよ初心者向けだね...( ;∀;)

    c++小さくて沢山あるパーツで作るよ初心者向けだね...(*´ω`)

  • 22二次元好きの匿名さん22/05/27(金) 19:06:45

    >>20

    解けた問題の話をしていて質問をしていないんじゃない?

    3問目とやらが難しければ聞きに来るでしょ

  • 23二次元好きの匿名さん22/05/27(金) 19:08:46

    Cなら得意分野だ
    オブジェクト指向プログラミングを散々やらされたから見たくないんだよね

  • 24二次元好きの匿名さん22/05/27(金) 19:21:32

    >>17 >>19

    事前にxに数を入力してその数だけループさせる条件式にしたのかな?いいじゃない!

    ちなみにそれなら↓みたいに書けばxだけでもいける、yにxを代入せずxをそのまま使う形

    for(;x>0;x=x-1)

  • 25c難民22/05/27(金) 19:25:02

    >>22

    そうゆうことです!なるべく今日やりたいけど…1限目フィットネスが辛すぎて超眠いです

    >>24

    (と;の間に何もなくてもいいんですね

  • 26二次元好きの匿名さん22/05/27(金) 19:27:10

    for(;;)で無限ループ

  • 27二次元好きの匿名さん22/05/27(金) 19:30:47

    >>25

    for(初期化; ループの継続条件; カウンタ変数の更新)

    がfor文の構成要素になってて、それぞれ省略することができるの

    >>24は初期化を省略したパターン(xには既に入力があるから初期化は必要ないと判断)

    ループの継続条件を省くと>>26の言うように無限ループが発生する

  • 28二次元好きの匿名さん22/05/27(金) 19:47:41

    >>17

    一方的に聞くだけだったのが自力で取り組んで解決してる成長っぷりいいぞ

    俺らと一緒にプログラミング地獄に落ちようぜ

  • 29c難民22/05/27(金) 20:45:14

    >>28

    ほんとに申し訳ないんですけど今日はもうプログラミングやるの無理そうです…

  • 30c難民22/05/27(金) 21:47:47

    int x, y,a;

    printf("何個表示しますか:");

    scanf("%d", &x);

    int z = x / 2;

    if (x % 2 == 0) {

    for (y = x; y > z ; y = y - 1) { printf("*"); }

    for (a = z; a > 0; a = a - 1) { printf("+"); }

    }

    else{

    for (y = x; y > z; y = y - 1) { printf("*"); }

    for (a = z; a > 0; a = a - 1) { printf("+"); }

    }

  • 31二次元好きの匿名さん22/05/27(金) 21:48:00

    家にパソコンないの?

  • 32c難民22/05/27(金) 21:50:57

    キーボードから読み込んだ値の半分まで*を残り半分を+表示する
    奇数の場合は小数点以下切り捨て
    (9だったら****+++++)

  • 33c難民22/05/27(金) 21:52:56

    最後の力でどうにか出来ましたが小数点以下切り捨てはどうすればいいのやら
    これでやると9のとき*****++++になります…

  • 34二次元好きの匿名さん22/05/27(金) 21:56:23

    そもそもcでint同士の割り算が少数切り捨てじゃなかったっけ?

    >>30でいうとxに9突っ込んだらz=x/2=9/2で4になる感じ

  • 35c難民22/05/27(金) 21:56:29

    >>31

    フィットネスと英語のテスト勉強で疲れました…大学から家まで2時間かかるのでなかなか家で取り組む時間ないです

    (ほかの宿題もあるし)

  • 36c難民22/05/27(金) 21:58:33

    >>34

    9/2=5にしたいです…

  • 37二次元好きの匿名さん22/05/27(金) 22:02:03

    >>36

    やったら先に入力されたxが奇数か偶数かifで判定して

    奇数だったら(x+1)/2、偶数だったら普通にx/2したら良いと思う


    まあ>>30のコード自体がもうちょっと改善できそうな気はするが

  • 38二次元好きの匿名さん22/05/27(金) 22:18:24

    タスクとしては下だけど、変数yとaを i にしてくれると見やすくなるぜ

  • 39二次元好きの匿名さん22/05/27(金) 22:21:07

    >>32の処理として


    ・xを入力させる

    ・1文字目~x/2文字目まで"*"を表示

    ・(x/2+1)文字目~x文字目まで"+"を表示

    ※xが奇数の場合x/2の小数は切捨


    したいのよね?

    x=9のときx/2が4になってくれてるならそれで↑要件満たせてない?

  • 40二次元好きの匿名さん22/05/27(金) 22:28:25

    intの切り捨てを考えなくていい問題なのか
    intの切り捨てを考えさせるための問題なのか

  • 41二次元好きの匿名さん22/05/27(金) 22:33:05

    今日はこの問題を自力で解いたってことなのかな
    問題文全文記載してほしかったけど気持ちはあるけど、ええね! やるやん!

  • 42c難民22/05/27(金) 23:13:30

    >>37

    助かるラスカル!

    >>41

    頑張りました!

  • 43二次元好きの匿名さん22/05/28(土) 00:14:28

    できとるなら要らんかもしれんけど

    たぶんこんな


    int x,count;

    printf("何個表示しますか:");



    // ※>>39でいってる「xを入力させる」

    scanf("%d", &x);


    // ※>>39でいってる「1文字目~x/2文字目まで"*"を表示」

    for(count=1;count<=x/2;count++) {

    // xの値の半分まで"*"表示(※xが奇数の場合、小数切捨)

    // 例:x=8ならcountが1~x/2(=4)まで*表示

    // 例:x=9ならcountが1~x/2(=4.5→小数切捨で4)まで*表示

    printf("*");

    }


    // ↑for抜けた時点でcount>x/2の整数になっている


    // ※>>39でいってる「(x/2+1)文字目~x文字目まで"+"を表示」

    for(;count<=x;count++) {

    // xの値の半分から後を"+"表示

    // 先のfor抜けた時点でx=8でも9でもcountは5なのでcountが5~xまで+表示

    printf("+");

    }

  • 44c難民22/05/28(土) 07:30:37

    if(x%2=1){for....}

    else{for....}みたいにしたらうまくいったので次行きます!

    int a, b=0;

    printf("整数値:");

    scanf("%d", &a);

    for (a > 0; a / 10 < 1; b = b + 1) { printf("その値は%d桁です\n", b); }

    return 0;

    これやるとscanfが無視されるのですが何故なんでしょうか?

  • 45二次元好きの匿名さん22/05/28(土) 07:37:15

    >>44

    むしろこれ実行したら何が起きるんだ

    無限ループしそう

  • 46二次元好きの匿名さん22/05/28(土) 07:45:36

    無視されるっていうか入力次第だと無限ループ入るんじゃないのか
    「b = b + 1」条件でbいくら書き換えても「a / 10 < 1」満たすこと無くないか

  • 47c難民22/05/28(土) 08:37:19

    a/10>1をa>1にして{}の中にa=a/10入れたらできました

    次行きます

  • 48二次元好きの匿名さん22/05/28(土) 08:40:17

    大丈夫なのかそれは
    for文の使い方合ってる…?
    理解してる…?

  • 49c難民22/05/28(土) 09:01:50

    >>48

    多分大丈夫なはず…

    次は入力した数字が素数かどうか判別するやつでしたがなんとかできました。

    実況スレ立てたけどなんだかんだ皆さんの協力で課題終わりました。ありがとうございます。

    また来週も課題出るので厳しそうだったらまたお願いします。

  • 50二次元好きの匿名さん22/05/28(土) 09:17:51

    1>aってなにを繰り返させようとしてるの…?for要らなくない?

  • 51二次元好きの匿名さん22/05/28(土) 10:53:26

    多分>>44は最終的に

    int a, b = 0;

    printf("整数値:");

    scanf("%d", &a);

    for (a > 0; a < 1; b = b + 1)

    {

    a = a / 10;

    }

    printf("その値は%d桁です\n", b);

    みたいになってると思われる(エスパー)動くかは知らん


    ↑だと仮定してアドバイスしとくと

    ・代入演算子とインクリメントを習ってるならb=b+1はb++、a=a/10はa/=10にする

    ・a>0は実質的に意味がない、for(;a<1;b++)でも同じ

    ・桁数の計算をfor文の条件内で処理するのは汚いやり方だと思うので自分なら↓みたいに書く


    int num, digit; // 入力・表示する変数


    printf("整数値:");

    scanf("%d", &num);

    digit = 0; // 最初は0桁


    while (num > 0) // numが0より大きい限りループ

    {

    num /= 10; // numを1桁減らす

    digit++; // digitを1増やす

    }


    printf("その値は%d桁です\n", digit); //結果を表示

  • 525122/05/28(土) 11:46:59

    あー違うな、>>44


    int a, b = 0;

    printf("整数値:");

    scanf("%d", &a);

    for (a > 0; a >1; b = b + 1)

    {

    a = a / 10;

    }

    printf("その値は%d桁です\n", b);


    みたいにしたら一応表示されるか

    上でいってることはあんま変わらんけどね

  • 535122/05/28(土) 12:14:04

    あと>>52だとすると1を入力した時

    a>1が最初から偽になってループが実行されないから

    「その値は0桁です」って表示されるな

  • 54二次元好きの匿名さん22/05/28(土) 14:46:10

    皆比較演算子の方向と左辺右辺てどう決めてるん?
    俺見栄え優先で < と <= 統一なんだがなんかお約束的なのあったっけ

  • 55二次元好きの匿名さん22/05/28(土) 15:20:47

    このレスは削除されています

  • 56二次元好きの匿名さん22/05/28(土) 16:24:53

    >>54

    突き詰めると信仰の問題かもしれんけど

    個人的には「コードをそのまま日本語として解釈しやすい順番」で書くようにしてる

    「aが0から1の範囲内」なら0<a && a<1

    「aが0以下または1以上」ならa<=0 || a>=1

  • 57二次元好きの匿名さん22/05/28(土) 16:36:38

    >>54

    仕事なら設計書に何て書いてるか次第


    私用なら変数 [比較演算子] 定数 って書くから不等号の向きはそれで変わる

    両方が変数なら何となくわかりやすいほう

  • 58二次元好きの匿名さん22/05/28(土) 16:45:40

    >>55に載せたやつミスがあったから修正


    for文の初期化枠が大小比較になってるの初めて見たけど動くんだなぁ

    for文の中身は>>27が正解なんだがもっと初心者向けの内容に絞って雑にするとこう


    for( ①; ②; ③ ){

     ④

    }

    ①…ループする直前で数値を決めておきたい変数の数値を決める(代入する)。大抵は②や③に出てくるものを0にする。

    ②…「この条件に当てはまる時{ }の中身(④)を実行する」と言うための「条件」を宣言するところ。大抵は「①が■以下」「①が■より大きい」など①が条件に入る。「1」とだけ入れると無限ループになる。※無限ループは「悪いモノ」ではなく「使いこなすのに慣れがいるけど必要なモノ」です※

    ③…「{ }の中身(④)を処理し終わった後にする動作」。大抵は①の変数を++か--する。

    ④…「②の条件に当てはまった時にする作業」。中にbreak;があると強制的にループをそこまでで中断する。


    また、①、③はそれぞれ中を , で区切る事で( ①-1, ①-2; ②; ③-1, ③-2 )みたいに処理を増やせる。

    ②は条件2つを書きたい時「条件aと条件bの両方を満たす(条件aかつ条件b)」を「 条件a && 条件b 」、「条件cと条件dのどちらかを満たす(条件cまたは条件d)」を「条件c || 条件d」で表現することができる。(同じ記号同士なら3つ以上繋げられる( e && f && g ))





    ちなみに同じ内容をwhile文に改造するならこう

    while(②){

      ④

      ③

    }

  • 59二次元好きの匿名さん22/05/28(土) 20:12:10

    今更だけど色々と混乱してた>>33>>34の方針でいいはず


    int i, num; //変数の宣言

    printf("整数を入力:\n");

    scanf("%d", &num);

    for (i = 0; i < num; i++) // num回ループ

    {

    if (i < num / 2) // num/2回*を出力、9の場合i<4(9/2)になるのが0-3までなので4回

    {

    printf("*");

    }

    else //残りのnum/2回分+を出力

    {

    printf("+")

    }

    }

    printf("\n");


    これで動く(インデントは再現されなかったら許して)

  • 60二次元好きの匿名さん22/05/28(土) 21:08:25

    このレスは削除されています

  • 61二次元好きの匿名さん22/05/28(土) 21:09:58

    このレスは削除されています

  • 62二次元好きの匿名さん22/05/28(土) 21:11:47

    インデント再現しようと色々やってみたがスペースは削除されちゃうんだな

    長いコード打つようになったらss用のページとか使った方がいいかも知れん


    TelegraphTelegra.ph is a minimalist publishing tool that allows you to create richly formatted posts and push them to the Web in just a click. Telegraph posts also get beautiful Instant View pages on Telegram.telegra.ph
  • 63二次元好きの匿名さん22/05/28(土) 21:13:36

    インデント無いコードとかクソみたいな可読性だからな
    まあVisualStudioとかのIDEに突っ込んで自動整形させれば良いけど
    そういやスレ主どんな環境で作業してるんだ

  • 64二次元好きの匿名さん22/05/28(土) 22:38:53

    コードの共有なら専門の

    https://paiza.io/ja/projects/new?language=c

    こういうのがよさそう

    https://paiza.io/projects/e/vGqJwIHpjMJOHpExcUS0jA?theme=twilight

    実行結果もすぐ確認できるし

  • 65二次元好きの匿名さん22/05/29(日) 08:15:09

    保守

オススメ

このスレッドは過去ログ倉庫に格納されています