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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2014, 15:17   #1
fun_time
 
Регистрация: 24.01.2013
Сообщений: 6
По умолчанию задача по структурам

пытался переделать программу, но компилятор виснет намертво
Задача:На каждого из спортсменов, заявленных на областных соревнованиях по легкой атлетике представлена карточка со следующим данными: регистрационный номер спортсмена (3 цифры), город, фамилия и инициалы, возраст (лет), рост (см), код вида соревнований (не более четырех видов: прыжки в высоту, бег на 100м и т.п.) Требуется составить и отпечатать для заданного города данные: город, количество спортсменов, в том числе от 18 до 20 лет.
Записи расположить в файле по росту спортсменов.

нужно сделать, чтобы ввод был не вручную, а считывался с файла где есть уже написанные данные и ответ записывался в новый.

Данные, считываемого файла:
test.txt
Код:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>


using namespace std;
int size=0;bool flag=false;
const int sizes=size;
float sred=0;
char vidos=0;
struct lehk_atlet
{	
	char familia[15];
	char name;
	char otch;
	unsigned int age; 
	unsigned int rost;
	char reg_kod[3];
	char city[15];
	unsigned char vid_srev;
};

float sred_vozrast(lehk_atlet le[15])
{
	int uchas=0;
	int sum=0;
	
	for(int i=0;i<size+1;i++)
	{
		if(le[i].vid_srev=='1')
		{
			sum+=le[i].age;
			uchas++;
		}
	}
	if(uchas>0)
	{return (sum/uchas);
	}else return 0;


	
}
struct city_sport
{
	char city[15];
	unsigned int count_sport;
	unsigned int rost;
	unsigned int age;
};

void inicializ(city_sport cs[15])
{
	for(int i=0;i<15;i++)
	{
		cs[i].age=0;
		cs[i].count_sport=0;
		cs[i].rost=0;
	}
}

void str_read(char kuda[15],char chto[15])
{
	for(int i=0;i<15;i++)
	{
		kuda[i]=chto[i];
	}
}

void zapoln_city(city_sport citys[10],lehk_atlet m[10],char city[15])
{
	for(int i=0;i<size;i++)
	{   
		if(strcmp(m[i].city,city)==0 && m[i].age<=100 && m[i].age>=1)
		
		{cout<<m[i].city<<endl;
			str_read(citys[i].city,city);
		
			citys[i].count_sport++;
			citys[i].rost=m[i].rost;
			citys[i].age=m[i].age;
		}
	}
}

void print(city_sport c[100])
{

	for(int i=0;i<size;i++)
	{
		cout<<c[i].city<<": "<<c[i].count_sport<<endl; 
	}
}

float zapoln(lehk_atlet m[10], city_sport c[10],int num, FILE *f)
{
	fscanf(f,"%s", m[num].city);
	cin>>m[num].city;
	cout<<"Vvedite familiy:";
	cin>>m[num].familia;
	cout<<"Vvedite vozrast:";
	cin>>m[num].age;
	cout<<"Vvedite rost:";
	cin>>m[num].rost;
	cout<<"Vvedite vud sorevnovaniy(1-4):";
	cin>>m[num].vid_srev;
	cout<<"Vvedite registr kod (3 cumvola):";
	cin>>m[num].reg_kod;
	cout<<"Vvedite gorod:";
	cin>>m[num].city;	
	cout<<"Vvedite pervuy bykvy umenu:";
	cin>>m[num].name;
	cout<<"Vvedite pervuy bykvy otchestva:";
	cin>>m[num].otch;
	flag=true;
	bool f=false;
	for(int i=0;i<size;i++)
	{
		if(strcmp(c[i].city,m[num].city)==0)
		{
			f=true;
		}
	}if(f==false)
	{
		str_read(c[num].city,m[num].city);
	}
	return sred;
}

void sort_save(city_sport c[100])
{
	for(int i=0;i<size;i++)
	{
		if(c[i].rost<c[i+1].rost)
		{
			city_sport buf= c[i];
			c[i]=c[i+1];
			c[i+1]=buf;
		}
	}

	FILE * files = fopen("test.txt","w");
	for(int i=0;i<size;i++)
	{
		fprintf(files,"%s:%d, с rostom %d \r\n",c[i].city,c[i].count_sport,c[i].rost);
	}
	fclose(files);
}



int main()
{
	SetConsoleOutputCP(1251);
	SetConsoleCP(1251);
	lehk_atlet* m=new lehk_atlet[100];
	city_sport* citys=new city_sport[100];
	inicializ(citys);
	float sreda=0;
	FILE *f;
	f=fopen("d:\\test.txt","rt");
	while(true)
	{
			cout<<"1.Vvod dannux\n2.zadanie 1\n3.zadanie 2\n4.uchastniki\n5.Vuxod\n Vvedute indeks vubrannoro dejstviya ";
	
	
		unsigned int k;
		cin>>k;
		
			switch(k)
			{
			case 1:sreda=zapoln(m,citys,size, f);break;
			case 2:if(flag==true)
				{
					char c[15];
					cout<<"Vvedite gorod :"<<endl;
					cin>>c;
					zapoln_city(citys,m,c);
					print(citys);
				}break;
			case 3:if(flag==true)
				{
					sort_save(citys);
				   }break;
			case 4:cout<<"vozrast="<<sred_vozrast(m)<<endl;break;
			case 5:return 0;
			}
		
	}
	delete m;
	delete citys;
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.04.2014 в 15:35.
fun_time вне форума Ответить с цитированием
Старый 24.04.2014, 23:10   #2
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

аргумент f функции zapoln имеет файловый тип данных
собственно функция zapoln как и положено принимает этот тип данных,что прописано у тебя в параметрах этой функции
а потом ты пишешь вот эту байду -
Код:
bool f=false;
переопределять типы данных нельзя у одинаковых идентификаторов(имен переменных)
alekopoko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа по структурам TAnOK C# (си шарп) 1 20.03.2013 21:48
Задача по файлам и структурам. OrdeR Общие вопросы C/C++ 0 18.06.2011 22:47
Литература по структурам novak3 Обсуждение статей 1 20.05.2011 18:52
Задача по динамическим структурам данных bizzycv Общие вопросы Delphi 1 14.04.2011 19:32
Visual Studio - Задача по структурам(Списки) opsi Помощь студентам 1 01.06.2009 10:04