0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 14
1

Программа обрабатывающая рациональные дроби хранящиеся в двумерном массиве

23.11.2015, 20:51. Показов 865. Ответов 2
Метки нет (Все метки)

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

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

Не знаю как реализовать загрузку матрицы из файла. и не могу сделать запись в файл результатов напечатайте как исходную матрицу.
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//это куча библиотек, половина из которых вообще не нужна
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <conio.h>
using namespace std;
 
int GCD(int a, int b) //поиск НОД
{
    if (a == 0) return b;
    return GCD(b%a, a);
}
              
int reduction(int a, int b) // Сокращение дроби -----ВОТ ЭТА ШТУКА НЕ РАБОТАЕТ, в процессе все норм, а возвращает исходные a и b
    {
        int gcd = GCD(a, b); // Вычисляем НОД числителя и знаменателя 
        a /= gcd; // Делим числитель на НОД
        b /= gcd; // Делим знаменатель на НОД
        return (a, b);
        }
    
int sum_nom(int a, int b, int c, int d) //числитель суммы
{
    a = a*d + c*b;
    b = b*d;
    return (a);
}
int sum_denom(int a, int b, int c, int d) //знаменатель суммы
{
    b = b*d;
    return (b);
}
 
int main()
{
    setlocale(LC_CTYPE, "russian"); //устанавливаем русский язык в консоли
    int row, col; //количество строк и столбцов
    char ch; //разделитель дроби
 
    cin >> row >> col; //считываем кол-во строк и столбцов
    int **nom = new int *[row*col]; //создаем динамический массив для числителя
    int **denom = new int *[row*col]; //и для знаменателя
    for (int r = 0; r < row; r++) {
        nom[r] = new int[col];
        denom[r] = new int[col];
        for (int c = 0; c < col; c++) {
            cin >> nom[r][c]; //считываем числитель
            cin >> ch;  //считываем разделитель дроби
            cin >> denom[r][c];  //считываем знаменатель
        }
    }
    cout << endl;
    cout << "Исходная матрица: " << endl;
    for (int r = 0; r < row; r++) {
        for (int c = 0; c < col; c++)
            cout << setw(4) << nom[r][c] << ch << denom[r][c];  //выводим исходную матрицу
        cout << endl;
    }
 
    vector <vector<int>> vec(row); //объявляем вектор
    for (int r = 0; r < row; r++)
    {
        vec[r].resize(2);
        vec[r][0] = nom[r][0];    //числитель вектора
        vec[r][1] = denom[r][0];  //знаменатель вектора
        for (int c = 1; c < col; c++)
        {   //суммируем
            vec[r][0]=sum_nom(vec[r][0], vec[r][1], nom[r][c], denom[r][c]); //числитель суммы дробей
            vec[r][1] = sum_denom(vec[r][0], vec[r][1], nom[r][c], denom[r][c]); //знаменатель суммы дробей
            reduction(vec[r][0], vec[r][1]);
        }
    }
    cout << endl;
    for (int r = 0; r < row; r++)
    {
        reduction(vec[r][0], vec[r][1]);
        cout << setw(4) << vec[r][0] << ch << vec[r][1]; //выводим вектор
        cout << endl;
    }
 
    vec.clear();
    
        for (int r = 0; r < row; r++) 
            delete[] nom[r];
        delete[] nom;
        for (int r = 0; r < row; r++)
            delete[] denom[r];
        delete[] denom;
 
    system("pause");
    return 0;
}
вот пример файла ввода
3 3
1 2 3
4 5 6
7 8 9
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 20:51
Ответы с готовыми решениями:

Даны две рациональные дроби: a/b и c/d. Сложите их и результат представьте в виде несократимой дроби m/n.
Даны две рациональные дроби: a/b и c/d. Сложите их и результат представьте в виде несократимой...

Десятичная и рациональные дроби
Как реализовать считывание одновременно десятичной и рациональной дроби? ...

Две положительные рациональные дроби
Всем привет. Задача такая: даны две положительные рациональные дроби: a/b и c/d. Требуется...

Даны две рациональные дроби
Помогите, пожалуйста! Второй день бьюсь над задачей и получаю ошибку &quot;Неправильный формат вывода&quot;....

2
363 / 293 / 148
Регистрация: 08.04.2013
Сообщений: 1,281
23.11.2015, 21:15 2
Наверное ты сперва понял что из себя представляет рациональная дробь
прежде чем что то спрашивать http://fizmat.by/math/fraction/rational_fractions
0
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 14
24.11.2015, 02:26  [ТС] 3
я ошибся входной файл
2 2
1/2 2/3
3/4 4/5
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2015, 02:26

Даны две рациональные дроби
Даны две рациональные дроби: a/b и c/d. Сложите их и результат представьте в виде несократимой...

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

Программа, обрабатывающая данные о туристических путевках
какие тут люди добрые..мож и мне кто поможет?:-[ Вообщем такая задачка: Составить программу...

Программа обрабатывающая excel таблицу по заданным алгоритмам
Здравствуйте форумчане, столкнулся с такой проблемой, нужна простенькая программка в которой...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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