Постройка спирали из чисел - C#
Формулировка задачи:
Помогите пожалуста написать програму на с# в которой пользователь задает любое целое число (оно есть концом масива) и програма строит спираль начиная с нуля или одиницы до етого числа саму частичку кода которая отвечяэт за ввод числа в масив я смог сделать а вот построить спираль не могу.
Вот пример кода для ввода числа в масив
Только на ето хватило моих знаний с#
Помогите!!! Зарание спасибо!!!
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Snake { class Program { static void Main(string[] args) { double a = double.Parse(Console.ReadLine()); for (int i = 1; i <= a; i = i + 1) Console.WriteLine(i); } } }
Решение задачи: «Постройка спирали из чисел»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Snake { class Program { static void Main(string[] args) { try { Console.WriteLine("***Програма яка будує спiраль зададаного розмiру з даданим числом закiнчення***"); Console.WriteLine("Виберiть в яку сторону буде будуватися спiраль (1 - поч. зверху злiва вниз) (2 - поч. зверху злiва на право)"); Console.WriteLine(" __1__ __2__ "); Console.WriteLine(" 1 8 7 1 2 3 "); Console.WriteLine(" 2 9 6 8 9 4 "); Console.WriteLine(" 3 4 5 7 6 5 "); int type = int.Parse(Console.ReadLine()); //Вибираємо тип спіралі if (type == 1) { Console.WriteLine("Ви вибрали спiраль данного типу"); Console.WriteLine(" __1__ "); Console.WriteLine(" 1 8 7 "); Console.WriteLine(" 2 9 6 "); Console.WriteLine(" 3 4 5 "); Console.WriteLine("Введiть розмiр спiралi в форматi вiд 1 до 18(вiд 1x1 до 18х18)"); int size = int.Parse(Console.ReadLine()); //Вводимо розмір спіралі NxM Console.WriteLine("Буде побудована спiраль розмiром " + size + "x" + size); Console.WriteLine("Введiть число яким закiнчиться спiраль (max значення {0})", size * size); int finish = int.Parse(Console.ReadLine()); //Число яким закінчується спіраль int start = 1; //Число яким починається спіраль int[,] spiral_nums = new int[start, finish]; //Цикл чисел спіралі від початку до кінця int[,] spiral_build = new int[size, size]; //Цикл який будує спіраль int row = 0; int col = 0; int dx = 1; int dy = 0; int dirChanges = 0; int visits = size; for (int i = 0; i < spiral_nums.Length; i++) //Значення {і} означає з якого числа почнеться будуватись спіраль, перші цифри заміняються на нулі в кінці { spiral_build[col, row] = i + 1; /*З якого числа почнеться спіраль (якщо змінити {1} на інше число в умові matrix[col, row] = i + 1) *Якщо поміняти місцями {col} і {row} в умові (matrix[col, row] = i + 1;) *то зміниться напрям за яким будується спіраль (поч. зверху зліва вниз) або (поч. зверху зліва на право)*/ if (--visits == 0) { visits = size * (dirChanges % 2) + size * ((dirChanges + 1) % 2) - (dirChanges / 2 - 1) - 2; int temp = dx; dx = -dy; dy = temp; dirChanges++; } col += dx; row += dy; //Як буде будуватись спіраль (поч. зверху зліва вниз) } Console.WriteLine(); for (int i = 0; i < size; i++) //будує рядочки { for (int j = 0; j < size; j++) //будує стовпчики { Console.Write(" " + spiral_build[i, j] + " "); // спосіб подачі (робить пробіли між числами) } Console.WriteLine(); Console.WriteLine(); } Console.ReadKey(); } else if (type == 2) { Console.WriteLine("Ви вибрали спiраль данного типу"); Console.WriteLine(" __2__ "); Console.WriteLine(" 1 2 3 "); Console.WriteLine(" 8 9 4 "); Console.WriteLine(" 7 6 5 "); Console.WriteLine("***Програма яка будує спiраль зададаного розмiру з даданим числом закiнчення***"); Console.WriteLine("Введiть розмiр спiралi в форматi вiд 1 до 18(вiд 1x1 до 18х18)"); int size = int.Parse(Console.ReadLine()); //Вводимо розмір спіралі NxM Console.WriteLine("Пpограма будує спiраль розмiром " + size + "x" + size); Console.WriteLine("Введiть число яким закiнчиться спiраль (max значення {0})", size * size); int finish = int.Parse(Console.ReadLine()); //Число яким закінчується спіраль int start = 1; //Число яким починається спіраль int[,] spiral_nums = new int[start, finish]; //Цикл чисел спіралі від початку до кінця int[,] spiral_build = new int[size, size]; //Цикл який будує спіраль int row = 0; int col = 0; int dx = 1; int dy = 0; int dirChanges = 0; int visits = size; for (int i = 0; i < spiral_nums.Length; i++) //Значення {і} означає з якого числа почнеться будуватись спіраль, перші цифри заміняються на нулі в кінці { spiral_build[col, row] = i + 1; /*З якого числа почнеться спіраль (якщо змінити {1} на інше число в умові matrix[col, row] = i + 1) *Якщо поміняти місцями {col} і {row} в умові (matrix[col, row] = i + 1;) *то зміниться напрям за яким будується спіраль (поч. зверху зліва вниз) або (поч. зверху зліва на право)*/ if (--visits == 0) { visits = size * (dirChanges % 2) + size * ((dirChanges + 1) % 2) - (dirChanges / 2 - 1) - 2; int temp = dx; dx = -dy; dy = temp; dirChanges++; } col += dy; row += dx; //Як буде будуватись спіраль (поч. зверху зліва на право) } Console.WriteLine(); for (int i = 0; i < size; i++) //будує рядочки { for (int j = 0; j < size; j++) //будує стовпчики { Console.Write(" " + spiral_build[i, j] + " "); // спосіб подачі (робить пробіли між числами) } Console.WriteLine(); Console.WriteLine(); } Console.ReadKey(); } else { Console.WriteLine("Введене некоректне число"); } } catch { Console.WriteLine("Помилка"); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д