teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追加

2020/09/04 17:57

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -39,14 +39,14 @@
39
39
  {
40
40
  strcpy(string, unit[un]);
41
41
 
42
- return base;
42
+ return string;
43
43
  }
44
44
 
45
45
  if(un == 0)
46
46
  {
47
47
  strcpy(string, tens[te]);
48
48
 
49
- return base;
49
+ return string;
50
50
  }
51
51
 
52
52
  sprintf(string,"%s %s",tens[te],unit[un]);
@@ -56,4 +56,64 @@
56
56
  ```
57
57
 
58
58
  ズレるのが気持ち悪いので、`char tens[10][8] = {"","on",`にしたけど、
59
- 元のままがよいなら、`tens[te]`を全部`tens[te-1]`に。
59
+ 元のままがよいなら、`tens[te]`を全部`tens[te-1]`に。
60
+
61
+ ---
62
+ もう少しいじるなら
63
+ ```C
64
+ #include <stdlib.h>//malloc
65
+ #include <string.h>//strcpy
66
+ #include <stdio.h>//sprintf
67
+
68
+ char* getTurkishNumber(unsigned int n)
69
+ {
70
+ char *string;
71
+ char *unit[10] = {
72
+ "sıfır",
73
+ "bir",
74
+ "iki",
75
+ "üç",
76
+ "dört",
77
+ "beş",
78
+ "altı",
79
+ "yedi",
80
+ "sekiz",
81
+ "dokuz",
82
+ };
83
+ char *tens[10] = {
84
+ "",
85
+ "on",
86
+ "yirmi",
87
+ "otuz",
88
+ "kırk",
89
+ "elli",
90
+ "altmış",
91
+ "yetmiş",
92
+ "seksen",
93
+ "doksan",
94
+ };
95
+ int te = n /10 %10, un = n % 10;
96
+
97
+ if(te == 0)
98
+ {
99
+ string = malloc(strlen(unit[un])+1);
100
+ strcpy(string, unit[un]);
101
+
102
+ return string;
103
+ }
104
+
105
+ if(un == 0)
106
+ {
107
+ string = malloc(strlen(tens[te])+1);
108
+ strcpy(string, tens[te]);
109
+
110
+ return string;
111
+ }
112
+
113
+ string = malloc(strlen(tens[te])+1+strlen(unit[un])+1);
114
+ sprintf(string,"%s %s",tens[te],unit[un]);
115
+
116
+ return string;
117
+ }
118
+ ```
119
+ とか。

2

修正

2020/09/04 17:57

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  char* getTurkishNumber(unsigned int n)
10
10
  {
11
- char* string = malloc(12);
11
+ char* string = malloc(14);
12
12
  char unit[10][7] = {
13
13
  "sıfır",
14
14
  "bir",
@@ -33,7 +33,7 @@
33
33
  "seksen",
34
34
  "doksan",
35
35
  };
36
- int te = n /10, un = n % 10;
36
+ int te = n /10 %10, un = n % 10;
37
37
 
38
38
  if(te == 0)
39
39
  {

1

修正

2020/09/04 17:38

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -49,16 +49,11 @@
49
49
  return base;
50
50
  }
51
51
 
52
- strcpy(string, tens[te]);
53
- strcat(string, " ");
52
+ sprintf(string,"%s %s",tens[te],unit[un]);
54
- strcat(string, unit[un]);
55
53
 
56
54
  return string;
57
55
  }
58
56
  ```
59
57
 
60
58
  ズレるのが気持ち悪いので、`char tens[10][8] = {"","on",`にしたけど、
61
- 元のままがよいなら、`tens[te]`を全部`tens[te-1]`に。
59
+ 元のままがよいなら、`tens[te]`を全部`tens[te-1]`に。
62
-
63
- 最後の、`strcpy`と`strcat`は、三つまとめてこれでも可
64
- `sprintf(string,"%s %s",tens[te],unit[un]);`