Форум программистов, компьютерный форум CyberForum.ru

Разработать класс (Объект «рациональная дробь, представлен парой целых чисел») - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как изменить размер компонентов? http://www.cyberforum.ru/cpp-beginners/thread938795.html
Доброго времени суток. Пишу сенсорное приложение на Builder c++ 2009. Подскажите пожалуйста, есть ли возможность изменить размер кнопок и календаря компонента DateTimePicker? Такой же вопрос по поводу checkbox и ячеек dbgrid. По поводу dbgrid инфу нашел, но не до конца понял (изменить размер ячеек, не меняя размер шрифта).
C++ Написать программу, демонстрирующую работу с классом для работы с рациональными дробями Составить описание класса. Определить конструктор по умолчанию, конструктор с параметрами и методы класса. Написать программу, демонстрирующую работу с классом для работы с рациональными дробями вида m/n, где m и n – целые числа. Реализовать методы класса: ввод дроби; сложение двух дробей; вычитание двух дробей; умножение двух дробей. http://www.cyberforum.ru/cpp-beginners/thread938790.html
Найти на отрезке [-10;10] абсциссу точки минимума функции. Исправить ошибки C++
Приветствую всех. Такая проблема: Делаю лабораторную работу, нужно отобразить результат работы программы в Visual C++ 2005 она работает, а вот в C++ 2008 не работает. Нужна ваша помощь, я не очень опытный в программиоровании: Это результат компиляции: 1>------ Построение начато: проект: 123, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>1234.cpp 1>Компиляция манифеста в ресурсы...
C++ Преобразовать тип данных char[] -> wchar -> BYTE для структуры DATA_BLOB crypt32.dll
Помогите, пожалуйста, написать за меня: 1) преобразование аргумента ком. строки -> в Unicode (какой не знаю): пытаюсь перевести код, данный в статье: http://www.remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/ Нужно подставить в строки №№ 32, 57. #pragma comment(lib, "crypt32.lib") #include <windows.h> #include <stdio.h> // printf #include <stdlib.h> // system
C++ Hello world http://www.cyberforum.ru/cpp-beginners/thread938707.html
Здравствуйте при написании hello world возникает такая ошибка: error C2146: syntax error : missing ';' before identifier '_getch' Вот мой код #include "stdafx.h" #include <conio.h> #include <stdio.h> using namespace System;
C++ Пустой конструктор без аргументов Всем доброго времени суток. Я сейчас в процессе изучения С++, читаю книгу Лафоре "Объектно-ориентированное программирование в С++". На странице 242 имеется код, в котором используется пустой конструктор без аргументов. Вопрос: для чего он нужен? Неполный код: class card { private: int number; подробнее

Показать сообщение отдельно
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
16.08.2013, 14:56     Разработать класс (Объект «рациональная дробь, представлен парой целых чисел»)
Цитата Сообщение от Мимино Посмотреть сообщение
Всегда приятно пообщаться с умными людьми Я смотрю, у Вас везде "говнокод". И при этом во всех Ваших 362 сообщениях ни одной строки "своего" кода, а только попытка унижения собеседников путем высказываний о их "необразованности". Интересно, это вообще с какой целью?
не опускайтесь до моего уровня: в моих сообщениях есть мой собственный код.
что касается разговоров по сути дела... мне показалось, что нужно намекнуть и вам, и людям, которые, возможно, захотят использовать ваш код, что в нем есть фрагмент, содержащий очень непрактичную и вычислительно сложную реализацию простого алгоритма. я имел ввиду вычисление НОК двух целых чисел. вы изволили находить его перебором чисел на полуинтервале [1; +∞). в то время как можно искать его быстрее.
воспользуемся простой математической формулой: http://www.cyberforum.ru/cgi-bin/latex.cgi?lcm(a, b) = \frac{a * b}{gcd(a, b)}
схематично докажем ее:
даны натуральные числа a, b.
обозначим g такое число, что http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases} & \text{} g \mid a \\  & \text{} g \mid b  \end{cases}

тогда мы можем однозначно определить: http://www.cyberforum.ru/cgi-bin/latex.cgi?a = g * {k}_{a}, http://www.cyberforum.ru/cgi-bin/latex.cgi?b = g * {k}_{b}, http://www.cyberforum.ru/cgi-bin/latex.cgi?a * b = g * {k}_{a} * g * {k}_{b}
произведение http://www.cyberforum.ru/cgi-bin/latex.cgi?{k}_{a} * g * {k}_{b} удовлетворяет требованием lcm(a, b), так как очевидно делится на a, b, при этом оно удовлетворяет критерию минимальности, т.к: http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}  gcd({k}_{a}, {k}_{b}) = 1  \\   gcd({k}_{a}, g) = 1 \\   gcd({k}_{b}, g) = 1  \end{cases}

программно это можно реализовать, например, так:
C++
1
2
3
int lcm(int a, int b) {
   return (a / gcd(a, b)) * b;
}
стоит заметить, что такая последовательность операций предпочтительна, потому как позволяет избежать переполнения.

P.S. что касается вашего последнего вопроса. цель в том, чтобы люди хотя бы в "a+b" не писали говно всякое.
 
Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru