Методические указания ЛР10_примеры__2014 (1079950), страница 2
Текст из файла (страница 2)
Типы и названия полей взять изтаблицы вариантов (см. ниже). Все данные структуры статические. Дополнить описаниеструктуры двумя полями, придумав их по смыслу. Описание структуры выполнить взаголовочном файле проекта (<имя проекта>.h).(*.h).//////// ЗАГОЛОВОЧНЫЙ ФАЙЛ// МУ п.2////////struct Student { // Описание студунта - структураchar Name[20]; // Фамилия студентаint Num;// Номер студентаdouble Oklad; // Размер стипендииint Kurs;// Резерв пока в примере нетchar Date[10]; // Резерв пока в примере нет};…3.
Описать и заполнить одну свою простую структурную переменную с помощьюинициализации при ее описании.//////// ГЛАВНАЯ ПРОГРАММА// МУ п.3////////Student Stud1 ={ "Лаптева" , 1 , 1000.0}; // Инициализация трех полей…4. Описать и заполнить еще одну свою структурную переменную вручную (с помощьюоператоров присваивания – числовые данные и функции копирования – строчныеданные).
Распечатать значения ее полей двух структурных переменных (Функция - printf).//////// ГЛАВНАЯ ПРОГРАММА// МУ п.4////////Student Stud2;Stud2.Num = 2;Stud2.Oklad = 2000.00;strcpy(Stud2.Name , "Аксенова");printf ("Пункт МУ 4:\n");printf( "Stud2: Имя = %-15s Номер = %2d Стипендия = %8.2lf \n\n",Stud2.Name , Stud2.Num, Stud2.Oklad );5. Разработать функцию распечатки одной данной структурной переменной, передавая вкачестве параметра ее адрес, и проверить ее на описанных ранее структурныхпеременных.7//////// ЗАГОЛОВОЧНЫЙ ФАЙЛ//////// РЕАЛИЗАЦИЯ ФУНКЦИИ// МУ п.5// Распечатка отдельной структурной переменной студента////////void PrintStudent(Student * pS){printf( "Запись: Имя = %-15s Номер = %2d Стипендия = %8.2lf \n",pS->Name , pS->Num, pS->Oklad );};…//////// ПРОТОТИП// МУ п.5void PrintStudent(Student * pS);…//////// ГЛАВНАЯ ПРОГРАММА// МУ п.5////////printf ("Пункт МУ 5:\n");PrintStudent(&Stud1) ;PrintStudent(&Stud2) ;…Результат работы программы:Пункт МУ 5:Запись: Имя = ЛаптеваЗапись: Имя = АксеноваНомер =Номер =12Стипендия =Стипендия =1000.002000.006.
Создать динамическую структурную (функция – malloc, библиотека - <malloc.h>)заполнить ее динамически и распечатать значение через указатель и с помощьюспециальной функции печати. Удалить созданную динамическую переменную.//////// ГЛАВНАЯ ПРОГРАММА// МУ п.6////////Student * pStud = (Student *) malloc (sizeof(Student));pStud->Num = 3;pStud->Oklad = 3000.00;strcpy(pStud->Name , "Большаков");printf ("Пункт МУ 6:\n");PrintStudent( pStud ) ;free( pStud );pStud= NULL;…Результат работы программы:Пункт МУ 6:Запись: Имя = БольшаковНомер =3Стипендия =3000.007.
Описать и проинициализировать массив структурных переменных не менее 4-х.Распечатать этот массив с помощью функции п.5.//////// ГЛАВНАЯ ПРОГРАММА// МУ п.7////////Student SMas[] ={{"Первый" , 1 , 1000.0}, {"Второй" , 2 , 2000.0}, {"Третий" , 3 , 3000.0},{"Четвертый" , 4 , 4000.0}};int RazmS = sizeof(SMas)/ sizeof(Student); // Вычисление размерности массиваprintf ("Пункт МУ 7:\n");for (int i = 0 ; i < RazmS ; i++ )PrintStudent( &SMas[i] ) ;…8Результат работы программы:Пункт МУ 7:Запись: ИмяЗапись: ИмяЗапись: ИмяЗапись: Имя====ПервыйВторойТретийЧетвертыйНомерНомерНомерНомер====1234СтипендияСтипендияСтипендияСтипендия====1000.002000.003000.004000.008.
Разработать функцию распечатки массива с записями структурных переменных.Формальные параметры этой функции: указатель на массив структурных переменных иего размер. Использовать свою функцию печати одной структурной переменной.Проверить работу этой функции.//////// ЗАГОЛОВОЧНЫЙ ФАЙЛ//////// РЕАЛИЗАЦИЯ ФУНКЦИИ// МУ п.8//////////////////////////void StudPrintMas( Student * pMas , int Razm){for (int i = 0 ; i < Razm ; i++ ){PrintStudent(pMas + i); // Используется готовая функция};};…//////// ПРОТОТИП// МУ п.8void StudPrintMas( Student * pMas , int Razm);…//////// ГЛАВНАЯ ПРОГРАММА// МУ п.8////////printf ("Пункт МУ 8:\n");StudPrintMas( SMas , RazmS);…Результат работы программы:Пункт МУ 8:Запись: ИмяЗапись: ИмяЗапись: ИмяЗапись: Имя====ПервыйВторойТретийЧетвертыйНомерНомерНомерНомер====1234СтипендияСтипендияСтипендияСтипендия====1000.002000.003000.004000.009.
Создать цикл для заполнения нового динамического массива записей полями сослучайными значениями параметров (размер 5-6 элементов). Предусмотреть случайноезаполнение одного числового значения (использовать функцию - rand) и одногосимвольного значения (использовать функции: rand и atoi вместе с функциямикопирования/слияния текстов - strcat, strcpy). Распечатать созданный массив в этом жецикле.//////// ГЛАВНАЯ ПРОГРАММА// МУ п.9////////printf ("Пункт МУ 9:\n");const int Rzm = 6; // Размер массиваStudent * pPotok = new Student[Rzm];// Заполнениеsrand( (unsigned)time( NULL ) ); // Настройка датчика случайных чиселrand(); // первое числоfor (int i=0 ; i < Rzm ; i++ ){char Buf[20];9char Num[10];strcpy(Buf , "Stud № - ");pPotok[i].Num = (rand()*9)/ RAND_MAX ; // диапазон 0 - 9pPotok[i].Oklad = 1000.0 * 10.0 * rand() / RAND_MAX ;// диапазон 0 - 10000.0int n = (rand()*30)/ RAND_MAX ;// диапазон 0 - 30strcat(Buf , itoa (n + 1 ,Num, 10 ));strcpy( pPotok[i].Name , Buf);};StudPrintMas( pPotok , 6);…Результат работы программы:Пункт МУ 9:Запись: ИмяЗапись: ИмяЗапись: ИмяЗапись: ИмяЗапись: ИмяЗапись: Имя======StudStudStudStudStudStud№№№№№№-8142322530НомерНомерНомерНомерНомерНомер======858657СтипендияСтипендияСтипендияСтипендияСтипендияСтипендия======2244.335401.471216.169750.058779.265598.0110.
Придумать название двоичному файлу для выполнения задания (в нашем примере "BDStud.bin", например "BDBook.bin" – для книг ).//////// ГЛАВНАЯ ПРОГРАММА// МУ п.10 "BDStud.bin" – мой файл для работы с записями структурных переменных////////11. Создать цикл для заполнения файла записями (запись в файл) с разными значениямичисловых параметров изменяемых в цикле (номер в журнале группы) или основанных наначальной инициализации своего массива структур.///////// МУ п.11 Синий////////Student ZMas[] ={{"Запись 1" , 0 , 1000.0}, {"Запись 2" , 0 , 2000.0}, {"Запись 3" , 0 , 3000.0},{"Запись 4" , 0 , 4000.0}};int RazmZ = sizeof(ZMas)/ sizeof(Student); // Вычисление размерности массиваprintf ("Пункт МУ 11(синий):\n");system ( "attrib -R BDStud.bin "); // Снятие атрибута защиты записи, нужно после первого созданияpFBin = _open( "BDStud.bin", _O_RDWR |_O_BINARY | _O_CREAT | _O_TRUNC);system("attrib -R BDStud.bin ");if ( pFBin != -1 ){for ( int i = 0 ; i < RazmZ ; i++ ){ZMas[i].Num = i + 1;_write (pFBin , &ZMas[i] , sizeof(Student));};_close( pFBin );};StudPrintMas( ZMas , RazmZ);system("attrib -R BDStud.bin ");…Результат работы программы:Пункт МУ 11(синий):Запись: Имя = ЗаписьЗапись: Имя = ЗаписьЗапись: Имя = ЗаписьЗапись: Имя = Запись1234НомерНомерНомерНомер====1234СтипендияСтипендияСтипендияСтипендия====1000.002000.003000.004000.0011.
Создать цикл чтения и распечатки сформированного двоичного файла. Данные изфайла ввести в статический массив структур, задав его максимальный размер равным 100.////////10// МУ п.11 РасStudent MASStud[100];printf ("Пункт МУ 11(Печать файла):\n");pFBin = _open( "BDStud.bin", _O_RDWR |_O_BINARY );if ( pFBin != -1 ){for ( int i = 0 ; _eof(pFBin) == NULL ; i++ ){int nByte = _read( pFBin , &MASStud[i] , sizeof(Student));PrintStudent( &MASStud[i] );RazmZ = i;}_close( pFBin );};printf ("Пункт МУ 11(Печать всего массива):\n");StudPrintMas( MASStud , RazmZ + 1 );…Результат работы программы:Пункт МУ 11(Печать всего массива):Запись: Имя = Запись 1НомерЗапись: Имя = Запись 2НомерЗапись: Имя = Запись 3НомерЗапись: Имя = Запись 4Номер====1234СтипендияСтипендияСтипендияСтипендия====1000.002000.003000.004000.0011.
Создать цикл для заполнения файла записей полями со случайными значениямипараметров. Предусмотреть случайное заполнение одного числового значения(использовать функцию - rand) и одного символьного значения (использовать функции:rand и atoi вместе с с функциями копирования/слияния текстов - strcat, strcpy).Распечатать созданный файл в цикле заполнения.//////// ГЛАВНАЯ ПРОГРАММА// МУ п.11////////printf ("Пункт МУ 11:\n");system ( "attrib -R BDStud.bin "); // Снятие атрибута защиты записи, нужно после первогоpFBin = _open( "BDStud.bin", _O_RDWR |_O_BINARY | _O_CREAT | _O_TRUNC);system("attrib -R BDStud.bin ");if ( pFBin != -1 ) // Открыт ли файл?{for ( int i = 0 ; i < 4 ; i++ ) // цикл записи в файл{Student StudFile;char Buf[20];char Num[10];strcpy(Buf , "Запись № - ");StudFile.Num = (rand()*9)/ RAND_MAX ;StudFile.Oklad = 1000.0 * 10.0 * rand() / RAND_MAX ;strcat(Buf , itoa (i + 1 ,Num, 10 ));strcpy( StudFile.Name , Buf);// Запись в файл_write (pFBin , &StudFile , sizeof(Student));PrintStudent( &StudFile );};// Закрытие_close( pFBin );system("attrib -R BDStud.bin ");};…Результат работы программы:Пункт МУ 11:Запись: Имя = Запись № - 1Номер =5Стипендия =4647.9711Запись: Имя = Запись № - 2Запись: Имя = Запись № - 3Запись: Имя = Запись № - 4Номер =Номер =Номер =364Стипендия =Стипендия =Стипендия =2787.566024.059525.7412.














