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

Целочисленная таблица умножения дробей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как использовать указатели? http://www.cyberforum.ru/cpp-beginners/thread916649.html
проблемы с указателями как правильно использовать, подскажите? #include <iostream> using namespace std; template <class T> struct Node { T value; Node *son; Node *brother; Node()
C++ Графика: Узор образован 20 вложенными квадратами Добрый вечер! На практике дали такое задание. Начертить узор. Узор образован 20 вложенными квадратами. Стороны первого квадрата параллельны осям координат экрана и равны 60. Вершины каждого последующего квадрата - это точки на сторонах предыдущего квадрата, делящие эти стороны в отношении 1 к 1. Я изучал только делфи и си не знаю.И написал код на делфи. Мне нужно перевести этот код на... http://www.cyberforum.ru/cpp-beginners/thread916647.html
C++ Как написать программу под эти условия
Суть в чём: есть список товара (багет 150 видов) с указанной ценой и шириной за метр, все цены разные, так же как и ширина непосредственно багета. Необходимо, чтобы в программе можно было ввести номер или код багета, а так же размеры будущей рамки длина - ширина, а в результате получить стоимость рамки + ширина багета умноженная на 10 (отходы). + как доп. опция отметить стекло. На сколько я...
Задача "Железнодорожный узел" C++
Железнодорожный сортировочный узел устроен так, как показано на ри-сунке. На правой стороне собрано в произвольном порядке несколько вагонов обоих типов по N штук. Тупик может вмещать все 2N вагонов. Пользуясь тремя сортировочными операциями: В, ИЗ, МИМО, собрать вагоны на левой стороне так, чтобы типы чередовались. Для решения задачи достаточно 3N-1 сортировочных операций. Не понимаю даже с...
C++ Чтение из файла http://www.cyberforum.ru/cpp-beginners/thread916605.html
Первый раз пишу программу такого типа, подскажите как правильно надо, я написал вот так, но пишет нарушение прав доступа при чтении, не могу понять как надо char fname="C://MyFile.txt"; FILE* f; f=fopen(fname,"rt"); TComposition* ptr=NULL; if (f) { while (!feof(f)) {
C++ Ошибка Unresolved external Доброго времени суток! Начал изучать С++. Пример прямо из учебника. Ошибка известная. Но решения найти не могу. Все рекомендуют искать и подключать библиотеки, в зависимости от того, что не может найти компилятор. Мне то что искать - и так все есть) Выполняю в Builder 6 Help me)) Unresolved external 'my_string::assign(const char *)' referenced from C:\USERS\ALEX\DESKTOP\C++\НОВАЯ... подробнее

Показать сообщение отдельно
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
02.07.2013, 21:36     Целочисленная таблица умножения дробей
Используйте преимущество ООП, заключающееся в том, что однажды
созданный класс можно помещать в другие программы. Создайте новую
программу, которая будет включать класс fraction, созданный в упраж-нении 11. Программа должна выводить аналог целочисленной таблицы
умножения для дробей. Пользователь вводит знаменатель, а программа
должна подобрать всевозможные целые значения числителя так, чтобы
значения получаемых дробей находились между 0 и 1. Дроби из получив-шегося таким образом набора перемножаются друг с другом во всевоз-можных комбинациях, в результате чего получается таблица следующего
вида (для знаменателя, равного 6):
1/6 1/3 1/2 2/3 5/6
-----------------------------------------
1/6 1/36 1/18 1/12 1/9 5/36
1/3 1/18 1/9 1/6 2/9 5/18
1/2 1/12 1/6 1/4 1/3 5/12
2/3 1/9 2/9 1/3 4/9 5/9
5/6 5/36 5/18 5/12 5/9 25/36



Вот такое задание в Лафоре, которое никак мне не удается. Оставил его и пошел читать следующую главу. Но все время возвращаюсь к этой проге( одна из нескольких задач, которые я не решил из 6 прочитанных мной глав книги). Просто не могу понять как сохранять значения полученных дробей в массиве объектов т.к. для массива должен быть определен константный размер. Подскажите каким другим методом построить данную таблицу. Если прога она занимает много времени, наплюйте на нее. Заранее спс.

Вот листинг программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <conio.h>
#include <locale>
 
using namespace std;//пространство мен
//////////////////////////
int k;
class fraction //класс, где за обьекты взяты дроби
{ 
    private:   
    
    public: 
        int num; // числитель
        int den; //знаменатель
        fraction(): num(0), den(0)           //конструкторы
        { }
        void showfraction()const  //вывод данных
        { cout << "   " << num << '/' << den << "   ";}
        void lowterms(); // метод сокращения дроби
        void umn(fraction f1, fraction f2)// метод умножения дроби
        {
          num = f1.num * f2.num;
          den = f1.den * f2.den;
        }
};
void fraction::lowterms()  // сокращение дроби
{ 
    long tnum, tden, temp, gcd;
    tnum = labs(num);  // используем неотрицательные 
    tden = labs(den);  // значения (нужен cmath)
    if(tden == 0)    // проверка знаменателя на 0
        { cout << "Недопустимый знаменатель!"; exit(1); }
    else if(tnum == 0)    // проверка числителя на 0
        { num = 0; den = 1; return; }
    // нахождение наибольшего общего делителя
    while(tnum!= 0) 
        { 
          if(tnum < tden)  // если числитель больше знаменателя,
             { temp = tnum; tnum = tden; tden = temp; } // меняем их местами
           tnum = tnum- tden;  // вычитание
        } 
    gcd = tden;  // делим числитель и знаменатель на
    num = num / gcd;    // полученный наибольший общий делитель
    den = den / gcd; 
}
 
 
 
int main()
{  
    setlocale(LC_ALL,"RUS");
    cout << "      Введите знаменатель:  " ; cin >> k; cout << endl;
// далее как в цикле сохранить и перемножить? 
    /*fraction f, f1, f3;;
        f.num = k - 1;
        f.den = k;
        f1 = f;
    for(int i = 1; i < k - 1; i++)
        {   
            f3.umn(f, f1);
            f.showfraction();
            cout << "  *  " ;
            f3.showfraction();
            cout << endl;
            f.num = k - 1;
            f.den = k;
        }*/
 
    
_getch();
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru