Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Борисов / лабораторная9
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №9.
Программирование на языках высокого уровня
Тема: “Структуры”
Выполнил студент Борисов А.О.
Проверил Ларионов Н.В.
Москва 2012.
Задание:
1. Описать структуру с именем ZNAK, содержащую следующие поля:
• фамилия, имя;
• знак Зодиака;
• день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа
ZNAK; записи должны быть упорядочены по датам дней рождения;
• вывод на экран информации о человеке, чья фамилия введена с клавиатуры;
• если такого нет, выдать на дисплей соответствующее сообщение.
Листинг:
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 3
struct znak
{
char fi[30];
char zod[10];
int dr[3];
};
void inznak(znak &zn);
void sort (znak zodiak[]);
void output (char fam[], znak zodiak[]);
int main()
{
znak znk, zodiak[n];
int i;
char fam[20];
clrscr();
for (i=0; i<n; i++)
{
inznak(znk);
zodiak[i]=znk;
}
sort(zodiak);
for (i=0; i<n; i++)
{
cout<<"\n\n NAME znak zodiaka date \n";
cout<<"\n "<<zodiak[i].fi<<" "<<zodiak[i].zod<<" ";
for(int j=0; j<3; j++)
cout<<zodiak[i].dr[j]<<".";
}
cout<<"\n\nVedite familiu\n";
scanf("%s",fam);
output(fam,zodiak);
system ("pause");
return 0;
}
void inznak(znak &zn)
{
cout<<"\n Vvedite info\n";
cout<<"\n vvedite familiu i imya\n";
scanf("%s",zn.fi);
cout<<"\n vvedite znak zodiaka\n";
scanf("%s",zn.zod);
cout<<"\n vvedite datu rozhdeniya: god, mesyac, den\n";
for (int i=0; i<3; i++)
scanf("%i",&zn.dr[i]);
}
void sort (znak zodiak[])
{
znak tmp;
for (int j=0; j<n-1; j++)
for (int i=0; i<n-1; i++)
if (zodiak[i+1].dr[0]>zodiak[i].dr[0])
{
tmp=zodiak[i];
zodiak[i]=zodiak[i+1];
zodiak[i+1]=tmp;
}
}
void output (char fam[], znak zodiak[])
{
int a,b,j,k,l,i=-1;
while (j<b&&i<n)
{
i++;
a=strlen(zodiak[i].fi);
b=strlen(fam);
l=0;
do
{
j=0;
while (j<b&&fam[j]==zodiak[i].fi[l+j])
j++;
l++;
}
while (j<b&&l<=a-b);
}
if (j==b)
{
cout<<"\n\n NAME znak zodiaka date \n";
cout<<"\n "<<zodiak[i].fi<<" "<<zodiak[i].zod<<" ";
for(int j=0; j<3; j++)
cout<<zodiak[i].dr[j]<<".";
}
else
cout<<"\nTakogo cheloveka net";
}