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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы