Решаю задачу из учебника Лафоре "ООП в С++" (Глава 7. Массивы и строки, з. №5, с. 308). Задача формулируется следующим образом: Напишите программу, которая получает случайные дробные числа от пользователя, сохраняет их в массив, вычисляет среднее значение, выводит результат. Дроби должны быть представлены как класс.
Моя программа работает, но в ней все время появляется одно "мусорное" значение, т.е. в цикле выходит за границу массива. На результат это влияет, прога считает верно, но не нравится, что этот "мусор" выползает. Как правильно определить цикл, чтобы этого не было? Заранее спасибо.
| Код | //вычисление среднего арифметического массива дробей #include <iostream>
using namespace std; const int M = 3; class fraction { private: int a, b; //поля класса public: fraction() : a(0), b(0) {}//конструктор без аргументов fraction(int aa, int bb) : a(aa), b(bb) {}//конструктор с двумя аргументами
void input()//метод ввода данных { char ch; cin >> a >> ch >> b; }
void output()//метод вывода данных { cout << a << '/' << b; }
fraction fadd(fraction, fraction, fraction&);//прототип сложения fraction fdiv(fraction, fraction, fraction&);//прототип деления };
int main() { fraction d[M];//массив дробей fraction znam(M, 1);//знаменатель для вычисления среднего значения fraction rez(0, 0);//результат, среднее значение массива cout << "Vvedite " << M << " drobei" << endl; for(int i = 0; i < M; i++) d[i].input(); cout << "\nVi vveli: "; for(int i = 0; i < M; i++) { d[i].output(); cout << " "; } cout << endl; for(int i = 0; i < M; i++) d[i].fadd(d[i], d[i+1], d[i+1]); d[M-1].fdiv(d[M-1], znam, rez); cout << "Srednee ravno "; rez.output(); return 0; }
fraction fraction::fadd(fraction frac1, fraction frac2, fraction& frac3) //сложение { frac3.a = frac1.a*frac2.b+frac2.a*frac1.b; frac3.b = frac1.b*frac2.b; return frac3; }
fraction fraction::fdiv(fraction frac1, fraction frac2, fraction& frac3)//деление { frac3.a = frac1.a*frac2.b; frac3.b = frac1.b*frac2.a; cout << "a/b/c/d = " << frac3.a << '/' << frac3.b << endl; return frac3; }
|
|