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

Структуры.Из файла нужно считать дроби и сложить те, у которых общий числитель

22.05.2022, 23:16. Показов 205. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста, помогите поправить код. В первой строке файла числитель, во второй слэш, третьей - знаменатель. Нужно разделить пустой строкой дроби, затем сложить те, у которых одинаковый числитель. Не использовать динамические массивы для хранения структур.
На примере ниже кода слева файл с входными данными, справа - то, что нужно получить
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
96
97
#include <iostream>
#include <stdio.h>
#include <Windows.h>
#include <string.h>
#define N 4
using namespace std;
typedef struct {
   
    char dr[N][5];
    unsigned slash;
    int chislit, znamenat;
} drob;
typedef struct one_fraction {
    drob dr; 
    drob slash;
 
    one_drob* next;
}one_drob;
 
drob read_drob(FILE* f) {
    drob quantity;
    drob chislit;
    drob znamenat;
    char s[5];
    size_t i = 0;
    for (size_t j = 0; j <= N; j++)
    {
        fgets(s, 5, f);
        if (strcmp(s, "/\n") == 0) {
            quantity.slash = i + 1;
        }
        else {
            strcpy(quantity.dr[i++], s);
        }
    }
    return quantity;
}
void print_drobi(one_drob, quantity)
 {
    for (size_t i = 0; i < quantity.slash - 1; i++)
        cout << quantity.dr[i];
    printf(" %s\n", "/");
    for (size_t i = quantity.slash - 1; i < N; i++)
        cout << quantity.dr[i];
}
 
one_drob* head = NULL, * tail = NULL;
 
void push(drob testf, one_drob** head, one_drob** tail)
 {
    one_drob* temp = (one_drob*)malloc(sizeof(one_drob));
    temp->dr = testf;
    temp->next = NULL;
    if (*head == NULL)
        *head = *tail = temp;
    else
    {
        (*tail)->next = temp;
        *tail = (*tail)->next;
    }
}
int summ(drob, quantity)
{
    int sum_drob = 0;
    for (size_t i = 0; i < quantity.slash - 1; i++)
    {
        if (strcmp(quantity.fr[i + 1], "/\n") == 0)
            sum_drob += int(quantity.dr[i]);
 
 
 
    }
    return sum_drob;
}
 
void main() {
   
    FILE* f = fopen("testf.txt", "r");
    int sum1 = 0;
    while (!feof(f))
    {
        drob dr;
        dr = read_drobi(f);
        sum1 += summ(dr);
        push(dr, &head, &tail);
    }
    fclose(f);
    cout << sum1;
    
    SetConsoleOutputCP(CP_UTF8);
    one_drob* elem = head;
    while (elem != NULL) {
        print_drobi(elem->dr);
        
        elem = elem->next;
    }
}
Миниатюры
Структуры.Из файла нужно считать дроби и сложить те, у которых общий числитель  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2022, 23:16
Ответы с готовыми решениями:

Даны две простые дроби числитель первой А, знаменатель В, числитель второй дроби С, знаменатель D.
Даны две простые дроби числитель первой А, знаменатель В, числитель второй дроби С, знаменатель D....

Нужно с одного файла считать числа(десятичные дроби), заменить их словами, и записать в другой!
пожалуйста! помогите! нужно с одного файла считать числа(десятичные дроби), заменить их словами, и...

Вводятся числитель a и знаменатель b дроби. Вывести: знак, целую часть, сокращенные числитель и знаменатель
Вводятся числитель a и знаменатель b дроби. Вывести: знак, целую часть, сокращенные числитель и...

Сложить дроби у которых одинаковый знаменатель
Помогите поправить код, пожалуйста. По заданию нужно разработать составной тип данных для хранения...

0
22.05.2022, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2022, 23:16
Помогаю со студенческими работами здесь

считать все числа из файла, сложить их и сумму записать в конец того же файла?
#include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;cstdio&gt; #include&lt;cmath&gt; #include&lt;fstream&gt; ...

Дан числитель и знаменатель некоторой дроби:
Дан числитель и знаменатель некоторой дроби: числитель а, знаменатель в. Ответить на вопрос, можно...

Считать матрицы из файла и сложить их
Основная задача сложить матрицы.Но это не проблема. Числа для них нужно взять из файла и если...

Считать данные с файла и сложить
Здравствуйте уважаемые форумчане! Есть одна задачка которую я не понял как сделать, прошу помощи у...

Разбить строку с представлением дроби на числитель и знаменатель
Есть строка типа string с таким значением &quot;17/4&quot; или &quot;20/10&quot;. Как получить число до дроби и после в...

Найти числитель и знаменатель несократимой правильной дроби
Даны натуральные M, N (M&gt;N). Найти числитель и знаменатель несократимой правильной дроби p/q такой,...

Даны натуральные числа m и n, представляющие числитель и знаменатель некоторой дроби.
Даны натуральные числа m и n, представляющие числитель и знаменатель некоторой дроби. Сократить эту...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru