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

Cプログラムの画面に文字列を印刷するための最短パスを印刷します。


文字列を指定すると、プログラムはその最短経路を使用して画面上に文字列を印刷する最短経路を表示する必要があります。

Likescreenはアルファベットをフォーマットで保存します

A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y
Z

Input: HUP
Output : Move Down
Move Down
Move Down
destination reached
Move Left
Move Left
Move Down
Move Down
Move Down
destination reached
Move Up
destination reached

ここで使用されるアプローチは、文字をn x n行列に格納し、次の操作を実行することです-

If row difference is negative then move up
If row difference is positive then move down
If column difference is negative then go left
If column difference is positive then we go right

アルゴリズム

START
Step 1 -> Declare Function void printpath(char str[])
   Declare variable int i = 0 and cx=0 and cy=0
   Loop While str[i] != '\0'
      Declare variable as int n1 = (str[i] - 'A') / 5
      Declare variable as int n2 = (str[i] - 'B' + 1) % 5
      Loop while cx > n1
         Print move up
         cx—
      End
      Loop while cy > n2
         Print Move Left
         Cy—
      End
      Loop while cx < n1
         Print move down
         Cx++
      End
      Loop while cy < n2
         Print move down
         Cy++
      End
      Print destination reached
      I++
Step 2 -> in main()
   Declare char str[] = {"HUP"}
   Call printpath(str)
STOP

#include <stdio.h>
void printpath(char str[]){
   int i = 0;
   // start from character 'A' present at position (0, 0)
   int cx = 0, cy = 0;
   while (str[i] != '\0'){
      // find cordinates of next character
      int n1 = (str[i] - 'A') / 5;
      int n2 = (str[i] - 'B' + 1) % 5;
      // Move Up if destination is above
      while (cx > n1){
         printf("Move Up\n");
         cx--;
      }
      // Move Left if destination is to the left
      while (cy > n2){
         printf("Move Left\n");
         cy--;
      }
      // Move down if destination is below
      while (cx < n1){
         printf("Move Down\n");
            cx++;
      }
      // Move Right if destination is to the right
      while (cy < n2){
         printf("Move Down\n");
         cy++;
      }
      // At this point, destination is reached
      printf("destination reached\n");
      i++;
   }
}
int main(int argc, char const *argv[]){
   char str[] = {"HUP"};
   printpath(str);
   return 0;
}

出力

上記のプログラムを実行すると、次の出力が生成されます-

Move Down
Move Down
Move Down
destination reached
Move Left
Move Left
Move Down
Move Down
Move Down
destination reached
Move Up
destination reached

  1. 指定された文字列のすべての順列を出力するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列の可能なすべての順列を表示するために必要な文字列が与えられます。 次に、以下の実装のソリューションを見てみましょう- 例 # conversion def toString(List):    return ''.join(List) # permutations def permute(a, l, r):    if l == r:       print (toString(a))    e

  2. 文字列に偶数の長さの単語を出力するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列を指定すると、文字列内のすべての単語を均等な長さで表示する必要があります。 アプローチ split()関数を使用して入力文字列を分割します。 forを使用して文字列の単語を繰り返し処理します ループ& len()を使用して単語の長さを計算します 機能。 長さが均等であると評価されると、単語が画面に表示されます。 それ以外の場合、画面に単語は表示されません。 次に、以下の実装を見てみましょう- 例 def printWords(s): # split