PDA

Просмотр полной версии : Описать структуру содержащую поля



LuenFen
16.04.2009, 23:02
Описать структуру с именем ZNAK, содержащую следущие поля:NAME - фамилия, имя; ZODIAC - знак зодиака;BDAY - день рождения(массив из трех чисел) и сформировать массив BOOK состоящий из восьми сруктур типа ZNAK; записи должны быть неупорядочены по любому из полей. Выполнить следущие действия: вывод на дисплей содержимого массива, упорядоченного по знакам зодиака; вывод на экран информации о людях, родившхся в месяц, значение которого введено с клавиатуры; если такх нет, выдать на дисплей соответсвующее сообщение.



Получилось вот только это. 1. Помогите с днем рождения - не могу понять "BDAY - день рождения(массив из трех чисел)" 2. Как упорядочить по зодиакам? Заранее спасибо

#include <stdio.h>
#include <string.h>
#include <conio.h>
struct ZNAK{
char NAME[100];
char ZODIAC[100];
int BDAY[3];};
void SORT(ZNAK *x);
void NTR(ZNAK x[8]);
int main()
{

clrscr();
ZNAK BOOK[8]={ {"Ivanov","oven",1,04,91},
{"Petrov","strelec",12,9,64},
{"Sidorov","ribi",1,03,38},
{"Kuznecov","telec",7,05,64},
{"Krilov","vesi",18,10,86},
{"Tolstoy","lev",20,8,78},
{"Pushkin","vodoley",10,02,06},
{"Lermontov","rak",22,07,12}};
SORT(BOOK);
NTR(BOOK);
getch();
return 0;
}

void SORT(ZNAK x[8])
{
ZNAK temp;
int i,j,imin;
for(i=0;i<6;i++)
{
imin=i;
for(j=i+1;j<7;j++) if(x[j].BDAY<x[imin].BDAY) imin=j;
temp=x[i];
x[i]=x[imin];
x[imin]=temp;
}
for(i=0;i<8;i++)
{
printf("----------------------------------------\n");
printf("%s #: %s BDAY: %d\n",x[i].NAME,x[i].ZODIAC,x[i].BDAY);}
for (int i=0; i < 8; i++){
printf("%2.1lf ", BDAY[i]);
printf("----------------------------------------\n");
}

void NTR(ZNAK x[8])
{
int i,count=0;
scanf("%d", &i);
for(int k=0;k<8;k++)
if(x[k].BDAY[i]==i)
{
printf("%s #: %s BDAY: %d\n",x[k].NAME,x[k].ZODIAC,x[k].BDAY);
count++;
}
if(!count) printf("Net ludey");
}

Airhand
18.04.2009, 12:08
Я бы сделал так:


#include <string>
#include <vector>

struct ZNAK
{
std::string NAME;
std::string ZODIAC;
unsigned int BDAY[3];
};

std::vector< ZNAK > BOOK = {("Ivanov","oven",1,04,91),...};
...
void PrintBook()
{
for (size_t i =0; i < BOOK.size(); ++i)
{
cout<<BOOK[i].NAME<<endl;
...
}
}

Всё очень просто. Я не писал всех процедур и всех операторов. Набирал код на форуме, так что может не компилиться.