Исправления для задачи обработки двухмерного массива - C#
Формулировка задачи:
Я сделала работу, препод сказал что не так, объясни что делать(
Использование подпрограмм в задаче на обработку двумерного массива.
Реализовать представленные задачи в виде методов (функций и/или процедур). Предусмотреть удобное функциональное меню в программе.
Даны действительные числа X,Y. Выполнить следующие преобразования:
a) если оба числа отрицательны, то каждое число заменить его модулем;
b) если отрицательное только одно из них, то оба значения увеличить на 0.5;
c) если оба числа положительны и ни одно из них не принадлежит отрезку [0.5,2.0], то оба значения уменьшить в 10 раз;
d) в остальных случаях числа оставить без изменения.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lab8
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Действительные числа");
double x, y;
Console.WriteLine("Введите первое число:");
Console.Write("x= ");// Вводим х
x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите второе число");
Console.Write("y= ");// Вводим у
y = Convert.ToDouble(Console.ReadLine());
if (x < 0 && y < 0) // Если x и y меньше нуля
{
x = Math.Abs(x);
y = Math.Abs(y);
Console.WriteLine("Ответ: х={0}; у={1}", x, y);
}
else if (x < 0 || y < 0)// Если отрицательно только одно из чисел
{
x = x + 0.5;
y = y + 0.5;
Console.WriteLine("Ответ: х={0}; у={1}", x, y);
}
else if ((x < 0.5 || x > 2.0) && (y < 0.5 || y > 2.0))//если оба числа неотрицательны и ни одно из них не принадлежит отрезку (0,5; 2,0)
{
x /= 10;
y /= 10;
}
Console.WriteLine("Ответ: х={0}; у={1}", x, y);
}
}
}Решение задачи: «Исправления для задачи обработки двухмерного массива»
textual
Листинг программы
static void Main()
{
string line;
char[] delimiterChars = { ' ', ',', '\t' };
int n; // количество строк матрицы
int[,] matr; // исходная матрица
int i, j; // индексы
// ввод матрицы из файла
using (StreamReader file = new StreamReader("dat.txt"))
{
// ввод размерности
n = int.Parse(file.ReadLine());
matr = new int[n, n]; // определение матрицы
// чтение строки из файла и преобразование в числовые данные
for (i = 0; (i < n) && ((line = file.ReadLine()) != null); i++)
{
string[] numbers = line.Split(delimiterChars);
j = 0;
foreach (string numString in numbers)
{
int x;
bool canConvert = int.TryParse(numString, out x);
if (canConvert == true)
{
matr[i, j] = x;
j++;
}
}
}
}// ввод данных закончен
// создание меню
string choice = "0";
while (choice != "4")
{
Console.WriteLine();
Console.WriteLine("1. Печать матрицы");
Console.WriteLine("2. Нахождение минимального элемента");
Console.WriteLine("3. Замена побочной диагонали нулями");
Console.WriteLine("4. Выход");
Console.WriteLine(" ");
Console.WriteLine(" Введите номер пункта меню ");
choice = Console.ReadLine();
switch (choice)
{
case "1":
Console.WriteLine(" Печать матрицы");
print_matrica(matr);
Console.WriteLine();
break;
case "2":
Console.Write("Мин. элемент = {0}",min_element(matr));
Console.WriteLine();
break;
case "3":
Console.WriteLine(" Произведена замена.");
zamena(ref matr);
Console.WriteLine();
break;
case "4":
Console.WriteLine(" До свидания!");
break;
default:
Console.WriteLine(" Введите 1, 2, 3 или 4");
Console.WriteLine();
break;
}
}
Console.ReadLine();
}// k Main
// метод нахождения минимального элемента матрицы
static int min_element(int[,] a)
{
int min_elt=a[0,0];
for (int i = 0; i < a.GetLength(0); i++)
{
for(int j=0; j< a.GetLength(1); j++)
{
if (a[i, j] < min_elt)
min_elt = a[i, j];
}
}
return min_elt;
}
// метод замены побочной диагонали нулями
static void zamena(ref int[,] a)
{
int n= a.GetLength(1);
for (int i = 0; i < a.GetLength(0); i++)
{
a[i, n – i – 1] = 0;
}
}
// метод печати матрицы
static void print_matrica(int[,] a)
{
for (int i = 0; i < a.GetLength(0); i++)
{
for (int j = 0; j < a.GetLength(1); j++)
{
Console.Write("{0} \t", a[i, j]);
}
Console.WriteLine();
}
}