Помогите разобраться почему неправильно работает код на С#
Вот код самой программы:
Код:
using System;
using System.IO;
namespace lab6_4
{
//определение класса аерофлот
class Aeroflot
{
//конструктор, создаем новые обекты
public Aeroflot(string name, int number, string type)
{
this.Name = name;
this.Number = number;
this.Type = type;
}
//метод показа на экране
public void ShowAeroflot()
{
Console.WriteLine("Название: {0},Номер рейса: {1},Тип самолета: {2}",
this.Name, this.Number, this.Type);
}
//метод записи в файл
public void writeAeroflot(StreamWriter Writer)
{
// "|" - разделитель между полями
Writer.WriteLine("|{0}|{1}|{2}|",
this.Name, this.Number, this.Type);
}
private string name;//поле - название пункта назначения рейса
//доступ к полю
public string Name
{
get { return name; }
set { name = value; }
}
private int number;//поле - номер рейса
//доступ к полю
public int Number
{
get { return number; }
set { number = value; }
}
//поля - тип мамолета
private string type;
//доступ к полю
public string Type
{
get { return type; }
set { type = value; }
}
class Program
{
public const int LengthArray = 7;//емкость массива
//выводим массив на экран
static void ShowArray(Aeroflot[] aeroflot)
{
for (int j = 0; j < LengthArray; j++)
{
Console.WriteLine("{0} ,{1} ,{2}", aeroflot[j].Name, aeroflot[j].Number,
aeroflot[j].Type);
}
}
static void Main(string[] args)
{
int i = 0;
//создадим или откроем текстовый файл
//имя этого файла такое же как у программы, расширение txt
string dirName = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
string fileName = dirName.Insert(dirName.Length, "\\lab6_4.txt");
//создаем файл для записи в него
//используем using для гарантированой "уборки мусора" - удаления используемого
//дискриптора после последнего "}"
using (StreamWriter writer = File.CreateText(fileName))
{
//создаем 7 объектов Aeroflot,выводим на экран и записываем их в файл lab6_4.txt
Aeroflot Aeroflot1 = new Aeroflot("Москва", 2, "Ту-154");
Aeroflot1.ShowAeroflot();
Aeroflot1.writeAeroflot(writer);
Aeroflot Aeroflot2 = new Aeroflot("Самара", 3, "Ту-152");
Aeroflot2.ShowAeroflot();
Aeroflot2.writeAeroflot(writer);
Aeroflot Aeroflot3 = new Aeroflot("Сочи", 11, "Ту-150");
Aeroflot3.ShowAeroflot();
Aeroflot3.writeAeroflot(writer);
Aeroflot Aeroflot4 = new Aeroflot("Харьков", 4, "Ан-52");
Aeroflot4.ShowAeroflot();
Aeroflot4.writeAeroflot(writer);
Aeroflot Aeroflot5 = new Aeroflot("Донецк", 1, "Ту-156");
Aeroflot5.ShowAeroflot();
Aeroflot5.writeAeroflot(writer);
Aeroflot Aeroflot6 = new Aeroflot("Одесса", 7, "Ту-154");
Aeroflot6.ShowAeroflot();
Aeroflot6.writeAeroflot(writer);
Aeroflot Aeroflot7 = new Aeroflot("Вильнюс", 18, "Ан-154");
Aeroflot7.ShowAeroflot();
Aeroflot7.writeAeroflot(writer);
}
//Создаем массив,состоящий из 7 объектов типа Aeroflot
Aeroflot[] aeroflot = new Aeroflot[LengthArray];
//инициализируем этот массив
for (i = 0; i < LengthArray; i++)
aeroflot[i] = new Aeroflot("",0,"");
//читаем из файла и заполняем массив aeroflot
using (StreamReader reader = File.OpenText(fileName))
{
string line = null;
//разделители в файле
char[] delims = new char[] { '|'};
int num = 0;
i = 0;
do
{
line = reader.ReadLine();//
//парсим строку из файла, чтобы выделить наши поля
//и помещаем эти поля в массив строк field
string[] fields = line.Split(delims, StringSplitOptions.RemoveEmptyEntries);//опция-пропуск пустых строк
//преобразовуем при необходимости строки в числа
aeroflot[i].Name = fields[0];
int.TryParse(fields[1], out num);
// int.TryParse(fields[1], out h);
aeroflot[i].Number = num;
aeroflot[i].Type = fields[2];
i++;
} while ((line != null) && (i < LengthArray));
}
Console.WriteLine("Неотсортированный массив:");
ShowArray(aeroflot);
//Отсортирум массив по возрастанию
Array.Sort(aeroflot, delegate(Aeroflot aeroflot1, Aeroflot aeroflot2)
{
return aeroflot1.Number.CompareTo(aeroflot2.Number);
});
Console.WriteLine("Массив отсортированный по возрастанию номера рейса:");
ShowArray(aeroflot);
try
{
bool notAeroflot = true;
Console.WriteLine("Введите номер самолета, чтобы получить информацию: ");
int search = int.Parse(Console.ReadLine());
for (i = 0; i < LengthArray; i++)
{
if (search == aeroflot[i].Number)
{
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1},Тип самолета: {2}}",
aeroflot[i].Name, aeroflot[i].Number, aeroflot[i].Type);
notAeroflot = false;
break;
}
}
if (notAeroflot)
{
Console.WriteLine("Нет такого самолета.");
//пишем в конец файл, что такого самолета нет Зачем????
using (TextWriter writer = new StreamWriter(fileName, true))
{
writer.WriteLine("Нет такого самолета номер " + search);
}
}
}
//если вместо номера самолета введена абракадабра
catch (FormatException e)
{
Console.WriteLine("Нужно вводить число!");
}
Console.ReadLine();
}
}
}
}
using System.IO;
namespace lab6_4
{
//определение класса аерофлот
class Aeroflot
{
//конструктор, создаем новые обекты
public Aeroflot(string name, int number, string type)
{
this.Name = name;
this.Number = number;
this.Type = type;
}
//метод показа на экране
public void ShowAeroflot()
{
Console.WriteLine("Название: {0},Номер рейса: {1},Тип самолета: {2}",
this.Name, this.Number, this.Type);
}
//метод записи в файл
public void writeAeroflot(StreamWriter Writer)
{
// "|" - разделитель между полями
Writer.WriteLine("|{0}|{1}|{2}|",
this.Name, this.Number, this.Type);
}
private string name;//поле - название пункта назначения рейса
//доступ к полю
public string Name
{
get { return name; }
set { name = value; }
}
private int number;//поле - номер рейса
//доступ к полю
public int Number
{
get { return number; }
set { number = value; }
}
//поля - тип мамолета
private string type;
//доступ к полю
public string Type
{
get { return type; }
set { type = value; }
}
class Program
{
public const int LengthArray = 7;//емкость массива
//выводим массив на экран
static void ShowArray(Aeroflot[] aeroflot)
{
for (int j = 0; j < LengthArray; j++)
{
Console.WriteLine("{0} ,{1} ,{2}", aeroflot[j].Name, aeroflot[j].Number,
aeroflot[j].Type);
}
}
static void Main(string[] args)
{
int i = 0;
//создадим или откроем текстовый файл
//имя этого файла такое же как у программы, расширение txt
string dirName = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
string fileName = dirName.Insert(dirName.Length, "\\lab6_4.txt");
//создаем файл для записи в него
//используем using для гарантированой "уборки мусора" - удаления используемого
//дискриптора после последнего "}"
using (StreamWriter writer = File.CreateText(fileName))
{
//создаем 7 объектов Aeroflot,выводим на экран и записываем их в файл lab6_4.txt
Aeroflot Aeroflot1 = new Aeroflot("Москва", 2, "Ту-154");
Aeroflot1.ShowAeroflot();
Aeroflot1.writeAeroflot(writer);
Aeroflot Aeroflot2 = new Aeroflot("Самара", 3, "Ту-152");
Aeroflot2.ShowAeroflot();
Aeroflot2.writeAeroflot(writer);
Aeroflot Aeroflot3 = new Aeroflot("Сочи", 11, "Ту-150");
Aeroflot3.ShowAeroflot();
Aeroflot3.writeAeroflot(writer);
Aeroflot Aeroflot4 = new Aeroflot("Харьков", 4, "Ан-52");
Aeroflot4.ShowAeroflot();
Aeroflot4.writeAeroflot(writer);
Aeroflot Aeroflot5 = new Aeroflot("Донецк", 1, "Ту-156");
Aeroflot5.ShowAeroflot();
Aeroflot5.writeAeroflot(writer);
Aeroflot Aeroflot6 = new Aeroflot("Одесса", 7, "Ту-154");
Aeroflot6.ShowAeroflot();
Aeroflot6.writeAeroflot(writer);
Aeroflot Aeroflot7 = new Aeroflot("Вильнюс", 18, "Ан-154");
Aeroflot7.ShowAeroflot();
Aeroflot7.writeAeroflot(writer);
}
//Создаем массив,состоящий из 7 объектов типа Aeroflot
Aeroflot[] aeroflot = new Aeroflot[LengthArray];
//инициализируем этот массив
for (i = 0; i < LengthArray; i++)
aeroflot[i] = new Aeroflot("",0,"");
//читаем из файла и заполняем массив aeroflot
using (StreamReader reader = File.OpenText(fileName))
{
string line = null;
//разделители в файле
char[] delims = new char[] { '|'};
int num = 0;
i = 0;
do
{
line = reader.ReadLine();//
//парсим строку из файла, чтобы выделить наши поля
//и помещаем эти поля в массив строк field
string[] fields = line.Split(delims, StringSplitOptions.RemoveEmptyEntries);//опция-пропуск пустых строк
//преобразовуем при необходимости строки в числа
aeroflot[i].Name = fields[0];
int.TryParse(fields[1], out num);
// int.TryParse(fields[1], out h);
aeroflot[i].Number = num;
aeroflot[i].Type = fields[2];
i++;
} while ((line != null) && (i < LengthArray));
}
Console.WriteLine("Неотсортированный массив:");
ShowArray(aeroflot);
//Отсортирум массив по возрастанию
Array.Sort(aeroflot, delegate(Aeroflot aeroflot1, Aeroflot aeroflot2)
{
return aeroflot1.Number.CompareTo(aeroflot2.Number);
});
Console.WriteLine("Массив отсортированный по возрастанию номера рейса:");
ShowArray(aeroflot);
try
{
bool notAeroflot = true;
Console.WriteLine("Введите номер самолета, чтобы получить информацию: ");
int search = int.Parse(Console.ReadLine());
for (i = 0; i < LengthArray; i++)
{
if (search == aeroflot[i].Number)
{
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1},Тип самолета: {2}}",
aeroflot[i].Name, aeroflot[i].Number, aeroflot[i].Type);
notAeroflot = false;
break;
}
}
if (notAeroflot)
{
Console.WriteLine("Нет такого самолета.");
//пишем в конец файл, что такого самолета нет Зачем????
using (TextWriter writer = new StreamWriter(fileName, true))
{
writer.WriteLine("Нет такого самолета номер " + search);
}
}
}
//если вместо номера самолета введена абракадабра
catch (FormatException e)
{
Console.WriteLine("Нужно вводить число!");
}
Console.ReadLine();
}
}
}
}
Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lab6_4
{
class Aeroflot
{
public string m_sName; //поле - название пункта назначения рейса
public string m_sAircraft; //поля - тип мамолета
public int m_nFlight; //поле - номер рейса
//конструктор, создаем новые обекты
public Aeroflot() { }
public Aeroflot(string sName, int nFlight, string sAircraft)
{
this.m_sName = sName;
this.m_nFlight = nFlight;
this.m_sAircraft = sAircraft;
}
//метод показа на экране
public void ShowAeroflot()
{ Console.WriteLine("Название: {0}, Номер рейса: {1}, Тип самолета: {2}",
this.m_sName, this.m_nFlight, this.m_sAircraft); }
//метод записи в файл
public void writeAeroflot(StreamWriter Writer)
{ Writer.WriteLine("|{0}|{1}|{2}|", this.m_sName, this.m_nFlight, this.m_sAircraft); }
}
class Program
{
public const int nArrayLength = 7; //емкость массива
//выводим массив на экран
static void ShowArray(Aeroflot[] aeroflot)
{
for (int j = 0; j < aeroflot.Length; j++)
aeroflot[j].ShowAeroflot();
Console.WriteLine("\n\n");
}
static void Main(string[] args)
{
//создаем 7 объектов Aeroflot,выводим на экран и записываем их в файл lab6_4.txt
//инициализируем этот массив
Aeroflot[] aeroflot = new Aeroflot[nArrayLength] { new Aeroflot("Москва", 2, "Ту-154"),
new Aeroflot("Самара", 3, "Ту-152"),
new Aeroflot("Сочи", 11, "Ту-150"),
new Aeroflot("Харьков", 4, "Ан-52"),
new Aeroflot("Донецк", 1, "Ту-156"),
new Aeroflot("Одесса", 7, "Ту-154"),
new Aeroflot("Вильнюс", 18, "Ан-154") };
//создадим или откроем текстовый файл
//имя этого файла такое же как у программы, расширение txt
string dirName = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
string fileName = dirName.Insert(dirName.Length, "\\lab6_4.txt");
try
{
//создаем файл для записи в него
//используем using для гарантированой "уборки мусора" - удаления используемого
//дискриптора после последнего "}"
using (StreamWriter writer = File.CreateText(fileName))
{
for (int i = 0; i < aeroflot.Length; i++)
aeroflot[i].writeAeroflot(writer);
}
ShowArray(aeroflot);
//читаем из файла и заполняем массив aeroflot
using (StreamReader reader = File.OpenText(fileName))
{
//разделители в файле
string line = ""; char[] sep = { '|' };
for (int n = 0; (reader.Peek() >= 0) && (n < nArrayLength); n++)
if ((line = reader.ReadLine()) != "")
{
//парсим строку из файла, чтобы выделить наши поля
//и помещаем эти поля в массив строк field
aeroflot[n] = new Aeroflot("", 0, "");
//опция-пропуск пустых строк
//преобразовуем при необходимости строки в числа
string[] fields = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);
aeroflot[n].m_sName = fields[0];
Int32.TryParse(fields[1], out aeroflot[n].m_nFlight);
aeroflot[n].m_sAircraft = fields[2];
}
}
Console.WriteLine("Неотсортированный массив:");
ShowArray(aeroflot);
//Отсортирум массив по возрастанию
Array.Sort(aeroflot, delegate(Aeroflot aeroflot1, Aeroflot aeroflot2)
{ return aeroflot1.m_nFlight.CompareTo(aeroflot2.m_nFlight); });
Console.WriteLine("Массив отсортированный по возрастанию номера рейса:");
ShowArray(aeroflot);
try
{
Console.WriteLine("Введите номер самолета, чтобы получить информацию: ");
int nFlight = 0; int q = 0; bool bAeroflot = false;
if ((nFlight = int.Parse(Console.ReadLine())) > 0)
{
while ((q < aeroflot.Length) && (bAeroflot == false))
{
if (aeroflot[q].m_nFlight == nFlight)
{
bAeroflot = true;
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1}, Тип самолета: {2}",
aeroflot[q].m_sName, aeroflot[q].m_nFlight, aeroflot[q].m_sAircraft);
}
q++;
}
if (bAeroflot == false)
{
Console.WriteLine("Нет такого самолета.");
using (TextWriter writer = new StreamWriter(fileName, true))
{ writer.WriteLine("Нет такого самолета номер " + aeroflot[q].m_nFlight); }
}
}
}
catch (FormatException e)
{
Console.WriteLine("Нужно вводить число!");
}
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("Unable to perform file operations\n");
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
}
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lab6_4
{
class Aeroflot
{
public string m_sName; //поле - название пункта назначения рейса
public string m_sAircraft; //поля - тип мамолета
public int m_nFlight; //поле - номер рейса
//конструктор, создаем новые обекты
public Aeroflot() { }
public Aeroflot(string sName, int nFlight, string sAircraft)
{
this.m_sName = sName;
this.m_nFlight = nFlight;
this.m_sAircraft = sAircraft;
}
//метод показа на экране
public void ShowAeroflot()
{ Console.WriteLine("Название: {0}, Номер рейса: {1}, Тип самолета: {2}",
this.m_sName, this.m_nFlight, this.m_sAircraft); }
//метод записи в файл
public void writeAeroflot(StreamWriter Writer)
{ Writer.WriteLine("|{0}|{1}|{2}|", this.m_sName, this.m_nFlight, this.m_sAircraft); }
}
class Program
{
public const int nArrayLength = 7; //емкость массива
//выводим массив на экран
static void ShowArray(Aeroflot[] aeroflot)
{
for (int j = 0; j < aeroflot.Length; j++)
aeroflot[j].ShowAeroflot();
Console.WriteLine("\n\n");
}
static void Main(string[] args)
{
//создаем 7 объектов Aeroflot,выводим на экран и записываем их в файл lab6_4.txt
//инициализируем этот массив
Aeroflot[] aeroflot = new Aeroflot[nArrayLength] { new Aeroflot("Москва", 2, "Ту-154"),
new Aeroflot("Самара", 3, "Ту-152"),
new Aeroflot("Сочи", 11, "Ту-150"),
new Aeroflot("Харьков", 4, "Ан-52"),
new Aeroflot("Донецк", 1, "Ту-156"),
new Aeroflot("Одесса", 7, "Ту-154"),
new Aeroflot("Вильнюс", 18, "Ан-154") };
//создадим или откроем текстовый файл
//имя этого файла такое же как у программы, расширение txt
string dirName = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
string fileName = dirName.Insert(dirName.Length, "\\lab6_4.txt");
try
{
//создаем файл для записи в него
//используем using для гарантированой "уборки мусора" - удаления используемого
//дискриптора после последнего "}"
using (StreamWriter writer = File.CreateText(fileName))
{
for (int i = 0; i < aeroflot.Length; i++)
aeroflot[i].writeAeroflot(writer);
}
ShowArray(aeroflot);
//читаем из файла и заполняем массив aeroflot
using (StreamReader reader = File.OpenText(fileName))
{
//разделители в файле
string line = ""; char[] sep = { '|' };
for (int n = 0; (reader.Peek() >= 0) && (n < nArrayLength); n++)
if ((line = reader.ReadLine()) != "")
{
//парсим строку из файла, чтобы выделить наши поля
//и помещаем эти поля в массив строк field
aeroflot[n] = new Aeroflot("", 0, "");
//опция-пропуск пустых строк
//преобразовуем при необходимости строки в числа
string[] fields = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);
aeroflot[n].m_sName = fields[0];
Int32.TryParse(fields[1], out aeroflot[n].m_nFlight);
aeroflot[n].m_sAircraft = fields[2];
}
}
Console.WriteLine("Неотсортированный массив:");
ShowArray(aeroflot);
//Отсортирум массив по возрастанию
Array.Sort(aeroflot, delegate(Aeroflot aeroflot1, Aeroflot aeroflot2)
{ return aeroflot1.m_nFlight.CompareTo(aeroflot2.m_nFlight); });
Console.WriteLine("Массив отсортированный по возрастанию номера рейса:");
ShowArray(aeroflot);
try
{
Console.WriteLine("Введите номер самолета, чтобы получить информацию: ");
int nFlight = 0; int q = 0; bool bAeroflot = false;
if ((nFlight = int.Parse(Console.ReadLine())) > 0)
{
while ((q < aeroflot.Length) && (bAeroflot == false))
{
if (aeroflot[q].m_nFlight == nFlight)
{
bAeroflot = true;
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1}, Тип самолета: {2}",
aeroflot[q].m_sName, aeroflot[q].m_nFlight, aeroflot[q].m_sAircraft);
}
q++;
}
if (bAeroflot == false)
{
Console.WriteLine("Нет такого самолета.");
using (TextWriter writer = new StreamWriter(fileName, true))
{ writer.WriteLine("Нет такого самолета номер " + aeroflot[q].m_nFlight); }
}
}
}
catch (FormatException e)
{
Console.WriteLine("Нужно вводить число!");
}
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("Unable to perform file operations\n");
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
}
Код:
Aeroflot[] aeroflot = new Aeroflot[LengthArray];
//инициализируем этот массив
for (i = 0; i < LengthArray; i++)
aeroflot = new Aeroflot("",0,"");
//инициализируем этот массив
for (i = 0; i < LengthArray; i++)
aeroflot = new Aeroflot("",0,"");
Код:
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1},Тип самолета: {2}}",
aeroflot.Name, aeroflot.Number, aeroflot.Type);
aeroflot.Name, aeroflot.Number, aeroflot.Type);
Код:
Console.WriteLine("Название пункта назначения рейса: {0},Номер рейса: {1},Тип самолета: {2}",
aeroflot.Name, aeroflot.Number, aeroflot.Type);
aeroflot.Name, aeroflot.Number, aeroflot.Type);