2016-12-24 3 views
0

Мне нужно создать программу, которая запрашивает от пользователя вставить фразу как «Hello World» или любой другойвход 1D массив в 2D массив в порядке возрастания (C)

и чем принять это предложение и ввести его внутри 1D массив

и оттуда, чтобы ввести его в 2D массив, который представит свое предложение в таком порядке:

Hello!! :) 
)Hello!! : 
:)Hello!! 
:)Hello!! 
! :)Hello! 
!! :)Hello 
o!! :)Hell 
lo!! :)Hel 
llo!! :)He 
ello!! :)H 

Я сделал большую часть работы сделал, но я не могу сделать это именно так i mean i ц представить мне предложение убывающего, а не возрастающей

моего кода:

#include <stdio.h> 
#define P 10 
int main(int argc, const char * argv[]) 
{ 
    char array1[P][P]; 
    char array2[P]; 
    int i, j; 

    for (i = 0; i<P; i++) //fill the array with the chars. 
    { 
     scanf("%c", &array2[i]); 
    } 

    for (i=0 ; i<P ; i++) 
    { 
     for (j=0 ; j<P ; j++) 
     { 
      array1[i][j] = array2[j+i]; 
     } 
    } 

    for (i=0 ; i<P ; i++) 
    { 
     for (j=0 ; j<P ; j++) 
     { 
      printf("%c", array1[i][j]); 
     } 
     putchar('\n'); 
    } 

} 

где моя ошибка? и как я могу это исправить? Спасибо.

+0

Требуется ли использовать 2-мерный массив? Вы можете достичь того же уровня сложности O (P), используя один массив длиной 2P. –

ответ

0

В коде во время ввода в array1 для первого запуска вашего внешнего цикла является правильным, но во второй раз он вставки значения в array1[1][0]=array2[1]; означает второй элемент array2 так использовать этот

array1[i][j] = array2[(j+P-i)%P]; 
0

array1[i][j] = array2[j+i]; должен быть array1[i][j] = array2[(j+P-i)%P];

Смежные вопросы