0

私はこの演習に取り組んでいます: 単語の連続文字数を与えるプログラムを作成してください -ex: aaafdseergftth と入力すると、プログラムは a = 3, e=2, t=2- を返します。

文字列を定義し、配列を使用して文字を取得し、while ループと比較するなど、いくつかの解決策を考え出しましたが、ここに問題があります。配列、文字列、sunbfunctions を使用してこれを解決することはできません運動し、別の解決策を探す必要があると明示的に言っています。

ここで、文字列や配列を使用しない 2 番目のアイデアを示します。不明な量の char 変数を定義し、While not (Eoln) do(...) のような while ループで Intro に入るまで、それぞれを入力します。それを解決するために今思いつくことができるのはそれだけですが、未知の量の変数を定義する方法を探していたとき、新しい変数を入力するためにサイズを変更する必要がある配列を使用した解決策しか見つかりませんでした。配列を使用せずに不明な量の変数を定義するにはどうすればよいですか? -それも可能ですか?-それができない場合、配列や文字列を使用せずに単語のすべての文字を取得するにはどうすればよいですか?

4

3 に答える 3

1

のヒントになるかも

  1. TLamaが言ったように、ポインター/リンクされたリストを使用してください。
  2. 再帰は、場合によっては、変数の数を事前定義しない方法でもあります。
  3. FPC が提供する動的な (サイズ変更可能な) 配列の使用。

最初の可能性が高いと思います。

于 2013-09-16T06:52:09.840 に答える
0

文字列を使用するとどうなりますか?

入力が ASCII 文字で、各文字の最大出現回数が 94 の場合、カウントを 1 つの ASCII 文字として格納し、どの文字が文字列のインデックスとして格納されるかを確認できます。次に、すべてが単なる文字列操作です。

例えば:

0 のカウントがスペースとして格納されている場合。カウント 1 は ! として格納され、カウント 33 は A として格納されます。カウント 65 は a として格納され、カウント 94 は ~ として格納されます (ASCII コードから 32 を引いたもの)。

また、文字列の最初の文字がスペースの数を表し、2 番目の文字が ! の数を表す場合 33 番目の文字は A の数を表し、94 番目の文字は ~ などの数を表します (ASCII コードから 32 を引いたもの)。

次に、「a」の入力には、! としてエンコードできる 65 番目の文字を除いて、93 個のスペースがあるように見えます。1 を意味します。また、「aabbab」の入力は、3 を意味する # である 65 番目と 66 番目の文字を除くすべてのスペースになります。

もちろん、出現の最大数が 94 より大きい場合、またはそれらが ASCII 文字でない場合、これは機能しません。2 つ以上の文字を使用して各カウントを表すことでこれを回避できますが、すぐにばかげたことになります。

私はそれが良い考えだとは言いませんでしたし、そのような実際のコードを書いた人を殺しますが、目標が明示的に「別の解決策を探す」ことである思考実験のために。これはその基準に適合します。

ジェリー

于 2013-09-16T07:22:12.777 に答える