質問編集履歴

1

2020/06/10 07:49

投稿

hacch
hacch

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,8 @@
1
+ ```ここに言語を入力
2
+
3
+ コード
4
+
1
- C言語で、文字配列 char str[N]; (Nは任意)の中にある特定の文字target_charが含まれているか否かを返す関数
5
+ ```C言語で、文字配列 char str[N]; (Nは任意)の中にある特定の文字target_charが含まれているか否かを返す関数
2
6
 
3
7
  int IsExist(char str[], char target_char, int first_index, int last_index);
4
8
 
@@ -23,3 +27,69 @@
23
27
 
24
28
 
25
29
  このプログラムですが、正解してなくてもいいので、少しでも分かる方いらっしゃいましたら教えて欲しいです。。
30
+
31
+ 一応考えたプログラム置いときますが、
32
+
33
+ もっと端的に<string.h>も使わずにできるはずですが、どうすればもっとコンパクトなソースコードになるんでしょうか
34
+
35
+ ```c
36
+
37
+
38
+
39
+ #include <stdio.h>#include <string.h>int IsExist(char str[], char target_char, int first_index, int last_index){
40
+
41
+ int i = first_index;
42
+
43
+ for(; i <= last_index ; ++i){
44
+
45
+ if( str[i] == target_char ) goto lbl;
46
+
47
+ }
48
+
49
+ if(last_index >first_index || first_index >last_index) return 0;
50
+
51
+ IsExist(str , target_char , first_index , (first_index + last_index) / 2);
52
+
53
+ IsExist(str , target_char , (first_index + last_index) /2 + 1 , last_index);
54
+
55
+ lbl:
56
+
57
+ return 1;
58
+
59
+ }
60
+
61
+
62
+
63
+ int main(){
64
+
65
+ char str[64];
66
+
67
+ char c;
68
+
69
+ printf("検索文字 -->");
70
+
71
+ scanf("%c", &c);
72
+
73
+ printf("文字列 -->");
74
+
75
+ scanf("%s", str);
76
+
77
+
78
+
79
+ if(IsExist(str , c , 0 , strlen(str))){
80
+
81
+ printf("%c is existing.\n", c);
82
+
83
+ } else {
84
+
85
+ printf("%c is not found.\n", c);
86
+
87
+ }
88
+
89
+ return 0;
90
+
91
+ }
92
+
93
+
94
+
95
+ ```