Необходимо доработать программу, чтобы она могла работать с вводом данных через файл. В С# новичок, поэтому не знаком, возможно ли это сделать без лишней перегрузки методов ввода. Вот части программы для понимания
using System;
namespace ConsoleApplication2
{
internal class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Введите 1 для работы с одномерными массивами\n" +
"2 для работы со ступенчатыми массивами\n" +
" 3 для работы с зубчатыми массивами\n" +
"Введите 0 для выхода");
byte x = Convert.ToByte(Console.ReadLine());
while (x != 0)
{
while (x < 1 || x > 3)
{
Console.WriteLine("Вы ввели некорректное число. Введите число от 1 до 3 для работы");
x = Convert.ToByte(Console.ReadLine());
}
switch (x)
{
case 1:
Array1D();
break;
case 2:
Array2D();
break;
case 3:
ArrayZub();
break;
default: break;
}
Console.WriteLine("Введите 1 для работы с одномерными массивами\n" +
"2 для работы со ступенчатыми массивами\n" +
" 3 для работы с зубчатыми массивами\n" +
"Введите 0 для выхода");
x = Convert.ToByte(Console.ReadLine());
}
}
static void Array1D()
{
int[] arr = new int[0];
InputArray(ref arr);
int[] chet = new int[0];
Console.WriteLine("Для вывода элементов массива введите 1 \n" +
"для вывода максимального и минимального элементов введите 2 \n" +
"для выполнения прямой сортировки нажмите 3 \n" +
"для выполнения обратной сортировки нажмите 4 \n" +
"для заполнения нового массива четными элементами исходного нажмите 5");
byte x = Convert.ToByte(Console.ReadLine());
while (x < 1 || x > 5)
{
Console.WriteLine("Вы ввели некорректное число. Введите число от 1 до 5 для работы");
x = Convert.ToByte(Console.ReadLine());
}
switch (x)
{
case 1: PrintArray(arr);
break;
case 2: MaxOfArray(arr); MinOfArray(arr);
break;
case 3: Array.Sort(arr);
break;
case 4: Array.Sort(arr); Array.Reverse(arr);
break;
case 5: ChetArray(arr, chet);
break;
default: break;
}
}
static void InputArray(ref int[] arr)
{
Console.WriteLine("Введите кол-во элементов массива, а затем его элементы");
int n = Convert.ToInt32(Console.ReadLine());
arr = new int[n];
for (int i = 0; i < n; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
}
using System;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
byte x = 5;
while (x != 0) {
Console.WriteLine("\nВыберите тип массива (от 1 до 3)\n" +
" 1 - одномерный массив;\n" +
" 2 - ступенчатый массив;\n" +
" 3 - зубчатый массив;\n" +
" 0 - выход из программы.");
Console.Write("Ваш выбор: ");
string s = Console.ReadLine();
if(!s.Equals(""))
x = Convert.ToByte(s);
if (x > 3) {
Console.WriteLine("Ошибка ввода.");
continue;
}
else
switch (x) {
case 1:
Array1D();
break;
case 2:
//Array2D();
break;
case 3:
//ArrayZub();
break;
case 0:
return;
}
}
}
static void Array1D()
{
byte u = 9;
int[] inarr = new int[50];
while (u != 0)
{
Console.WriteLine("\nЗадайте вид операции (от 1 до 5)\n" +
" 1 - чтение исходного файла в буферный массив;\n" +
" 2 - печать элементов массива,\n" +
" 3 - печать максимального и минимального элементов массива;\n" +
" 4 - прямая сортировка массива;\n" +
" 5 - обратная сортировка массива;\n" +
" 6 - заполнение массива чётными элементами из исходного;\n" +
" 7 - вывод отчета в выходной файл;\n" +
" 0 - возврат в главное меню.");
Console.Write("Ваш выбор: ");
string s = Console.ReadLine();
if(!s.Equals(""))
u = Convert.ToByte(s);
if (u > 7) {
Console.WriteLine("Ошибка ввода.");
continue;
}
switch (u) {
case 1: inarr = ReadFile();
break;
case 2: DisplayArr(inarr);
break;
case 3: Console.WriteLine("\nМаксимальный элемент = " + Max(inarr).ToString());
Console.WriteLine("Минимальный элемент = " + Min(inarr).ToString());
break;
case 4: Array.Sort(inarr);
DisplayArr(inarr);
break;
case 5: Array.Reverse(inarr);
DisplayArr(inarr);
break;
case 6: inarr = Even(inarr);
DisplayArr(inarr);
break;
case 7: Report();
break;
case 0:
return;
}
}
}
static int[] ReadFile()
{
int[] arr = new int[50];
StreamReader sr = new StreamReader("Array1.txt");
string[] lines = sr.ReadToEnd().Split(new[] { " ", ",", ";", "\r\n"}, StringSplitOptions.None);
sr.Close();
for (int i = 0; i < lines.Length; i++) {
if(!string.Equals(lines[i], ""))
arr[i] = System.Convert.ToInt32(lines[i]);
}
Console.WriteLine("\nИсходный массив сформирован из файла Array1.txt.");
return arr;
}
static void DisplayArr(int[] arr)
{
Console.WriteLine("\nИсходный массив:");
for (int i = 0; i < arr.Length; i++) {
Console.Write(arr[i].ToString() + " ");
if (i > 0 && (i+1) % 10 == 0)
Console.WriteLine();
}
}
static int Max(int[] arr)
{
int maxi = arr[0];
for (int i = 0; i < arr.Length; i++) {
if (arr[i] > maxi)
maxi = arr[i];
}
return maxi;
}
static int Min(int[] arr)
{
int mini = arr[0];
for (int i = 0; i < arr.Length; i++) {
if (arr[i] < mini)
mini = arr[i];
}
return mini;
}
static int[] Even(int[] arr)
{
int[] evenarr = new int[50];
for (int i = 0, j = 0; i < arr.Length; i++) {
if (arr[i] != 0 && arr[i] % 2 == 0) {
evenarr[j] = arr[i];
j++;
}
}
return evenarr;
}
static void WriteArrToFile(int[] arr, StreamWriter swf, string s)
{
swf.WriteLine(s);
for (int i = 0; i < arr.Length; i++) {
swf.Write(arr[i].ToString() + " ");
if (i > 0 && (i + 1) % 10 == 0)
swf.WriteLine();
}
}
static void Report()
{
int[] arr = new int[50];
arr = ReadFile();
StreamWriter sw = new StreamWriter("Report.txt");
WriteArrToFile(arr, sw, "\nИсходный массив:");
sw.WriteLine("\nМаксимальный элемент = " + Max(arr).ToString());
sw.WriteLine("Минимальный элемент = " + Min(arr).ToString());
Array.Sort(arr);
WriteArrToFile(arr, sw, "\nМассив после прямой сортировки:");
Array.Reverse(arr);
WriteArrToFile(arr, sw, "\nМассив после обратной сортировки:");
arr = Even(arr);
WriteArrToFile(arr, sw, "\nМассив чётных элементов:");
sw.Close();
Console.WriteLine("\nОтчёт сформирован в файле Report.txt.");
}
}
}
"Ввод данных через файл" может многое подразумевать.
Хотите использовать файл конфигурации? Внедрите класс ConfigurationManager.AppSettings. https://docs.microsoft.com/ru-ru/dotnet/api/system.configuration.configurationmanager.appsettings?view=netframework-4.8
Хотите считывать собственный файл с информацией? System.IO.File. А там уже читайте все из него и используйте. (как пример - https://docs.microsoft.com/ru-ru/dotnet/api/system.io.file.readalllines?view=netframework-4.8)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возникла необходимость реализовать версионность вордовских документовС помощью Interop