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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2014, 08:31   #1
Валера1984
Пользователь
 
Регистрация: 10.02.2014
Сообщений: 14
По умолчанию Как правильно записать условие выборки данных из структуры (нападающих из основного состава команды) ( на C )

Программа должна выводить фамилии всех нападающих с датой рождения из основного состава:
Код:
#include"stdafx.h"
#include"iostream"
#include"conio.h"

using namespace std;

struct Data 		
	{
		unsigned day; 		
		unsigned month;		
		unsigned year;
	};

struct T_sport
	{
		char fio[40];
		Data d_birth;
		unsigned v_CSKA ;
		char MestoVkomande [20];
		char Sostav [20];
		
}; 

T_sport vvod_struc(int i);
void wr_struc(T_sport a);

int main()
{

	T_sport *p;
T_sport list [100]={"Ivanov I. I.",3,1,1984,2000,"Нападающий","Резерв", "Petrov A.A.",8,12,1987,2002, "Вратарь","Основной"};
	p=list+2;   		//адресная арифметика
	strncpy(p->fio,"Martinov I. A.",40);//обращение
	p->d_birth.day=20;
	p->d_birth.month=12;
	p->d_birth.year=1974;
	p->v_CSKA=2007; 
	strncpy(p->MestoVkomande,"Защитник",20);
	strncpy(p->Sostav,"Основной",20)
	
	for(int i = 3; i< 5; i++)
	{ 	
		list[i]=vvod_struc(i);
	};
	cout<<"\nlist of structs\n!      fio           !  facul\'tet !  kurs   !\n";
	
	int i_min = 0;
	char osn_sostav [] = "Основной";
	char zoch []= "Нападающий";

	for(int i = 0; i< 5; i++)
	{
		wr_struc(list[i]);
		if (list[i].Sostav==osn_sostav && list[i].MestoVkomande==zoch )
		{	
			
			i_min=i;
		}
	}
	printf("Sportsmen of osnovnoi_napad %20s", list[i_min].fio);
	_getch();
return 0;
}

T_sport vvod_struc(int i)
{
	T_sport a; 
	char c;
	cout<<endl<<"Enter data "<< i+1 <<" person\n";
	cout<<" fio ";
	cin.getline(a.fio,40);
	cout<<endl<<"Enter date of birthday: \n";
	cout<<" day (1-31) ";
	cin>>a.d_birth.day;
	cin.get(c);
	cout<<" month (1-12)";
	cin>>a.d_birth.month;
	cin.get(c);
	cout<<" year ";
	cin>>a.d_birth.year;
	cin.get(c);
	cout<<" v_CSKA ";
	cin>>a.v_CSKA;
	cin.get(c);
	cout<<" MestoVkomande ";
	cin.getline(a.MestoVkomande,20);
	cout<<" Sostav ";
	cin.getline(a.Sostav,20);

	
	return a;
};

void wr_struc (T_sport a)
{
	printf("%20s ! %2d.%2d.%4d ! %4d ! %15s ! %15s\n",a.fio,a.d_birth.day,a.d_birth.month,a.d_birth.year,a .v_CSKA,a.MestoVkomande,a.Sostav);
}


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

Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.02.2014 в 08:41.
Валера1984 вне форума Ответить с цитированием
Старый 13.02.2014, 08:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так?

Код:
  char osn_sostav [] = "Основной";
  char attack []= "Нападающий";


  for(int i = 0; i< 5; i++)
  {
	if (list[i].Sostav==osn_sostav && list[i].MestoVkomande==attack )
	{	
		wr_struc(list[i]);
	}
    }
если не устроит вывод всех полей, то можно написать так:
Код:
....
	if (list[i].Sostav==osn_sostav && list[i].MestoVkomande==attack )
	{	
		printf("! %20s ! %2d.%2d.%4d !\n", list[i].fio,list[i].d_birth.day, list[i].d_birth.month, list[i].d_birth.year);	
             }

p.p.s. Кстати, вместо жестко "зашитого" в программу количества членов команды (число 5) должна быть переменная!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2014, 09:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
list[i].Sostav==osn_sostav
Разве в Си строки так сравниваются? Тут нужна функция strcmp()
Код:
  char *osn_sostav = "Основной";
  char *attack = "Нападающий";


  for(int i = 0; i< 5; i++)
  {
	if (!strcmp(&list[i].Sostav,osn_sostav) && !strcmp(&list[i].MestoVkomande,attack) )
	{	
		wr_struc(list[i]);
	}
    }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.02.2014, 09:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Разве в Си строки так сравниваются? Тут нужна функция strcmp()
мда... вот правильно говорят, не в своё дело - не суйся!
А я сунулся и, похоже, зря!
Извините, что дал негодный пример. Сожалею!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2014, 09:28   #5
Валера1984
Пользователь
 
Регистрация: 10.02.2014
Сообщений: 14
По умолчанию

Спасибо большое
Валера1984 вне форума Ответить с цитированием
Старый 13.02.2014, 10:40   #6
Валера1984
Пользователь
 
Регистрация: 10.02.2014
Сообщений: 14
По умолчанию

Не могу понять почему выдает ошибку
Цитата:
1>c:\proect\8\8\8.cpp(64): error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *"
Код:
if (!strcmp(&list[i].Sostav,osn_sostav) && !strcmp(&list[i].MestoVkomande,attack) )
Валера1984 вне форума Ответить с цитированием
Старый 13.02.2014, 12:06   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Cтелепатирую: Нужно &osn_sostav и &attack
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.02.2014, 13:34   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Телепатирую в другую сторону
Код:
if (!strcmp(list[i].Sostav, osn_sostav) && !strcmp(list[i].MestoVkomande, attack))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно записать условие VP86 Общие вопросы C/C++ 7 17.09.2013 14:34
Как в существующий макрос добавить еще одно условие выборки? ХочуЗнать Microsoft Office Excel 20 05.12.2012 16:01
Как правильно построить цикл для выборки? Tanuska___:) БД в Delphi 1 12.01.2009 14:50