Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
17.04.2015
Размер:
33.28 Кб
Скачать

Московский Государственный Университет Леса

ФЭСТ ВТ-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";

}

Соседние файлы в папке Борисов