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

Вывести на экран дроби по заданному примеру - C++

Восстановить пароль Регистрация
 
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
20.11.2015, 15:02     Вывести на экран дроби по заданному примеру #1
Вывести все несократимые дроби от 0 до 1 со знаменателем от 2 до 7. Например:

2: 1/2
3: 1/3 2/3
4: 1/4 3/4
5: 1/5 2/5 3/5 4/5
6: 1/6 5/6
7: 1/7 2/7 3/7 4/7 5/7 6/7
Примерный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
void main(){
    setlocale(LC_ALL, "Russian");
    int i = 2, d;
    for (; i <= 7; i++)
    {
        cout << i << ": ";
        for (d = 1; i > d; d++)
        
            cout << d << "/" << i << " ";
            cout << "\n";
        
    }
    cout << "\n";
 
    system("pause>txt");
}

Так выводится следующее:

2: 1/2
3: 1/3 2/3
4: 1/4 2/4 3/4
5: 1/5 2/5 3/5 4/5
6: 1/6 2/6 3/6 4/6 5/6
7: 1/7 2/7 3/7 4/7 5/7 6/7
Как через if прописать в программу, чтобы не выводились дроби, которые можно сократить? (2/4, 2/6, 3/6, 4/6).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2015, 15:02     Вывести на экран дроби по заданному примеру
Посмотрите здесь:

C++ Вывести все Простые дроби из интервала (0; 1), знаменатель которых не превышает n.
вывести буквы по заданному количеству C++
C++ вывести на экран числа,вот по примеру ,там числа и знаки изменить надо
C++ Одномерные массивы. Вывести на экран массив, составленный из номеров элементов исходного массива, которые равны заданному значению.
Вывести: знак, целую часть, сокращенные числитель и знаменатель дроби C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gloat
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
20.11.2015, 15:08     Вывести на экран дроби по заданному примеру #2
емаё, не правильно задание прочитал ))
надо расписать функцию нахождения наименьшего общего делителя, (если нет в стандартных) и через неё прогонять цифры дроби.
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
20.11.2015, 15:12  [ТС]     Вывести на экран дроби по заданному примеру #3
Еще варианты есть?
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1865 / 1661 / 579
Регистрация: 14.05.2014
Сообщений: 4,771
Записей в блоге: 1
Завершенные тесты: 5
20.11.2015, 15:16     Вывести на экран дроби по заданному примеру #4
Error906, это из Лафоре что ли? Знакомая задачка.
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
20.11.2015, 15:20  [ТС]     Вывести на экран дроби по заданному примеру #5
Kerry_Jr, такую задачку нам задали в учебном заведении под название "ШАГ", если слыхали. Не знаю уж откуда преподаватель черпает подобные материалы.
Gloat
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
20.11.2015, 15:25     Вывести на экран дроби по заданному примеру #6
Error906,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
long Nod(long a, long b) // функция поиска НОДа
{
    while (a && b)
        if (a >= b)
           a %= b;
        else
           b %= a;
    return a | b;
}
if (NOD(a, b) == 1){ // после второго for ставишь
cout << d << "/" << i << " ";
cout << "\n";
}
http://cs613521.vk.me/v613521296/1205f/rBvpjE3jscE.jpg
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
20.11.2015, 15:28  [ТС]     Вывести на экран дроби по заданному примеру #7
Gloat , спасибо, но решение явно должно быть проще, ибо "функцию поиска НОДа" мы еще не учили, а задание уже выполнить нужно.

Как еще возможно выполнить?
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
20.11.2015, 15:31     Вывести на экран дроби по заданному примеру #8
перебирать делители числителя и знаменателя вручную
Gloat
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
20.11.2015, 15:31     Вывести на экран дроби по заданному примеру #9
Error906, принцип поиска НОДа на математике учат, а функция.., Вас учили писать функции?
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
20.11.2015, 15:34  [ТС]     Вывести на экран дроби по заданному примеру #10
Gloat, конечно. Но про НОД - впервые слышу, если честно. Других вариантов нет?
Gloat
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 26
20.11.2015, 15:40     Вывести на экран дроби по заданному примеру #11
Error906, как написали выше, перебирать вручную, а НОД, это математика,
http://math-prosto.ru/?page=pages/fi...k/find_nod.php
этот способ проще,
P.S.
наибольший общий делитель* (описался выше)
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1865 / 1661 / 579
Регистрация: 14.05.2014
Сообщений: 4,771
Записей в блоге: 1
Завершенные тесты: 5
20.11.2015, 15:43     Вывести на экран дроби по заданному примеру #12
Error906,
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
#include <iostream>
#include <cstdlib>
 
int main()
{
    bool divisible = false;
    for (int i = 2; i <= 7; ++i)
    {
        for (int j = 1; j < i; ++j)
        {
            divisible = false;
            for (int k = 2; k <= j; ++k)
                if (i % k == 0 && j % k == 0)
                {
                    divisible = true;
                    break;
                }
            if (!divisible) 
                std::cout << j << '/' << i << ' ';
        }
        std::cout << std::endl;
    }
    
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2015, 14:30     Вывести на экран дроби по заданному примеру
Еще ссылки по теме:

Из паскаля на с++. Вывести в порядке возрастания все простые несократимые дроби со знаменателем не большим m C++
C++ Вывести на экран только те целые числа отрезка [a, b], у которых сумма делителей равна заданному числу
C++ Как вывести текст из типизированного файла в компонент к примеру в memo или panel?

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

Или воспользуйтесь поиском по форуму:
Error906
0 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 34
23.11.2015, 14:30  [ТС]     Вывести на экран дроби по заданному примеру #13
Все оказалось гораздо проще.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
void main(){
    setlocale (LC_ALL, "Russian");
    int i = 2, d;
    for(;i <= 7; i++)
    {
        cout << i << ": ";
        for(d = 1;i > d; d++)
        if((d%2 || i%2) && (d%3 || i%3))
        cout << d << "/" << i << " ";
        cout << "\n";
    }
    cout << "\n";
 
    system("pause>txt");
}
Yandex
Объявления
23.11.2015, 14:30     Вывести на экран дроби по заданному примеру
Ответ Создать тему
Опции темы

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