Не пойму, как сделать подсчет и почему программа не выполняется полностью - 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(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д