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

Считать данные из файла в два массива согласно условию

28.11.2016, 17:49. Просмотров 360. Ответов 7
Метки нет (Все метки)

В файле исходных данных содержится одномерный массив A(2n).
Написать, отладить и протестировать программу, выполняющую:
1. Чтение данных из файла
2. Формирование двух массивов B(n) и C(n) следующим образом. Выбрать в массиве A два наиболее близких по значению элемента; меньший из них поместить в массив B, а больший - в массив C. Продолжить выбор из оставшихся элементов до полного заполнения массивов B и C.
3. Печать исходного и новых массивов.[/CPP]
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2016, 17:49
Ответы с готовыми решениями:

Разбить массив на два массива согласно условию
Нужна помощь с лабораторной. Дан массив А, состоящий из 2N элементов. Разбейте его на массивы В и С...

Считать данные из текстового файла по условию и записать их в другой текстовый файл (файловый ввод/вывод)
Здравствуйте! Очень прошу о помощи! Суть задания - дан текстовый файл, нужно считать его и записать...

Разделить файл на два, согласно условию
Помогите пожалуйста! Вот задача : Дано целое число K (> 0) и строковый файл. Создать два новых...

Написать программу суммирующую два выражения согласно условию (тригонометрические функции)
Помогите написать код сумм

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

7
Fixer_84
1409 / 887 / 794
Регистрация: 30.04.2016
Сообщений: 3,033
28.11.2016, 19:39 2
Kolesnikova555, здравствуйте! Вот программа для консоли. Если не сможете сделать для файла, пишите, я доделаю.

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
#include <iostream>
#include <climits>
#include <cmath>
 
using namespace std;
 
int main()
{
int N, mini, x, y; //Объявляем переменные целого типа
cout << "Введите размерность массива:" << endl;
cout << "N (четное) = ";
cin >> N; 
int *A = new int[N];
int *B = new int[N/2];
int *C = new int[N/2];
cout << "Введите элементы массива:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i]; 
}
cout << "Пары близких по значению элементов:" << endl;
mini = INT_MAX;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if (abs(A[i] - A[j]) <= mini)
{
mini = abs(A[i] - A[j]);
x = i;
y = j;
}
}
}
cout << A[x] << " " << A[y] << endl; //Первая пара значений
B[0] = min(A[x], A[y]); //Минимум для первой пары значений
C[0] = max(A[x], A[y]); //Максимум для первой пары значений
A[x] = A[y] = INT_MIN;
//Здесь ищем оставшиеся пары значений
for (int p = 0; p < N / 2 - 1; p++)
{
mini = INT_MAX;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if ((abs(A[i] - A[j]) <= mini) && ((A[i] != INT_MIN) && (A[j] != INT_MIN)))
{
mini = abs(A[i] - A[j]);
x = i;
y = j;
}
}
}
cout << A[x] << " " << A[y] << endl; //Оставшиеся пары значений
B[p+1] = min(A[x], A[y]); //Заполняем массив B оставшимися парами значений
C[p+1] = max(A[x], A[y]); //Заполняем массив C оставшимися парами значений
A[x] = A[y] = INT_MIN;
}
cout << "Массив из минимальных значений:" << endl;
for (int i = 0; i < N / 2; i++)
{
cout << B[i] << " ";
}
cout << endl;
cout << "Массив из максимальных значений:" << endl;
for (int i = 0; i < N / 2; i++)
{
cout << C[i] << " ";
}
cout << endl;
delete [] A; 
delete [] B;
delete [] C;
system("pause");
return 0;
}
0
Kolesnikova555
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 12
29.11.2016, 10:27  [ТС] 3
Спасибо, но главный вопрос был именно в чтении из файла, если можешь, помогите, пожалуйста.
0
sourcerer
29.11.2016, 13:49
  #4
 Комментарий модератора 
Kolesnikova555, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
Kolesnikova555
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 12
29.11.2016, 18:31  [ТС] 5
Fixer_84, Спасибо, но главный вопрос был именно в чтении из файла, если можете, помогите, пожалуйста.
0
Fixer_84
1409 / 887 / 794
Регистрация: 30.04.2016
Сообщений: 3,033
29.11.2016, 19:39 6
Kolesnikova555, вот программа с использованием файлов:

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
#include <iostream>
#include <climits>
#include <cmath>
#include <fstream>
 
using namespace std;
 
int main()
{
setlocale(LC_ALL, "Russian");
ifstream fin("input.txt"); //Файл в котором хранятся числа
ofstream fout("output.txt"); //Файл с результатом работы программы
int N, M, mini, x, y;
int *A = new int[100];
int *B = new int[50];
int *C = new int[50];
N = 0;
while (fin >> M)  
{ 
A[N] = M; //Считываем числа из файла в массив A 
N++;
}
fout << "ARRAY A:" << endl;
for (int i = 0; i < N; i++)
{
fout << A[i] << " ";
}
fout << endl;
fout << "PAIRS OF ELEMENTS:" << endl;
mini = INT_MAX;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if (abs(A[i] - A[j]) <= mini)
{
mini = abs(A[i] - A[j]);
x = i;
y = j;
}
}
}
fout << "(" << A[x] << ", " << A[y] << ")"; //Первая пара значений
B[0] = min(A[x], A[y]); //Минимум для первой пары значений
C[0] = max(A[x], A[y]); //Максимум для первой пары значений
A[x] = A[y] = INT_MIN;
//Здесь ищем оставшиеся пары значений
for (int p = 0; p < N / 2 - 1; p++)
{
mini = INT_MAX;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if ((abs(A[i] - A[j]) <= mini) && ((A[i] != INT_MIN) && (A[j] != INT_MIN)))
{
mini = abs(A[i] - A[j]);
x = i;
y = j;
}
}
}
fout << "(" << A[x] << ", " << A[y] << ")"; //Оставшиеся пары значений
B[p+1] = min(A[x], A[y]); //Заполняем массив B оставшимися парами значений
C[p+1] = max(A[x], A[y]); //Заполняем массив C оставшимися парами значений
A[x] = A[y] = INT_MIN;
}
fout << endl;
fout << "ARRAY B:" << endl;
for (int i = 0; i < N / 2; i++)
{
fout << B[i] << " ";
}
fout << endl;
fout << "ARRAY C:" << endl;
for (int i = 0; i < N / 2; i++)
{
fout << C[i] << " ";
}
fout << endl;
delete [] A; 
delete [] B;
delete [] C;
fout.close();
fin.close();
system("pause");
return 0;
}
0
Kolesnikova555
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 12
30.11.2016, 14:15  [ТС] 7
В результате выходит так, что массив В и С равны. Как возможно это исправить?

Добавлено через 7 минут
Fixer_84, в результате получается так, что массивы B и C равны. Как возможно это исправить?
0
Fixer_84
1409 / 887 / 794
Регистрация: 30.04.2016
Сообщений: 3,033
30.11.2016, 17:30 8
Kolesnikova555, они не всегда равны. Все зависит от пар чисел, которые мы выбираем. Возьмите, к примеру, такой массив: 0 -5 3 1 -7 -8 9 1 12 -12 и запустите программу. Получите разные массивы B и C.
0
30.11.2016, 17:30
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2016, 17:30

Переписать из одного файла в другой информацию о кубиках согласно условию
Сформировать файл К, содержащий информацию о кубики: размер каждого кубика (длина ребра в см.);...

Считать данные из txt файла, записать их в массив и вычесть значения одного массива из другого
Срочно нужна помощь. Никак не могу разобраться был файл с данными в формате нескольких столбцов с...

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


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

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

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