1

20 行 30 列の文字の 2D 配列を作成しました ( main( ) で達成)。次に、2D 配列の各要素にランダムな大文字を入力し、その 2D 文字配列を画面に表示しました (これは function1( ) という名前の関数で実行されます)。

私は今、水平方向の文字のペアを探して配列を走査する function2 という名前の関数を作成しようとしています。私はコーディングが初めてで、これを達成できる方法がわかりません。このタスクを達成するための最良の方法は何ですか?

(注: 同じ文字が 3 つ並んだ場合は 2 ペアとしてカウントされます。同じ文字が 4 つ並んだ場合は 3 つのペアとしてカウントされます。)

#include <stdio.h> 
#include <stdlib.h>
#include <time.h> 

#define ROW 20
#define COLUMN 30

char function1 ( char [ROW] [COLUMN]) ;


int main( void )
{  

char randchar_array [ROW] [COLUMN]; 
srandom ( (unsigned) time (NULL) ); 

printf( "\n Welcome User.\n\n" ) ;

function1 (randchar_array);

printf("\n\n Thank you for using this program.\n\n" ) ;


return ( 0 ) ;

}

char function1 (char randchar_array[ROW] [COLUMN]) 

{
int r = 0 ;
int c = 0 ;
char nextchar = 'A';

   for (r = 0; r < ROW ; r++)
   {
       for (c = 0; c < COLUMN ; c++)
       {
          nextchar = 'A' + random() % 26;
          randchar_array [r] [c] = nextchar;
          printf(" %c", nextchar);
       }

      printf("\n");
    }

   return (randchar_array [ROW] [COLUMN]);
 }

これまでの出力:

 Welcome User.

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


 Thank you for using this program.
4

1 に答える 1

0

横方向の次の文字を見つけるには:

char function1 (char randchar_array[ROW] [COLUMN]) 
{
   for(int i=0;i<ROW;i++)
      for(int j=0;j<COLUMN-1;j++)
          if(randchar_array[i][j] == randchar_array[i][j+1]
          {
          // Do whatever you want: sum++, return, etc.
          }
}
于 2013-11-03T16:55:51.067 に答える