Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 0
Регистрация: 01.10.2018
Сообщений: 189
1

Сформировать новый массив из старого

06.05.2019, 20:44. Показов 483. Ответов 1
Метки нет (Все метки)

Как переделать функцию ToFile чтобы она не записывала в файл данные а создавала новый массив по тому же условию?
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include "pch.h"
#include <iostream>
#include <windows.h>
#include <iomanip>
#include <fstream>
 
using namespace std;
struct date//Структура даты рождения
{
    int d, m, y;
};
struct students//Структура студента
{
    char name[70];
    char group[40];
    date date;
};
int n = 0;
students student[30];
 
void sort(students *studentt, int &n);
void show(students *student, int &n);
void FromFile(students* student, int &n);
void toFile(students* student);
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    
    FromFile(student, n);
    sort(student, n);
    show(student, n);
    toFile(student);
 
    return(0);
}
 
void sort(students *student, int& n)
{
    students t;
    for (int i = 0; i < n - 1; i++)
    {
 
        for (int g = i + 1; g < n; g++)
        {
            if (student[i].date.y > student[g].date.y ||
                student[i].date.y == student[g].date.y &&
                student[i].date.m > student[g].date.m ||
                student[i].date.y == student[g].date.y &&
                student[i].date.m == student[g].date.m &&
                student[i].date.d > student[g].date.d)
            {
                t = student[i];
                student[i] = student[g];
                student[g] = t;
            }
        }
    }
    cout << "Сортировка выполнина" << endl;
}
 
void show(students *student, int &n)
{
    cout << "  |------------------------------------------------------------------|\n";
    cout << "  |                                |            |   Дата  рождения   |\n";
    cout << "  |       Фамилия   Инициалы       |   Группа   |--------------------|\n";
    cout << "  |                                |            | День | Месяц | Год |\n";
    cout << "  |------------------------------------------------------------------|\n";
    for (int i = 0; i < n; i++)
    {
        cout << "  | " << left << setw(30) << student[i].name << " | " << setw(10) << student[i].group << " | " << setw(2) << student[i].date.d << "   |  " << setw(2) << student[i].date.m << "   |" << setw(4) << student[i].date.y << " |\n";
    }
    cout << "  |------------------------------------------------------------------|\n";
}
void FromFile(students* student ,int &n)
{
    ifstream fill("students.txt");
 
    if (fill.fail())
    {
        cout << "не открывается\n";
        return;
    }
    n = 0;
    while (1)
    {
        fill >> student[n].name >> student[n].group >> student[n].date.d >> student[n].date.m >> student[n].date.y;
        if (fill.fail()) break;
        n++;
    }
    fill.close();
    cout << "Файл введен\n";
} 
void toFile(students* student)
{
    ofstream fill("clients.txt");
 
    if (fill.fail())
    {
        cout <<  "не открывается\n";
        return;
    }
    fill << "  |------------------------------------------------------------------|\n";
    fill << "  |                                |            |   Дата  рождения   |\n";
    fill << "  |       Фамилия   Инициалы       |   Группа   |--------------------|\n";
    fill << "  |                                |            | День | Месяц | Год |\n";
    fill << "  |------------------------------------------------------------------|\n";
        int * checker = new int[n];
        for (int i = 0; i < n; ++i)
            checker[i] = 0;
 
        //Проходим по массиву студентов
        for (int i = 0; i < n; ++i)
        {
            //Если этого студента ещё не выводили
            if (!checker[i])
            {
                //Признак того, что студент под индексом i тоже должен быть напечатан в конце проверки
                bool iStudentMustBePrinted = false;
 
                //Ищем студентов, с такой же датой рождения, как и у него
                for (int j = 0; j < n; ++j)
                {
                    //Если это не тот же проверяемой студент и он ещё не проверялся - проверяем его с i-тым на совпадение дат
                    if (i != j && !checker[j] && student[i].date.m == student[j].date.m && student[i].date.y == student[j].date.y)
                    {
                        //Выводим данные j-того студента
                        fill << "  | " << left << setw(30) << student[j].name << " | " << setw(10) << student[j].group << " | " << setw(2) << student[j].date.d << "   |  " << setw(2) <<
                            student[j].date.m << "   |" << setw(4) << student[j].date.y << " |\n";
 
                        //Указываем, что этого студента мы уже выводили
                        ++checker[j];
                        //В конце проверки напечатаем i-го студента
                        iStudentMustBePrinted = true;
                    }
                }
                //Если мы должны печатать i-го студента
                if (iStudentMustBePrinted)
                {
                    fill << "  | " << left << setw(30) << student[i].name << " | " << setw(10) << student[i].group << " | " << setw(2) << student[i].date.d << "   |  " << setw(2) <<
                        student[i].date.m << "   |" << setw(4) << student[i].date.y << " |\n";
 
                    //Указываем, что этого студента мы уже выводили
                    ++checker[i];
                    fill << "  |------------------------------------------------------------------|\n";
                }
            }
        }
    cout << "таблица записана в файл";
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2019, 20:44
Ответы с готовыми решениями:

Сформировать новый массив из старого, добавляя дополнительные элементы
Доброго времени суток! Такая вот задача: Программа формирует новый массив из старого добавляя (2...

Дан двумерный массив. Преобразовать его так, чтобы новый массив содержал элементы старого, циклически сдвинутые на 2 элемента влево.
Уважаемые форумчане, такая проблема, не знаю как решить задачу, в моём городе мне не к кому...

Как преобразовать массив создав новый из старого с изменениями?!
Дан массив размера N. Преобразовать его, вставив после каждого положительного числа нулевой...

Получить новый массив из старого удалив элементы с заданным значением
Вот задача: Программа получения нового массива из старого массива удалением каждый раз числа 5 из...

1
бах-бах и в продакшен!
2632 / 1391 / 489
Регистрация: 23.09.2014
Сообщений: 4,240
Записей в блоге: 4
07.05.2019, 07:38 2
Цитата Сообщение от DrKappa Посмотреть сообщение
Как переделать функцию ToFile чтобы она не записывала в файл данные а создавала новый массив по тому же условию?
1. Вам нужно сначала создать пустой массив.
2. Заполнить этот массив.

Вроде тривиально, но на самом деле тут возможна куча вариантов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2019, 07:38

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Cоставить новый массив из строк старого, в которых есть искомый элемент
Задачка сама по себе легкая, но нужно использовать динамическое выделение памяти и указатели,...

Создать новый массив, элементами которого являются абсолютная величина каждого числа старого массива
Дан двумерный массив, который содержит не более 10 строк и не более 10 столбцов. Создать новый...

Дан массив X(10). Сформировать новый массив из четных чисел исходного
Помогите, кому не сложно, спасибо заранее :)

Дан массив из 25 элементов. Сформировать из него новый массив, элементы которого кратны 5
Помогите решить задачу. Дан массив из 25 элементов. Сформировать из него новый массив, элементы...


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

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

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