|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2010, 21:07 | #1 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
Stack и файловый ввод вывод
Здравствуйте!мне нужно а программке реализовать файловый ввод-вывод, где присутствует стек, ведомость...проблемы есть ошибки..Может что-то подскажите!?
|
02.12.2010, 21:21 | #2 |
учащийся
Форумчанин
Регистрация: 26.04.2009
Сообщений: 144
|
|
03.12.2010, 12:49 | #3 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
using System;
using System.Collections.Generic; using System.Text; using System.Collections; using System.IO; namespace Laba { class IO { public static void Vvod(Stack st, string filename) { try { StreamWriter writer = File.CreateText(filename);//cоздание файла Proizvod A; for (int i = 0; i < st.Count; i++) { A = (Proizvod)st.Pop(i);//GetByIndex writer.WriteLine(A.GetPr + "!" + A.GetK + "!" + A.GetZ + "!" + A.GetC + "!" + A.GetP + "!"); } writer.Close(); } catch (IndexOutOfRangeException) { // Перехватываем исключение. Console.WriteLine("Нет соответствующего элемента."); } } public static void Vuvod(Stack st, string filename) { try { int i = 0; StreamReader sw = new StreamReader(filename);//вводим имя файла string line = null; while ((line = sw.ReadLine()) != null) { string[] token = line.Split('!'); Proizvod A = new Proizvod(token[0], int.Parse(token[1]), int.Parse(token[2]), int.Parse(token[3]), int.Parse(token[4], int.Parse(token[5]))); st.Push(i, A); i++; } } catch (FileNotFoundException) {// Перехватываем исключение. Console.WriteLine("Файл не найден!!!"); } } } } |
03.12.2010, 12:51 | #4 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
Второй файл
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Laba { /// <summary> /// Класс Prod предназначен для ввода и вывода данных /// </summary> class Prod { string Pr; double K = 0, Z = 0, C = 0, P = 0; double ObshiyeK = 0, ObshiyeP = 0; int i, n; /// <summary> /// Внутренняя статическая функция internal static void Vivod() для ввода-вывода данных /// Модификатор static используется для объявления статического члена, принадлежащего собственно типу, а не конкретному объекту. /// </summary> /// Stack<Proizvod> st = new Stack<Proizvod>(); public void Process() { Console.Write("КОЛИЧЕСТВО СТРОК ВЕДОМОСТИ n= "); n = int.Parse(Console.ReadLine()); while (n < 0 || n > 10) { Console.WriteLine("Введите количество строк ведомости от 1 до 10: "); n = int.Parse(Console.ReadLine()); } for (i = 0; i < n; i++)//цикл ввода данных { Console.WriteLine("Введите название продукции: " + (i + 1)); Pr = Console.ReadLine(); Console.WriteLine("Введите количество штук: " + (i + 1)); K = double.Parse(Console.ReadLine()); Console.WriteLine("Введите оптовую цену: " + (i + 1)); Z = double.Parse(Console.ReadLine()); Console.WriteLine("Введите себестоимость:" + (i + 1)); C = double.Parse(Console.ReadLine()); P = K * (Z - C); st.Push(i, new Proizvod(Pr, K, Z, C, P)); } i = 0;//обнуление для повторного прохождения цикла } public void PrintTable() { Console.WriteLine("Ведомость прибыли предриятия за отчетный период по видам продукции:"); Console.WriteLine(" -------------------------------------------------------------------"); Console.WriteLine(" |{0,0}|{1,13}|{2,12}|{3,11}|{4,9}|{ 5,10}|", " № ", "|ПРОД-Т", "КОЛИЧ-ВО,шт", "ОПТ ЦЕНА,грн", "СЕБЕСТ,грн", "ПРИБЫЛЬ,грн"); Console.WriteLine(" --------------------------------------------------------------------"); foreach (Proizvod tmpProd in st) //вывод таблицы { Console.WriteLine("| {0,-10}|{1,-6}|{2,-12:F2}|{3,-11:F2} |{4,-9:F2} |{5,-11:F2}|", i + 1, tmpProd.GetPr, tmpProd.GetK, tmpProd.GetZ, tmpProd.GetC, tmpProd.GetP); } Console.WriteLine(" --------------------------------------------------------------------"); i = 0;//обнуление для повторного прохождения цикла обработки и подсчета суммы элементов массивов for (i = 0; i < n; i++) { ObshiyeK = ObshiyeK + K; ObshiyeP = ObshiyeP + P; } Console.WriteLine(" Итого:" + "__________" + "|" + ObshiyeK + "___________" + "|" + "_____________" + "|" + "__________" + "|" + ObshiyeP + "_________" + "|"); Console.WriteLine(" -------------------------------------------------------------------"); } |
03.12.2010, 12:51 | #5 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
static void Main()// Основной метод программы
{ Prod My = new Prod();//создание объекта Console.Write("Введите название создаваемого файла (in English, please): "); string filename = Console.ReadLine();//введение имени файла Console.WriteLine(); //проверка if (File.Exists(filename)) { do { Console.WriteLine("Данный файл уже существует. Загрузить его содержимое? (y/n)"); string ans = Console.ReadLine(); if (ans == "y" || ans == "Y") { IO.Vuvod(My.st, filename); My.PrintTable(); Console.ReadLine(); return; } else { Console.Write("Введите название создаваемого файла (in English, please): "); filename = Console.ReadLine();//введение названия файла if (!File.Exists(filename)) break; } } while (File.Exists(filename)); } My.Process(); My.PrintTable(); IO.Vvod(My.st, filename); Console.WriteLine("вы хотите загрузить содержимое из файла?? (y/n)"); string zag = Console.ReadLine();//введение y для загрузки содержимого файла if (zag == "y" || zag == "Y") { IO.Vuvod(My.st, filename); My.PrintTable(); } } } } |
03.12.2010, 12:52 | #6 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
Третий файл
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace Laba { class Proizvod//объявление переменных экземпляра { private string Pr;//название продукции private double K;//количество шт private double Z;//оптовая цена грн private double C;//себестоимость грн private double P;//прибыль грн public Proizvod(string Pr, double K, double Z, double C, double P)//конструкор с параметрами,инициализация переменных { this.Pr = Pr; this.K = K; this.Z = Z; this.C = C; this.P = P; } //свойства public string GetPr { get { return Pr; } }//функции для вывода public double GetK { get { return K; } } public double GetZ { get { return Z; } } public double GetC { get { return C; } } public double GetP { get { return P; } } } } |
03.12.2010, 12:55 | #7 |
Пользователь
Регистрация: 24.11.2010
Сообщений: 17
|
Не могу сказать точно с чем в чем у меня ошибки!Проблемы с функцией Pop, хотя я не уверена, что она там вообще должна быть, потому что я переделывала свою программку по примеру программки практически такой же, но там вместо стека был сортидлист!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файловый ввод-вывод | Кристюня | Общие вопросы C/C++ | 9 | 29.11.2010 20:02 |
Файловый ввод-вывод | Оля_1991 | Помощь студентам | 0 | 10.10.2010 14:12 |
Файловый ввод вывод | GrihaI | Общие вопросы C/C++ | 4 | 31.05.2010 02:45 |
Файловый ввод-вывод | andrey-v-isaev | Общие вопросы C/C++ | 1 | 02.05.2010 19:54 |
Файловый ввод/вывод | -=$V=- | Общие вопросы C/C++ | 8 | 13.12.2008 21:11 |