c言語の練習問題(デミリタ)
c言語の練習問題(デミリタ)
学校でc言語の問題が出されたのですが、答えがわかりません。
答えが分かる方、教えてください。
int型の配列データを
3, 2, 1, 4, 5
のように、データとでの間を", "で区切って表示させることを考える
次の条件下でプログラムを書いてください。
printfは一箇所でしか使用してはならず、if文や条件演算子による条件分岐も行わない。
答えが分かる方、教えてください。
int型の配列データを
3, 2, 1, 4, 5
のように、データとでの間を", "で区切って表示させることを考える
次の条件下でプログラムを書いてください。
printfは一箇所でしか使用してはならず、if文や条件演算子による条件分岐も行わない。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
> printfは一箇所でしか使用してはならず、if文や条件演算子による条件分岐も行わない。
丸投げは禁止ですので、とりあえずできる事を考えてみましょう。
この条件下で出来るC言語の命令は何だと思いますか?
丸投げは禁止ですので、とりあえずできる事を考えてみましょう。
この条件下で出来るC言語の命令は何だと思いますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
usao様、ソフト屋様、返信ありがとうございます。
問題を丸投げにしてしまって申し訳ありません。
この問題を解くに当たって、
#include<stdio.h>
#define NMAX 100 //配列の要素数の最大(仮に100とします)
int main(void)
{
int a[NMAX];
int n,i; //nは入力した個数
//配列への入力は省略
for(i = 0; i<n; i++)
{
printf( i==n-1 ? "%d\n" : "%d, " ,a );
}
return(0);
}
というところまで考えましたが、
結局printf文の所で条件演算子を使用しているため、
この問題の答に至りませんでした。
問題を丸投げにしてしまって申し訳ありません。
この問題を解くに当たって、
#include<stdio.h>
#define NMAX 100 //配列の要素数の最大(仮に100とします)
int main(void)
{
int a[NMAX];
int n,i; //nは入力した個数
//配列への入力は省略
for(i = 0; i<n; i++)
{
printf( i==n-1 ? "%d\n" : "%d, " ,a );
}
return(0);
}
というところまで考えましたが、
結局printf文の所で条件演算子を使用しているため、
この問題の答に至りませんでした。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
三項演算子は、「条件演算子による条件分岐」に該当するんでしょうかね。先生に聞いてみたい所ではあります。
そうですね。Tatuさんの方法なら出来ます。
そう言う解き方を習っているかが問題ですけど。
そうですね。Tatuさんの方法なら出来ます。
そう言う解き方を習っているかが問題ですけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
ループ文とbreakを使えばif文と同じですよ。
Re: c言語の練習問題(デミリタ)
Tatu様、ソフト屋様、usao様、かずま様、
大変有意義な返信ありがとうございます
>>ソフト屋様
三項演算子は条件演算子による条件分岐とみなす、と先生は言っていました。
なので私の解答はどちらにせよ不正解ということになります…
>>usano様
恐らく文字列を扱う為の問題ではないと思います。
正しく伝えられなくて申し訳ありません。
usao様のプログラムを参考にさせていたたきます、ありがとうございます
>>かずま様
そうですね、最後の改行は蛇足でした、申し訳ありません。
大変有意義な返信ありがとうございます
>>ソフト屋様
三項演算子は条件演算子による条件分岐とみなす、と先生は言っていました。
なので私の解答はどちらにせよ不正解ということになります…
>>usano様
恐らく文字列を扱う為の問題ではないと思います。
正しく伝えられなくて申し訳ありません。
usao様のプログラムを参考にさせていたたきます、ありがとうございます
>>かずま様
そうですね、最後の改行は蛇足でした、申し訳ありません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
改行がなくて良いのなら、usaoさんの方法で%sではなく%cを使って最後に空白を出すと処理がシンプルかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
>%sではなく%c
そっちの方がシンプルで良いですね.
(課題提出先が 末尾に空白ガー とか言い出すような相手だったら
fprintf( stdout, ... ) とかを持ち出して応戦しましょうw)
そっちの方がシンプルで良いですね.
(課題提出先が 末尾に空白ガー とか言い出すような相手だったら
fprintf( stdout, ... ) とかを持ち出して応戦しましょうw)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
申し訳ないですが、まっとうな方法を知っていた上で、あまり良くない方法として披露する分には良いと思うんですよ。Mana さんが書きました:C言語で比較演算子を評価すると真と偽はそれぞれ整数値の1と0。
計算式に使える。
昔は高速化の技法として意味がありましたが、現代においては歓迎される技とは言えないと思います。
※ 頭の体操としては面白いですし、競技プログラミングでは威力を持つ可能性がありますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
これだと先生が理解できない可能性もありますね。
まぁ、学生が出すには非常にチャレンジャブルなソースコードと言えます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
printf で "%c" を使っている人がいますが、問題をよく見ると、
"," ではなく、「", "で区切って表示させる」とありますから、
スペースが必要です。
"," ではなく、「", "で区切って表示させる」とありますから、
スペースが必要です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
他の回答者をその他大勢のように書かずに、他の人のフォローとして書いたほうが掲示板が円滑に回ると思いますよ。かずま さんが書きました:printf で "%c" を使っている人がいますが、問題をよく見ると、
"," ではなく、「", "で区切って表示させる」とありますから、
スペースが必要です。
見逃していたことは失礼しました。お互いに上手くコミュニケーションしましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
No.15 で softya さんが "%c" を提案し、No.16 で usao さんが同意し、softya(ソフト屋) さんが書きました: 他の回答者をその他大勢のように書かずに、他の人のフォローとして書いたほうが掲示板が円滑に回ると思いますよ。
見逃していたことは失礼しました。お互いに上手くコミュニケーションしましょう。
No.19 で Mana さんが実際にコードを書きました。
3人の発言を引用するのが面倒なので、あのように書きました。
どのようにフォローすればよいのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
ようは書き方の問題です。
> printf で "%c" を使っている人がいますが
これだと角が立ちます。お前ら間違っているぞ!と言っている印象に私は感じます。他にも感じる人がいるかもしれません。
> 問題をよく見ると、"," ではなく、「", "で区切って表示させる」とありますから、スペースが必要ですね。
> なので、%cの後にスペースが必要かと思います。
となれば全然問題ありません。さりげないフォローになっていると思います。
目くじらを立てるべき問題でもないので、さり気なくフォローして頂ければ幸いです。
【補足】
あっ、いつの間にかManaさんが改訂版を。
> printf で "%c" を使っている人がいますが
これだと角が立ちます。お前ら間違っているぞ!と言っている印象に私は感じます。他にも感じる人がいるかもしれません。
> 問題をよく見ると、"," ではなく、「", "で区切って表示させる」とありますから、スペースが必要ですね。
> なので、%cの後にスペースが必要かと思います。
となれば全然問題ありません。さりげないフォローになっていると思います。
目くじらを立てるべき問題でもないので、さり気なくフォローして頂ければ幸いです。
【補足】
あっ、いつの間にかManaさんが改訂版を。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
あるいは、こんな書き方でもよいでしょう。
ここの掲示板が目指すは「アットホームで温かい」です!
回答者同士がコミュニケーションとれていないと、とてもそうなりません。
面倒だとは思いますが、ここでコミュニケーションを放棄したら掲示板の意義がなくなりますのでよろしくお願いします。No.15 で softya さんが "%c" を提案し、No.16 で usao さんが同意し、No.19 で Mana さんが実際にコードを書かれましたが、問題をよく見ると、"," ではなく、「", "で区切って表示させる」とありますから、スペースが必要でだと思います。
"%d%c "とすべきではないでしょうか。
ここの掲示板が目指すは「アットホームで温かい」です!
回答者同士がコミュニケーションとれていないと、とてもそうなりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: c言語の練習問題(デミリタ)
具体的に名指ししたほうが「お前は間違っているぞ!」というsoftya(ソフト屋) さんが書きました:ようは書き方の問題です。
> printf で "%c" を使っている人がいますが
これだと角が立ちます。お前ら間違っているぞ!と言っている印象に私は感じます。他にも感じる人がいるかもしれません。
印象を与えると思って、それを和らげるために名指しせずに、
「printf で "%c" を使っている人が」とぼかして書いたつもり
なんですが、曲解されるもんなんですね。
usaoさんや、manaさんもそのように感じられたのでしょうか?
Re: c言語の練習問題(デミリタ)
まず,%c云々の件については,
>usaoさんの方法で%sではなく%cを使って最後に空白を出すと処理がシンプルかもしれません
という文章を,その時点で既に
"%d%c " ←%cの次に空白あり
という意味で受け取っています.(…ので私のNo16の受け答えがあのようになる)
以上,「私はそこは間違ってないつもりです」という自己弁護.
>usaoさんや、manaさんもそのように感じられたのでしょうか?
文章の受け取り方側の話については,
「その書き方はこう見える」みたいな私見を申し上げるのは避けさせていただきたく…
>usaoさんの方法で%sではなく%cを使って最後に空白を出すと処理がシンプルかもしれません
という文章を,その時点で既に
"%d%c " ←%cの次に空白あり
という意味で受け取っています.(…ので私のNo16の受け答えがあのようになる)
以上,「私はそこは間違ってないつもりです」という自己弁護.
>usaoさんや、manaさんもそのように感じられたのでしょうか?
文章の受け取り方側の話については,
「その書き方はこう見える」みたいな私見を申し上げるのは避けさせていただきたく…
オフトピック
個人的希望(?)を述べさせていただくならば,
私の書いた内容について何かしらご指摘いただける際には
問題とする箇所を引用されるなり,書き込みNo(これ,こうやって書いてる際には確認できないのが不便ですね)
などを明示して頂けた方がわかりやすくて助かります.
この掲示板を使っていて 一番得るものがある場面 というのは
自分が書いたことが間違ってるということが判明したとき だと思っていますので,むしろ名指し大歓迎です.
(ダメなところは完膚なきまでに論破願いますw)
私の書いた内容について何かしらご指摘いただける際には
問題とする箇所を引用されるなり,書き込みNo(これ,こうやって書いてる際には確認できないのが不便ですね)
などを明示して頂けた方がわかりやすくて助かります.
この掲示板を使っていて 一番得るものがある場面 というのは
自分が書いたことが間違ってるということが判明したとき だと思っていますので,むしろ名指し大歓迎です.
(ダメなところは完膚なきまでに論破願いますw)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: c言語の練習問題(デミリタ)
色々な受け取り方がありますので、私はこう思ったと言うことです。
これをきっかけに他の人とに関わりを考えて頂けたらなと思って書き込ませていただきました。
いつも淡々と答えを貼られるだけなので、他の人とも関わってほしいなと思っております。
これをきっかけに他の人とに関わりを考えて頂けたらなと思って書き込ませていただきました。
いつも淡々と答えを貼られるだけなので、他の人とも関わってほしいなと思っております。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。