- コード求むID: 155
- 登録日時: 2007/10/16 01:20
- 最終更新日時: 2007/10/18 06:29
- アクセス数: 2513
- タグ:
ただいまC言語研修中ですが、記述はC++形式です。
画面から式を入力し、計算させて結果を画面に表示させる問題です。ほぼ正しい答えが返ってくるようになりました。
困っているのはMAIN関数の最後で結果だけ表示していますが、問題作成の制約で、出力については1行で例えば「10 + 2 = 12」と、間にスペースを挿入して画面に表示させる事が必要です。
その際の使用可能関数はgetchar,putchar,gets,puts,fgets,fputsのいずれかでなければいけませんが方法が分かりません。
上記関数に詳しい方、教えていただけないでしょうか。
(長いソースですが、MAIN関数以外は一応参考で載せています。)
#include
#include
#include
void
int
char
int
void
int
void
void
{
}
void
{
}
int
{
}
char
{
}
int
{
}
void
{
}
int
{
}
void
{
コメント

- 3:たかのを
- 2007/10/16 04:24
ごめんなさい、意味があるか判りませんが、蛇足に追記です。
「stdlib.h」→「stdlib.hをはじめとする標準Cライブラリ」
と読み替えてください。
更に、今回のご質問ですが、printfを使わない場合の出力成型に関しての質問である可能性もあるのにようやく気づきました。main関数の最初にある以下の文を例のように変更した場合、どうなるかと言うのもヒントになるかと思います。
printf(
↓
printf(
PS:

- 5:たかのを
- 2007/10/17 16:38
keronimo様
>テキストの内容が薄く、関数の使用例が分からずに困っています。
どの様な理由からそのテキストを購入したor使うことになったのかは、私の視点からでは想像の域を出ません。使用例がわからないと言う事からC言語の制御構文などの言語仕様に重点を置いて、ライブラリに関してはあまり言及されていないものとお察しします。
今後、追加でテキストを購入される場合は・・・
1)自分がこれから何を学びたいのか目的を明確にする。
2)超大型書店など専門書を多く扱うお店に足を運ぶ。大学生協書籍部も悪くないと思います。即戦力を付けてから後付で論理・サイエンスの側面からの知識を得る場合は前者、逆の場合は後者を選ぶと良いように思えます。これは私個人の感想ですが、家電量販店付属の書籍部では良い本にめぐり合えた事はあまりありませんでした。
3)そこにあるでしょう大量の購入候補となる本に関してできる限り目を通して自分の要求に合う本を自費購入する。もし見つけることが出来ないのでしたら、時間の許す限り他の本屋も探してみる。
・・・事をお奨めします。上手に探せば長く手元に置いておける資料に出合えるかもしれません。
また、ネットの海をマンボウ状態になってプラプラしたところ、以下のページを発見いたしました。
*Programing
http://www.geocities.jp/ky_webid/index.html
この中の「C言語編」ですが、keronimo様のお手元にある資料の良い補完資料になりそうな気がします。
C言語編
http://www.geocities.jp/ky_webid/c/index.html
更新頻度も高く、練習問題とその回答まで用意してある優秀なページだというのが私の第一印象です。また、よく言及されるgets()の危険性なども書いてあり、実用に充分耐えうる資料だと思います。個人の力で作成されていると思いますが、その熱意に感服しています。
軽く探しただけなのでこれが本当にkeronimo様の要求に合うかは判りません。ネットの海を探せばもっと良い資料に出会えるかもしれません。使える資源は徹底的に使いましょう。
改めて、どうぞがんばってください。

- 6:keronimo
- 2007/10/18 01:03
これでできるかな~と思った方法で簡単にできました。
文字列結合関数を使って、値・スペース・演算子・スペースと配列に入れて最後にputsで表示としました。
会社の研修グループがありまして、2ヶ月でCとC++を覚えて年内にツールを作るというスケジュールで動いています。もちろん言語の基礎がある事を前提ですが。
テキストは古いものをコピーして使っており、また全部の関数の使用例は載っていなくて当然かと思われます。
本日からC++に入りました。
また機会がありましたらお願いします。
ありがとうございました。

- 7:たかのを
- 2007/10/18 06:29
keronimo様
まずは無事解決して何よりです。私のコメントは結果としてあまり必要なかったようですね。私自身にも別途利益が生じたコメントなので無問題です。
文字列→整数変換でマイナスの考慮の後、atio()すら使っておられなかったので、今回の問題はputchar()を連発して出力文字を制御させる、めまいのするような制約を受けているのでは?という想像すらしておりました。
strcat()が使えるのでしたら些かの注意で解決しますね。
C++はC側からその内部実装を見ると大変勉強になると考えています。是非とも良質な知識・技術を吸収して行って下さい。
私も知れば知るほど自分の無知や視点の偏りを思い知らされております。
改めて、今後もがんばってください。
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。






keronimo様
便利な関数であるprintf()をあえて使わせないと言うお題に取り組んでいると思われるので、あえて正解は書かずに、ヒントだけ書いてみようと思います。
http://www.cppll.jp/cppreference/
例えばこちらのページを参考にしながら、以下のことに注意して今一度考えを巡らせてみてはいかがでしょうか?
・アスキーコード表
・入出力関数:putchar()における引数の型
・入出力関数:puts()における引数の型
また、文法書から「型キャスト」の項目を確認されることもお奨めします。
蛇足ですが、今回お題とされている出力時の制約以外に制約がないのでしたら、stdlib.hで用意されている文字列操作関数に関して、使えるか否かを評価してみてはいかがでしょうか?このコードはもっと簡単になるかもしれませんよ。
どうぞがんばってください。