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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2016, 14:54   #1
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию Подскажите на С#, как оптимизировать/переписать эту задачу

Подскажите на С#, как оптимизировать/переписать эту задачу
Код:
public class Program
    {
        public static double StrToDoub(string val)
        {
			//конвертируем текст в число
			//результат по умолчанию 0 
            double result=0.0;
            try {
                 result = Convert.ToDouble(val);
                 return result;
            }
                 catch (FormatException) {
                 return result;
                 }               
                 catch (OverflowException) {
                 return result;
                 }
        }
        public static void Main(string[] args)
        {
            string txt = Console.ReadLine(); //входная строка
            string value = ""; 
            Console.WriteLine(txt);
            txt+=" "; //вспомогательный елемент
            double[] arr = new double[txt.Length]; //в массиве храним числа, принимает что максимум их будет = длина(тхт)
            int tail=0; //индекс последнего елемента массива
            for(int i=0;i<txt.Length;i++) //перебираем символы строки
            {
				//если цифра или точка/запятая - храним в переменной
                if((txt[i] >= '0' & txt[i]<='9') || (txt[i]=='.') || (txt[i]==',')) value+=txt[i];
				else if(txt[i]=='-') 
				//если "-" рассматриваем варианты
                {
                   if(value.Length == 0) value+=txt[i]; // "-" первый елемент - ОК
                   else //обрабатываем имеющиеся данные в value
                   {
                        double result;
                        result = StrToDoub(value); //результат конвертирования
                        if((Array.IndexOf(arr, result) == -1) && (result<0)) 
						//число отрицательное и его нету в массиве?
                        {
                            arr[tail]=result; //сохранить
                            tail++; //сдвинуть "хвост"
                        }   
                        value = "-";  
                   }
                }
                else //нашли другой символ
                {
                    if(value!="")
                    {
						//конвертируем и пытаемся добавить в массив
                        double result;
                        result = StrToDoub(value);
                        Console.WriteLine("Converted '{0}' to {1}.", value, result);
                        if((Array.IndexOf(arr, result) == -1) && (result<0))
                        {
                            arr[tail]=result; 
                            tail++;
                        }   
                    }
                    value = "";
                }
            }
			//вывод массива
            for(int i=0;i<tail;i++) Console.WriteLine(arr[i]+" ");
            
        }
    }
результат
Цитата:
-1.95E6,07E-8.-8abcd
Converted '-1.95' to -195.
Converted '6,07' to 6,07.
Converted '-8' to -8.
-195
-8
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 12.11.2016, 11:12   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

А это хорошо - в чужом топике размещать свои вопросы ? Для профи - это не комильфо
digitalis вне форума Ответить с цитированием
Старый 12.11.2016, 14:07   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Это был не вопрос, а подсказка тс. Ну да ладно, раз модератор решил что это вопрос и на него даже топик надо создать, пускай так и будет. Жду советов-подсказок
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 12.11.2016, 14:17   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А задача-то какая?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
плохо соображаю в qbesic ` е, подскажите как написать эту программу Vlad0697 Помощь студентам 0 16.05.2014 11:31
Подскажите кто нибудь как решить вот эту задачу ? Cyber 10111 Паскаль, Turbo Pascal, PascalABC.NET 2 17.12.2013 22:45
как решить эту задачу (записи и файлы) Matrics Помощь студентам 0 25.05.2013 00:25
Паскаль. Подскажите пожалуста как решить эту задачу. svobodys Помощь студентам 10 04.11.2008 14:10
Подскажите как реализовать эту ерунду.. Origammi JavaScript, Ajax 2 17.08.2007 23:49