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

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

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

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

Q&A

4回答

739閲覧

これらの問題の解き方を知りたい

itukaten200511

総合スコア0

C

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

0グッド

0クリップ

投稿2025/02/05 13:35

編集2025/02/05 14:49

問  ゲームにおいて成功判定を以下のルールで行うとする
●6面サイコロを2個振り、目の合計が目標値T以上のとき成功。
●ただし目の合計が7未満でも、ゾロ目(2個のサイコロの目が同じ)ときは成功。

2個のサイコロの目の組み合わせのうち、失敗となるものをすべて出力するプログラムを書け。たとえばア=4のとき、合計3以下で1のゾロ目が除外されるので、 
1 2
2 1
と出力されればよい。なお、目標値を変更できるようにTはマクロエとして定義し、その値は5とすること。
ヒント:2重ループを使って1~6の数のペアを総当たりで作り、失敗の条件を満たすときのみ2つのループ変数の値を出力すればよい。

問  
整数型の引数を2個受け取り(小さい順にa.bとする)a≦n≦bを満たすすべての整数n の和を計算して返す関数を定義せよ。引数は常に小さい順に指定されると考えてよい。
ヒント:たとえば関数名をsumとしたとき、関数呼び出しsum (3,5)の返り値は12(=3+4+5)、sum(1,9)の返り値は45(=1+2+…・+9)となる。

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

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

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

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

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

maisumakun

2025/02/05 13:58

どこまでコードを書いて、どのような点において引っかかっている状況でしょうか。
hiroki-o

2025/02/05 14:30

C#、C++のどちらでしょうか?
itukaten200511

2025/02/05 14:31

すみません。どっちも#include<stdio.h>までしか書けてない状況です😭 ざっくりは分かりそうなんですけど何から始めればいいのか分かりません。
meg_

2025/02/05 14:50

参考書の問題でしょうか?学校の課題は基本こういう場で回答もらうのはNGだと思いますので、引用元を明記されないとアドバイスもらいにくいかと思います。
itukaten200511

2025/02/05 14:50

本当にすみません。C言語でした。🙇‍♂️
itukaten200511

2025/02/05 14:51

友達から送られてきた問題なので分かりません すみません🙇‍♀️
jimbe

2025/02/05 16:50

友人からの練習問題といった所でしょうか。 解き方といっても c のエンジニアであれば問題を見た段階で頭にほぼ全体が出来ているはずですので、何からやればと聞かれても答えにくいと思います。 ヒントもありますから、その辺りから書いてみては如何でしょう。
otn

2025/02/05 17:41

> これらの問題の解き方を知りたい まず、1つ目のサイコロの問題。 プログラムのことは忘れて、その問題を手作業でやることを考えて、それをやる手順を日本語の文章で書いてみましょう。それを、質問文を編集して追記しましょう。これは出来ると思います。 日本語で書けたら、Cに翻訳してみましょう。その過程で、不明点が出たら、その点を具体的に質問文に追記しましょう。その時点でのプログラムも添えて。 もし、日本語では書けたが、Cで、#include<stdio.h> 以降をどう書いたら良いかが全く分からないのであれば、Cについて全く知らないということだと思うので、まずはCに入門しましょう。 「整数を1から100まで順番に表示し、最後にそれらの合計値を表示する」くらいは自分でゼロから書けないとこの問題には取り組めません。
fana

2025/02/06 01:45

単に「Cで書いてみましょう」という意味合いの問題であり,「アルゴリズムを考えろ」という意味合いのものではないと見える. (「ヒント」とかいう文章が「解き方」を丸ごと書いているのだから,とりあえず「解き方」を考える要素はどこにも無い.) 要は,「Cで基礎的なコードを書けるかな?」というお話なので,Cをご自身でさっさと勉強してみたほうが早いだろうと思う. 環境(コードを書いて→コンパイルやらして→実行する までの手段)の準備が既に済んでいるのであれば,あとは本当に「コードとして何を書くか」だけの話になるので,その勉強の所要時間というのは 1時間~1日 程度なんじゃないかな,と. (こんな場所に質問投稿して答えを待つのに要する時間よりも短いであろうと思う)
fiveHundred

2025/02/06 02:09

> 友達から送られてきた問題なので分かりません その友達とやらが、直接質問すべきでしょう。 「どこが分からないか」とかは本人でないと分からないし、それをあなた経由でやりとりするのは手間しかかかりません。 そもそも、「あなたが責任を持って答えを教える」なんてことはないですし、仮に友人が赤点や単位落とすことになっても、自分から勉強しなかった友人が悪いので、あなたが行う理由なんてないはずです。
fiveHundred

2025/02/06 02:13 編集

すみません、先ほどの解釈は誤解でした。 「友達から送られてきた問題」なのであれば、友人なら答えが分かっているはずなので、ここで赤の他人に頼るよりもそちらに聞くほうがよいと思います。
meg_

2025/02/06 03:10

> 友達から送られてきた問題なので分かりません その旨質問に明記しましょう。またその”友達”に解き方をレクチャーしてもらえないのには何か理由があるのでしょうか?「自力で解け」という趣旨ならここで質問したことがその友達に知られてしまったら問題にならないですか??(余計な心配だとは思いますが・・・)
guest

回答4

0

#include<stdio.h>までしか書けてない状況です

「C言語のコードを書くんですが…」という話であれば,それはちょっと あり得ん 状況だと思います.
この問題に取り組もうとしている時点で,最低でも「main関数とかいうのがあるべき」みたいな話はご存じかと思います.
であれば書くでしょ,それを.

C

1#include <stdio.h> //←本当に「この行だけ書いた」なんて話は異常 2 3//何は無くとも,このくらいのものを書くハズ. 4int main(void) 5{ 6 return 0; 7}

本当にここまでのコードを書くに至らないという状況なのであれば,「問題の内容が 難しい からできない」みたいな話ではなく,単にスタートラインにすら立てていないというだけの話なので,それはもう「C言語でやる → というのならば,まずはそのC言語とかいうのを勉強しましょうよ」という回答しかできません.

まぁ,実際はそんなことはなくて

ヒント:2重ループを使って1~6の数のペアを総当たりで作り、失敗の条件を満たすときのみ2つのループ変数の値を出力すればよい。

というのを 何故だか不明だが書けない という話なのだろうと推測します.

そういうときには「何故だか不明だが」じゃなくて,書けない理由をご自身の中で明確にして→それを潰していくしかないです.
例えば「ループ」「条件を満たす」「変数」「出力」みたいな言葉の中に意味がわからないものがあるだとか,意味はわかるがどう書けば良いのかわからないものがあるとか,そういう理由を.
「変数とは何か?」と言うのであれば,「変数とは何か」を調べる/勉強する.
「Cでループというのは実際どう書くのか?」というのであれば,「Cでループを書く方法」を調べる/勉強する.
ただそういうことを淡々とこなしていけば,少なくとも質問文に提示されている2問に関しては,まぁすぐにでも終わるような内容かと見えます.


質問のタイトルも 「わからない」ではなくて「知りたい」となってしますが,
まさに「知らないだけ」の話なので,だったら知れば終了かな,と.
で,その知る手段としては,こんな場所で質問するのではなくて,さっさと調べてしまった方が何倍も速いだろう,と.

投稿2025/02/06 02:04

編集2025/02/06 02:08
fana

総合スコア12079

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

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

0

残念ながら、ここではコードの作成依頼は受け付けていません

まずはあなたなりにコードを書いてみましょう。その上でわからないことを聞いていただければお答えできるかと思います。

投稿2025/02/05 21:35

y_waiwai

総合スコア88126

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

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

0

