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