質問編集履歴
4
間違いの訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -140,5 +140,10 @@
|
|
140
140
|
return base;
|
141
141
|
}
|
142
142
|
```
|
143
|
-
まだ、"Bangkok"が`b:*,a:*,n:*,g:*,k:**,o:*`.となるところ
|
144
|
-
|
143
|
+
文字列によって成功するようになりましたが、まだ問題があるようです。
|
144
|
+
メッセージは
|
145
|
+
```ここに言語を入力
|
146
|
+
string_literal("Bangkok") should return "b:*,a:*,n:*,g:*,k:**,o:*", actual: "b:*,a:*,n:*,g:*,k:**,o:*,\""
|
147
|
+
|
148
|
+
string_literal("Dhaka") should return "d:*,h:*,a:**,k:*", actual: "d:*,h:*,a:**,k:*,"
|
149
|
+
```
|
3
間違いの訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -125,7 +125,7 @@
|
|
125
125
|
*string++ ='*';
|
126
126
|
}
|
127
127
|
|
128
|
-
if(i != (n -1))
|
128
|
+
if(i != (n -1)) //この部分が問題?
|
129
129
|
{
|
130
130
|
*string++ = ',';
|
131
131
|
}
|
@@ -140,4 +140,5 @@
|
|
140
140
|
return base;
|
141
141
|
}
|
142
142
|
```
|
143
|
-
まだ、"Bangkok"がb:*,a:*,n:*,g:*,k:**,o:*とな
|
143
|
+
まだ、"Bangkok"が`b:*,a:*,n:*,g:*,k:**,o:*`.となるところ
|
144
|
+
`b:*,a:*,n:*,g:*,k:**,o:*,` となりますね。
|
2
間違いの訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -102,25 +102,25 @@
|
|
102
102
|
|
103
103
|
for(j = 0; j < n; j++)
|
104
104
|
{
|
105
|
-
if(city[i] == city[j])count++;
|
105
|
+
if(tolower(city[i]) == tolower(city[j]))count++;
|
106
106
|
|
107
107
|
}
|
108
108
|
|
109
109
|
|
110
|
-
if(i > 0)
|
110
|
+
if(i > 0)
|
111
111
|
{
|
112
|
-
for(int b = i - 1; b =
|
112
|
+
for(int b = i - 1; b >= 0; b--)
|
113
113
|
{
|
114
|
-
if(city[i] == city[b])count2++;
|
114
|
+
if(tolower(city[i]) == tolower(city[b]))count2++;
|
115
115
|
}
|
116
116
|
}
|
117
|
-
if(count2 != 0)continue;
|
117
|
+
if(count2 != 0)continue;
|
118
118
|
|
119
119
|
*string++ = tolower(city[i]);
|
120
120
|
*string++ = ':';
|
121
121
|
|
122
122
|
|
123
|
-
for(int a = 1; a <= count; a++)
|
123
|
+
for(int a = 1; a <= count; a++)
|
124
124
|
{
|
125
125
|
*string++ ='*';
|
126
126
|
}
|
@@ -140,4 +140,4 @@
|
|
140
140
|
return base;
|
141
141
|
}
|
142
142
|
```
|
143
|
-
まだ、
|
143
|
+
まだ、"Bangkok"がb:*,a:*,n:*,g:*,k:**,o:*となりますね。どこがおかしいでしょうか。
|
1
間違いの訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -76,4 +76,68 @@
|
|
76
76
|
|
77
77
|
return base;
|
78
78
|
}
|
79
|
-
```
|
79
|
+
```
|
80
|
+
|
81
|
+
回答いただいたものを参考にして、少し修正してみました。
|
82
|
+
```c
|
83
|
+
#include <string.h>
|
84
|
+
#include <stdlib.h> //malloc
|
85
|
+
#include <ctype.h> // tolower
|
86
|
+
|
87
|
+
char* get_strings(const char *city)
|
88
|
+
{
|
89
|
+
int i, j, n;
|
90
|
+
n = strlen(city);
|
91
|
+
char *string;
|
92
|
+
string = malloc( n * 4 + 1);
|
93
|
+
char *base = string;
|
94
|
+
|
95
|
+
for(i = 0; i < n; i++ )
|
96
|
+
{
|
97
|
+
int c = tolower((unsigned char)city[i]);
|
98
|
+
if (!isalpha(c)) continue;
|
99
|
+
|
100
|
+
int count = 0;
|
101
|
+
int count2 = 0;
|
102
|
+
|
103
|
+
for(j = 0; j < n; j++)
|
104
|
+
{
|
105
|
+
if(city[i] == city[j])count++;
|
106
|
+
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
if(i > 0)
|
111
|
+
{
|
112
|
+
for(int b = i - 1; b == 0; b--)
|
113
|
+
{
|
114
|
+
if(city[i] == city[b])count2++;
|
115
|
+
}
|
116
|
+
}
|
117
|
+
if(count2 != 0)continue; //同じ文字が前にあればfor文の最初にもどっているつもり
|
118
|
+
|
119
|
+
*string++ = tolower(city[i]);
|
120
|
+
*string++ = ':';
|
121
|
+
|
122
|
+
|
123
|
+
for(int a = 1; a <= count; a++)//count(同じ文字があった回数)の数だけ*をつけているつもり
|
124
|
+
{
|
125
|
+
*string++ ='*';
|
126
|
+
}
|
127
|
+
|
128
|
+
if(i != (n -1))
|
129
|
+
{
|
130
|
+
*string++ = ',';
|
131
|
+
}
|
132
|
+
else
|
133
|
+
{
|
134
|
+
*string = '\0';
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
}
|
139
|
+
|
140
|
+
return base;
|
141
|
+
}
|
142
|
+
```
|
143
|
+
まだ、("Chicago")が`c:*,h:*,i:*,c:*,a:*,g:*,o:*`となりますね。どこがおかしいでしょうか。
|