C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++で[l、r]の範囲にないASCII値を持つアルファベットをカウントして印刷します


任意の長さの文字列が与えられます。タスクは、カウントを計算し、[l、r]

の範囲外のASCII値を持つ文字列にアルファベットを出力することです。

文字A〜ZのASCII値を以下に示します

A B C D E F G H J K L M N O P Q R S
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83


T U V W X Y Z
84 85 86 87 88 89 90

文字a〜zのASCII値を以下に示します

a b c d e f g h i j k l m n o p q r s
9
7
9
8
9
9
10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
9
11
0
11
1
11
2
11
3
11
4
11
5


t u v w x y z
116 117 118 119 120 121 122

Input − String str = “point
      First = 111, Last = 117
Output − characters not in the given range are: i, n
      Count is: 2

説明 − iとnは[111、117]の範囲にないため、これらの文字がカウントされます。

Input − String str = “ABCZXY
      First = 65, Last = 70
Output − characters in the given range are: A, B, C
      Count is: 3

説明 − Z、X、Yは[65、70]の範囲にないため、これらの文字はカウントされます。

以下のプログラムで使用されているアプローチは次のとおりです

  • 文字列、開始値、終了値を入力して範囲を作成し、変数に格納します。たとえば、str。

  • スペースを含む文字列内の文字数に応じて整数値を返すlength()関数を使用して、文字列の長さを計算します。

  • 文字数を格納する一時変数を取得し、たとえばmp

    などのマップを作成します。
  • iが文字列の長さより小さくなるまで、iから0までループを開始します

  • ループ内で、startがstr [i]以下であり、str[i]がend以下であるかどうかを確認します

  • if内で、mp [str [i]]かどうかを確認します! =1次に、str [i]を出力します。それ以外の場合は、mp[str[i]]を1増やします

  • カウントを返す

  • 結果を印刷する

#include <iostream>
#include <unordered_map>
using namespace std;
// To count the number of characters whose
// ascii value not in range [l, r]
int count_non_char(string str, int left, int right){
   int count = 0;
   // using map to print a character only once
   unordered_map<char, int> m;
   int len = str.length();
   for (int i = 0; i < len; i++) {
      if (!(left <= str[i] and str[i] <= right)){
         count++;
         if (m[str[i]] != 1){
            cout << str[i] << " ";
            m[str[i]]++;
         }
      }
   }
   // return the count
   return count;
}
// main code
int main(){
   string str = "tutorialspoint";
   int left = 102, right = 111;
   cout << "Characters and ";
   cout << "\nand count in the given range is: " << count_non_char(str, left, right);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Characters and
and count in the given range is: t u r a s p 8

  1. sin(x)およびcos(x)の値を計算するC++プログラム

    入力を角度として指定すると、指定した角度に対応するsin(x)とcos(x)の値を計算し、結果を表示することがタスクになります。 Sin(x)の場合 Sin(x)は、x角度の値を計算するために使用される三角関数です。 式 $$ \ sin(x)=\ displaystyle \ sum \ Limits_ {k =0} ^ \ infty \ frac {(-1)^ {k}} {(2k + 1)!} x ^ {2k + 1} $ $ Cos(x)の場合 Cos(x)は、x角度の値を計算するために使用される三角関数です。 式 $$ \ cos(x)=\ displays

  2. Cで割り切れる最大の正の整数であり、C ++では[A、B]の範囲にあります

    ここで、1つの興味深い問題が発生します。 3つの整数A、B、およびCがあると考えてみましょう。XmodC =0であり、Xが[A、B]の範囲にないように、1つの最小整数Xを見つける必要があります。 A、B、Cの値がそれぞれ5、10、4の場合、Xの値は4になります。解を得るには、次の手順に従う必要があります- 手順- Cが[A、B]の範囲にない場合は、結果としてCを返します それ以外の場合は、Bより大きいCの最初の倍数を取得し、その値を返します 例 #include <iostream> using namespace std; int findMinMumber(