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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
#1

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

02.07.2013, 21:36. Просмотров 1388. Ответов 3
Метки нет (Все метки)

Используйте преимущество ООП, заключающееся в том, что однажды
созданный класс можно помещать в другие программы. Создайте новую
программу, которая будет включать класс 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2013, 21:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Целочисленная таблица умножения дробей (C++):

Написать программу для умножения дробей - C++
Дроби представляются в виде строки, транслируется и на его основе формируется двумерный массив коэффициентов. Результат подавать в виде...

Не работает пример умножения и деления дробей - C++
Я переводил программу из паскаля, на паскале переменные в формате Реал а в си++ в Интежер. Так сделано потому что не смог преобразовать...

Написать функции вычисления сложения, вычитания, умножения и деления дробей - C++
Заданы две дроби (числитель и знаменатель – поля структуры). Напишите функции вычисления сложения, вычитания, умножения и деления дробей....

Программа должна выводить аналог целочисленной таблицы умножения для дробей - C++
Задача из учебника Р.Лафоре Доброго времени суток! Я изучаю С++ самостоятельно, по данному учебнику, столкнулся с задачей: Используйте...

Организовать производный класс, содержащий функции вычисления деления и умножения дробей - C++
Организовать производный класс, содержащий функции вычисления деления и умножения дробей, функцию приведения дроби к несократимому виду. ...

дана целочисленная таблица a[1..m]. - C++
дана целочисленная таблица a. среди элементов таблицы есть хотя бы один отрицательный. найти сумму s элементов расположенных после...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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;
}
1
Nazgul94
1 / 1 / 0
Регистрация: 22.11.2012
Сообщений: 24
02.07.2013, 23:33  [ТС] #3
Огромное спасибо. Теперь буду спать спокойно))
0
Maximum911
0 / 0 / 1
Регистрация: 19.01.2014
Сообщений: 10
29.01.2014, 18:11 #4
Тут явно не помешал бы манипулятор setw()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 18:11
Привет! Вот еще темы с ответами:

таблица умножения с++ - C++
Задача Разработать программу на языке С ++, предлагающую пользователю ввести целое число N и выводящую на консоль таблицу умножения от 1...

Таблица умножения - C++
Написал программу которая делает такое: 1.Юзер вводит число, таблицу умножения которого нужно вывести 2.Выводится таблица умножения...

Таблица умножения С++ - C++
1) Составить алгоритм вывода таблицы умножения следующего вида: - 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 ...

Таблица умножения - C++
Здравствуйте программисты! подскажите пожалуйста,как эту программу сдлать одним циклом. Зараннее благодарю. #include &lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.01.2014, 18:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru