2014-10-30 4 views
2

Я хочу напечатать это: - 1 121 12321 1234321 123454321C# печать для цикла

Эта программа печатает это. Какая может быть ошибка в программе? В цикле for? Скажите, пожалуйста, как это исправить. Какая ошибка в используемой логике. Если да, то в чем проблема в моей логике? Как я должен думать об алгоритмах в ближайшем будущем? : - 1 12 123 123432 123454321

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int a, b, c, d, e; 
      b = 6; 
      for(a=b;a>=1;a--) 
      { 
       for (c = a; c >=1; c--) 
       { 
        Console.Write(" "); 
       } 
       for(d=1; d<=b-a;d++) 
       { 
        Console.Write(d); 
       } 
       for (e = b-a-1; e>=a; e--) 
       { 
        Console.Write(e); 
       } 
       Console.WriteLine(); 

      } 
     } 
    } 
} 

Пожалуйста скажите мне проблему в моем коде.

ответ

5

проблема в линии for (e = b-a-1; e>=a; e--)

изменить это просто for (e = b-a-1; e>=1; e--)

3

класса Программа

{

статической силы основной (String [] арг)

{ 
     int a = 1, b, s = 1, n = 5; 
     for (; a <= n; s = s * 10 + 1) 
     { 
      for (b = n - a; b >= 1; b--) 
      { 
       Console.Write(" "); 
      } 
      Console.Write(s * s); 
      Console.WriteLine(); 
      a++; 
     } 

    } 
} 

Надеюсь, это поможет.

+0

Не могли бы вы объяснить это пожалуйста! Он работает правильно, но я не понял! –

+0

Rahul, вы можете сделать сухой пробег для него и отметить, что n - нет. линий в шаблоне 5 –

1

@chouaib абсолютно прав, где проблема лежит в вашем коде.

Однако нам нужно работать над вашим кодом и тем, как он написан.

Первое, что вы указали в именах переменных. a, b, c, d и e ничего не значит. От просмотра и чтения этого кода я не могу понять, что он будет делать. Вы хотите, чтобы ваш код был легко понят кем-то, читающим его. Используйте имена переменных, имеющие значение. Для такой проблемы я мог бы использовать row и column, в зависимости от моего подхода к ее решению.

Это подводит меня к следующей вещи, о которой нужно подумать, как решить эту проблему. У вас фактически есть таблица, в которой вы пишете значения, с строками и столбцами. Поэтому хорошим началом было бы перебирать столбцы каждой строки. Что-то вроде

int totalNumberOfRows = 5; 
int totalNumberOfColumns = 9; 
// Iterate over each row 
for (int row = 0; row < totalNumberOfRows; row++) 
{ 
    // Iterate over each column of each row 
    for (int column = 0; column < totalNumberOfColumns; column++) 
    { 
     // Do something 
    } 
} 

Далее, немного упростите проблему. Давайте проигнорируем пробелы, превращая их в красивую пирамиду. Попробуйте и исправьте

1 
121 
12321 
etc... 

Как только вы достигли этого, вы почти у цели. Если вы посмотрите на проблему, и вы не можете решить, как ее решить, попробуйте разбить ее на более мелкие и простые проблемы.

Когда вы пишете код, подумайте о том, чтобы облегчить кому-то читать и понимать. Код должен быть поддержанным и расширяемым, а это значит, что когда кто-то должен работать над добавленным к нему кодом или исправлять ошибку, они не хотят тратить часы, просто читая его, чтобы понять это.

+0

Большое спасибо за подсказку! : D –

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