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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
#1

сокрощение дробей - C++

17.02.2011, 22:07. Просмотров 1858. Ответов 9
Метки нет (Все метки)

Нужно сложить две дроби и по возможности сокротить, сложение то работает. А сокротить не получается, зависает
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
using namespace std;
 
int main(int argc, char *argv[])
{
   char ch;
   int a, b, c, d, ost1, ost2, g=10;
   cout << "Vvidite pervyu drob:"; // ввод дробей
   cin >> a >> ch >> b;
   cout << "Vvidite vtoryu drob:";
   cin >> c >> ch >> d;
   a=(a*d)+(c*b); // сложение дробей
   b=b*d;
 
   while (g>1) //сокрощение дробей
   {
    ost1=a%g;
    ost2=b%g;
    if (ost1==0 & ost2==0)     
    {
     a=a/g;
     b=b/g;  
     g--;   
     
                }
               }
   
   cout << "Cymma:" << a << "/" << b << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2011, 22:07     сокрощение дробей
Посмотрите здесь:

сложение дробей - C++
Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить функцию сложения этих дробей. Ответ должен быть несократимой дробью.

Классы дробей С++ - C++
Здравствуйте, помогите доделать класс дробей! Дан массив дробей, 1) нужно сравнить дроби, путём привидения к общему знаменателю 2) найти...

Массив из дробей - C++
Добрый вечер! Необходимо ввести дробные числа, которые хранятся в массиве, сложить их и найти среднее. Написал код: #include &quot;stdafx.h&quot;...

Упрощение дробей - C++
Здравствуйте! Сделал реализацию упрощения дробей. Есть две дроби. 7/6 и 3/18, когда &amp;&amp; сокращает только первую дробь. В чем ошибка? ...

Класс дробей - C++
Кто-нибудь может проверить код (программа производит операции с дробями, сокращает их, проверяет на переполнение и переопределяет &lt;&lt;)? Не...

Вывод дробей - C++
Всем доброго времени суток! Дан такой коТ (вырезки): int N = 9; double s = 2 / (N - 1))*(2 / (N - 1))*(2 / 4 - 1 / 4); Но...

Сокрашение дробей - C++
Задача такая. Я сокращаю две дроби крест накрест. Т.е. числитель первой на знаменатель второй, числитель второй на знаменатель первой,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MegaAce
330 / 304 / 65
Регистрация: 14.02.2010
Сообщений: 662
17.02.2011, 22:14     сокрощение дробей #2
Для нахождения общего делителя прочитайте про алгоритм Евклида

Добавлено через 27 секунд
Пример реализации на С
http://ru.wikibooks.org/wiki/%D0%9F%...0#.D0.A1.D0.B8
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
17.02.2011, 22:25  [ТС]     сокрощение дробей #3
Ну как я понял мне это нужно
C++
1
2
3
4
5
6
7
8
9
 int gcd(int a, int b) {
   int c;
   while (b) {
      c = a % b;
      a = b;
      b = c;        
   }
   return abs(a);
 }
А как алгоритм работает? И почему моя версия не работает?
MegaAce
330 / 304 / 65
Регистрация: 14.02.2010
Сообщений: 662
17.02.2011, 22:43     сокрощение дробей #4
Коментировать алгоритм я не собираюсь
Вот переделаная ваша версия

Не по теме:

брут форс-рулит!


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
#include <iostream.h>
using namespace std;
 
int main(int argc, char *argv[])
{
   char ch;
   int a, b, c, d, ost1, ost2;
   cout << "Vvidite pervyu drob:"; // ââîä äðîáåé
   cin >> a >> b;
   cout << "Vvidite vtoryu drob:";
   cin >> c >> d;
   a=(a*d)+(c*b); // ñëîæåГ*ГЁГҐ äðîáåé
   b=b*d;
 
   g=b*d;
   while (1) //ñîêðîùåГ*ГЁГҐ äðîáåé
   {
    ost1=a%g;
    ost2=b%g;
    if (ost1==0 & ost2==0)
    {
     a=a/g;
     b=b/g;
     break;
    }
    g--;
   }
   
   cout << "Cymma:" << a << "/" << b << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
17.02.2011, 22:51  [ТС]     сокрощение дробей #5
А почему цикл while за циклен (если там можно назвать), и как он из него выходит?
Я так сделал вроде правильно работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   while (g>1) //сокрощение дробей
   {
    ost1=a%g;
    ost2=b%g;
    if (ost1==0 & ost2==0)     
    {
     a=a/g;
     b=b/g;  
       break;
     
                }
                g--;
               }
брут форс что это такое?
Байт
Эксперт C
15671 / 9998 / 1500
Регистрация: 24.12.2010
Сообщений: 18,783
17.02.2011, 22:58     сокрощение дробей #6
Ardarik,
И почему моя версия не работает?
Во-первых нет начального присваивания g.
Во вторых - см.во-первых

Добавлено через 1 минуту
брут форс что это такое?
Грубая сила. Неизящное решение.

Добавлено через 1 минуту
http://ru.lmgtfy.com/?q=%D0%B1%D1%80...BE%D1%80%D1%81
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
17.02.2011, 22:59  [ТС]     сокрощение дробей #7
Все таки ваша версия вернее.
рисваивания g в 6 строчке
MegaAce
330 / 304 / 65
Регистрация: 14.02.2010
Сообщений: 662
17.02.2011, 23:04     сокрощение дробей #8
Цитата Сообщение от Ardarik Посмотреть сообщение
Все таки ваша версия вернее.
рисваивания g в 6 строчке
но задание проверки цикла, можете и так как Вы сделали, делать

Не по теме:

я и сам когда-то строил подобные алгоритмы для сокращения дробей а сейчас и другие алгоритмы делаю перебором... но учюсь и это главное!

Байт
Эксперт C
15671 / 9998 / 1500
Регистрация: 24.12.2010
Сообщений: 18,783
17.02.2011, 23:08     сокрощение дробей #9
Цитата Сообщение от Ardarik Посмотреть сообщение
Все таки ваша версия вернее.
рисваивания g в 6 строчке
Имеет ли смысл вводить отношение порядка на 2-х элементном множестве значений булевой переменной

{верно, неверно} изоморфно {true, false }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 23:13     сокрощение дробей
Еще ссылки по теме:

Умножение дробей - C++
где П - произведение. то есть сначала делим i+1 на i+2 (при i=2). этот результат умножаем на i+1 на i+2 (при i=3) и так далее. n- число...

Сравнение дробей - C++
Здравствуйте, очень нужна ваша помощь. Помогите, пожалуйста с сравнение дробями. больше, меньше, равно. #include &quot;stdafx.h&quot; ...

Деление дробей. - C++
Задача: вывести в порядке возрастания все правильные несократимые дроби со знаменателем, не превосходящим n. Сам код: #include...

вычисление дробей - C++
знаменатель высчитывается правильно, а вот числитель нет Кто-то подскажет почему? #include&lt;iostream&gt; #include&lt;conio.h&gt; ...

Сумма дробей - C++
Создать класс RatNum, который имеет два поля int — числитель и знаменатель. Создать конструктор класса и методы которые будут...


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

Или воспользуйтесь поиском по форуму:
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
17.02.2011, 23:13  [ТС]     сокрощение дробей #10
Так цикл будет продолжаться пока g не будет равна нулю?
Yandex
Объявления
17.02.2011, 23:13     сокрощение дробей
Ответ Создать тему
Опции темы

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