質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

684閲覧

実行回数がわかるようにしたい

tanakariiii

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/10/25 07:51

編集2021/10/25 08:09

コード中の①、②、③、④の箇所が何回実行されたのかわかるようにしたいです。
引数を置いて実行される度に1ずつ増えていくようにしたいのですがわからないです。

c

1int d; 2for(d = 0; d < 14; d++) { 3 switch(d) { 4 case 11: 5 case 10: 6; 7 break; 8 case 7: 9; 10 case 1: 11; 12 break; 13 case 12: 14 break; 15 default: 16; 17 } 18} 19

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fj68

2021/10/25 07:59

1. 「実行回数がわかるようにしたい」というのは何の実行回数でしょうか。 プログラム全体なのか、特定の関数なのか、はたまた特定の行なのか。 2. CとC#のタグが付いていますが、どちらの言語でしょうか。CとC#だと結構違う部分もありますので、間違った回答がつかないためにも適切なタグを設定し、ご質問にも使用しているバージョンなどを記入されると詳しい方から回答をいただけると思います。 3. コードはコードブロックで囲っていただけると見やすくなり回答がつきやすくなるかと存じます。 囲おうとした形跡が見えるのですが、残念ながら正しく囲えておらずインデントなどが潰れてしまっていますので、以下を参照して質問を編集してみてください。 質問する際にMarkdownは必ず使って欲しい - Qiita https://qiita.com/kai0310/items/d6ad23d7e60eeb103c9d ご参考まで。
tanakariiii

2021/10/25 08:02

ご指摘ありがとうございます。 内容が不十分で投稿してしまってました。
jimbe

2021/10/25 08:13 編集

> 引数を置いて これはどういう意味でしょう。引数は見当たりませんし、置くとはどこに…。 コードの一部では無く main から全部ご提示頂いて、実行したらこういう結果になるように…とか、実際にこういう風にしてみたがこうなってしまった…とかを書いて頂けませんでしょうか。
BeatStar

2021/10/25 08:54

まず、仕様を確認してください。 今の質問文だといろんな解釈が出来てしまいます。 しかもそれぞれ意味が全く違う。 引数とはなんの意味でしょうか。少なくとも質問にあるコードには普通の意味の引数はありません。 まさか、switch(d) の dのやつってことはありませんよね? (それは引数とは言いません。そもそもswitch...casseは関数ではないので) > コード中の①、②、③、④の箇所が何回実行されたのかわかるようにしたい とありますが、これはどういう意味でしょうか。 単純に考えても、 ■ ①、②、③、④ の「全体の回数」の意味 ■ ①、②、③、④の「それぞれの回数」の意味 どちらとも取れます。 前者は "①の回数" + "②の回数" + "③の回数" + "④の回数" となりますし、 後者は①、②、③、④それぞれ別の回数になりますし。 プログラミングっていうのは『こう書けばいい』ってものではありません。 仕様を確認してください。
guest

回答3

0

グローバル変数なりなんなりで回数を記録するための配列を作り、
実行するごとに該当の配列の要素をインクリメントする。

投稿2021/10/25 08:10

ozwk

総合スコア13553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ご質問の意図を正しく読み取れているかわかりませんが、こんな感じでどうでしょうか。

①+②+③+④の合計を数える

変数を用意して、単純にインクリメントしていくだけです。
途中、フォールバックがあるので、例えばd == 7のときはn++が2回実行されることに注意してください。

c

1#include <stdio.h> 2 3int main() { 4 int n = 0; // 実行回数を数えるための変数 5 int d; 6 7 for(d = 0; d < 14; d++) { 8 switch(d) { 9 case 11: 10 case 10: 11 n++; // ①; 12 break; 13 case 7: 14 n++; // ②; 15 // ここにbreak;がないので、case 1へフォールバックすることに注意 16 case 1: 17 n++; // ③; 18 break; 19 case 12: 20 break; 21 default: 22 n++; // ④; 23 } 24 } 25 26 printf("n = %d\n", n); 27 return 0; 28}

①,②,③,④のそれぞれを分けて数える

分けて数える場合は変数を複数用意してもいいですが、配列にしてあげた方がわかりやすいかもしれません。
フォールバックについては上のコード同様、注意が必要です。

c

1#include <stdio.h> 2 3int main() { 4 int n[] = {0, 0, 0, 0}; // 実行回数を数えるための配列 5 int d; 6 7 for(d = 0; d < 14; d++) { 8 switch(d) { 9 case 11: 10 case 10: 11 n[0]++; // ①; 12 break; 13 case 7: 14 n[1]++; // ②; 15 // ここにbreak;がないので、case 1へフォールバックすることに注意 16 case 1: 17 n[2]++; // ③; 18 break; 19 case 12: 20 break; 21 default: 22 n[3]++; // ④; 23 } 24 } 25 26 printf("① = %d, ② = %d, ③ = %d, ④ = %d\n", n[0], n[1], n[2], n[3]); 27 return 0; 28}

投稿2021/10/25 11:34

fj68

総合スコア752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

static変数をインクリメントすればいいです。

投稿2021/10/25 09:42

qqfsdfsafd

総合スコア599

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qqfsdfsafd

2021/10/25 10:06

この質問の場合「引数」という文字を「変数」と読み替えてあげなくてはなりません。 質問への追記・修正依頼を書いている人はどうしてそういう読み替えが出来ないのでしょうか?
Zuishin

2021/10/25 10:24

読み替えができると思ってる人のスコアが増えない理由と同じ。
qqfsdfsafd

2021/10/25 10:53

少なくともozwkさんはちゃんと読み替えて回答してますが? 本当に質問への追記・修正依頼を書く人達いらないです。
Zuishin

2021/10/25 11:04

ちゃんと判断できる人のことは言ってない。 判断できないのにできると思ってるからスコアがどんどん減ってるだけ。
qqfsdfsafd

2021/10/25 11:51

とりあえずここのスコアについては低評価する人のレベルが低すぎるので全く気にしてません。
Zuishin

2021/10/25 11:54

それは自分のレベルを正しく認識していないということ。 お前みたいなのはどこ行っても低評価だろ?
qqfsdfsafd

2021/10/25 11:57

そんなことないよ。
Zuishin

2021/10/25 12:16

そんなレベルの低いところがあるわけがない。
qqfsdfsafd

2021/10/25 12:30

いやいや、お客さんからは抜群の高評価を貰ってます。 おもいっきり手抜きで本当に必要な機能をしっかり実現するので無駄な機能をごちゃごちゃ付けた無駄なアプリより圧倒的な低価格で最高レベルのアプリを提供しています。
Zuishin

2021/10/25 12:31 編集

なんだ。脳内のエアお客さんからの評価か。それなら納得。 私が話していたのは現実世界の話。
qqfsdfsafd

2021/10/25 12:34

いいえ。 現実にお金を払って頂いてるお客さんからの評価です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問