初投稿です。
初投稿です。
初めまして、色々検索して見つけました。
もう何をやっても自分で解決できないので、相談しにきました><
↓
キーボードから入力した数値を、カンマ編集(3桁ごとにカンマで区切って表示)するプログラムを作成。
ただし、以下の条件を満たすものとする。
①中心となるロジックは関数として作成すること。
main関数でキーボード入力を受け取り、その値を関数に渡す。
②2種類(以上)のロジックを作成すること。
キーボード入力は1回のみでOK。
[実行例]
<カンマ編集>数値を入力してください:12345[Ente[/url]
12,345
12,345
というものです。
よろしくおねがいします><!
もう何をやっても自分で解決できないので、相談しにきました><
↓
キーボードから入力した数値を、カンマ編集(3桁ごとにカンマで区切って表示)するプログラムを作成。
ただし、以下の条件を満たすものとする。
①中心となるロジックは関数として作成すること。
main関数でキーボード入力を受け取り、その値を関数に渡す。
②2種類(以上)のロジックを作成すること。
キーボード入力は1回のみでOK。
[実行例]
<カンマ編集>数値を入力してください:12345[Ente[/url]
12,345
12,345
というものです。
よろしくおねがいします><!
Re:初投稿です。
質問に答えるために幾つかお願いがあります。スムーズに回答するために必要な事柄ですのでぜひお願いします。
・ 使用している環境やコンパイラ(VisualC++2008ExpressEdition等)、自分が習っている言語の規格(CにもC89やC99など幾つか規格があります)を教えて下さい。
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にして下さい。特に使って良い関数の制限などが分かると答えやすいです。無制限なら無制限と書いて下さいね。
・ 自分で書いたソースプログラムがあるなら提示をお願いします。
・ ソースが有る場合は、自分が書いたソースプログラムはどこからどこまでなのか教えて下さい。
・ ソースコードは< pre>と< /pre>のタグで囲んで下さい。※preを使うときは空白は削除してお使い下さい。ここでは表示の都合で空白を入れています。
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
・ 使用している環境やコンパイラ(VisualC++2008ExpressEdition等)、自分が習っている言語の規格(CにもC89やC99など幾つか規格があります)を教えて下さい。
・ 自分はどこまで理解しているのか、学校ではどこまで習ったのか明確にして下さい。特に使って良い関数の制限などが分かると答えやすいです。無制限なら無制限と書いて下さいね。
・ 自分で書いたソースプログラムがあるなら提示をお願いします。
・ ソースが有る場合は、自分が書いたソースプログラムはどこからどこまでなのか教えて下さい。
・ ソースコードは< pre>と< /pre>のタグで囲んで下さい。※preを使うときは空白は削除してお使い下さい。ここでは表示の都合で空白を入れています。
詳しくはこの掲示板の使い方をご覧ください→ http://dixq.net/board/board.html
Re:初投稿です。
tikaさん
こんにちは^^
昼は携帯からしか書き込めないので簡潔に書きます;
まずsoftyaさんがおっしゃってるコンパイラってわかりませんか?VC++だとか。
今OS何使ってますか?授業ならリナックスとか?
また、作れることから書いてみましょう。
答えを教わるにしても突然長いコードを見てもわかりにくいと思います。
後、キーボードから入力するのは数値なんですか?文字列なんですか?
まずは、こんなとこからやってみましょう
1、キーボードから入力した数値を表示するだけ
2、その数値を100で割った数と100で割ったあまりにわけて表示
これくらいなら出来ますか?
2番は何型で受け取るかで処理がかわりそうです。
2種類以上で作れと書いてあるので、数値、文字列、両方期待されてるのかもしれませんね。
(数値の場合上限がありますが。
こんにちは^^
昼は携帯からしか書き込めないので簡潔に書きます;
まずsoftyaさんがおっしゃってるコンパイラってわかりませんか?VC++だとか。
今OS何使ってますか?授業ならリナックスとか?
また、作れることから書いてみましょう。
答えを教わるにしても突然長いコードを見てもわかりにくいと思います。
後、キーボードから入力するのは数値なんですか?文字列なんですか?
まずは、こんなとこからやってみましょう
1、キーボードから入力した数値を表示するだけ
2、その数値を100で割った数と100で割ったあまりにわけて表示
これくらいなら出来ますか?
2番は何型で受け取るかで処理がかわりそうです。
2種類以上で作れと書いてあるので、数値、文字列、両方期待されてるのかもしれませんね。
(数値の場合上限がありますが。
Re:初投稿です。
>bcc32 ファイル名
やっと分かりました。これがコンパイラですね。
bcc32は、「Borland C++ Compiler」と言います。
じゃあ、下記の手順まずコンパイラを自宅に導入して下さい。
http://natural-high.at.webry.info/200811/article_6.html
インストールに成功したら、まずhello worldが動くこと確認して下さいね。
ここまでで、何か分からなかったら聞いてください。
やっと分かりました。これがコンパイラですね。
bcc32は、「Borland C++ Compiler」と言います。
じゃあ、下記の手順まずコンパイラを自宅に導入して下さい。
http://natural-high.at.webry.info/200811/article_6.html
インストールに成功したら、まずhello worldが動くこと確認して下さいね。
ここまでで、何か分からなかったら聞いてください。
Re:初投稿です。
ふ~やっと帰ってきました。年末は忙しいですねぇ。
>もう何をやっても自分で解決できないので、相談しにきました><
と書いてありますが、(厳しい事を言いますが)
hello worldがちゃんと書けないレベルは
「もう自分が出来る事は全てやった!」というレベルではないです。
hello worldはプログラムの参考書の1ページ目に書いてあるようなことなので、
しっかし参考書を読み返し、復習しましょう。
「参考書は持ってない。授業中先生が言ってるのを聞くだけだ」ということであれば、
ネットで勉強するのもありです。
・・というか、最近はほとんどネットで勉強出来ます。
むしろネットの方が欲しい情報を早く見つけやすいので、本を手に取らなくなるほどです。
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
この辺を読めばいくらでも勉強出来ると思います。
私たちが答えを教えるのは簡単ですが、それでは自分の力になりませんし、
この段階で答えを聞いていると次のステップの問題は全く解けなくなってしまうと思います。
ですので、なんとか自力でやってみましょう。
まずは私が最初に言った
「キーボードで入力した数値をそのまま描画する」
ここまではやってみませんか?
上のサイトにも書いてありますし、ググればいくらでも答えは見つかります。
>もう何をやっても自分で解決できないので、相談しにきました><
と書いてありますが、(厳しい事を言いますが)
hello worldがちゃんと書けないレベルは
「もう自分が出来る事は全てやった!」というレベルではないです。
hello worldはプログラムの参考書の1ページ目に書いてあるようなことなので、
しっかし参考書を読み返し、復習しましょう。
「参考書は持ってない。授業中先生が言ってるのを聞くだけだ」ということであれば、
ネットで勉強するのもありです。
・・というか、最近はほとんどネットで勉強出来ます。
むしろネットの方が欲しい情報を早く見つけやすいので、本を手に取らなくなるほどです。
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
この辺を読めばいくらでも勉強出来ると思います。
私たちが答えを教えるのは簡単ですが、それでは自分の力になりませんし、
この段階で答えを聞いていると次のステップの問題は全く解けなくなってしまうと思います。
ですので、なんとか自力でやってみましょう。
まずは私が最初に言った
「キーボードで入力した数値をそのまま描画する」
ここまではやってみませんか?
上のサイトにも書いてありますし、ググればいくらでも答えは見つかります。
Re:初投稿です。
コンパイラをお持ちではない場合まず、自分のPCにコンパイラを入れましょう。
・・といっても解り難いでしょうから、説明を書いたページを用意しました。
よければご覧ください。
http://dixq.net/vcpp.html
こちらのコンパイラは学校で使っているものとは違うと思いますが、
こちらの方がずっと便利なんですよね。
もしtikaさんが、
「単位が取れたらそれでいい。プログラムには興味無い」
という場合なら学校で使っているコンパイラでいいかもしれません。
せっかく導入してももう使う事が無いのなら無駄ですし・・。
しかし、もしプログラムに興味があり、勉強したいのなら是非VisualC++をお勧めします。
tikaさんの気持ちとしてはどちらなのでしょう?
・・といっても解り難いでしょうから、説明を書いたページを用意しました。
よければご覧ください。
http://dixq.net/vcpp.html
こちらのコンパイラは学校で使っているものとは違うと思いますが、
こちらの方がずっと便利なんですよね。
もしtikaさんが、
「単位が取れたらそれでいい。プログラムには興味無い」
という場合なら学校で使っているコンパイラでいいかもしれません。
せっかく導入してももう使う事が無いのなら無駄ですし・・。
しかし、もしプログラムに興味があり、勉強したいのなら是非VisualC++をお勧めします。
tikaさんの気持ちとしてはどちらなのでしょう?
Re:初投稿です。
とりあえず、ひとつだけ提供します。
ただし、std::string 使っています。
なんだか質問していたのに環境導入の話に変わってしまって、解答得るまで苦戦しそうな気がするので
まずひとつだけでも解法をのせました。
(家で環境を整えればテストもできますので、当然私もVC++等のコンパイラの導入をおすすめします。)
ここから、考え方だけでも習得していただけると幸いです。
二つ目は、これを参考にがんばってください。
名前全角にしてミスったので編集しました。
うおー新機能すごいです、Dixqさん! ⇒
ただし、std::string 使っています。
#include <string> using namespace std; void logic1(char* in){ string text = in;//std::string に変換 for(int i = text.size()-3;i > 0; i -= 3){ text.insert(i,",");//挿入 } printf("%s",text.c_str());//表示 } int main(void) { char input[256] = ""; scanf("%s",input);//入力 logic1(input);//関数に渡す //logic2(input); return 0; }答え丸投げではためにならない、とか思われるかもしれませんが、
なんだか質問していたのに環境導入の話に変わってしまって、解答得るまで苦戦しそうな気がするので
まずひとつだけでも解法をのせました。
(家で環境を整えればテストもできますので、当然私もVC++等のコンパイラの導入をおすすめします。)
ここから、考え方だけでも習得していただけると幸いです。
二つ目は、これを参考にがんばってください。
名前全角にしてミスったので編集しました。
うおー新機能すごいです、Dixqさん! ⇒

Re:初投稿です。
遅くなってすいません。
みなさんにこんな細かく教えてもらって本当に嬉しい限りです、本当にありがとうございます。
まずコンパイラ導入なんですが、順調に進んでましたが途中で電源が落ち出来ず、再挑戦しようとしましたが友達に学校のとごちゃ混ぜになるからやめといたほうがいいよと言われ諦めてしまいました、ごめんなさい。
また文字列に文字を加えることは、なんとなくですが理解出来ていて出来ます。
ですが、中身についてはよく分かっていません;
C言語プログラミングに関しては、専攻科目として修得しなくてはいけなくてただやっている感じです。
周りにも真面目にやっている友達は1人もおらず、男子生徒の1人答えがスラスラ分かる人にみんな頼って答えを見てやっている感じです;
あたしはそういうのが苦手で先生に聞いたり参考書を図書館などで探してやったりとしていましたが、授業でもただ先生が喋り言っていることを黒板に書かれるだけで、先生がパソコン使ってスクリーンで教えるという形もなく、また一人一人教えてくれることもほぼありません。
今回の課題に関しては自力でと言われ質問も聞いてくれませんでした。
前期のころは興味ありましたが、進むペースが早く次第にやる気もなくなってしまい、ただ単位が取れればいいという気持ちだけです;
提供本当にありがとうございます。
少しずつそれを参考し頑張ってみようと思います。
親切に本当にありがとうございます。
みなさんにこんな細かく教えてもらって本当に嬉しい限りです、本当にありがとうございます。
まずコンパイラ導入なんですが、順調に進んでましたが途中で電源が落ち出来ず、再挑戦しようとしましたが友達に学校のとごちゃ混ぜになるからやめといたほうがいいよと言われ諦めてしまいました、ごめんなさい。
また文字列に文字を加えることは、なんとなくですが理解出来ていて出来ます。
ですが、中身についてはよく分かっていません;
C言語プログラミングに関しては、専攻科目として修得しなくてはいけなくてただやっている感じです。
周りにも真面目にやっている友達は1人もおらず、男子生徒の1人答えがスラスラ分かる人にみんな頼って答えを見てやっている感じです;
あたしはそういうのが苦手で先生に聞いたり参考書を図書館などで探してやったりとしていましたが、授業でもただ先生が喋り言っていることを黒板に書かれるだけで、先生がパソコン使ってスクリーンで教えるという形もなく、また一人一人教えてくれることもほぼありません。
今回の課題に関しては自力でと言われ質問も聞いてくれませんでした。
前期のころは興味ありましたが、進むペースが早く次第にやる気もなくなってしまい、ただ単位が取れればいいという気持ちだけです;
提供本当にありがとうございます。
少しずつそれを参考し頑張ってみようと思います。
親切に本当にありがとうございます。
Re:初投稿です。
> 前期のころは興味ありましたが、進むペースが早く次第にやる気もなくなってしまい、ただ単位が取れればいいという気持ちだけです;
なるほど。
察するに「わからないから面白くない」ようなので、わかれば面白くなるんじゃないかと思いますが・・。
それに、真っ黒のコンソール画面にbcc32とかよくわからないコマンド入れたりややこしいことしないといけないから、
「勉強するにも億劫だし」という状況が拍車をかけているように思います。
簡単にコンパイルできる環境を用意して、自分が思いついたらすぐ実行できるような環境があれば、
勉強もスムーズに進むのではないかと思います。
・・というか、勉強だと思うから進まないのではないかと思います。
実は学生時代私もtikaさんと同じ気持ちだったんです。
真っ黒のコンソール画面によくわからないコマンド入力して、
面白くもない計算結果が出るだけのC言語なんか何が面白いんだろうと思っていました。
授業も難しいし、やりたいことはスムーズに出来ないし、わからないことだらけで嫌になっていました。
プログラムの授業は必修だったのに、もう嫌になっていたので、単位落としました。
しかし、ある時、C言語でゲームが作れることを知り、
ゲームを作っているうちにC言語がとても面白くなり、C言語を勉強しました。
・・いや、勉強という意識は無かったです。
tikaさんの趣味が何かはわかりませんが、
例えばある料理が作りたかったとすると、そのレシピを本屋やサイトで見て回ったりして情報得ようとしますよね。
私もゲームが作りたかったので、ゲームが作れる為の情報収集しました。
その中にC言語があったというだけで勉強したという気持ちはありませんでした。
やらされているCの勉強と自分から意欲的に学ぶCは全く違うものでした。
最初は「Cって結局何が出来るの?」そういうことが明確になってないから
学ぼうという気持ちも薄れてしまうのではないかと思います。
Cがあれば何でも作れますよ。
今tikaさんがお使いになっているVistaもC(C++)で出来ています。
ワードやエクセルなんかのソフトもCで作れますし、
プレステみたいな3Dゲームだって作れます。
うちのサイトで公開しているようなゲーム
http://dixq.net/sr/
http://dixq.net/Aerobeat/
程度なら浅い知識のまま作る事も出来るほど簡単に出来てしまいます。
学校の授業が面白くないなら、少し自分で学んでみませんか?
きっとわかれば面白くなると思いますよ。
せっかくCを学ぼうと思っている人が日本中大勢いるのに、
大学や専門学校のしょうもない授業のせいでその人たちの意欲がそがれているのが残念でなりません・・。
なるほど。
察するに「わからないから面白くない」ようなので、わかれば面白くなるんじゃないかと思いますが・・。
それに、真っ黒のコンソール画面にbcc32とかよくわからないコマンド入れたりややこしいことしないといけないから、
「勉強するにも億劫だし」という状況が拍車をかけているように思います。
簡単にコンパイルできる環境を用意して、自分が思いついたらすぐ実行できるような環境があれば、
勉強もスムーズに進むのではないかと思います。
・・というか、勉強だと思うから進まないのではないかと思います。
実は学生時代私もtikaさんと同じ気持ちだったんです。
真っ黒のコンソール画面によくわからないコマンド入力して、
面白くもない計算結果が出るだけのC言語なんか何が面白いんだろうと思っていました。
授業も難しいし、やりたいことはスムーズに出来ないし、わからないことだらけで嫌になっていました。
プログラムの授業は必修だったのに、もう嫌になっていたので、単位落としました。
しかし、ある時、C言語でゲームが作れることを知り、
ゲームを作っているうちにC言語がとても面白くなり、C言語を勉強しました。
・・いや、勉強という意識は無かったです。
tikaさんの趣味が何かはわかりませんが、
例えばある料理が作りたかったとすると、そのレシピを本屋やサイトで見て回ったりして情報得ようとしますよね。
私もゲームが作りたかったので、ゲームが作れる為の情報収集しました。
その中にC言語があったというだけで勉強したという気持ちはありませんでした。
やらされているCの勉強と自分から意欲的に学ぶCは全く違うものでした。
最初は「Cって結局何が出来るの?」そういうことが明確になってないから
学ぼうという気持ちも薄れてしまうのではないかと思います。
Cがあれば何でも作れますよ。
今tikaさんがお使いになっているVistaもC(C++)で出来ています。
ワードやエクセルなんかのソフトもCで作れますし、
プレステみたいな3Dゲームだって作れます。
うちのサイトで公開しているようなゲーム
http://dixq.net/sr/
http://dixq.net/Aerobeat/
程度なら浅い知識のまま作る事も出来るほど簡単に出来てしまいます。
学校の授業が面白くないなら、少し自分で学んでみませんか?
きっとわかれば面白くなると思いますよ。
せっかくCを学ぼうと思っている人が日本中大勢いるのに、
大学や専門学校のしょうもない授業のせいでその人たちの意欲がそがれているのが残念でなりません・・。
Re:初投稿です。
教授の授業はカッスカスが多いですよね。
正直、黒板に書くだけだったら、全部ノートに書いたやつをコピーして配ってくれるだけでいいです。
写すの疲れるだけだし。
まぁ教育者ってわけじゃないし、東大出とかだとわかりやすく授業する気がなかったりするんでしょう。
分からないやつが悪い、みたいな感じですかね。
大学ってそういう所だといえばそうですけど・・・・
>カンマ区切り
printfのフォーマット指定とかマニピュレータ使えば一発で出来るんじゃないかな?って思ったんですけど、ないみたいですねー。
・・・めんどくさ!!
一応動きますけど、合ってるかは分かりません。
Cは独学なので。
正直、黒板に書くだけだったら、全部ノートに書いたやつをコピーして配ってくれるだけでいいです。
写すの疲れるだけだし。
まぁ教育者ってわけじゃないし、東大出とかだとわかりやすく授業する気がなかったりするんでしょう。
分からないやつが悪い、みたいな感じですかね。
大学ってそういう所だといえばそうですけど・・・・
>カンマ区切り
printfのフォーマット指定とかマニピュレータ使えば一発で出来るんじゃないかな?って思ったんですけど、ないみたいですねー。
・・・めんどくさ!!
#include <stdio.h>
#include<string.h>
int main(void)
{
char input[/url] = "123456789";
int i;
int length = strlen(input);
for(i=0;i<length;i++){
if((i != 0) && (length-i)%3 == 0)
printf(",");
printf("%c",input);
}
return 0;
}
一応動きますけど、合ってるかは分かりません。
Cは独学なので。

Re:初投稿です。
>キーボードから入力した数値を、カンマ編集(3桁ごとにカンマで区切って表示)するプログラムを作成。
入力する数値が何桁までなのかわからないので、どの型で受ければ良いのか、また
関数への引数は何の型で渡せばよいのかわかりません。
>簡単な方法でitoa関数を使用して文字列に変換するとも言われました。
ということなので、int型なのかもしれませんが。
2種類以上のロジックで作れということですので、一例を添付します。
この意味がよくわからないのですが、負数も出力できることというのでしょうか?
添付のプログラムは負数では使えません。
入力する数値が何桁までなのかわからないので、どの型で受ければ良いのか、また
関数への引数は何の型で渡せばよいのかわかりません。
>簡単な方法でitoa関数を使用して文字列に変換するとも言われました。
ということなので、int型なのかもしれませんが。
2種類以上のロジックで作れということですので、一例を添付します。
#include <stdio.h> void kanma(long n) { static int count=0; int c; if(n==0) return; c=count++; kanma(n / 10); printf("%d",n % 10); if(c % 3 == 0 && c>0) printf(","); } int main(void) { long n; printf("数値="); scanf("%ld",&n); kanma(n); return 0; }>なんとなくで分かっていることは、-1も答えに出すと先ほど先生が言っていました。
この意味がよくわからないのですが、負数も出力できることというのでしょうか?
添付のプログラムは負数では使えません。