12+345
と言う文字列を入力して、整数と記号に分ける問題です。
1 整数
2 整数
- 記号
3 整数
4 整数
5 整数
と回答したところ
12 整数
- 記号
345 整数
で表示して欲しい
と言われてしまいました。
str[2]で発見した時に
str[0],str[1]
を組み合わせれば良い
というアドバイスを受けていますが良く分かりません。
atoi( )なるものがあることも調べましたが上手く出来ません。
宜しくお願いします。
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
int i;
printf("入力して下さい\n"); scanf("%s",str); printf("strlen(str) %lu\n",strlen(str)); for(i=0;i<strlen(str);i++) { if((str[i]>=0x30) && (str[i]<=0x39) ) { printf("%c 整数",str[i]); } else { printf("%c 記号",str[i]); } printf("\n"); } return 0;
}
記号についてですが、12+-345と入力された場合
+記号
ー記号
ですか、それとも
+-記号
ですか。
質問者さんが"12+345"と言う文字列を目にしたとき、頭の中でそれをどう計算しているかを具現化すれば良いのです。
例えば左端から1文字ずつ見ていって、'+'が来たらそれまでの数文字列はひとつの値としてみなして計算しませんか?
頭の中でまとまっていないうちにコードを何となくこねくり回しても正解にたどり着けません。
アドバイスいろいろ、ありがとうございます。
tatsu99さん
実際には入力は
12+345-678
で
出題者は後々、
(12)+(345)-(678)
の計算をさせたいのだと思います。
宜しくお願いします。
dodox86さん
>ひとつの値としてみなして
と言うのは分かりますが、
n =atoi(str[0],str[1]);
printf("%d 整数",n);
宜しくお願いします。
とすると、エラーになってしまいました。
> >ひとつの値としてみなして
> と言うのは分かりますが、
> n =atoi(str[0],str[1]);
> printf("%d 整数",n);
いえ、そういうことではなく。