C言語の本を1冊勉強すれば、簡単な課題かと思います。
まさしく勉強中ということだと思います。
答えは、教科書の中や、今まで勉強してきた中にあるはずなので、
今わからないということであれば再度勉強し直すことが本筋です。
簡単なコードなので書いてみましたが、下記のコードを見ながら
再度勉強することをお勧めします。

C

1#include <stdio.h> 2int main(void) 3{ 4 test01(5); 5 int sum = test02(3, 5); 6 printf("sum=%d\n",sum); 7 return 0; 8} 9void test01(int t){ 10 for (int i = 1;i <= 6;i++){ 11 for(int j = 1;j <= 6;j++){ 12 //ゾロ目判定 13 if(i == j){ 14 continue; 15 } 16 //合計値判定 17 if((i + j) >= t){ 18 continue; 19 } 20 //失敗 21 printf("i=%d, j=%d\n",i, j); 22 } 23 } 24} 25int test02(int start, int end){ 26 int sum = 0; 27 for(int i = start; i <= end; i++){ 28 sum += i; 29 } 30 return sum; 31}```

投稿2025/02/06 02:53

kikukiku

総合スコア537

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

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

fana

2025/02/06 03:41

どうせなら > 目標値を変更できるようにTはマクロエとして定義し という話も入れてしまえば(=完品にしてしまえば)どうでしょうか. (「マクロエ」ってのは「マクロ」かな?)
kikukiku

2025/02/06 05:38

すみません。C#開発者で、C開発者ではないので、 マクロがよくわかりません。 他の方にお任せしたいです。
kikukiku

2025/02/06 06:03

マクロを調べてみたところ下記の記事を見つけました。 defineで定義することをマクロと言うのですね。 https://qiita.com/Yuzu2yan/items/0e7bcf2e8bc1aa1c030b ビルド環境がないので、ブラウザ上で動作する下記を利用して マクロ記述してみましたが、エラーになってしまいました。 下記サイトがマクロに対応していないのか?もしくは当方の記述が悪いのかは 判別がつかないので、やっぱり、他者にお任せします。 https://9cguide.appspot.com/web_picoc_em.html
jimbe

2025/02/07 04:55

リンク先の環境で define 出来ます。 ちなみに 1 パスのコンパイラでは回答のコードは main が先にあるので test01/02 の前宣言が必要です。
matukeso

2025/02/09 03:45

> test01/02 の前宣言が必要 C89なら暗黙の関数宣言があることになるはず。C99では廃止されたので必要。
guest

0

[香車]東上☆Aho(暎帆)☆海美「
文章系 VTuber として、お答えいたします。

C# 開発者だというのなら、C# で書いてみたプログラムを UP してください。
二重ループは、C# にも、ありますね。
マクロはありませんが、とりあえず、const で定義すればいいと思います。

投稿2025/02/08 01:18

umimi

総合スコア555

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

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

YAmaGNZ

2025/02/08 03:05

C#開発者というのはどこから出てきたんでしょうか?
umimi

2025/02/08 03:33

#1「 C言語の本を1冊勉強すれば、簡単な課題かと...」 の「回答へのコメント」に「kikukiku 2025/02/06 14:38 すみません。C#開発者で、C開発者ではないので、マクロがよくわかりません。他の方にお任せしたいです。」とあったので、質問主の発言だと思ったのだが、よく見ると、ID 違ってるな。あと、「回答へのコメント」にレスすべきか、独立してレスすべきか、迷いましたが、独立レスにしました。
jimbe

2025/02/08 04:24 編集

kikukiku さんは回答者で、質問者では無いのでは。 kikukiku さんが C# の人なので、回答で一応 C コードは書いたけどもマクロ部分が怪しいのでそこは他の回答者に任せます・・・という趣旨かと。
umimi

2025/02/08 08:19

どうやら、ワシの勘違いのようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.33%

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

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

質問する

関連した質問