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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
17.02.2011, 22:07     сокрощение дробей #1
Нужно сложить две дроби и по возможности сокротить, сложение то работает. А сокротить не получается, зависает
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++ Массив из дробей
C++ Классы дробей С++
Сложение дробей. C++
C++ Деление дробей.
Сумма дробей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MegaAce
 Аватар для 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
 Аватар для 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--;
               }
брут форс что это такое?
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,932
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
 Аватар для MegaAce
330 / 304 / 65
Регистрация: 14.02.2010
Сообщений: 662
17.02.2011, 23:04     сокрощение дробей #8
Цитата Сообщение от Ardarik Посмотреть сообщение
Все таки ваша версия вернее.
рисваивания g в 6 строчке
но задание проверки цикла, можете и так как Вы сделали, делать

Не по теме:

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

Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,932
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++
Сокрашение дробей C++
Упрощение дробей C++

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

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

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