アプリ版:「スタンプのみでお礼する」機能のリリースについて

小数とアルファベットを入力したとき、例えば
“123.45a” と入力したとき、
プログラムの中で整数型の変数で
“123.45”
を一つの数字(double型)として認識し、その
数字を出力せよ。
というプログラムを組む課題なんですがさっぱり?わかりません。どなたか教えて戴けないでしょうか?

A 回答 (5件)

入力される文字列のパターンとして "123.45a"しかないものとします。

つまり、"abc123.45" や "123abc.45"、"1.23.45"のようなものがない場合です。

char moji[80], temp[80];
double result;
int i, c;
scanf ("%s", moji);
for (i = 0, c = 0; i < 80 && moji[i]; i++) {
 if (('0' <= moji[i] && moji[i] <= '9') || moji[i] == '.') {
  temp[c++] = moji[i];
 } else {
  break;
 }
}
temp[c] = '\0';
result = atof (temp);

入力されるパターンが様々な場合はもう少し複雑になりますし、また期待される結果(出力)によっても複雑さが増します。

digit, sei,shou Cの標準関数にはないと思います。自分で作る関数でしょうか? isdigit は与えられた値が数値文字であるか否かを判定する関数(マクロ)です。if文の判定で使えます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2003/05/11 21:17

あなたはどこがわからないのですか?


できたところまで掲載してみてください。

主なロジック部分は for文や while文等で一文字ずつ検査していくのが順当な方法です。

この回答への補足

えーっとはずかしながら全部わからないんです。最初からどうしていいのかわかりません。授業ではfor文を使ってたはずなんですが、digit, sei,shou、も使って作るようなんですが、どうしてよいのかわかりません。

補足日時:2003/05/08 22:17
    • good
    • 0

整数型に少数を含む数値を入れることは出来ません。


整数部分と小数部分とに分けて保持するというのならかのうですが。
問題の意図として整数型というのは文字列(char型の配列)を指すのかと思いました。入力された文字列を検査し、数値を抜き出して浮動小数点型の変数に格納するという問題であれば良くある課題です。

この回答への補足

そうなんです。確かそういう問題だったのですがどうしてもわからないんです。明日の金曜提出なのですがまだ出来てなくて困っています。教えていただけないでしょうか?

補足日時:2003/05/08 18:25
    • good
    • 0

この問題の意図は


 整数型に小数型を入れた場合、どのようになるか?
をさしているのではないでしょうか?
だとしたら簡単です。
#include <stdio.h>
#include <stdlib.h>
int main(void);
int main(void)
{
 int num;
 double fl;

 fl=atof("123.45a");
 num=(int)fl;
 printf("flの値=%f\n", fl );
 printf("numの値=%d\n", num );
}
これで、少数型に入っている値を整数型に代入したら
どのように変化するかがわかると思います。
    • good
    • 0

整数型の変数でdouble型として認識・・・



わからなくて当然でしょうね。課題の意図を聞きなおした方がいいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!