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

Среднее арифметическое обыкновенных дробей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа со сверхбольшими числами не выполняется до конца http://www.cyberforum.ru/cpp-beginners/thread785035.html
Сам код #include "verylong.h" void verylong::putvl()const { char temp ; strcpy(temp,vlstr); cout<<strrev(temp); }
C++ Перевод чисел из 10 СС в 2 СС Помогите пожалуйста написать программу,которая представляла бы введенное число типа unsigned char в двоичном виде с помощью битовых масок. http://www.cyberforum.ru/cpp-beginners/thread785033.html
нарисовать розу ветров на с++ C++
нарисовать розу ветров на языке с++?
C++ Волновой алгоритм
Подскажите пожалуйста, на сколько сложно изготовить из матрицы 0000 0000 0000 напр.4345 3234 2123 3234 Только при помощи обычных циклов.
C++ Выделение динамической памяти для матрицы http://www.cyberforum.ru/cpp-beginners/thread785006.html
Здравствуйте! Подскажите, пожалуйста, что делаю не так..написала программу, которая считывает двумерный массив...с помощью операторов new и delete выделила память в куче... Но, после ввода значений выскакивает ошибка - Debug Assertion Failed #include <iostream> #include <conio.h> using namespace std;
C++ Программа для включения/выключения WiFi у роутера Всем доброго времени суток. Появилась нужда программно отключать или включать WiFi у роутера. Роутер Tenda W368R. Отключается в настройках простым убором галочки с Enable Wireless. Но каждый раз туда лазить не удобно. Поэтому решил спросить возможно ли создать программу которая смогла бы отключать или включать WiFi. Думал справится командная строка, но ничего не нашёл по этому поводу. Поэтому... подробнее

Показать сообщение отдельно
rusl31
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 21
13.02.2013, 10:53     Среднее арифметическое обыкновенных дробей
Всем добрый вечер! В программировании еще нуб можно сказать. Читаю "ООП в С++" Р. Лафоре(первая книга, до этого только бейсик в школе), и все бы ничего, но одно упражнение весь вечер не дает покоя..

Сабж(упражнение 5 главы 7):
Написать программу, которая получает обыкновенные дроби от пользователя, сохраняет их в массиве типа fraction(это класс, его поля - числитель и знаменатель дроби), вычисляет среднее значение и выводит результат.

Код компилируется, но работает криво. Вся проблема в логике(а точнее в закомменченом цикле). В том, что не могу понять как работает написанный мною же код.. наиндусил что называется..

Хотелось бы увидеть, в чем моя ошибка, если кому-то под силу разобраться в том, что я написал)

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
#include <iostream>
#include <conio.h>
using namespace std;
 
class fraction
{
private:
    int a, b;
public:
    fraction(): a(0), b(0)
    { }
    void getfrac(int cnt)
    {
        char dch;
        cout << "Input fraction #" << cnt << ":";
        cin >> a >> dch >> b;
    }
    void average(fraction m[], int cnt)
    {
        int chisl = m[0].a, znam = m[0].b; //chisl и znam - числитель и знаменатель общей суммарной дроби
        /*for(int i=1; i<cnt; i++)
        {
            a += znam * m[i].a + chisl * m[i].b;
            b += znam * m[i].b;
            chisl = a;
            znam = b;
        }*/
        b *= cnt;
        if(a%b == 0)
        {
            cout << "Average: " << a / b;
        }
        else cout << "Average: " << a << '/' << b;
    }
};
 
int main()
{
    fraction mass[50];
    fraction av;
    int cnt = 0;
    do
    {
        mass[cnt++].getfrac(cnt);
    }
    while(cnt<50 && getch()==13);
    av.average(mass, cnt);
    getch();
    return 0;
}
Добавлено через 12 часов 59 минут
Вроде переписал на свежую голову, а все-равно не работает как надо.
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
#include <iostream>
#include <conio.h>
using namespace std;
 
class fraction
{
private:
    int a, b;
public:
    fraction(): a(0), b(0)
    { }
    void getfrac(int cnt)
    {
        char dch;
        cout << "Input fraction #" << cnt << ":";
        cin >> a >> dch >> b;
    }
    fraction summ(fraction f1, fraction f2)
    {
        fraction temp;
        temp.a = f1.a * f2.b + f1.b * f2.a;
        temp.b = f1.a * f2.b;
        return temp;
    }
    void average(fraction m[], int cnt)
    {
        fraction temp = m[0];
        for(int i=1; i<cnt; i++)
        {
            temp = summ(temp, m[i]);
        }
        a = temp.a;
        b = temp.b;
        b *= cnt;
        if(a%b == 0)
        {
            cout << "Average: " << a/b;
        }
        else cout << "Average: " << a << '/' << b;
    }
};
 
int main()
{
    fraction mass[50];
    fraction av;
    int cnt = 0;
    do
    {
        mass[cnt++].getfrac(cnt);
    }
    while(cnt<50 && getch()==13);
    av.average(mass, cnt);
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru