Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2013, 19:22   #1
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию файловый ввод-вывод

Здравствуйте!
Только начала изучение С#, толком не разобралась. Помогите пожалуйста организовать файловый ввод-вывод в программе пирамидальной сортировки

Из одного файла(in.txt) нужно считать массив чисел, и вывести в другой файл(out.txt) отсортированный массив.

вот код без main:

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication22
{
    class PyramidSorting
    {
        //добавление элемента к пирамиде
        static int add2pyramid(double[] arr, int i, int N)
        {
            int imax;
            double buf;
            if ((2 * i + 2) < N)
            {
                if (arr[2 * i + 1] < arr[2 * i + 2]) imax = 2 * i + 2;
                else imax = 2 * i + 1;
            }
            else imax = 2 * i + 1;
            if (imax >= N) return i;
            if (arr[i] < arr[imax])
            {
                buf = arr[i];
                arr[i] = arr[imax];
                arr[imax] = buf;
                if (imax < N / 2) i = imax;
            }
            return i;
        }
        public static void sorting(double[] arr, int len)
        {
            //шаг 1: постройка пирамиды
            for (int i = len / 2 - 1; i >= 0; --i)
            {
                long prev_i = i;
                i = add2pyramid(arr, i, len);
                if (prev_i != i) ++i;
            }

            //шаг 2: сортировка
            double buf;
            for (int k = len - 1; k > 0; --k)
            {
                buf = arr[0];
                arr[0] = arr[k];
                arr[k] = buf;
                int i = 0, prev_i = -1;
                while (i != prev_i)
                {
                    prev_i = i;
                    i = add2pyramid(arr, i, k);
                }
            }
        }
    }
    class Test
    {
        static void Main(string[] args)
        {

       }
а вот мои жалкие потуги организовать файловый ввод:
Код:
 int n=10;
            double[] arr = new double[n];
            StreamReader s = new StreamReader("in.txt");
            for (int i=0;i<n; i++){
                string sr= s.ReadLine();
     //           string[] ss=sr.Split(' ');
     //       arr[i] = Convert.ToInt32(ss[i]);
            }
            Console.Write(s.ReadToEnd());
            s.Close();
            Console.ReadKey();
Помогите пожалуйста!
lenka91 вне форума Ответить с цитированием
Старый 10.12.2013, 19:34   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию файловый ввод-вывод

Читать
Читать
Писать
Писать
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 12.12.2013, 21:17   #3
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию

Там ввод-вывод строками String. А мне нужно считать и вывести массив double.
lenka91 вне форума Ответить с цитированием
Старый 12.12.2013, 21:20   #4
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию файловый ввод-вывод

Здравствуйте!
Только начала изучение С#, толком не разобралась. Помогите пожалуйста организовать файловый ввод-вывод в программе пирамидальной сортировки

Из одного файла(in.txt) нужно считать массив чисел, и вывести в другой файл(out.txt) отсортированный массив.

вот код без main:

Код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication22
{
    class PyramidSorting
    {
        //добавление элемента к пирамиде
        static int add2pyramid(double[] arr, int i, int N)
        {
            int imax;
            double buf;
            if ((2 * i + 2) < N)
            {
                if (arr[2 * i + 1] < arr[2 * i + 2]) imax = 2 * i + 2;
                else imax = 2 * i + 1;
            }
            else imax = 2 * i + 1;
            if (imax >= N) return i;
            if (arr[i] < arr[imax])
            {
                buf = arr[i];
                arr[i] = arr[imax];
                arr[imax] = buf;
                if (imax < N / 2) i = imax;
            }
            return i;
        }
        public static void sorting(double[] arr, int len)
        {
            //шаг 1: постройка пирамиды
            for (int i = len / 2 - 1; i >= 0; --i)
            {
                long prev_i = i;
                i = add2pyramid(arr, i, len);
                if (prev_i != i) ++i;
            }

            //шаг 2: сортировка
            double buf;
            for (int k = len - 1; k > 0; --k)
            {
                buf = arr[0];
                arr[0] = arr[k];
                arr[k] = buf;
                int i = 0, prev_i = -1;
                while (i != prev_i)
                {
                    prev_i = i;
                    i = add2pyramid(arr, i, k);
                }
            }
        }
    }
    class Test
    {
        static void Main(string[] args)
        {

       }
а вот мои жалкие потуги организовать файловый ввод:
Код:
Код:
 int n=10;
            double[] arr = new double[n];
            StreamReader s = new StreamReader("in.txt");
            for (int i=0;i<n; i++){
                string sr= s.ReadLine();
     //           string[] ss=sr.Split(' ');
     //       arr[i] = Convert.ToInt32(ss[i]);
            }
            Console.Write(s.ReadToEnd());
            s.Close();
            Console.ReadKey();
Помогите пожалуйста!
lenka91 вне форума Ответить с цитированием
Старый 12.12.2013, 21:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чего жалкие? По-моему вполне норм. Я с потолка пишу:
Код:
string s.ReadToEnd();
for(string q in s.split('\n')){
 string[] w=q.split(' ');
 double e=w.OrderBy(v=>Convert.ToInt32(v));
 Теперь w отсортированный массив строк
}
Но примерно так бы делал я. Могу напутать в сортировке конечно, но думаю что основная идея ясна.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2013, 21:55   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Stilet: эт не вашими ли стараниями я автором темы стал?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 13.12.2013, 10:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Stilet: эт не вашими ли стараниями я автором темы стал?
угу. напортачил Виталий слегонца.
я восстановил статус-кво!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файловый ввод/вывод MishkaSh Помощь студентам 8 29.09.2013 13:04
Файловый ввод-вывод Кристюня Общие вопросы C/C++ 9 29.11.2010 20:02
Файловый ввод вывод GrihaI Общие вопросы C/C++ 4 31.05.2010 02:45
Файловый ввод/вывод -=$V=- Общие вопросы C/C++ 8 13.12.2008 21:11
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45