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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 21:09   #1
SOUR47
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 10
Печаль добавить элемент после элемента с указанным номером

Плиз прошу помочь мне найти решение...
Работает все правильно (задание в листинге), но никак не могу сделать так чтоб программа записывала элемент ПОСЛЕ указанного пользователем номером, все стремиться в начало файла >< уже не знаю как решить, пожалуйста хелп)

Код:
/*Структура "Государство":
- название;
- столица;
- численность населения;
- занимаемая площадь.
Удалить все элементы, у которых численность меньше
заданной, добавить элемент после элемента с указанным
номером.*/

#include <math.h>
#include <iostream>
#include <string.h>
using namespace std;
#define max_razmer 255
int o4ki(int min);
int sodershimoe_faila(int n);
int zanesenie_v_fail(int n);
int dobavlenie (int num, int n);
struct gosudarstvo
{
	char strana[max_razmer];
	char stolica[max_razmer];
	int naselenie;
	int ploshad;
};
gosudarstvo mas[max_razmer];

int main()
{
	FILE *input;
	if((input=fopen("1.txt","w"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}
	int n,i,min, num;
	cout<<"\nVvedite koli4estvo stran --> ";
	cin>>n;
	for(i=0;i<=n-1;i++)
	{
		cout<<"\nVvedite nazvanie strani  ->";
		cin>>mas[i].strana;
		cout<<"\nVvedite stolicu  ->";
		cin>>mas[i].stolica;
		cout<<"\nVvedite kolichestvo naselenia  ->";
		cin>>mas[i].naselenie;
		cout<<"\nVvedite ploshad  ->";
		cin>>mas[i].ploshad;
		cout<<"\n_______________________________________\n";

		fprintf(input,"%s\n",mas[i].strana);
		fprintf(input,"%s\n",mas[i].stolica);
		fprintf(input,"%i\n",mas[i].naselenie);
		fprintf(input,"%i\n",mas[i].ploshad);
		fprintf(input,"%s\n","\n_______________________________________\n");

	}
	sodershimoe_faila(n);	
	cout<<"\nVvedite minimalbnoe naselenie --> ";
	cin>>min;
	fclose(input);
	o4ki(min);
	cout<<"\n Vvedite nomer elementa: ";
	cin>>num;	
	dobavlenie (num, n);
	zanesenie_v_fail(num);
	return 0;
}

int o4ki(int min)
{
	FILE *read;
	FILE *input;
	char stran[max_razmer],gorod[max_razmer],otdelenie[max_razmer];
	int nasel,plosh;
	if((read=fopen("1.txt","r"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}	
	if((input=fopen("buffer.txt","w"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}	
	do
	{
		fscanf(read,"%s\n%s\n%i\n%i\n%s\n",&stran,&gorod,&nasel,&plosh,&otdelenie);
		if(min<nasel)
		{
			fprintf(input,"%s\n%s\n%i\n%i\n%s\n",stran,gorod,nasel,plosh,otdelenie);
		}		
	}
	while(!feof(read));
	fclose(read);
	fclose(input);
	return 1;
}
int sodershimoe_faila(int n)
{
	for(int i=0;i<=n-1;i++)
	{
		cout<<endl;
		cout<<mas[i].strana<<endl;
		cout<<mas[i].stolica<<endl;
		cout<<mas[i].naselenie<<endl;
		cout<<mas[i].ploshad<<endl;
	}
	return 1;
}
int zanesenie_v_fail(int num)
{
	FILE *read;
	FILE *input;
	char stran[max_razmer],gorod[max_razmer],otdelenie[max_razmer];
	int nasel,plosh;
	if((read=fopen("buffer.txt","r"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}	
	if((input=fopen("1.txt","w"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}	

	do
	{		
		fscanf(read,"%s\n%s\n%i\n%i\n%s\n",&stran,&gorod,&nasel,&plosh,&otdelenie);
		fprintf(input,"%s\n%s\n%i\n%i\n%s\n",stran,gorod,nasel,plosh,otdelenie);
	}
	while(!feof(read));

	fclose(read);
	fclose(input);
	return 1;
}

int dobavlenie (int num, int n)
{
		FILE *input;

	if((input=fopen("1.txt","r+ c"))==NULL)
	{
		cout<<"\nOshibka pri otkritii faila";
	}

	for (int i=n-1; i>num; i--)
	{
		mas[i+1]=mas[i];
	}
	n++;
	cout<<"\n Vvedite stranu: "<<endl;

		cout<<"\nVvedite nazvanie strani  ->";
		cin>>mas[num+1].strana;
		cout<<"\nVvedite stolicu  ->";
		cin>>mas[num+1].stolica;
		cout<<"\nVvedite kolichestvo naselenia  ->";
		cin>>mas[num+1].naselenie;
		cout<<"\nVvedite ploshad  ->";
		cin>>mas[num+1].ploshad;
		cout<<"\n_______________________________________\n";

		fprintf(input,"%s\n",mas[num+1].strana);
		fprintf(input,"%s\n",mas[num+1].stolica);
		fprintf(input,"%i\n",mas[num+1].naselenie);
		fprintf(input,"%i\n",mas[num+1].ploshad);
		fprintf(input,"%s\n","\n_______________________________________\n");

		
		return 1;
}
SOUR47 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить элемент в массив увеличив его размерность Yura_n Общие вопросы C/C++ 3 05.12.2009 18:09
добавить/удалить элемент Revenholm Общие вопросы C/C++ 3 13.06.2009 17:17
Удалить первый положительный элемент после максимального pavel42 Помощь студентам 3 25.05.2009 15:30
Добавить элемент в массив MAKEDON Общие вопросы C/C++ 2 23.03.2009 18:47
заменить любой минимальный элемент максимальным и сменить знак максимального элемента противоположным Рітка-кулеметчиця Паскаль, Turbo Pascal, PascalABC.NET 2 26.01.2009 17:45