Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/56: Рейтинг темы: голосов - 56, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 21

Переписать в другой файл все числа в обратном порядке используя класс Stack

23.12.2010, 21:44. Показов 10988. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста решить следущую задачу с использованием класса Stack:
Дан файл, в котором записан набор чисел. Переписать в другой файл все числа в обратном порядке.

заранее большое спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2010, 21:44
Ответы с готовыми решениями:

Прочитать текстовые и числовые сведения из текстового файла. С помощью стека переписать в другой текстовый файл все числа в обратном порядке.
Создать текстовый файл, содержащий текстовую и числовую информацию. Используя стек, создать другой текстовый файл, в котором числа были бы...

Считать все числа из файла и записать их в обратном порядке в другой файл
Дано: файл input.txt, содержащий только целые числа. Требуется: считать все числа из файла input.txt и записать их в обратном порядке в...

Используя стек, создать другой текстовый файл, в котором числа будут записаны в обратном порядке - Free Pascal
Создать текстовый файл, содержащий текстовую и числовую информацию. Используя стек, создать другой текстовый файл, в котором числа будут...

21
 Аватар для killboss
69 / 69 / 3
Регистрация: 18.12.2010
Сообщений: 127
23.12.2010, 23:07
Вот тебе стек а дальше я думаю проблем не будет...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
 
class Stack
{
    char [] stck;
    int tos;
    //Параметрический конструктор класса Stack
    public Stack(int size)
    {
        stck = new char[size];
        tos = 0;
    }
    //Метод помещает в неполный стек элемент
    public void push(char ch)
    {
        if (tos == stck.Length)
        {
            Console.WriteLine("Стек заполнен.");
            return;
        }
        stck[tos] = ch;
        tos++;
 
    }
    //Метод отдаёт из непустого стека элемент
    public char pop()
    {
        if (tos == 0)
        {
            Console.WriteLine("Стек пуст.");
            return (char) 0;
        }
        tos--;
        return stck[tos];
    }
    //Метод показывает общий объём стека
    public int volume()
    {
        return stck.Length;
    }
    //Метод показывает текущий объём стека
    public int kol()
    {
        return tos;
    }
    //Метод возвращает значение true, если стек полон
    public bool empty()
    {
        return tos == stck.Length;
    }
    //Метод возвращает значение true, если стек пуст
    public bool full()
    {
        return tos == 0;
    }
}
 
class Program
{
static void Main(string[] args)
  {
    Stack stck1 = new Stack(10);
    int i;
    char ch;
    Console.WriteLine("Программа демонстрирует работу со стеком.\n");
    Console.WriteLine("Текущее кол-во элементов в стеке: " + stck1.kol());
    Console.WriteLine("Заполняем стек.");
    for (i = 0; !stck1.empty(); i++)
    {
        stck1.push((char)('A'+i));
        Console.WriteLine("Текущее кол-во элементов в стеке: " + stck1.kol());
    }
    Console.WriteLine("Содержимое стека:");
    for (i = 0; !stck1.full(); i++)
    {
        ch = stck1.pop();
        Console.Write(ch);
    }
    Console.WriteLine("\nМаксимальный объём стека: " + stck1.volume());
    Console.ReadLine();
  }
}
2
Заблокирован
23.12.2010, 23:24
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack st = new Stack();
            System.IO.StreamReader f = new System.IO.StreamReader(@"E:\test.txt", Encoding.Unicode);
            // открываем наш файл и читаем. В файле должны быть только цифры разделенные пробелом или новой строкой
            string[] str = f.ReadToEnd().Replace("\r\n", " ").Split();
            f.Close();
            Console.WriteLine("====Числа исходного файла===");
            for (int i = 0; i < str.Length; ++i)
            {
 
                string Str = " " + str[i];
                Console.Write(Str + " ");
                foreach (char ch in Str.ToCharArray())
                    st.Push(ch);
            }
            Console.WriteLine("\n\n===То, что мы записываем в новый файл===");
            // используя класс Stack записываем числа в обратном порядке и начиная с конца
            foreach (char s in st)
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"E:\testnew.txt", true, Encoding.Unicode))
                {
                    Console.Write(s);
                    file.Write(s);
                }
 
            Console.ReadKey();
        }
    }
}
Добавлено через 14 минут
killboss, советчиков много, а решить задачку некоторым слабо.
2
 Аватар для killboss
