Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 18:41   #1
kop
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 65
По умолчанию Работа с файлами

Задание: Дан файл F, компоненты которого есть целые числа. Количество компонентов файла делится на 10. Записать в файл Q сначала 10 наибольших компонентов файла F, после этого- оставшиеся компоненты.
Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
 
int main()
{
	setlocale(LC_CTYPE, "Rus");
	int*X,k,n;	
	cout<<"Введитек количество элементов ( при условии: Количество элементов должно делится на 10- без остатка=";
	cin>>n;
	if (n>10)
	{
		if((n%10)==0)
		{
			X=new int[n];
			ofstream zapis ("F.EXT");    // открытие файла для записи
			for (int i=0; i<=n-1; i++)
			{ 
				cout<<"X["<<i<<"]=";
				cin>>k;
				X[i]=k;
				zapis<<k<<endl;      // запись чисел в файл
			}
			cout<<"Числа в файле F:"<<endl;
			for (int i=0; i<=n-1; i++)
			{   
			    cout<<"X["<<i<<"]=";
				cout<<X[i]<<endl;
			}
			for(int x=1; x<n; x++)    // цикл сортировки массива
			{
				for (int i=0; i<n-x; i++)
				{
					if (X[i]<X[i+1])
					{
						k=X[i];
						X[i]=X[i+1];
						X[i+1]=k;
					}
				}
			}
			cout<<"Числа в файле Q:"<<endl;
			for (int i=0; i<=n-1; i++)
			{   
				cout<<"X["<<i<<"]=";
				cout<<X[i]<<endl;      // вывод по  возрастанию массива
			}
			ofstream book_file2 ("Q.EXT");     // открытие файла для записи
			for (int i=0; i<=n-1; i++)
			{
				k=X[i];
				book_file2<<k<<endl;        // запись в фал "F"  10 наиьольших компонентов и остальные числа 
			} 
		}
		else
		{
			cout<<"Количество элементов должно делится на 10- без остатка"<<endl;
		}
	}
	else { cout<<"Количество чисел должно быть больше 10"<<endl;
	}

	 return 0 ;
}



Как сделать так что-бы сначала выводились 10 наибольших элементов( из всего массива), а потом оставшиеся( не по возрастанию... а так как они были заданы)??
kop вне форума Ответить с цитированием
Старый 30.05.2011, 19:11   #2
RomanHouse
 
Аватар для RomanHouse
 
Регистрация: 29.05.2011
Сообщений: 6
По умолчанию

Задача не трудная, работы на 5 минут. Только есть пару вопросов по коду:
- в условии не сказано, что элементы файла F надо вводить с клавиатуры, так зачем ты вводишь? или все таки надо вводить именно с клавиатуры?
- обычно в таких задачах если говорят, что "количество элементов делится на 10", значит предполагается, что на вход будут идти только такое число. проверку правильности ввода надо делать?
RomanHouse вне форума Ответить с цитированием
Старый 30.05.2011, 19:14   #3
kop
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 65
По умолчанию

Цитата:
Сообщение от RomanHouse Посмотреть сообщение
Задача не трудная, работы на 5 минут. Только есть пару вопросов по коду:
- в условии не сказано, что элементы файла F надо вводить с клавиатуры, так зачем ты вводишь? или все таки надо вводить именно с клавиатуры?
- обычно в таких задачах если говорят, что "количество элементов делится на 10", значит предполагается, что на вход будут идти только такое число. проверку правильности ввода надо делать?
препод сказал что вводить нужно с клавиатуры , желательно с проверкой.
kop вне форума Ответить с цитированием
Старый 30.05.2011, 20:07   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Как сделать так что-бы сначала выводились 10 наибольших элементов( из всего массива), а потом оставшиеся
Код:
int a[] = {4, 3, 2, 7, 6, 1, 9, 0, 5, 8, 3, 3, 7, 7, 1, 1, 9, 0, 0};
partial_sort(a, a + sizeof a / sizeof a[0], a + 10, greater<int>());
   // a = {9, 9, 8, 7, 7, 7, 6, 5, 4, 3, 2, 1, 0, 3, 3, 1, 1, 0, 0}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами С++/С yuliyayuliya Помощь студентам 4 14.03.2011 12:20
Работа с файлами Маняша Общие вопросы Delphi 3 12.12.2010 16:43
Работа с файлами Kazik Помощь студентам 2 16.05.2010 01:16
Работа с файлами NightFire Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2009 21:47
Работа с файлами cr1mson Общие вопросы C/C++ 7 14.01.2009 22:42