Untitled
unknown
csharp
8 months ago
2.9 kB
8
Indexable
using System;
using System.Collections.Generic;
using System.Linq;
public class BaiTap53
{
public static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.InputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("In ma trận vuông theo đường xoắn ốc");
int capN;
double[,] maTranVuong;
Console.Write("Nhập cấp N của ma trận vuông (N > 0): ");
while (!int.TryParse(Console.ReadLine(), out capN) || capN <= 0)
{
Console.Write("Cấp ma trận không hợp lệ. Nhập lại N: ");
}
maTranVuong = new double[capN, capN];
Console.WriteLine("\nNhập các phần tử của ma trận vuông:");
for (int i = 0; i < capN; i++)
{
for (int j = 0; j < capN; j++)
{
Console.Write($"Nhập phần tử maTran[{i},{j}]: ");
while (!double.TryParse(Console.ReadLine(), out maTranVuong[i, j]))
{
Console.Write($"Giá trị không hợp lệ. Nhập lại maTran[{i},{j}]: ");
}
}
}
Console.WriteLine("\n--- KẾT QUẢ IN XOẮN ỐC ---");
List<double> ketQuaXoanOc = new List<double>();
int hangBatDau = 0, hangKetThuc = capN - 1;
int cotBatDau = 0, cotKetThuc = capN - 1;
while (hangBatDau <= hangKetThuc && cotBatDau <= cotKetThuc)
{
// 1. Duyệt hàng trên cùng từ trái sang phải
for (int j = cotBatDau; j <= cotKetThuc; j++)
{
ketQuaXoanOc.Add(maTranVuong[hangBatDau, j]);
}
hangBatDau++; // Di chuyển biên trên xuống
// 2. Duyệt cột phải cùng từ trên xuống dưới
for (int i = hangBatDau; i <= hangKetThuc; i++)
{
ketQuaXoanOc.Add(maTranVuong[i, cotKetThuc]);
}
cotKetThuc--; // Di chuyển biên phải vào
// 3. Duyệt hàng dưới cùng từ phải sang trái (nếu còn hàng)
if (hangBatDau <= hangKetThuc)
{
for (int j = cotKetThuc; j >= cotBatDau; j--)
{
ketQuaXoanOc.Add(maTranVuong[hangKetThuc, j]);
}
hangKetThuc--; // Di chuyển biên dưới lên
}
// 4. Duyệt cột trái cùng từ dưới lên trên (nếu còn cột)
if (cotBatDau <= cotKetThuc)
{
for (int i = hangKetThuc; i >= hangBatDau; i--)
{
ketQuaXoanOc.Add(maTranVuong[i, cotBatDau]);
}
cotBatDau++; // Di chuyển biên trái vào
}
}
Console.WriteLine(string.Join(", ", ketQuaXoanOc));
}
}Editor is loading...
Leave a Comment