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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
02.07.2013, 21:36     Целочисленная таблица умножения дробей #1
Используйте преимущество ООП, заключающееся в том, что однажды
созданный класс можно помещать в другие программы. Создайте новую
программу, которая будет включать класс 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 21:36     Целочисленная таблица умножения дробей
Посмотрите здесь:

Таблица умножения C++
C++ Написать функции вычисления сложения, вычитания, умножения и деления дробей
дана целочисленная таблица a[1..m]. C++
C++ Программа должна выводить аналог целочисленной таблицы умножения для дробей
C++ Организовать производный класс, содержащий функции вычисления деления и умножения дробей
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.07.2013, 22:27     Целочисленная таблица умножения дробей #2
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
int main()
{  
    setlocale(LC_ALL,"RUS");
    cout << "      Введите знаменатель:  " ; cin >> k; cout << endl;
// далее как в цикле сохранить и перемножить? 
  fraction f1, f2, f3;
  f1.den=f2.den=k;
  cout<<"*****";
  for(int j = 1; j < k; j++){   
                f1.num=j;
                f1.den=f2.den=k;
                f1.lowterms();
                f1.showfraction();
  }
  cout<<endl;
        for(int i = 1; i < k; i++){
            f2.num=i;
            f2.den=k;
            f2.lowterms();
            f2.showfraction();
 
            for(int j = 1; j < k; j++){   
                f1.num=j;
                f1.den=k;
                f3.umn(f1, f2);
                f3.lowterms();
                f3.showfraction();
            }
            cout<<endl;
        }
_getch();
return 0;
}
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
02.07.2013, 23:33  [ТС]     Целочисленная таблица умножения дробей #3
Огромное спасибо. Теперь буду спать спокойно))
Maximum911
0 / 0 / 1
Регистрация: 19.01.2014
Сообщений: 10
29.01.2014, 18:11     Целочисленная таблица умножения дробей #4
Тут явно не помешал бы манипулятор setw()
Yandex
Объявления
29.01.2014, 18:11     Целочисленная таблица умножения дробей
Ответ Создать тему
Опции темы

Текущее время: 16:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru