質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

5回答

1110閲覧

長い文字列中に含まれる短い文字列を数える(C言語)

alice88

総合スコア4

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2019/11/12 14:39

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

長い文字列の中に含まれる短い文字列を数えるプログラムを作成するのに手間取っています。例えば、HIROSHIMAKENHIROSHIMASHIに含まれるHIの数を数えたいと考えています。一文字の個数を数えるプログラムは出来たのですが、上記のプログラムがどうしても出来ません。明後日までの課題なのでご回答よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

私は、Notepad++のアプリでソースコードを記入した後、seip2 command-lineで実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2019/11/12 17:54

>ソースコードを記入した後・・・・ソースが有るなら、貼り付けて下さい
jimbe

2019/11/12 18:17

> 一文字の個数を数えるプログラムは出来たのですが、上記のプログラムがどうしても出来ません どうすれば出来るのかを考えて作るのが課題なのではないでしょうか. 例えば, alice88 さん自身はどうやって文字列を探していますでしょうか.
kyoya0819

2019/11/12 23:43 編集

> 明後日までの課題なのでご回答よろしくお願いします。 知らんがな、やだ
alice88

2019/11/13 01:47

#include <stdio.h> int main(void) { char s[32]="WAKAYAMAKENWAKAYAMASHISAKAEDANI"; int i, count=0; for (i=0;s[i]!='\0';i++) if(s[i]=='AK'){ count++; } printf("count:%d\n",count); return 0; }
alice88

2019/11/13 01:49

一文字を数えるプログラムを編集したもので、今試行錯誤中でした
jimbe

2019/11/13 02:43

> s[i]=='AK' この条件式(が表すコト)と同じ結果となる処理を考える必要があります. 1文字の検索は, 配列内 i がその文字か(s[i]=='A')で見つかります. では, 文字列の1文字目が配列内 i にあるとしたら, 文字列の2文字目はどこにあるはずでしょうか.
alice88

2019/11/13 04:54

#include <stdio.h> int main(void) { char s[32]="WAKAYAMAKENWAKAYAMASHISAKAEDANI"; int i,j, count=0; for (i=0;s[i]!='\0';i++) for (j=1;s[j]!='\0';j++) if(s[i]=='A'); if(s[j]=='K');{ count++; } printf("count:%d\n",count); return 0; }
alice88

2019/11/13 04:57

これを実行するとcount:1と出てきました。 2文字目はAの後ろにあるはずということでしょうか?
jimbe

2019/11/13 08:18

ご提示のコードは, 恐らく alice88 さんの思うような動きをしていません. 動作単位で行を書くと以下のようになります for (i=0;s[i]!='\0';i++) for (j=1;s[j]!='\0';j++) if(s[i]=='A'); if(s[j]=='K'); { count++; } 最後の count++ は必ず実行され, for 文も if 文も関係なく必ず 1 となります. alice88 さんが s の文字列から AK を探すとき, 左端から A を探し, 次に左から2番目の文字から K を探して, AK を見つけますか?
alice88

2019/11/13 13:49

もう一度考え直してみます。ありがとうございます。
guest

回答5

0

strstr()でサーチして、見つかった次の位置に次の開始位置をずらして次をサーチする。

投稿2019/11/12 14:54

otn

総合スコア84542

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

残念ながら、コード作成依頼は受け付けません。
まず、あなたなりにコードを書いてみましょう

投稿2019/11/12 14:52

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自分でがんばれ
ちなみにJavaScriptだとこう書ける。

JavaScript

1 2var txt = "WAKAYAMAKENWAKAYAMASHISAKAEDANI"; 3var count = 0; 4var result = ''; 5for (i=0;i<txt.length;i++) { 6 if(txt.slice(i,i+1)=='K'&&txt.slice(i+1,i+2)=='A'){ 7 count++; 8 } 9} 10document.write(count); 11

めっちゃヒント書いてます。

投稿2019/11/13 02:45

kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

alice88

2019/11/13 05:08

#include <stdio.h> char text[33]="WAKAYAMAKENWAKAYAMASHISAKAEDANI"; float count=0; char result=' '; for(i=0;i<text.length;i++){ if(text.slice(i,i+1)=='K'&&text.slice(i+1,i+2)=='A'){ count++; } return 0; } txt.lengthとtxt.sliceはC言語の何に当たるのでしょうか?stringを使うものですか?
kyoya0819

2019/11/13 05:11

見てもわからなかったら見たページのURLを貼ってください。 教えます。
alice88

2019/11/13 05:14

頑張って読んでみます。ありがとうございます。
guest

0

正規表現を使って、"短い文字列"を"長い文字列"から削除する。

削除によって短くなった文字数を、"短い文字列"の文字数で割れば、"短い文字列"を削除した回数が求まる。

投稿2019/11/13 00:28

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2019/11/13 00:11

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問