Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Большие числа

Часто на олимпиадах встречаются задачи типа сложить два 50-значных числа, или посчитать 2 в 95-ой степени. Да и вообще задачи такого типа весьма популярны. Нашей группе на летней практике попалось решение квадратных уравнений с произвольными (в смысле величины) коэффициентами.

Идея решения состоит в создании собственного типа данных на основании массива, каждый элемент которого - цифра исходного длинного числа. Потом для этого типа данных определяются процедуры сложения, вычитания, умножения и что еще надо для решения конкретной задачи.

Для решения своей задачи я создал эдакий класс, перегрузил для него кучу операторов (+,-,*,/,<,>,<< ...), написал функцию sqrt. В классе два массива - один содержит цифры целой части, другой - цифры дробной. Для экономии места каждый байт содержит две цифры.

Потом я решил сделать его более универсальным. Результат этой попытки вы можете здесь лицезреть. Хотя я думаю многие программисты уже встречались с такой задачей, и вообще каждому полезно будет самому создать нечто подобное, но данный пример представляет интерес прежде всего как ПРИМЕР. И те кто ни разу не сталкивался ни с чем подобным, могут взять его за основу для своих проектов.

И imho это довольно сносный пример перегрузки операторов и создания собственных типов данных. а теперь минусы: не определен перевод из double в этот тип, довольно плохо отлажена, вывод только в поток ostream, процедуры не совсем оптимально реализованы.

В архиве лежат также и тесты на которых это все тестировалось. Для использования в Вашей программе, включите #include "LNum.h" , обьявляйте переменные CLNum a,b и пользуйтесь. Можно пользоваться приведением int a; CLNum b=(CLNum)a;

Скачать демонстрационный проект с исходником (Visual C++ 6.0) - 26 Kb



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS