Не пойму, как сделать подсчет и почему программа не выполняется полностью - C#
Формулировка задачи:
Задание - из исходного файла с информацией вывести на экран название и суммарную стоимость для продукта от каждого поставщика, а после записать их в файл вывода.
Исходный файл:
хрень1;22.10.12;1;10;хрен1;
хрень1;22.11.12;2;20;хрен1;
хрень1;22.01.13;3;30;хрен1;
хрень2;22.02.13;4;40;хрен2;
хрень2;22.03.13;5;50;хрен2;
хрень2;22.04.13;6;60;хрен2;
хрень3;22.05.13;7;70;хрен3;
хрень3;22.06.13;8;80;хрен3;
хрень3;22.07.13;9;90;хрен3;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace _31
{
class Program
{
enum goods : byte { хрень1 = 1, хрень2, хрень3 } //нумерация как отд. константы
static string originalFile = @"C:\UUUUUUUBLE\file.txt"; //файл с инфой
static string outFile = @"C:\UUUUUUUBLE\output.txt"; //файл с выводом
static StreamReader readerOriginalFileStream; //типы, использующиеся для простой и удобной редакции текста
static StreamWriter writerOutFileStream;
public static string OutFile { get => outFile; set => outFile = value; }
static void TestExist(string nameFile, ref StreamReader readerFileStream) //проверка на достоверность и на наличие файла
{
if (File.Exists(nameFile))
{
readerFileStream = new StreamReader(nameFile);
string s = File.ReadAllText(nameFile);
if (s == "")
Console.WriteLine("Исходный файл "{0}" пустой", nameFile);
else
Console.WriteLine("Исходный файл "{0}" существует, и он заполнен.", nameFile);
}
else
Console.WriteLine("Исходный файл "{0}" не существует", nameFile);
}
public static string[,] TablFile(StreamReader sr, int m) //создание таблицы из файла
{
string s, line = "";
while ((s = sr.ReadLine()) != null)
{
line += s;
}
string[] xMass = line.Split(';');
string[,] xTabl = new string[xMass.Length / m, m];
int k = 0;
for (int i = 0; i < xMass.Length / m; i++)
{
for (int j = 0; j < m; j++)
{
xTabl[i, j] = xMass[k];
k++;
}
}
return xTabl;
}
static void Main(string[] args)
{
try
{
TestExist(originalFile, ref readerOriginalFileStream);
string[,] originalTabl = TablFile(readerOriginalFileStream, 7);
writerOutFileStream = new StreamWriter(outFile);
Console.Write("(Хрень1 - 1)\n(Хрень2 - 2)\n(Хрень3 - 3)\nВведите тип товара: ");
byte t = byte.Parse(Console.ReadLine());
string s = "";
if (t == (byte)goods.хрень1) //count-инг
s = Convert.ToString(goods.хрень1);
else if (t == (byte)goods.хрень2)
s = Convert.ToString(goods.хрень2);
else if (t == (byte)goods.хрень3)
s = Convert.ToString(goods.хрень3);
Console.WriteLine("Выбран товар: " + s);
string numname = "", price = "";
for (int i = 0; i < originalTabl.Length / 7; i++)
{
if (s == originalTabl[i, 4])
{
numname = originalTabl[i, 0];
price = originalTabl[i, 3]*[i, 2];
writerOutFileStream.WriteLine(numname + "; " + price);
Console.WriteLine("\n" + numname + "; " + price);
Console.WriteLine("Файл успешно записан.");
}
}
writerOutFileStream.Close();
readerOriginalFileStream.Close();
}
catch (NullReferenceException) //"вылавливание", отсутствует нужный объект
{
Console.WriteLine("\nНе все файлы готовы к использованию.\nПроверь наличие данных.");
}
catch //"вылавливание"
{
Console.WriteLine("Неизвестное исключение."); //случайная ошибка
}
finally //очистка данных try
{
Console.ReadLine();
}
}
}
}
Все закомментировал, чтобы код было проще прочитать. Очень нужна помощь.
Решение задачи: «Не пойму, как сделать подсчет и почему программа не выполняется полностью»
textual
Листинг программы
using System;
using System.IO;
namespace ConsoleApplication4
{
class Program2
{
enum goods : byte { хрень1 = 1, хрень2, хрень3 } //нумерация как отд. константы
static string originalFile = @"file.txt"; //файл с инфой
static string outFile = @"output.txt"; //файл с выводом
static StreamReader readerOriginalFileStream; //типы, использующиеся для простой и удобной редакции текста
static StreamWriter writerOutFileStream;
public static string OutFile
{
get { return outFile; }
set { outFile = value; }
}
static void TestExist(string nameFile, ref StreamReader readerFileStream) //проверка на достоверность и на наличие файла
{
if (File.Exists(nameFile))
{
readerFileStream = new StreamReader(nameFile);
string s = File.ReadAllText(nameFile);
if (string.IsNullOrEmpty(s))
{
Console.WriteLine("Исходный файл {0} пустой", nameFile);
}
else
{
Console.WriteLine("Исходный файл {0} существует, и он заполнен.", nameFile);
}
}
else
{
Console.WriteLine("Исходный файл {0} не существует", nameFile);
}
}
public static string[,] TablFile(StreamReader sr, int m) //создание таблицы из файла
{
string s;
string line = string.Empty;
while ((s = sr.ReadLine()) != null)
{
line += s;
}
string[] xMass = line.Split(';');
string[,] xTabl = new string[xMass.Length / m, m];
int k = 0;
for (int i = 0; i < xMass.Length / m; i++)
{
for (int j = 0; j < m; j++)
{
xTabl[i, j] = xMass[k];
k++;
}
}
return xTabl;
}
static void Main(string[] args)
{
try
{
TestExist(originalFile, ref readerOriginalFileStream);
string[,] originalTabl = TablFile(readerOriginalFileStream, 7);
readerOriginalFileStream.Close();
using (var writerOutFileStream = new StreamWriter(outFile))
{
Console.Write("(Хрень1 - 1)\n(Хрень2 - 2)\n(Хрень3 - 3)\nВведите тип товара: ");
byte t = 1; /*byte.Parse(Console.ReadLine());*/
string s = string.Empty;
switch (t)
{
case (byte)goods.хрень1:
s = Convert.ToString(goods.хрень1);
break;
case (byte)goods.хрень2:
s = Convert.ToString(goods.хрень2);
break;
case (byte)goods.хрень3:
s = Convert.ToString(goods.хрень3);
break;
}
Console.WriteLine("Выбран товар: " + s);
string numname = string.Empty;
for (int i = 0; i < originalTabl.Length / 7; i++)
{
if (s == originalTabl[i, 0])
{
numname = originalTabl[i, 0];
var price = Convert.ToInt32(originalTabl[i, 3]) * Convert.ToInt32(originalTabl[i, 2]);
writerOutFileStream.WriteLine(numname + "; " + price);
Console.WriteLine("\n" + numname + "; " + price);
Console.WriteLine("Файл успешно записан.");
}
}
}
}
catch (NullReferenceException) //"вылавливание", отсутствует нужный объект
{
Console.WriteLine("\nНе все файлы готовы к использованию.\nПроверь наличие данных.");
}
catch //"вылавливание"
{
Console.WriteLine("Неизвестное исключение."); //случайная ошибка
}
finally //очистка данных try
{
Console.ReadLine();
}
}
}
}