С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 20.11.2015
Сообщений: 4
1

Структура "Контракты"

27.11.2015, 23:44. Показов 1364. Ответов 1

Author24 — интернет-сервис помощи студентам
здравствуйте, помогите пожалуйста срочно написать программу по задаче:
в файле input заданно количество записей контрактов, заключенных страховой фирмой и их список. в каждой записи списка указанны ФИО агента и стоимость контракта. создать структуру, описывающую заключенные контракты.создать массив, который содержит ФИО агента и общую стоимость контрактов, заключенных этим агентом. для заполнения массива использовать информацию из файла инпут. массив упорядочить в алфавитном порядке. полученный список записать в файл.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2015, 23:44
Ответы с готовыми решениями:

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по "Основы программирования",кто сколько сможет сделать...

Структура «База», сущности «Универсам» и «Продукты», структура «Товар»
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и...

структура array предназначена для хранения строки типа char. Структура имеет функцию, которая позволяет изменить символ
структура array предназначена для хранения строки типа char. Структура имеет функцию, которая...

Структура DateTime, битовая структура
Условие: Структура содержит информацию о дате и времени некоторого события: struct datetime...

Структура, доступная из всех файлов проекта ("глобальная" структура)
Есть четыре структуры (body, gun, enemy, st), описанные в main.cpp. К main.cpp подключен хедер...

1
0 / 0 / 1
Регистрация: 20.11.2015
Сообщений: 4
30.11.2015, 15:35  [ТС] 2
Лучший ответ Сообщение было отмечено yablochko как решение

Решение

[CPPQT][C]
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include<stdlib.h>
#include<stdio.h>
#include "string.h"
 
const int LEN_NAME = 15;
 
struct Agent {
    char surname[LEN_NAME];
    char name[LEN_NAME];
    char middlename[LEN_NAME];
    double stoimost;
};
 
struct Spisok
{
    Agent** kontracti;
    int kol;
};
Spisok* readFile(char* filename)
{
    FILE *fp;
    fp = fopen(filename, "r");
    if (fp == NULL) {
        printf("nevozmojno naiti file.\n");
        exit(1);
    }
    Spisok* spis = (Spisok*)calloc(1, sizeof(Spisok));
    fscanf(fp, "%d\r\n", &(spis->kol));
    spis->kontracti = (Agent**)calloc(spis->kol, sizeof(Agent*));
    for (int i = 0; i < spis->kol; i++)
    {
        Agent* sp = (Agent*)calloc(1, sizeof(Agent));
        fscanf(fp, "%s %s %s %lf\r\n",sp->surname, sp->name,  sp->middlename, &(sp->stoimost));
        spis->kontracti[i] = sp;
    }
    return spis;
}
void writeToFile(char* filename, Spisok* spisok)
{
    FILE *fp;
    fp = fopen(filename, "w");
    if (fp == NULL)
    {
        printf("nevozmojno naiti file.\n");
        exit(1);
    }
    
    fprintf(fp, "%d\r\n", spisok->kol);
 
 
    for (int i = 0; i < spisok->kol; i++)
    {
 
            Agent* sp = spisok->kontracti[i];
            fprintf(fp, "%s %s %s %lf\r\n", sp->surname, sp->name, sp->middlename, sp->stoimost);
    }
}
void clearSpiska(Spisok* spisok)
{
    for (int i = 0; i < spisok->kol; i++)
    {
        Agent* sp = spisok->kontracti[i];
        if (sp != NULL) free(sp);
    }
 
}
 
 
 
void sortirovka(Spisok* spisok)
{
    Agent* tmp;
 
    Agent** sp = spisok->kontracti;
 
    for (int i = 0;i < (spisok->kol) - 1;i++)
    {
        for (int j = i + 1;j < (spisok->kol);j++)
        {
            if (strcmp(sp[i]->surname , sp[j]->surname)>0)
            {
                tmp = sp[i];
                sp[i] = sp[j];
                sp[j] = tmp;
            }
            if (strcmp(sp[i]->surname, sp[j]->surname) == 0)
            {
                if (strcmp(sp[i]->name, sp[j]->name)>0)
                {
                    tmp = sp[i];
                    sp[i] = sp[j];
                    sp[j] = tmp;
                }
            }
        }
    }
    
    
}
void summa(Spisok* spisok)
{
 
    Agent** sp = spisok->kontracti;
    double sum = 0;
    for ( int i = 0;i < (spisok->kol) - 1;i++)
    {
        for (int j = i + 1;j < (spisok->kol); j++)
        {
            if (strcmp(sp[i]->surname, sp[j]->surname) == 0 && (strcmp(sp[i]->name, sp[j]->name) == 0 && (strcmp(sp[i]->middlename, sp[j]->middlename) == 0)))
            {
                sum += sp[i]->stoimost + sp[j]->stoimost;
                sp[i]->stoimost = sum;
            }
        
        }
        
    }
 
    
}
int main() {
    Spisok* spisok = readFile("input.txt");
    summa(spisok);
    sortirovka(spisok);
    writeToFile("output.txt", spisok);
    clearSpiska(spisok);
    if (spisok != NULL)
    {
        free(spisok);
    }
 
    return 0;
}

вот получившийся код,
в файле задано:
6
Чистякова Анна Сергеевна 1620
Кардава Марина Давидовна 1542
Балашов Максим Андреевич 4512
Чистякова Анна Сергеевна 4205
Киселёва Екатерина Андреевна 10000
Балашов Евгений Семенович 1000

записывает в новый файл:
6
Балашов Евгений Семенович 1000.000000
Балашов Максим Андреевич 4512.000000
Кардава Марина Давидовна 1542.000000
Киселёва Екатерина Андреевна 10000.000000
Чистякова Анна Сергеевна 5825.000000
Чистякова Анна Сергеевна 4205.000000

При совпадении ФИО он должен складывать числа, он это делает, но как сделать, чтобы при этом записывалась только одна строка с результатом, а не две?
0
30.11.2015, 15:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2015, 15:35
Помогаю со студенческими работами здесь

Структура и вложенная структура
Подскажите как сделать задание, такого рода Иванов Математика 80 История 60...

Тип структура. Описать, используя тип структура
Описать, используя тип структура, данные на учеников (фамилия, улица, дом, квартира). Составить...

Mef и контракты
начал разбираться с mef, в доках написано что контракты должны совпадать, то есть public class...

Сущности и контракты
Доброго времени суток. У меня есть WCF который работает с SQL с помощью EntityFramework,...

Смарт-контракты Ethereum
Здравствуйте, собираюсь разрабатывать web3 приложение с использованием смарт-контрактов. Хотел бы...


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

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