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

Нахождение среднего значения дробей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить последовательность число цифр которой равно знаменателю, а сумма этих цифр -числителю http://www.cyberforum.ru/cpp-beginners/thread1233576.html
Доброго всем времени суток!Пожалуйста помогите сформировать вектор. Дана правильная несократимая дробь нужно получить последовательность число цифр которой равно знаменателю,а сумма этих цифр -числителю.Напечатать в виде 1.1.2.1.2; Вот мой вариант. #include <iostream> #include <stdlib.h> #include <vector> #include <algorithm> #include <iterator> #include <iomanip>
C++ Массивы. Классы. Нахождение среднего значения дробей Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат. т.е. пользователь вводит к примеру 1/2, 2/3, 3/4, 4/5 а в ответ получает среднее значение 419/720 программа работает неправильно, выводит ноли. где ошибка? #include "stdafx.h" #include <iostream> #include <cmath>... http://www.cyberforum.ru/cpp-beginners/thread1233558.html
C++ Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива
У меня есть задание: написать функцию (процедуру) с параметрами для обработки одномерного массива целочисленных данных (количество элементов массива ≤50). Функция (процедура) должна возвращать новый массив, состоящий из отрицательных элементов исходного массива. Есть функция, мне помогли ее написать: int otricatel (int mass, int n,int result) { int count=0; for(int...
C++ Как работает функции подсчёта символов в строке
Раньше программировал на VB. Сейчас изучаю С++. Встретил в интернете эти функции подсчёта симолов в строке. С первой всё понятно. Перебираем символы пока не встретим '\0'. int strlen(char s){ int length = 0; for (; s != '\0'; length++); return (length); } Но почему работают две эти?
C++ Функция должна возвращать наименьший положительный элемент массива http://www.cyberforum.ru/cpp-beginners/thread1233510.html
Помогите, не могу написать этот клочек кода...голова кипит.. Есть постановка задания: Написать функцию (процедуру) с параметрами для обработки одномерного массива целочисленных данных (количество элементов массива ≤50). Функция (процедура) должна возвращать наименьший положительный элемент массива.
C++ Ошибка "Ascess violation" при выводе массива В проекте есть две такие строчки: for(int L6x=0;L6x<=argcnt;L6x++){for(int L6y=0;L6y<argsize;L6y++){cout<<ComArgumentList;}cout<<endl;} for(int L7=0;L7<=argcnt;L7++)delete ComArgumentList;delete ComArgumentList; Первая выводит содержимое двухмерного массива символов, а вторая удаляет его. Если хотя бы одна из этих строчек присутствует, то выскакивает ошибка "Ascess violation: write on adress... подробнее

Показать сообщение отдельно
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139

Нахождение среднего значения дробей - C++

25.07.2014, 01:57. Просмотров 464. Ответов 2
Метки (Все метки)

Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат.

т.е. пользователь вводит к примеру 1/2, 2/3, 3/4, 4/5 а в ответ получает среднее значение 419/720
программа работает неправильно, выводит ноли. где ошибка?


C++ (Qt)
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
73
74
#include "stdafx.h"
#include <iostream>     
#include <cmath>
using namespace std;
class Fraction
{
    private:
        int numerator, denominator;
    public:
        Fraction():numerator(0), denominator(0)
        {}
        void get_fr() //метод получания дроби
        {
            char ch;
            cout << "enter fraction" << endl;
            cin >> numerator >> ch >> denominator;
        }
        void add_fr(Fraction f1, Fraction f2) //метод сложения двух дробей
        {
            numerator = f1.numerator * f2.denominator + f1.denominator * f2.numerator; 
            denominator = f1.denominator * f2.denominator;
        }
        void mul_fr (Fraction f1, int n) //метод деления суммы дробей на количество их самих (умножение знаменателя на это число)
        {
            denominator = f1.denominator * n; 
        }
 
        void lowterms () //метод сокращения дроби
        {
            long tnum, tden, temp, gcd;
            tnum = labs(numerator);            // используем неотрицательные 
            tden = labs(denominator);            // значения (нужен cmath)
            if( tden == 0 )              // проверка знаменателя на 0
              { cout << "Недопустимый знаменатель!"; exit(1); }
            else if( tnum == 0 )         // проверка числителя на 0
              { numerator=0; denominator = 1; return; }
// нахождение наибольшего общего делителя
            while(tnum !=0)
            {
              if( tnum < tden )          // если числитель больше знаменателя,
                { temp=tnum; tnum=tden; tden=temp; } //меняем их местами
                 tnum = tnum - tden;        // вычитание
            }
            gcd = tden;                  // делим числитель и знаменатель на
            numerator = numerator / gcd;             // полученный наибольший общий делитель
            denominator = denominator / gcd;
        }
        void disp_fr()const
        { cout << "\nthe average is " << numerator << "/" << denominator << endl; }
};
int main()
{
    Fraction fraction [100];
    Fraction frtemp, frsum;
    char ans;
    int n=0;
    do //ввод дробей в массив
    {
        fraction[n++].get_fr();     
        cout << "continue typing? (y/n)" << endl; cin >> ans;
    }
    while (ans != 'n');
    for (int j = 0; j<n; j++) //сложение дробей
    {
        frtemp.add_fr(fraction[j], fraction[j++]);
        j++;
        frsum.add_fr(frtemp, frsum);
    }
    frsum.mul_fr(frsum, n+1); //деление на их кол-во
    frsum.lowterms(); //сокращение
    frsum.disp_fr(); //вывод на экран
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru