12rbah, неплохой вар, но у меня идет сразу рисование объекта графики в котором заданы точки с определенными координатами я конечно попробовал как то вывести из этого массива только четные элементы, но тогда придется каждую точку в отдельности брать и как то пропускать(ну или закрасить белым), но пока что у меня не выходило так сделать.Ща еще попробую метод встроенные поискать для этого, но желательно самому научиться так делать.
Т.е. сначала запустить одним потоком, потом двумя и так до 8, замерить время выполнения у каждого случая. И ниче что мы методам на вход так много данных указываем?
Taida, доров Дошел до служб в них копался, ничего. На инглишь ресурсах был, находил такую проблему, решения либо не было либо я это уже пробовал. В итоге сделал восстановление системы(что делать не хотел) только это помогло. Визуалка сама по себе тяжелая штука,думаю я что то в винде сделал и гг.(хотя вроде ее вообще не трогал)
Василий Банников, говорю же это просто задание для обучения, может специально так сделано для усложнения, но я вас понял, в реальных проектах так делать не буду(если бы не задание я бы так и сделал ибо тоже считал что каждый раз создавать и разбивать строку некорректно + приходилось мудрить с вычислениями т.к. не хотел чтобы с каждый рекурсивным вызовом создавались переменные ).
Дмитрий Павлов Изначально я так и делал, но я делал рекурсией и каждый раз заходя в метод он бы обновлял данные переменных на изначальные поэтому вышло так.
блиин пацаны сори это походу визуалка. я сначала метод G вызывал потом когда поменял на метод H слишком быстро компилятор запустил и она не успела увидеть и опять G вызвала.
Спасибо в общем все понял. По вопросам:
1.Почему в методе ReadInteger в в переменной promt прописан размер массива (просьба ввести) ведь ей такого не прописывали она даже не объявляется нигде?
2.В том же методе в if когда парсишь переменную и добавляешь в условие "не" это типа если мы не сможешь спарсить в int вводимые данные оператор это поймет и выведет что данные не являются int?
3.Если мы выходим за размер массива он это проверяет в методе ReadArrayLength но потом когда снова переходит на var number =... он переходит в метод ReadInteger почему (единственная моя догадка из-за модификатора out но он же просто изменяет значение по ссылке если я не ошибаюсь)
4.Опять не врубаюсь где находится в методе TryParseIntegerArray переменная number я понимаю что она есть и мы парсим и кладем в нее int элементы массива по очереди(по ссылке с помощью out) но где эта переменная гдеееее(она под прикрытием работает?D)
5.В том же методе он возвращает bool хотя мы возвращаем массив (мои мысли если мы сделаем массив то он вернет true иначе false) но массив он тоже возвращает (мне не верится что компилятор разрешит так сделать).
6.в том же методе зачем часть с if (я прогонял но не понял зачем она) + прочитал про метод класса Array.Clear и вообще запутался (что он делает я понял но зачем это делать нет).
7.В методе TryParseIntegerArray в операторе if условие спарсить элемент string[] в int т.е. когда он это делает даже при неверности условия действия в нем сохраняются?
8.При вводе числа для поиска повторений ты используешь метод ReadInteger для парсинга его в int?(опять же не понимаю что за prompt)
Крч сделал проверку через if. Вот код если кому интересно:
class Program
{
static int Sum(string str)
{
string str_value = str.Remove(0,3);
int[] arr_values = str_value.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(n => int.Parse(n)).ToArray();
// String.Split создает массив подстрок, разбивая входную строку по одному или нескольким разделителям
//StringSplitOptions.RemoveEmptyEntries возвращаемое значение не включает элементы массива содерж. пустую строку
//Select(n => int.Parse(n)).ToArray() метод Selest делает запрос в массив строк и конв. каждый эл-т в int, а результат в массив
int value = arr_values.Sum();
return value;
}
static void Main(string[] args)
{
Console.WriteLine("sum a1 a2 .. an $ sum /?");
while (true)
{
string str1 = Console.ReadLine();
if (str1.Length == 3)
{
if (str1.Substring(0, 3) == "sum")
{
if (str1 == "sum /?")
{
Console.WriteLine("Введите параметры в виде: sum a1 a2 .. an ");
continue;
}
Console.WriteLine("Сумма = " + Sum(str1));
continue;
}
}
Console.WriteLine("Введены неверные данные, повторите попытку ");
Василий Банников, да, но суть в том что идет команда sum a1 a2.. an которая распознает команду sum и считывает все элементы после, для их суммирования и если я ввожу string меньше 3 символов(потому что в sum 3 символа) что Remove что Substring выдают ошибку и я думал сделать проверку изначальной строки не через if или while (на количество входных символов к примеру) , а как то работая напрямую с Remove или Substring. Может там метод какой есть(или функция точно не знаю как это называется я еще слабоват).Если что мой метод Sum(str) считывает параметры через пробел и суммирует.