Member 13750004 Ответов: 3

Мне нужно простое решение для этой модели.


*
+*
+*+
*+*+
*+*+*


Что я уже пробовал:

class Program
    {
        static void Main(string[] args)
        {
            int n = Convert.ToInt32(Console.ReadLine());
            for(int i = 0; i <= n; i++)
            {
                for (int j = 0; j <= i; j++)
                {
                    if (j==i||i+j==n)
                    {
                        Console.Write("*");
                    }
                    else { Console.Write("+"); }
                    
                }
                Console.WriteLine();

            }
            Console.ReadKey();
        }

3 Ответов

Рейтинг:
19

George Swan

Шаблон представляет собой повторяющуюся последовательность " * "и"+", разбитую на строки, где длина каждой строки равна номеру строки, начиная со строки 1.оператор модуля отлично подходит для итерации по последовательности. Так что ведите подсчет напечатанных символов, используйте count % 2 чтобы чередовать эти два символа, затем выведите возврат carrage, когда количество символов в строке равно номеру строки.


static void Main(string[] args)
       {
           int count = 0;
           for (int line = 1; line <= 5; line++)
           {
               int lineEnd = count + line;
               while (count < lineEnd)
               {
                   Console.Write(count % 2 == 0 ? '*' : '+');
                   count++;
               }
               Console.WriteLine();
           }
           Console.ReadKey();
       }

Более гибкий, но менее простой подход заключается в использовании метода, который может обрабатывать любой повторяющийся шаблон любой длины.


static void PrintPattern(string pattern,int lines)
     {
         //To do:check for valid arguments
         int count = 0;
         for (int line = 1; line <= lines; line++)
         {
             int lineEnd = count + line;
             while (count < lineEnd)
             {
                 Console.Write(pattern[count % pattern.Length]);
                 count++;
             }
             Console.WriteLine();
         }
         Console.ReadKey();
     }


Рейтинг:
0

OriginalGriff

Посмотрите на шаблон: выход чередует каждый символ между "*" и "+" - поэтому добавьте что-то, что говорит вам, что будет следующим, и скажите ему, чтобы он начинался с "*".
Затем разбейте задание на две части: строки и затем столбцы.

bool isStar = true;
for (int row = 0; row < numberOfRows; row ++)
   {
   for (int col = 0; col <= row; col++)
      {
      Console.Write(isStar ? '*' : '+');
      isStar = !isStar;
      }
   Console.WriteLine();
   }


Рейтинг:
0

Patrice T

Цитата:
Мне нужно простое решение для этой модели.

Единственный простой способ-чтобы кто-то заплатил за эту работу.
Как программист, ваша задача - создавать алгоритмы
Прежде всего, проанализируйте проблему:
1) форма треугольника
2) каждая линия состоит из чередующихся + и *
3) строки 1, 4 и 5 начинаются с *, строки 2 и 3 начинаются с +

Вы забыли указать проблему с вашим кодом
static void Main(string[] args)
{
    int n = Convert.ToInt32(Console.ReadLine());
    int offset;
    for(int i = 0; i <= n; i++)
    {
        offset = 0;
        for (int j = 0; j <= i; j++)
        {
            if ((j + offset) % 2)
            {
                Console.Write("*");
            }
            else
            {
                Console.Write("+");
            }
        }
        Console.WriteLine();
    }
    Console.ReadKey();
}

Этот код выведет треугольник (1) с чередованием * и + (2).
вам просто нужно найти способ измениться смещение = 0 следовать начальному шаблону char (3).