69 / 69 / 3
Регистрация: 18.12.2010
Сообщений: 127
23.12.2010, 23:26
killboss, советчиков много, а решить задачку некоторым слабо.
Надо дать совет не а само решение
1
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
23.12.2010, 23:35
System.Collections.Generic Нельзя было чтоль?
Зачем использовать Stack если можно использовать Stack<T>
Или здесь в задаче только свой стек должен быть?
0
Заблокирован
23.12.2010, 23:51
Extsm, слушай. Давай предложи своё решение и мы посмотрим. А понты кидать мы все умеем, но только не умеем отвечать за свои слова. Я выложил готовое и рабочее решение этой задачки. Если у тебя есть лучшее - я с удовольствием его посмотрю и приму к сведению. А если у тебя такового нет - закрой хавальник и помолчи. Вопросы?
0
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
23.12.2010, 23:53
Цитата Сообщение от SSV Посмотреть сообщение
Extsm, слушай. Давай предложи своё решение и мы посмотрим. А понты кидать мы все умеем, но только не умеем отвечать за свои слова. Я выложил готовое и рабочее решение этой задачки. Если у тебя есть лучшее - я с удовольствием его посмотрю и приму к сведению. А если у тебя такового нет - закрой хавальник и помолчи. Вопросы?
Только не нужно тут агрится, я уже почти дописал!
0
6 / 2 / 2
Регистрация: 08.05.2009
Сообщений: 37
23.12.2010, 23:58
Stack устроен так что если первым пришол последним ушел поэтому тут даже голову можеш не морочить)
так и объсниш )
поэтому в обратном порядке он все нормально выведет
0
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 21
24.12.2010, 00:01  [ТС]
SSV спасибо большое!

Добавлено через 45 секунд
и Extsm спасибо)
0
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
24.12.2010, 00:01
Лучший ответ Сообщение было отмечено как решение

Решение

Вот смотри что такое Generic =)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class FunctionWithFile
    {
        public string Read(string path)
        {
            using (TextReader reader = new StreamReader(new FileStream(path, FileMode.Open)))
            {
                return reader.ReadToEnd();
            }
        }
 
        public void Write(string path,Stack<string> stack)
        {
            using (TextWriter writer = new StreamWriter(new FileStream(path, FileMode.Create)))
            {
                    foreach (var str in stack)
                    {
                        writer.Write(str);
                    }
            }
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            FunctionWithFile file = new FunctionWithFile();
            Stack<string> stack = new Stack<string>();
 
            string[] splitText = file.Read("1.txt").Replace("\r\n"," ").Split();
 
            for (int i = 0; i < splitText.Count(); i++)
            {
                stack.Push(splitText[i] + " ");
            }
 
            file.Write("2.txt", stack);
        }
    }
3
0 / 0 / 0
Регистрация: 07.10.2010
Сообщений: 21
24.12.2010, 00:04  [ТС]
и killboss тожеспасибо!
всем огромное спасибоза помощь!

Добавлено через 2 минуты
прям большое спасибо!
0
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
24.12.2010, 00:12
Цитата Сообщение от myrzik Посмотреть сообщение
Добавлено через 45 секунд
и Extsm спасибо)
Да не за что) Если че пиши в личку, помогу чем смогу=)
1
6 / 2 / 2
Регистрация: 08.05.2009
Сообщений: 37
24.12.2010, 00:28
да кстати вот этот код мне кажется тебе тоже подойдет




C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.IO;
 
namespace ConsoleApplication4
{
    class Program
    {
 
        static void Main(string[] args)
        {
            //Объявляем стэк
            Stack stak = new Stack();
            //Открываем файл для чтения
            FileStream f = new FileStream("Chisla.txt", FileMode.Open, FileAccess.Read);
            StreamReader r = new StreamReader(f, Encoding.GetEncoding(1251));
            //Записываем в стек 
            //Запись происходит в обратном порядке
            foreach (string s in r.ReadToEnd().Split(' '))
            {
                stak.Push(Convert.ToInt32(s));
            }
            //Выводим запись в из стека)
            foreach (object m in stak)
                Console.WriteLine(m);
            r.Close();
        }
    }
}
2
Заблокирован
24.12.2010, 00:37
Я посмотрел твою прогу.но дело в том, что она не переписывает числа наоборот, а все числа возвращает в обратной последовательности. По идеи так и должно, но задание было другое. Надо было переписать числа в обратном порядке.Понимаешь ли в чем дело... дело не в применении определенных классов. Дело в алгоритме, который ты делаешь. А все эти прибомбасы тебе в дальнейшем могут помочь, но если ты лох(я не имею ввиду тебя... это образно) - это приговор пожизненно.
0
 Аватар для killboss
69 / 69 / 3
Регистрация: 18.12.2010
Сообщений: 127
24.12.2010, 00:41
Цитата Сообщение от myrzik Посмотреть сообщение
и killboss тожеспасибо!
всем огромное спасибоза помощь!

Добавлено через 2 минуты
прям большое спасибо!
Для этого кнопочка есть
1
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
24.12.2010, 00:47
Цитата Сообщение от SSV Посмотреть сообщение
Я посмотрел твою прогу.но дело в том, что она не переписывает числа наоборот, а все числа возвращает в обратной последовательности. По идеи так и должно, но задание было другое. Надо было переписать числа в обратном порядке.Понимаешь ли в чем дело... дело не в применении определенных классов. Дело в алгоритме, который ты делаешь. А все эти прибомбасы тебе в дальнейшем могут помочь, но если ты лох(я не имею ввиду тебя... это образно) - это приговор пожизненно.
Обратный порядок обеспечивает Stack. Ты тоже просто записываешь в файл из стека с первого елемента до последнего.
Как пишет strannik
Stack устроен так что если первым пришол последним ушел поэтому тут даже голову можеш не морочить)
так и объсниш )
поэтому в обратном порядке он все нормально выведет
И кстати я понты не кидаю, а ты вижу очень любишь критиковать других.
0
0 / 0 / 0
Регистрация: 22.06.2019
Сообщений: 1
22.06.2019, 16:42
Extsm,привет можешь помочь пожалуйста?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.06.2019, 16:59
Sollart, если вопрос относится к текущей теме, то просто задайте его. Если нет, то создайте новую тему.
0
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
22.06.2019, 17:05
killboss, забавный у Вас стек. Метод empty() (пусто) возвращает true, если стек полон, и false, если стек пуст. А метод full() (полно) возвращает true если стек пуст, и false, если полон. Выходит цикл заполнения стека (читая код) выполняется до того момента, пока !stck1.empty() - тобишь пока стек не пустой, а цикл извлечения из стека до !stck1.full() - тобишь пока стек не будет полон
C#
1
2
3
4
5
6
7
8
9
10
for (i = 0; !stck1.empty(); i++)
{
    stck1.push((char)('A'+i));
    Console.WriteLine("Текущее кол-во элементов в стеке: " + stck1.kol());
}
for (i = 0; !stck1.full(); i++)
{
     ch = stck1.pop();
     Console.Write(ch);
}
Не надо так делать
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.06.2019, 17:18
Eduard Nanaki, на всякий случай - там создана 9 лет назад. Пользователь killboss к которому вы обращаетесь не появлялся на форуме с 2011 года.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2019, 17:18
Помогаю со студенческими работами здесь

Переписать все числа из одного файла в другой файл в порядке возрастания
В файле записаны несколько чисел.Напишите программу,которая запишет все числа в другой файл в порядке возрастания

Переписать строки в обратном порядке в другой файл
Вот задание: Имеется текстовый файл. Переписать его строки в обратном порядке (справа налево) в другой файл. Порядок строк во втором...

Переписать слова в другой файл в обратном порядке
Сначала записать слова North, South, East, West, Flamingo в файлы. После прочитать их и переписать их в другом файле в обратном порядке.

Переписать строки файла в обратном порядке в другой файл по отношению к порядку строк
Имеется текстовый файл. переписать его строки в обратном порядке в другой файл порядок строк во втором файле должен быть обратным по...

Переписать строки текстового файла в обратном порядке (справа налево) в другой файл
Имеется текстовый файл. Переписать его строки в обратном порядке (справа налево) в другой файл. Порядок строк во втором файле должен быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru