Вот код.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Diagnostics;
namespace Laba_16
{
class Program
{
struct Sklad : IComparable
{
string VidProduct;
string Sort;
int Summa;
int kol;
public Sklad(string VidProduct, string Sort, int Summa, int kol)
{
this.VidProduct = VidProduct;
this.Sort = Sort;
this.Summa = Summa;
this.kol = kol;
}
public void write(int k, StreamWriter file)
{
if (k < this.kol)
file.WriteLine("{0} {1} {2} {3} ", this.VidProduct, this.Sort, this.Summa, this.kol);
}
public override string ToString() //Преобразование ToString()
{
return "" + VidProduct + " " + Sort + " " + Summa.ToString() + " " + kol.ToString() + "";
}
public int CompareTo(object obj) // сортировка
{
Sklad b = (Sklad)obj;
if (this.kol == b.kol) return 0;
else if (this.kol > b.kol) return 1;
else return -1;
}
}
static void Main(string[] args)
{
StreamReader fileIn = new StreamReader(new FileStream("input.txt", FileMode.Open, FileAccess.Read));
string[] text = fileIn.ReadToEnd().Split('\n'); //Записываем весь текст в text
fileIn.Close(); //Закрываем поток
string[] str1;
Sklad[] cr = new Sklad[text.Length];
for (int i = 0; i < text.Length; i++)
{
str1 = text[i].Split(';');
cr[i] = new Sklad (str1[0], str1[1], Convert.ToInt32(str1[3]), Convert.ToInt32(str1[4]));
}
foreach (Sklad a in cr)
{
Console.WriteLine(a.ToString());
}
Array.Sort(cr);
Console.WriteLine();
Console.WriteLine("Сортировка по количеству на складе");
foreach (Sklad a in cr)
{
Console.WriteLine(a.ToString());
}
Console.WriteLine();
Console.WriteLine("Введите заданную величину: ");
int num = int.Parse(Console.ReadLine());
StreamWriter f = new StreamWriter(new FileStream("output.txt", FileMode.Create, FileAccess.Write));//создаем для записи
foreach (Sklad a in cr)
{
a.write(num, f);
}
f.Close();
Console.WriteLine("информация успешно записана");
}
}
}
При запуске ошибка в Необработанное исключение: System.IndexOutOfRangeException: Индекс находился вне границ массива
. В этой строке cr[i] = new Sklad (str1[0], str1[1], Convert.ToInt32(str1[3]), Convert.ToInt32(str1[4]));
Что нужно сделать?