#include <iostream.h>/*подключаем библиотеку потокового ввода-вывода*/ #include <conio.h> /*подключаем библиотеку для дополнительных функций консоли*/ #include<string.h> /*подключаем библиотеку для работы со строками*/ const int len=21; /*максимальная длина фамилии-20символов*/ struct date{int day; int month; int year;}; /*описываем структуру для данных о дате рождения*/ struct students{ char fam[len]; char ini[10]; date dat;}; /*описываем структуру для хранения информации о студенте*/ /*Прототипы используемых функций*/ void input(students x[], int n); void output(students x[], int n); void request(students x[], int n); void sort_date(students x[], int n); void sort_name(students x[], int n); void main(){ clrscr(); /*очищем экран*/ const int N=20; /*максимальное количество элементов в массиве а*/ students a[N]; /* инициализируем массив а, хранящий информацию о студентах*/ int m; /*инициализируем реальное количсетво элементов массива*/ cout<<"How many strings in table: "; /*приглашения на ввод количества элементов и далее считываем его с клавиатуры*/ cin>>m; input(a,m); /*вызываем функцию ввода с клавиатуры массива а*/ cout<<"Table is ready"<<"\n"; /*уведомлем пользователя о том что массив сформирован и выводим его на печать*/ output(a,m); cout<<"\n"; sort_date(a,m); /*вызываем функцию сортировки по дате рождения*/ cout<<"Table sort"<<"\n"; /*уведомляем пользователя что массив отсортирован*/ output(a,m); /*выводим массив на печать* cout<<"\n"<<"Students born in the spring: "<<"\n"; /*Выводим уведомление о студентах родившихся весной */ request(a,m); /*вызываем функцию которая делает запрос о студентах родившихся весной*/ getch(); /* ждем нажатия любой клавиши*/ } void input(students x[], int n) /*функция ввода данных в массив */ { for(int i=0; i<n;i++){ cout<<"Family="; cin>>x.fam; cout<<"Ini="; cin>>x.ini; cout<<"Day="; cin>>x.dat.day; cout<<"Month="; cin>>x.dat.month; cout<<"Year=";cin>>x.dat.year; cout<<"\n"; } } void output(students x[], int n){ /*функция вывода данных из массива */ for(int i=0; i<n;i++){ cout<<x.fam<<" "<<x.ini<<" "; cout<<x.dat.day<<"."<<x.dat.month<<"."<<x.dat.year<<"\n"; } } void request(students x[], int n){ /*функция которая запрашивает в массиве все записи, месяцы которых удовлетворяют условию*/ int ch=0; for(int i=0; i<n; i++){ if((x.dat.month>2)&&(x.dat.month<6)){ /*если месяц рождения лежит в интервале от 2 до 6 то отправляем их на вывод*/ cout<<x.fam<<" "<<x.ini<<" "; cout<<x.dat.day<<"."<<x.dat.month<<"."<<x.dat.year<<"\n"; ch; } } if(ch==0) cout<<"No that students"; } void sort_date(students x[], int n){ /*функция сортировки массивапо дате прождения*/ int i,fl,m; /*инициализируем переменные*/ students t; int m=n; do{ fl=0; /*обнуляем флажок, который поможет проверить были ли изменения в массиве*/ n--; /*уменьшаем количество пар*/ for(i=0;i<n;i++) if(x.dat.year<x[i+1].dat.year){ /*сравниваем даты рождения по годам*/ t=x; /*тут и далее заменяем переменные*/ x=x[i+1]; x[i+1]=t; fl=1; /*если изменения были то флажку приравниеваем 1*/ }else{ if(x.dat.year==x[i+1].dat.year) /*если у нас совпадают года то просматриваем по месяцам*/ if(x.dat.month<x[i+1].dat.month){ t=x; x=x[i+1]; x[i+1]=t; fl=1; }else{ if(x.dat.month==x[i+1].dat.month) /*если свопадают по месяцам то сравниваем по дням*/ if(x.dat.day<x[i+1].dat.day){ t=x; x=x[i+1]; x[i+1]=t; fl=1;} } } } while(fl==1); } void sort_name(students x[], int n){ int i,fl; students t; do{ fl=0; n--; for(i=0;i<n;i++) if(strcmp(x.fam,x[i+1].fam)>0){ t=x; x=x[i+1]; x[i+1]=t; fl=1;}else{ if(strcmp(x.fam,x[i+1].fam)==0) if(strcmp(x.ini,x[i+1].ini)>0){ t=x; x=x[i+1]; x[i+1]=t; fl=1; } } } while(fl==1); }
Вот тут правильный вариант! >>>>>>>>>>>+>> Z ************************** * Write tables to memory * ************************** (Replace with own tables) Table 0 ++++>>++++>>+++++>>+++ >>>>>>+>> (Table separator) Table 1 ++>>+++>>++++ >>>>>>+>> Table 2 ++++>>+++>>++ ***************** * End of tables * ***************** [[<<]<<<<]<<<<< **************************************** * Parameter table (Fill with own code) * **************************************** (We are in address zero Put your own code here) Read (Z=No NZ=Yes) + > Table number (0 to 255) ++ > Address in table (1 to 255) ++ > Value (1 to 255) <<< ************************** * End of Parameter table * ************************** ******** * Code * ******** [[-] Read Y/N Copy table >[->>>+>>+<< <<<]>>>[-<<<+>>>] Copy Address <<[->>+>> >>>>+<<<< <<<<]>>[-<<+>>] >> Goto table X [- >>>> Move address number [->[>>]>>>+<<< <<[<<]>] Move table number <<<<[-> >>>>[>>]<+<[<<]<<<] >>>>>[>>]< ] End of goto >>>> Search address in current table [-[->>+<<]+>>] > [-<+> >+<] >[-<+>]< < - <<<< [->>>> [-<<+>>] <<<<<< ] >>>> [-<<+>>]<< Copy value to parameter table >-< [- <<<<< [[<<]<<<<]<< + >> >>>>>> [[>>]>>>>] < ] >+< <<<<<[[<<]<<<<]<<<<< ] End of Read Y/N *************** * End of Code * ***************