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

Ввод-вывод через текстовые документы

08.09.2015, 20:47. Просмотров 363. Ответов 2
Метки нет (Все метки)

Вот у меня есть код. Помогите немножко его изменить.
Нужно вместо этого↓ сделать ввод чисел с 2 текстовых файлов сразу, это станет одним масивом. Например, в одном файле я напишу "0 5 7 2 6 4", а во 2м что то похожее, ну это уже я от руки напишу что мой мозг сгенерирует)
И в конце сделать вывод в 3й текстовый документ.
C++
1
2
3
4
5
6
int const n=100;
    int a[n];
    for (int i=0; i<n; ++i)
    a[i] = rand() % 10;
    for (int i=0; i<n; ++i)
            cout << a[i] << " ";
Сам прога:
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <ctime>
using namespace std;
void iswap(int &n1, int &n2)
{int temp = n1;
n1 = n2;
n2 = temp;}
int main() 
{
setlocale(0, "");
unsigned int start_time = clock();
puts("Пирамидальная сортировка:\n"); {
    int const n=100;
    int a[n];
    for (int i=0; i<n; ++i)
    a[i] = rand() % 10;
    for (int i=0; i<n; ++i)
            cout << a[i] << " ";
//-------------------------------------
int sh = 0;
bool b = false;
for (;;)
    {
        b = false;
            for (int i=0; i<n; i++)
            {if (i*2+2+sh < n)
                {if ((a[i+sh] > a[i*2+1+sh]) || (a[i+sh] > a[i*2+2+sh]))
                    {if (a[i*2+1+sh] < a[i*2+2+sh])
                        {iswap(a[i + sh], a[i * 2 + 1 + sh]);
                            b = true;
                        }
                        else if (a[i*2+2+sh] < a[i*2+1+sh])
                                     {
                            iswap(a[i+sh], a[i*2+2+sh]);
                            b = true;}
                    }
                    //проверка
                    if (a[i*2+2+sh] < a[i*2+1+sh])
                    {
                        iswap(a[i*2+1+sh], a[i*2+2+sh]);
                        b = true;
                    }
                }
                else if (i*2+1+sh < n)
                {if (a[i+sh] >  a[i*2+1+sh])
                    {iswap(a[i+sh], a[i*2+1+sh]);
                        b = true;
                    }
                }
            }
            if (!b) sh++;
            if (sh + 2 == n) break;
        }  //конец
 
        cout << endl << endl;
        puts("После сортировки:\n");
 
        unsigned int end_time = clock(); // конечное время
        unsigned int search_time = end_time - start_time; // искомое время
        cout << "\n runtime = " << search_time / 1000.0 << endl; // время работы программы
        for (int i = 0; i < n; ++i) cout << a[i] << " ";} 
cout << "\n";
system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2015, 20:47
Ответы с готовыми решениями:

Файловый ввод-вывод.Текстовые файлы
Добрый день! Создать текстовый файл, содержащий символьные значения, следующего формата 'a' '5'...

Текстовые документы
Дан файл f, компоненты которого являются целыми числами. Получить в файле g все компоненты файла f,...

Ввод и вывод через fstream
Непонятно почему не выводит в файл. Например в файле 123 &quot;аааббб&quot; а в файл 321 пустота, но если...

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
а помогите теперь эту задачку #include &lt;iostream&gt; int main() { int last = 0, next = 1; ...

Организовать ввод и вывод через функции
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include&lt;iostream&gt; using namespace std; int main() {...

2
zss
Модератор
Эксперт С++
7917 / 7108 / 4443
Регистрация: 18.12.2011
Сообщений: 18,775
Завершенные тесты: 1
09.09.2015, 09:16 2
Ввод массива из файла
C++
1
2
3
4
5
6
7
8
9
10
ifstream ff1("D:\\temp\\file.txt");
if(ff1)
{
  int const n=100;
  int a[n];
  for (int i=0; i<n; ++i)
    ff1>>a[i];
  ff1.close();
  ....
}
1
Erbe
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 54
Завершенные тесты: 2
09.09.2015, 20:39  [ТС] 3
Сейчас попробую все сделать)

Добавлено через 4 часа 9 минут
Вот моя готовая программа, может кому нужно будет)
3 текстовых файла, сортировка пересечением в конце 2х файлов в 3й, в 1 и 2 файле должно быть по 10 чисел.

Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <ctime>
#include <fstream>
using namespace std;
void iswap(int &n1, int &n2)
{int temp = n1;
n1 = n2;
n2 = temp;}
int main() 
{
setlocale(0, "");
unsigned int start_time = clock();
puts("Пирамидальная сортировка:\n"); 
{


	ifstream fin2("C:\\2.txt");
	int const m = 10;
	int l[m];
	for (int p = 0; p < m; ++p)
		fin2 >> l[p];
	for (int p = 0; p<m; ++p)
		cout << l[p] << " ";
	//-------------------------------------
	int gg = 0;
	bool g = false;
	for (;;)
	{
		g = false;
		for (int p = 0; p<m; p++)
		{
			if (p * 2 + 2 + gg < m)
			{
				if ((l[p + gg] > l[p * 2 + 1 + gg]) || (l[p + gg] > l[p * 2 + 2 + gg]))
				{
					if (l[p * 2 + 1 + gg] < l[p * 2 + 2 + gg])
					{
						iswap(l[p + gg], l[p * 2 + 1 + gg]);
						g = true;
					}
					else if (l[p * 2 + 2 + gg] < l[p * 2 + 1 + gg])
					{
						iswap(l[p + gg], l[p * 2 + 2 + gg]);
						g = true;
					}
				}
				//проверка
				if (l[p * 2 + 2 + gg] < l[p * 2 + 1 + gg])
				{
					iswap(l[p * 2 + 1 + gg], l[p * 2 + 2 + gg]);
					g = true;
				}
			}
			else if (p * 2 + 1 + gg < m)
			{
				if (l[p + gg] >  l[p * 2 + 1 + gg])
				{
					iswap(l[p + gg], l[p * 2 + 1 + gg]);
					g = true;
				}
			}
		}
		if (!g) gg++;
		if (gg + 2 == m) break;
	}  //конец


	ifstream fin1("C:\\1.txt");
	int const n=10;
	int a[n];
	for (int i = 0; i < n; ++i)
	fin1 >> a[i];
    for (int i=0; i<n; ++i)
			cout << a[i] << " ";
//-------------------------------------
int sh = 0;
bool b = false;
for (;;)
	{
		b = false;
			for (int i=0; i<n; i++)
			{if (i*2+2+sh < n)
				{if ((a[i+sh] > a[i*2+1+sh]) || (a[i+sh] > a[i*2+2+sh]))
					{if (a[i*2+1+sh] < a[i*2+2+sh])
						{iswap(a[i + sh], a[i * 2 + 1 + sh]);
							b = true;
						}
						else if (a[i*2+2+sh] < a[i*2+1+sh])
					                 {
							iswap(a[i+sh], a[i*2+2+sh]);
							b = true;}
					}
					//проверка
					if (a[i*2+2+sh] < a[i*2+1+sh])
					{
						iswap(a[i*2+1+sh], a[i*2+2+sh]);
						b = true;
					}
				}
				else if (i*2+1+sh < n)
				{if (a[i+sh] >  a[i*2+1+sh])
					{iswap(a[i+sh], a[i*2+1+sh]);
						b = true;
					}
				}
			}
			if (!b) sh++;
			if (sh + 2 == n) break;
		}  //конец

ofstream fin3;
fin3.open("C:\\3.txt");
fin3 << "После сортировки:\n";
		puts("\n После сортировки:\n");
		fin3 << "";
		unsigned int end_time = clock(); // конечное время
		unsigned int search_time = end_time - start_time; // искомое время
		cout << "\n runtime = " << search_time / 1000.0 << endl; // время работы программы
		fin3 << "\n runtime = " << search_time / 1000.0 << endl;
		for (int i = 0; i < n; ++i) cout << a[i] << " ";
		for (int p = 0; p < n; ++p) cout << l[p] << " ";
		for (int i = 0; i < n; ++i) fin3 << a[i] << " ";
		for (int p = 0; p < n; ++p) fin3 << l[p] << " ";
		cout << "\n только пересечение: \n";
		fin3 << "\n только пересечение: \n";
		int c[10];
		bool flag;
		for (int j = 0, k = 0; j<10;j++)
		{
			for (int i = 0;i<10; i++)
				if (a[j] == l[i])
				{
					flag = true;
					for (int u = 0; u< k; u++)
					{
						if (c[u] == a[j])
						{
							flag = false;
						}
					}
					if (flag)
					{
						cout << a[j] << '\n';
						fin3 << a[j] << '\n';
						c[k++] = a[j];
					}
				}
		}

} 
cout << "\n";
system("pause");
	return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2015, 20:39

Список, ввод-вывод через fstream
Подскажите плс почему у меня вывод в файл не хочет делать?((( Это програма списка структур....

Вывод и ввод значений через файлы
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &quot;StdAfx.h&quot; using namespace std; int main() {...

Ввод/вывод кириллицы через консоль
Вот простейший пример ввода и вывода слова(символа) через консоль # include &lt;iostream&gt; #...


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

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

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