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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

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

помогите пожалуйста разобраться в файловом вводе-выводе в программе пирамидальной сортировки!
есть код, пробовала написать ввод-вывод постоянно выдает ошибки при запуске
Код:
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)
        {
                StreamReader nn = new StreamReader("in.txt");
            int n;
            string ss;
            ss = nn.ReadLine();
            n = Convert.ToInt32(ss);
            double[] arr = new double[n];
            string s = nn.ReadToEnd().Trim();
            string[] sr = s.Split(' ');
            for (int i = 0; i < n; ++i)
            {

                arr[i] = Convert.ToInt32(sr[i]);
            }


            PyramidSorting.sorting(arr, arr.Length);


            using (StreamWriter nnn = new StreamWriter("out.txt"))
            {
                for (int i = 0; i < n; ++i)
                {
                    nnn.Write("{0} ", arr[i]);
                }
            }     
        }
   }
}
lenka91 вне форума Ответить с цитированием
Старый 19.12.2013, 14:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Текст ошибок засекречен дзьонинами деревни макдональдса?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2013, 15:23   #3
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию

ошибка самой визуалки:

необработанное исключение типа "System.FormatException" произошло в
mscorlib.dll
Доп. сведения: Входная строка имела неверны формат

подчеркивает строку:
Код:
 n = Convert.ToInt32(ss);
lenka91 вне форума Ответить с цитированием
Старый 19.12.2013, 15:33   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит там нечисловой символ.
Код:
            for (int i = 0; i < n; ++i)
            {
              try{ arr[i] = Convert.ToInt32(sr[i]);}
              catch(FormatException fe){Console.Writeline("{0} не число",sr[i]);}
            }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2013, 15:55   #5
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию

не принимает Writeline. System.console не содержит определение для него
lenka91 вне форума Ответить с цитированием
Старый 19.12.2013, 16:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

От горе... Ну так загляни в Хелп. Я мог ошибиться. Замени на Write
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2013, 17:00   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

или написать в правильном регистре:
Код:
Console.WriteLine
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод данных из файла Despot777 Общие вопросы C/C++ 1 26.10.2013 20:11
ввод-вывод из файла vrtp Общие вопросы C/C++ 1 05.04.2012 08:08
Обратная польская запись + ввод/вывод из файла (С++) Anastasiya209 Помощь студентам 0 22.04.2010 17:19
Файлы: ввод - вывод, считывание файла chagin_yav Помощь студентам 1 25.05.2008 15:34