Дата активности | Видеокурс | Прогресс | ||
---|---|---|---|---|
2020-04-05 | gmaps | ASP.NET и GMaps | 28 % | |
2020-03-30 | sweep | Боты Сапёра | 13 % | |
2020-03-28 | sokoban | Сокобан | 92 % | |
2020-03-02 | iterator | Итератор | 70 % | |
2018-10-05 | chess3 | Шахматы по сети | % | |
2018-07-22 | game1 | Нано-игры | 10 % | |
2018-07-17 | soft0 | Демо софт | 72 % | |
2018-07-12 | webapi | Web API | % | |
2018-07-09 | wpf2 | Простой WPF | % | |
2018-07-01 | game0 | Демо игры | 70 % | |
Итого: | 28 % |
Дата активности | Консольный раздел | Прогресс | ||
---|---|---|---|---|
2022-09-04 | task2 | Алгоритмика | 40 % | |
2020-04-15 | task1 | Календарь | 100 % | |
2020-03-12 | base | Футбольная База | % | |
2019-01-12 | task1 | Цифры | 92 % | |
2019-01-11 | task1 | Целые задачи | 100 % | |
2019-01-06 | task1 | Геометрия | 100 % | |
2019-01-05 | task1 | Символы | 100 % | |
2019-01-04 | task1 | Формулы | 100 % | |
2019-01-03 | task1 | Лирика | 93 % | |
2018-12-22 | task1 | Строки | 100 % | |
2018-12-14 | task1 | Целые числа | 100 % | |
2018-11-15 | task1 | Семантика | 100 % | |
2018-10-18 | club | 6203 - Николай | 17 % | |
2018-10-17 | cpp | С++ | % | |
2018-10-01 | olimp | Олимпиада | 5 % | |
Итого: | 77 % |
Рад, что ты всё-таки решил эту задачу :-)
Прости, что не помог (не увидел вовремя твоё сообщение) :-(
Да, задачи непростые. Я тоже с ними намучился изрядно, а последнюю так и не решил.
Все, задачу решил. Увидел в одной из задач твое решение, оказывается, надо было использовать поле number, а я по айдишнику сортировал и выводил. Ну, и намучился же я с этой задачей.
Привет, не подскажешь в седьмой задаче, почему пишет, что неправильный результат в первой строке третьем столбце? Вроде должно работать, но не работает почему-то.
SELECT team.name, team.id, player.name, player.surname
FROM player
INNER JOIN team ON team.id = player.team_id
WHERE player.role = 'goalkeeper'
ORDER BY team.name, team.id
Дима привет! не знаю читаешь ты моё сообщение или нет, но хочу тебе сказать огромное спасибо за твой совет ты мне очень сильно помог. Александр Шевчук крут нереально. Мужское тебе рукопожатие. Хорошего настроений и удачи во всем =)
program.cs(15,2): error CS1513: } expected
Это значит, что на 15 строке во 2 столбце ожидается закрывающая фигурная скобка }.
кратчайший путь - штука тонкая, здесь много ньюансов надо будет учитывать, которые на картах не видны (рельеф местности, постройки) . asp.net - поработай обязательно
И ещё. На первых порах не старайся выучить кучу языков. Язык - это ещё не программирование. Постигай основы программирования (общие конструкции языков: циклы, условные операторы и т. д; алгоритмы и т. д.) на примере одного языка. И вот, когда ты постигнешь основы, то с лёгкостью сможешь изучить не один десяток других языков. Успешного тебе изучения :-)
Спасибо за такой развернутый ответ, да я сейчас в самом начале пути. Тут нравится что практика есть, параллельно метанит читаю, когда вопросы есть. Большое желание стать разработчиком и понимаю что процесс тяжелый, хочу получить первичные знания что бы выполнять простейшие задания, а там по нарастающей буду развиваться. =) если есть Telrgram оставь контакт вдруг вопросы будут, смогу тебе написать может быть поможешь =) или тебе что то надо будет в Краснодаре обращайся помогу чем смогу=)
Денис, прости, сейчас совершенно нет времени (тем более на видеоотчёты). Но при первом же удобном случае обещаю выполнить твою просьбу. О каких нюансах ты говоришь? Показать код я не могу (у меня 99,9 % кода - это код с этого проекта, а публикация материалов этого проекта запрещена его пользовательским соглашением). Почти все замечания я указал в комментариях к урокам. А те, которые не указал касаются архитектуры (проектирования программы, чем в IT-компаниях, в основном, занимаются архитекторы, а не программисты). Я, вообще, изменил бы всю архитектуру игры. А это значит, что придётся переписать весь курс заново, что займёт достаточно много времени, которого, как я уже говорил, у меня сейчас не так много. Изменение архитектуры потребуется тебе только в том случае, если ты соберёшься делать игру на продажу (а это также запрещено пользовательским соглашением данного проекта) или другой платформы (например, Android) надумаешь её в дальнейшем развивать. А это со старой архитектурой, как мне кажется, будет сделать непросто (я поспешил, указав на костыли, потому что уже в следующем уроке Евгений Витольдович сам признаёт, что под конец, к сожалению, получились небольшие костыльки, и что нужно было с самого начала лучше проектировать игру)). Если же ты хочешь написать игру лишь для того, что бы потом самому поиграть, пиши, играй и не заморачивайся. Она написана достаточно хорошо и у меня сбоев в её работе не было. Если же ты планируешь стать высококвалифицированным программистом и хочешь посмотреть чистый, хорошо спроектированный профессиональный код, то с этим могут возникнуть сложности: на этом проекте его, по всей видимости, немного (из того, что я видел на этом проекте, очень хорошо написан на java Сапёр), а в сети найти такой код - большая удача, но об этом чуть позже. Я, вообще, начал прохождение курсов "Сокобан" и "Боты сапёра" с одной лишь целью - посмотреть, как реализованы алгоритмы "поиск вширь" и "чтение памяти другой программы" (хакерский бот сапёра (31 урок!). Но поскольку к урокам нельзя получить произвольный доступ (только последовательный!), то, сам видишь, сколько лишнего времени приходится тратить на ненужное. А, ведь, нужные мне уроки никак не связаны с предыдущими. Например, в уроке "Хакерский бот сапёра", скорее всего, выясняется адрес области памяти, "открывающей" минные поля, и из неё с помощью API-функции системы Windows считываются необходимые данные (не зря же указано, что для эксперимента нужна версия Сапёра для Windows XP!). А вот теперь скажи, как всё это связано с материалом из предыдущих уроков? На мой взгляд, никак. А в Сокобан уроки про тестер, мышку и яблоко мало связаны с предыдущими. Можно сказать, что вообще никак не связаны. А помещены они в конец, по всей видимости, для стимуляции интереса.
Понимаешь, Денис, я сам не являюсь высокопрофессиональным программистом. Программирование - это моё хобби. Начинал его постигать 14 лет тому назад с Turbo Pascal, который привил мне хороший стиль программирования и дал хорошую базу для быстрого освоения более современных языков. Затем были такие языки, как Delphi, C, C++, Java, Assembler. Вот сейчас - C#. И, честно сказать, за всё это время я и сам практически не видел чистый, хорошо спроектированный высокопрофессиональный код. Поэтому, если твоя цель - стать грамотным профессионалом, всё, что я могу - это порекомендовать следующие ресурсы:
1. itvdn.com (курс C# Александра Шевчука (курс платный (нужно купить подписку), но, поверь, он того стоит). На этом ресурсе есть бесплатные вебинары, среди которых встречаются и вебинары Евгения Витольдовича (очень хороший вебинар по пятнашкам для Android), и много ещё чего качественного и интересного.
2. videosharp.info. Преимущество этого сайта в том, что здесь можно хорошо попрактиковаться, но качество кода и подача материала, в большинстве своём, оставляют желать лучшего.
3. М. Дрейер "C# для школьников", учебники Павловской, Шилдта, Рихтера (CLR via C#), Роберт Мартин "Чистый код".
4. ru.stackoverflow.com (ru.stackoverflow.com/questions/416644/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D1%8B%D0%B9-%D0%B8-%D1%87%D0%B8%D1%82%D0%B0%D0%B5%D0%BC%D1%8B%D0%B9-%D0%BA%D0%BE%D0%B4, ru.stackoverflow.com/questions/416584/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8-%D0%B8-%D1%83%D1%87%D0%B5%D0%B1%D0%BD%D1%8B%D0%B5-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B-%D0%BF%D0%BE-c)
5. metanit.com
Думаю, для начала достаточно. Будут вопросы - пиши.
Хорошая работа! Дмитрий я новичок в программировании, просмотрел уже несколько твоих отчетов по реализации этой игры, вроде не видел, что бы ты записывал видео отчет в конце =) у меня к тебе просьба сделай видео отчет расскажи про нюансы. Тоже хочу реализовать эту игру будет интересно тебя послушать. Спасибо!
Пфф.... Ну мне до таких выводов как до луны))) Да косяки и грабли. Но наверное всё же собственные грабли и часы проведенные в их поиске принесут более ценный опыт. Я рассматриваю этот ресурс как совсем базовый. Я вот впервые программировать начал еще в школе, 28 лет назад. Мне это интересно. Но Это не моя профессия. у меня все эти 30 лет перерыв, в силу жизненных обстоятельств. Сейчас хочется в жизни чего то поменять. Дети почти выросли. И профессию хочется для души, а не для "прожить".
Но за 30 лет технлогии ускакали в неведомые дали. И в несколько подходов я никак не мог понять суть ООП. И книжки читал и видео смотрел. Никак. На полиморфизме у меня неминуемо наступал взрыв мозга. И знаете - это единственное место где у меня получилось и до меня дошло, как это работает. На 16 уроке. Все 16 уроков программа разрасталась в ужасного монстра. И вот сейчас красота! В этом курсе костыли натыканы просто в ужасном количестве. Но без них, я бы не озверел и не увидел красоту и необходимость ООП.
За другие курсы сказать пока ничего не могу.
С моей низкой колокольни пока все выглядит оправдано. Возможно через пару лет практики я, так же как вы, буду плеваться от всего здесь происходящего)))
Пожалуйста. Рад был помочь :-)
Успехов в обучении интересному делу, программированию!
Этот вопрос лучше задать не мне, а Евгению Витольдовичу :-). Судя по тем курсам, которые я видел, могу сказать, что ошибки устраняются не всегда и не везде. И хорошо, если вы их видите. А если нет?..
Если нет, тогда вы будете учиться неправильному, думая, что учитесь правильному. Постепенно у вас сформируется навык писать плохой код. И самое страшное здесь то, что вы об этом даже не будете подозревать.
Вот вам наглядный пример на C++:
void Dangerous()
{
char buf[1024];
char input[2048];
..........................
strcpy(buf, input)
}
В этом примере я копирую содержимое буфера input в локальный буфер buf. Проблема кроется в функции strcpy, которая просто не проверяет количество копируемых данных. Всё, что получено в переменной input, будет скопировано в buf, вне зависимости от размера приёмника, и если приёмник будет меньше, то его данные перепишутся и уничтожатся даже за пределами буфера. Но я этого не вижу (я считаю это правильным кодом, я уже привык так писать!).
Что дальше? А дальше либо выполнение программы аварийно завершится, просто, потому что были "затёрты" важные данные, либо данной уязвимостью воспользуется хакер, который вначале пошлёт мне пакет со своим вредоносным кодом, который запишется в массив buf, а затем заставит процессор выполнить этот код, переписав в стеке адрес возврата из функции Dangerous на адрес переменной buf. И то, и другое достаточно печально, не правда ли?
Как решить данную проблему? Очень просто. Нужно с самого начала приучать себя писать ПРАВИЛЬНЫЙ код. В данном случае нужно было проверить, достаточно ли в буфере-приёмнике места, чтобы принять все входящие данные. Если нет, то можно скопировать только достаточный объём данных, т. е. 1024 байта, которые мы выделили в массиве buf, а можно сгенерировать сообщение об ошибке. Это уже зависит от конкретной ситуации.
Вот ещё один пример на C#:
1 int a = 3;
2 object o = a;
3 int b = (int)o;
Здесь:
- На первой строке объявляется переменная а типа int, которой присваивается значение 3.
- На второй строке объявляется переменная o типа object, которой присваивается значение переменной а.
Поскольку object - ссылочный тип, а int - значимый, в стеке выделяется память для ссылочной переменной о, в управляемой куче - область для хранения переменной типа int. В эту область копируется значение переменной а, и адрес данной области памяти записывается в переменную о. Этот процесс называется упаковкой значимого типа.
- На третьей строке объявляется переменная b типа int, которой присваивается значение переменной o типа object приведённое к типу int.
Поскольку object - ссылочный тип, а int - значимый, в стеке создаётся переменная b, в которую копируется значение расположенное по адресу, хранящемуся в переменной o. Этот процесс называется распаковкой значимого типа.
Оба процесса достаточно ресурсоёмкие. Если подобного кода будет много, можно получить ужасно "тормозную" программу. А потом часами сидеть и недоумевать: почему же так вышло?
Вот видите сколько нюансов нужно учитывать программисту, насколько необходимо быть внимательным, усидчивым и трудолюбивым (И легче ему же самому будет, если он этому станет учиться ПРАВИЛЬНО СРАЗУ!). Ну, и ещё желательно знать предметную область, для которой он пишет программу :-)
Понятно, что этот проект собирает людей с разным уровнем знаний, умений и навыков в области программирования. И не знаю как другим, а мне хочется на этом проекте видеть уже более профессиональный и масштабный курс :-)
Молодец, что написал про то какие можно внести изменения даже скрин сделал себе, потом когда доберусь до этой игры обязательно воспользуюсь советом. Спасибо =)
столько написал, аж непонятно кто у кого учится. Как я понимаю по другому курсу, многие костыли здесь втыкаются намеренно и потом по мере развития проекта устраняются с обучательной целью. Не? Не так?
При изучении материала, всегда вопрос времени становится на первое место, особенно важно заниматься именно каждый день, чтоб не терялись навыки и был виден прогресс. Успехов в этом не легком деле ;)
Зачем менять какие-то настройки,
когда можно второй скриншот сделать ?
SELECT number, surname, COUNT(*) AS yellow
FROM player, (SELECT player_id, type FROM action
WHERE type = "yellow" OR type = "red"
UNION ALL SELECT player_id, type FROM action
WHERE type = "red") AS act
WHERE player.id = act.player_id
GROUP BY player.id
ORDER BY yellow DESC
Что теперь ему не нравится?! Этот вариант учитывает, что 1 красная карточка = 2 жёлтым.
Подписка в Клуб формулистов обновлена.
Количество дней: +30
Количество байт: +256
Подписка КФ до: 2020-04-11
Остаток байтов: 256
Вы являетесь участником Клуба формулистов.
Небольшая правка предыдущего сообщения:
РЕКУРСИЯ - это ВЫЗОВ функцией САМОЙ СЕБЯ. И такая ФУНКЦИЯ, которая ВЫЗЫВАЕТ САМУ СЕБЯ, называется РЕКУРСИВНОЙ.
Ваше определение подходит для РЕКУРСИВНОЙ ФУНКЦИИ, а не РЕКУРСИИ!
Из Википедии:
"В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция вызывает функцию , а функция — функцию . Количество вложенных вызовов функции или процедуры называется глубиной рекурсии. Рекурсивная программа позволяет описать повторяющееся или даже потенциально бесконечное вычисление, причём без явных повторений частей программы и использования циклов."
Чувствуете разницу между ФУНКЦИЕЙ и её ВЫЗОВОМ? РЕКУРСИЯ - это ВЫЗОВ функцией самой себя. И такая ФУНКЦИЯ, которая вызывает саму себя, называется РЕКУРСИВНОЙ.
Надеюсь, что в будущем путаницы в данных понятиях у вас не будет.
Эту задачу решил методом "тыка"!
SELECT number, surname, COUNT(*) AS goals FROM player, action
WHERE player.id = player_id AND type = 'goal'
GROUP BY number
ORDER BY goals DESC
Считаю, что в соответствии с условием задачи правильно было бы группировать по столбцу "player.id" или "player_id", а не по "number" (номера игроков совпадают, и количество голов подсчитывается для номера, а не игрока!!!).
Почему же тогда робот Шарп считает это неправильным?!
SELECT number, surname, COUNT(*) AS yellow FROM player, action
WHERE player.id = player_id AND type = "yellow"
GROUP BY player.id
ORDER BY yellow DESC
Робот Шарп говорит: "Количество строк у вашего запроса и правильного ответа не совпадает".
Подскажите, пожалуйста, что я неправильно написал? Заранее благодарен.
Надо дать кладовщике по шапки чтобы не безобразничал,
А то и что удумал, иногда быстро бегать.
Thank you very much, Дмитрий) But it was in May) After that, in November, the marathon on algorithmic and semantics was held on the portal of VideoSharp. And since by that time I had already successfully pumped my skills – as proof of my words - I successufully solved 300 tasks and therefore coped with this))
Thanks anyway)
Цифра - это знак для записи числа. Знак не может быть чётным или нечётным. Чётным или нечётным может быть число. Поэтому корректнее сказать так: "0 - тоже число, и оно чётное".
Виктор, вот это лишнее:
"int b;
if (number % 10 == 0)
b = 0;
else".
Вот такой код
(using System;
class VideoSharp
{
static void Main()
{
int number = int.Parse(Console.ReadLine());
int a = number / 10;
int b = number % 10;
int number2 = b * 10 + a;
Console.WriteLine("{0:d2}", number2);
}
}) даст тот же результат.
Проблема в строке "Console.WriteLine("{0:d2}", number2);". Двузначный формат вывода не нужен: "Console.WriteLine(number2);".
t = Math.Abs(a - b * Math.Pow(x, 1/3.0)) / b * Math.Log(Math.Abs(a*a + x));
Посмотрите, в каком порядке у вас выполняются операции:
1. y = Math.Abs(a - b * Math.Pow(x, 1/3.0)) / b.
2. y * Math.Log(Math.Abs(a*a + x)).
Т. е. Math.Log(Math.Abs(a*a + x)) оказывается в числителе, хотя по условию это выражение стоит в знаменателе.
Измените порядок операций с помощью круглых скобок, и робот Шарп примет решение.
Вот так: t = Math.Abs(a - b * Math.Pow(x, 1/3.0)) / ( b * Math.Log(Math.Abs(a*a + x)) );
Да я только вникаю. Получается трудно - нет прежней эластичности мозга - старый, но мне всегда нравилось изучение всего нового. Спасибо Вам за обстоятельную рекомендацию.
Исправьте строки кода, начиная с int a1 и заканчивая a5, и будет 100 %.
int a1 = line1.Length; // вы определяете НЕ ЭЛЕМЕНТ, а ДЛИНУ массива строк и присваиваете её переменной a1.
int a1 = int.Parse(line1[line1.Length - 1]); // Надо так:
// Вы определяете длину массива строк line1: line1.Length;
// Вычитаете из неё 1, так как массивы в C# индексируются, начиная с 0 (Следовательно, последний номер массива на 1 меньше его длины).
// Выбираете элемент массива строк line1: line1[...];
// Преобразуете его к типу int: int.Parse();
// И присваиваете полученный результат переменной a1, имеющей тип int.
На мой взгляд, такой код чище:
using System;
public class Program
{
static void Main()
{
string[] num1 = Console.ReadLine().Split();
string[] num2 = Console.ReadLine().Split();
string[] num3 = Console.ReadLine().Split();
string[] num4 = Console.ReadLine().Split();
string[] num5 = Console.ReadLine().Split();
int a1 = int.Parse(num1[num1.Length - 1]);
int a2 = int.Parse(num2[num2.Length - 1]);
int a3 = int.Parse(num3[num3.Length - 1]);
int a4 = int.Parse(num4[num4.Length - 1]);
int a5 = int.Parse(num5[num5.Length - 1]);
Console.WriteLine("{0} {1} {2} {3} {4}", a1, a2, a3, a4, a5);
Console.WriteLine(a1 + a2 + a3 + a4 + a5);
}
}
Смотрите внимательнее видео.
Кроссплатформенное (Android, iOS, Windows Phone, Windows) приложение удалённого родительского (административного) контроля. Принцип действия следующий: на контролируемое устройство устанавливается клиент, настраиваемый удалённо с сервера (установлен на устройстве контролирующего). Этот клиент скрытно (не определяется диспетчером задач, антивирусами, файерволами и т. д.) в автоматическом режиме блокирует рекламу и другой нежелательный контент, пресекает контакты пользователя (ребёнка) с незнакомыми людьми путём блокировки звонков с незнакомых номеров, писем с незнакомых адресов, сообщений в мессенджерах (таких, как Viber, WhatsApp и др.) и т. д. Но у контролирующего (родителя, администратора) есть возможность всё это делать самому (вручную, удалённо). И еще: программа прописывается в системную область (становится частью ядра системы) и не удаляется оттуда. Не удаляется она и при аварийном сбросе на мобильном устройстве.
Я понимаю, что тема достаточно "щекотливая". По сути это создание потенциально вредоносной программы. Поэтому скажу сразу: "Я никогда не тратил время на создание вредоносных программ, никого к этому не склонял и не собираюсь это делать. Я лишь хочу:
1. Чтобы использование ИТ было приятным и безопасным.
2. Научиться создавать программы, обеспечивающие эту безопасность.
Редактор не загружается - не могу ввести текст программы.
Решил!!! Робот Шарп: "ИТОГО: 100%".
Вот код на C++:
//www.VideoSharp.info/Консоль/For-to-чки/Сумма квадратов
#include <iostream>
using namespace std;
class decimal {
private:
int num[38];
int size;
public:
decimal(const long long value = 0) {
*this = value;
}
const decimal& operator =(long long value) {
size = 0;
num[0] = value % 10;
value /= 10;
while (value > 0) {
num[++size] = value % 10;
value /= 10;
}
return *this;
}
friend
const decimal& operator +=(decimal& dec1, long long dec2) {
int buf = 0;
for (int i = 0; i <= dec1.size; i++) {
buf += dec1.num[i] + (dec2 % 10);
dec1.num[i] = buf % 10;
buf /= 10;
dec2 /= 10;
}
while (buf > 0 || dec2 > 0) {
dec1.num[++dec1.size] = (buf % 10) + (dec2 % 10);
buf /= 10;
dec2 /= 10;
}
return dec1;
}
friend
ostream& operator <<(ostream& oStream, const decimal& dec) {
for (int i = dec.size; i >= 0; i--)
oStream << dec.num[i];
return oStream;
}
};
int main() {
long long N;
cin >> N;
long long k = 1;
long long l = 0;
decimal sum(0);
while (k < (N + N)) {
l += k;
sum += l;
k += 2;
}
cout << sum;
return 0;
}
В глаза бросаются лишние строки: "int k;" и "k=10*i+2;". Удалите их. Ещё, возможно, запрещён ввод из файла (нужно с клавиатуры).
Помимо способа, предложенного в видеорешении, есть и такой (умножение заменяется сложением):
using System;
class Sqr
{
static void Main()
{
long N = long.Parse(Console.ReadLine());
long k = 1;
long l = 0;
decimal sum = 0;
while (k < (N + N))
{
l += k;
sum += l;
k += 2;
}
Console.WriteLine(sum);
}
}
Опишите sum как decimal.
В выше приведённом коде реализованы алгоритмы поразрядного сложения и умножения столбиком (надеюсь, правильно), хотя перепробовал я и другие известные мне способы реализации данной задачи (ничего путного не вышло (Точность представления числа оставляет желать лучшего!)).
К чему такие сложности? А к тому, что в C++ и Turbo Pascal нет типа, эквивалентного C#-ому "decimal". В C++ ещё можно описать переменную как "__int128", но дальше этого дело у меня не пошло. Нет подходящих функций-операций, а перегрузить имеющиеся не получается. Есть такое ощущение, будто данный тип не поддерживается компилятором C++.
Подскажите, пожалуйста, что не так с кодом (Тест 005: ТАЙМАУТ 5 СЕК.).
Уже 8-й день голову ломаю над тем, что не нравится роботу Шарпу (ведь у меня всё работает замечательно и на Turbo Pascal, и на C++, и на Java)!
Вот код на C++:
//www.VideoSharp.info/Консоль/For-to-чки/Сумма квадратов
#include <iostream>
using namespace std;
class decimal {
private:
int num[38];
int size;
void AlignBorders(decimal& res, const decimal& dec1,
const decimal& dec2) {
res.size = (dec2.size > dec1.size) ? dec2.size : dec1.size;
for (int i = 0; i <= res.size; i++) res.num[i] = 0;
}
void AlignBorders(decimal& dec1, decimal& dec2) {
if (dec2.size > dec1.size) {
for (int i = dec1.size + 1; i <= dec2.size; i++) {
dec1.num[i] = 0;
}
dec1.size = dec2.size;
} else {
for (int i = dec2.size + 1; i <= dec1.size; i++) {
dec2.num[i] = 0;
}
}
}
void UnloadBuf(int& buf) {
while (buf > 0) {
num[++size] = buf % 10;
buf /= 10;
}
}
public:
decimal(const long int value = 0) {
*this = value;
}
const decimal& operator =(long int value) {
size = 0;
num[0] = value % 10;
value /= 10;
while (value > 0) {
num[++size] = value % 10;
value /= 10;
}
return *this;
}
friend decimal operator *(decimal dec1, decimal dec2) {
decimal res(0);
res.AlignBorders(res, dec1, dec2);
int buf = 0;
for (int i = 0; i <= dec1.size; i++) {
for (int j = 0; j <= dec2.size; j++) {
int p = i + j;
if (p > res.size) res.size++;
else buf += res.num[p];
buf += dec1.num[i] * dec2.num[j];
res.num[p] = buf % 10;
buf /= 10;
}
res.UnloadBuf(buf);
}
return res;
}
friend decimal& operator +=(decimal& dec1, decimal dec2) {
dec1.AlignBorders(dec1, dec2);
int buf = 0;
for (int i = 0; i <= dec1.size; i++) {
buf += dec1.num[i] + dec2.num[i];
dec1.num[i] = buf % 10;
buf = (buf > 9) ? 1 : 0;
}
if (1 == buf) dec1.num[++dec1.size] = 1;
return dec1;
}
friend ostream& operator <<(ostream& oStream, decimal& dec) {
for (int i = dec.size; i >= 0; i--) oStream << dec.num[i];
return oStream;
}
};
int main() {
long int N;
cin >> N;
decimal sum(0);
for (long int i = 1; i <= N; i++)
sum += decimal(i) * decimal(i);
cout << sum;
return 0;
}
Только для этого нужно вступить в Клуб формулистов.
Я только за. Но не рекомендую одновременно на нескольких языках решать.
Вы тогда сначала прорешайте на одном языке, потом на другом, затем на третьем.
Так будет занчительно лучше.
Ошибся!
Корректный код:
using System;
using System.Collections.Generic;
namespace Converter
{
class Program
{
static void Main(string[] args)
{
int number = int.Parse(Console.ReadLine());
List<int> numArray = new List<int>();
{
int num = number;
while (num > 0)
{
numArray.Add(num % 5);
num /= 5;
}
}
for (int i = numArray.Count - 1; i >= 0; i--)
Console.Write(numArray[i]);
Console.WriteLine();
}
}
}
Привет, Александр.
Никакого разряда у меня нет. Играю в свободное время с родными и друзьями просто так, "для души".
Что касается программирования, могу порекомендовать в дополнение к этому сайту книги М. Флёнова, Г. Шилдта, Немнюгина, Т. Павловской, М. Дрейера, Страуструпа, Д. Рихтера (Сейчас читаю его книгу "CLR via C#", от которой просто в восторге (хотя и есть в ней мелкие ошибки, но материал подан очень подробно)), сайты metanit.com и ITDVN. Не сочти это за рекламу. Успехов в программировании!
Привет Дмитрий,в программирование ты преуспеваешь я смотрю. Молодец! А какой у тебя разряд по шахматам, ели не секрет?
Уроки здесь интересные и понятные, все разъясняют с самого нуля
Привет, быстрощелк прикольная игрушка, мышку от азарта можно поломать
Интересный получился лабиринт, сколько добавил уровней?
Молодец очень все хорошо сделал) Продолжай и все у тебя получиться ))
Раз желание есть, то станешь
Молодец Дима. Двигай дальше, там будут еще такие уроки.
Хорошо, обращу.
"Я ведь тоже развиваюсь ;)":
Понимаю. Программисты (как и люди многих других профессий) - это "вечные студенты". У немецкого драматурга Фридриха Кристиана Геббеля есть высказывание: "Жизнь - это бесконечное совершенствование. Считать себя совершенным - значит убить себя". Перефразируя это высказывание, можно сказать: "Программирование - это бесконечное совершенствование. Считать себя совершенным - значит убить в себе программиста".
Прочитал твоё сообщение, Дима.
Всё верно ты написал. Этот урок записывался несколько лет назад и я тогда не особо следил за корректностью фраз, поэтому получались такие ляпы. Рекомендую обратить внимание на последние созданные видеокурсы, для сравнения формы подачи. Я ведь тоже развиваюсь :)
И не только для новичков. Это уникальнейший (после itvdn.com) проект. Есть, конечно, в нём небольшие неточности. Например, такие как:
1. "Чем мне нравится язык C#? Тем, что мы ещё ни строчки кода не написали, а у нас уже готовая программа, способная транслироваться и запускаться". Только подобное высказывание относится не к конкретному языку программирования, а к среде Visual Studio. На языке C# можно писать программы и в обычном "Блокноте", а затем их транслировать в машинный код, используя интерпретатор компилирующего типа платформы ".Net".
2. "Создадим событие". Событие мы создаём тогда, когда кликаем кнопкой мышки, клавишей на клавиатуре и т. д. Но при написании программы мы создаём не событие, а метод-обработчик события, и привязываем его к определённому событию.
Но всё это меркнет на фоне той пользы, которую данные проекты приносят людям. Да не будет выше сказанное в обиду Евгению Витольдовичу. Кто из нас ни разу не ошибался? Ошибаются все. Только кто-то свои ошибки исправляет и, таким образом, совершенствуется, а кто-то нет. И в заключение: кажется, на данный момент лучше выше названных проектов в сети нет. Во всяком случае, я пока не нашёл. Тем более что данные проекты, как я понял, развиваются. Так пожелаем же успехов их авторам. И ещё: я указал на некоторые недостатки видеоуроков, а не их автора (думаю, что автор и сам их уже заметил), лишь с той целью, чтобы в дальнейшем они стали качественнее. Вообще, прежде, чем обсуждать кого-то или что-то, лучше посмотреть на себя и свои проекты. А каков ты? Так ли ты хорош, как мнишь о себе? Так ли хороши твои проекты. Когда я учился, вначале на химико-биологическом факультете СГУ, а затем на фармацевтическом СГМУ, преподаватели неустанно повторяли нам, своим студентам: "Запомните. Ставить себя выше своих коллег - это признак дурного тона, недостойный профессионала. Вы - команда, которая делает одно дело. И если ты разбираешься в чём-то лучше другого человека, помоги и ему в этом разобраться, а не ходи и не хвастайся, что ты умный, а он глупый".
P. S. Это только моё мнение. Кто-то может считать иначе.
Для новичков нормальный проект. Кроме проекта конечно много полезного при работе с компонентами, событиями и т.д. С чего-то надо начинать. А так неплохой проект.
Понятно. Некоторые задачи из раздела "Консоль" я уже решал. Действительно, было интересно и познавательно. Спасибо за те громадные труды, которые были вложены и продолжают вкладываться в этот замечательный ресурс и в людей, его использующих. Дальнейших вам успехов.
С уважением, Дмитрий.
Дмитрий, молодец. Не зацикливайся на этой программе - двигайся вперёд.
И, поскольку у тебя уже есть некоторый опыт - тебе будет интересно и полезно порешать задачи в рзаделе Консоль
Извините, из-за усталости ошибся в методе "timer1_Tick". Программа правильно работала только по счастливому стечению обстоятельств. А нужно было вот так:
private void timer1_Tick(object sender, EventArgs e)
{
Point point;
int spaceX, spaceY;
var stepX = this.stepX;
var stepY = this.stepY;
spaceX = moveObstacleX.Location.X - obstacle_1.Width;
if ( (this.stepX < 0) && (Math.Abs(this.stepX) > spaceX) )
{
stepX = -spaceX;
this.stepX = -this.stepX;
}
spaceX = obstacle_3.Location.X - (moveObstacleX.Location.X + moveObstacleX.Width);
if ( (this.stepX > 0) && (this.stepX > spaceX) )
{
stepX = spaceX;
this.stepX = -this.stepX;
}
point = moveObstacleX.Location;
point.Offset(stepX, 0);
moveObstacleX.Location = point;
spaceY = moveObstacleY.Location.Y - obstacle_2.Height;
if ( (this.stepY < 0) && (Math.Abs(this.stepY) > spaceY) )
{
stepY = -spaceY;
this.stepY = -this.stepY;
}
spaceY = obstacle_4.Location.Y - (moveObstacleY.Location.Y + moveObstacleY.Height);
if ( (this.stepY > 0) && (this.stepY > spaceY) )
{
stepY = spaceY;
this.stepY = -this.stepY;
}
point = moveObstacleY.Location;
point.Offset(0, stepY);
moveObstacleY.Location = point;
}
Поверхностное натяжение прекрасно. Зимой таких картинок не хватает.
Приветствую, Дмитрий! Ты зарегистрировался на уникальном ресурсе, посвященном языку программирования С# и не только, здесь изучается процесс создания программ с нуля до работающего прототипа с использованием широкого спектра современных технологий по принципу MVP, остальное ты можешь улучшать, добавлять, рефакторить по своему усмотрению. Желаю успехов!
Удачи, Дмитрий. У тебя всё самое интересное впереди. Всё получается!
Пропустили операцию вызова функции "( )" и описание параметра "int a":
нужно написать "static int fakt(int a) {" вместо "static int fakt{".
Я решил так:
byte N = byte.Parse(Console.ReadLine());
double sum = 0;
for (byte i = 1; i <= N; i++)
sum = Math.Sqrt(i + sum);
Console.WriteLine("{0:0.00000}", sum);
А можно и так:
код
[
byte month = byte.Parse(Console.ReadLine());
switch (month / 3)
{
case 1: Console.WriteLine("der Fruhling"); break;
case 2: Console.WriteLine("der Sommer"); break;
case 3: Console.WriteLine("der Herbst"); break;
case 4: case 0: Console.WriteLine("der Winter"); break;
}
].