![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программирование алгоритмов с использованием структурСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Цель работы: Изучить особенности работы с составным типом данных – структуры. Краткие теоретические сведения Структура объединяет логически связанные данные разных типов. Структурный тип данных определяется описанием: struct имя_структуры { описание элементов; }; Для выделения памяти под структуру надо определить структурную переменную: struct имя_структуры имя_переменной; При определении структур можно задавать начальные значения элементам структур. Для ввода значений элементов структур можно использовать оператор cin>> потокового ввода или оператор ввода scanf. Над структурами допускаются следующие операции: 1) Взятие адреса структуры. Адрес структуры может быть получен путем применения операции указатель (&) к структурной переменной. 2) Доступ к элементу структуры можно выполнить с помощью операций: точка (.) - прямой доступ или стрелка (->) - доступ по указателю. Структурная переменная может использоваться так же, как и переменные типов float,int,char и т.д. Например:
struct gr /* имя структуры */ { char fio[10]; /* элемент структуры */ int est[25]: /* элемент структуры */ int nomer; /* элемент структуры */ } gruppa1; /* имя структурной переменной */
struct gr gruppa2; /* объявление структурной переменной */ Если описатель структуры записан до размещения всех функций в исходном файле, то он будет доступен каждой из функций в этом файле. При определении структурной переменной можно инициалиировать (станавливать значения полям структуры). Например struct date { int day,month,year;}; d[5]={ { 1,3,1980}, { 5,1,1990}, { 1,1,2002} };
Пример на использование структур #include <stdio.h> #include <string.h> #include <conio.h> #include <iostream.h> struct Spisok { char Fio[20]; char Grup[10]; int Ot[3]; float S_Bal; } *sved;
void Vvod(int nom,struct Spisok *sved) { cout << "\n Vvedi svedenia " << (nom+1); cout << "\n FIO - "; gets(sved->Fio); cout << " Nomer Gr - "; cin >> sved->Grup; float s=0; for(int i=0;i<3;i++) { cout << "\n Otcenki - "; cin >> sved->Ot[i]; s+=sved->Ot[i]; } sved->S_Bal=s/3.; return; }
void main(void) { struct Spisok Stud[50]; int i,N; char Bukva; clrscr(); cout << "\n Vvedi kol-vo < 50 "; cin >> N; for(i=0;i<N;i++) Vvod(i,&Stud[i]); cout << "\n Spisok Students"; for(i=0;i<N;i++) printf("\n %20s %10s %4.2f",Stud[i].Fio,Stud[i].Grup,Stud[i].S_Bal); cout << "\n Poisk FIO (bukva) "; cin >> Bukva; cout << "\n Sveden Students"; int kod_p=0; for(i=0;i<N;i++) if(Stud[i].Fio[0]==Bukva){ kod_p=1;
printf("\n %20s %10s %4.2f",Stud[i].Fio,Stud[i].Grup,Stud[i].S_Bal); } if(kod_p==0) cout << " Takix HET!"; cout << "\n Poisk zapisi"; Vvod(-1,sved); kod_p=0; for(i=0;i<N;i++) if(memcmp(sved,&Stud[i],sizeof(sved))==0) { kod_p=1; printf("\n Poisk \n %20s %10s",Stud[i].Fio,Stud[i].Grup); } if(kod_p==0) cout << " Takix HET!"; getch(); }
Язык Си допускает использовать в структурах особый тип полей - битовых. Поле битов - это группа соседних (двоичных) разрядов (бит), расположенных в области памяти переменной целого типа. Целесообразно использование полей бит тогда, когда для хранения информации в структуре данных достаточно несколько бит. Синтаксис описания битового поля: тип[имя]:ширина;
Элементами структуры могут быть одна или несколько структурных переменных. Рассмотрим примеры программ работы со структурами. ПРИМЕР 1
/* Программа демонстрирует передачу в функцию sum */ /* элементов avans и zarp структуры st */ #include <conio.h> #include <stdio.h> #define k 2 #define PE printf("\n..СУММА АВАНСА ЗА %d МЕСЯЦА......",k); #define PE1 printf("\n==================================="); #define PE2 printf("\n"); struct fund{ char *mes_avans; float avans; char *mes_zarp; float zarp; }; main() {
static struct fund st={"АВГУСТ", 600000, "ОКТЯБРЬ", }; float sum(),res; res=sum(st.avans,st.zarp); printf(" \n Oбщая сумма равна %8.2f руб.",res); PE2;PE1;getch(); } float sum(x,y) float x,y; { clrscr();PE;PE1;PE2; return(x+y); }
ПРИМЕР 2
/* Программа демонстрирует передачу в функцию пользователя sum * / /* АДРЕСА структуры str */ /* адрес структуры str передается с помощью операции указатель */ /* у функции sum - один параметр, который описан как указатель * / /* на структуру с шаблоном spis. При обращении к функции sum */ /* происходит присвоение значения адреса структурной переменной */ /* str, и с помощью указателя t можно обращаться к элементам */ /* структуры типа spis, например: t->vans и t->za */ #include <stdio.h> #include <conio.h> struct spis{ char *s_vans; float vans; char *s_za; float za; }; main() { static struct spis str={"сентябрь", 600, "октябрь", }; float sum(),res; res=sum(&str); printf(" общее количество экземпляров=%8.0f штук",res); getch(); } float sum(t) struct spis *t; { clrscr(); return(t->vans+t->za); } ПРИМЕР 3
/* Программа демонстрирует передачу в функцию sum */ /* АДРЕСА МАССИВА структур */ /* стартовый адрес массива структур st помещается в переменную */ /* типа указатель m. Теперь в функции sum известен начальный */ /* адрес массива структур. Зная этот адрес, можно обратиться */
/* к элементам самой первой структуры, используя операцию -> */ /* Это элементы m->avans и m->zarp. Для того, чтобы получить адрес */ /* следующей структуры, надо увеличить переменную-указатель на 1, */ /* что и делается при вычислении третьего выражения в цикле for */ #include <stdio.h> #include <conio.h> struct fund{ char *mes_avans; float avans; char *mes_zarp; float zarp; };
main() { static struct fund st[2]={{"сентябрь", 500000, "октябрь", }, {"ноябрь", 600000, "декабрь", } }; float sum(); printf(" общая сумма= %8.3f ",sum(st)); getch(); } float sum(m) struct fund *m; { float res; int i; clrscr(); for(i=0,res=0;i<2;i++,m++) res+=m->avans+m->zarp; return(res); }
ПРИМЕР 4. Вести сведения о студентах учебной группы, каждый элемент массива студенческой группы содержит: а) фамилию и имя; в) итоги сдачи экзамена по программированию. Программа выводит информацию остуденте по его порядковому номеру в списке группы(индекс массива, содержащего введенную информацию) Текст С-программы может иметь вид: #include <stdio.h> #include <conio.h> struct student { char fio[10]; // поле для ФИО студента int est1; // поле для оценки } gruppa[25]; // массив для списка группы
void main(void) { int i,j,k,priznak; clrscr(); printf("\n Формирование списка до 25 человек"); /*------Формирование списка----------*/ for (i=1;i<=25;i++) { printf("\n Введите сведения о студенте %d и\ \n признак режима работы программы (0-окончить ввод)\ \n",i); printf("\n Фамилия и инициалы: "); fflush(stdin); // функция очистки буфера ввода gets(gruppa[i].fio); printf("\n Введите оценкy по программированию: "); fflush(stdin); scanf("%d",&gruppa[i].est1); k=i; // запоминаем текущий номер введенной // информации printf(" \n Признак? "); scanf("%d",&priznak); k=i; if(!priznak)break; } /*---------Просмотр списка------------*/ for (i=0; i<25; i++) { printf("\n Сведения о каком студенте?\n"); scanf("%d",&j); if(j>k) { printf("\n НЕТ СВЕДЕНИЙ! "); continue; // в случае отсутствия информации } // переход на следующий шаг цикла printf(" \n СТУДЕНТ: %s \n",gruppa[j].fio); printf(" \n ВЕСЕННЯЯ СЕССИЯ, ОЦЕНКА\ по ПРОГРАММИРОВАНИЮ: %d",gruppa[j].est1); printf("\n Признак? "); scanf("%d",&priznak); if(!priznak)break; } puts("\n РАБОТА ПРОГРАММЫ ЗАВЕРШЕНА! Press any key..."); getch(); } Варианты индивидуальных заданий В программах предусмотреть ввод исходной информации о четырех студентах - фамилия и инициалы; - год рождения; - год поступления в БГУИР; - оценки за первый семестр: - физика; - высшая математика; - информатика;
1. Распечатать список студентов, упорядоченный по алфавиту. 2. Распечатать список студентов. упорядоченный по году рождения. 3. Распечатать список студентов-отличников. упорядоченный по году поступления. 4. Распечатать анкетные данные студентов. сдавших сессию на 4 и 5. 5. Распечатать список студентов. фамилии которых начинаются с буквы Б и их оценки по всем предметам. 6. Распечатать анкетные данные отличников. 7. Распечатать список студентов, фамилии которых начинаются с буквы А и их даты рождения. 8. Распечатать анкетные данные студентов, имеющих оценку 3 в сессию. 9. Распечатать список студентов и их оценки. Фамилии студентов начинаются с букв В и Г. 10. Распечатать фамилии и даты рождения студентов, не имеющих оценок 3. 11. Вычислить общий средний балл всех студентов и распечатать список студентов со средними баллами выше общего среднего балла. 12. Вычислить общий средний балл всех студентов и распечатать список студентов, имеющих средний балл,равный общему среднему баллу.
13. Распечатать анкетные данные студентов, имеющих оценку 2. 14. Распечатать анкетные данные студентов, имеющих оценку 5 по информатике. 15. Распечатать анкетные данные студентов, имеющих оценку 4 по физике и оценку 5 по высшей математике. 16. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L кратна 2-м, то удаляются все числа, которые делятся на 2. 17. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L четная, то удаляются 2 первых и 2 последних символа. 18. Выяснить, имеются ли среди символов S1...Sn некоторой строки все буквы, входящие в слово DOS. 19. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L нечетная, то удаляется символ, стоящий посередине строки. 20. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов каждого второго символа! на $. 21. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов всех пробелов на символ $. 22. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L >10, то удаляются все цифры. 23. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L кратна числу 3, то удаляются все числа, делящиеся на число 3. 24. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L кратна числу 5, то подсчитывается количество скобок всех видов. 25. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L кратна числу 4, то первая часть строки меняется местами со второй. 26. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L=10, то удаляются все A..Z.
27. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L >15, то удаляются все a..z. 28. В строке символов поменять местами символы на четных и нечетных позициях. 29. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L >6-и, то выделяется подстрока { } скобках. 30. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина L >5-и, то выделяется подстрока до первого пробела.
Контрольные вопросы 1. Как описываются структуры и строки в языке С? 2. Чем отличаются функции scanf() и gets(), printf() и puts()? 3. Поясните термин “указатель на структуру”?
Лабораторная работа №7 Файлы в языке С. Цель работы: Изучить способы создания и работы с файлами в языке С. Краткие теоретические сведения. Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки и пересылке как единое целое. Прежде, чем работать с файлом его нужно открыть для доступа, т.е. создать и инициализировать область данных, которая содержит информацию о файле: имя, путь и т.д. В алгоритмическом языке «С» это делает функция fopen. Она связывает физический файл на носителе, например B:\LR7.CPP, с логическим именем в программе. Логическое имя – это указатель на файл, т.е. на область памяти, где храниться информация о файле. Указатели на файлы необходимо объявлять. Формат объявления такого указателя следующий: FILE *указатель на файл; Например. FILE *f; f=fopen ("B:\LR7.СPP", "w"); Символ "w" определяет право доступа к открываемому файлу. В данном случае открывается файл LR7.СPP на диске B:\ только для чтения. В «С» используются следующие коды, устанавливающие режимы доступа к открываемым файлам:
Текстовый режим отличается от двоичного тем, что при открытии файла как текстового пара символов «перевод-строки», «возврат каретки» заменяется на один символ: «перевод-строки» для всех функций записи даныых в файл, а для всех функций вывода символ «перевод-строки» теперь заменяется на два символа: «перевод-строки»,«возврат каретки».
По умолчанию файл открывается в текстовом режиме. После работы с файлом, доступ к файлу необходимо закрыть. Закрывает файл в языке С функция flose. Например, из предыдущего примераее закрывается так: fclose (f); Для открытия нескольких файлов введена функция, объявленная следующим образом: Void fcloseall(Void); Если требуется изменить режим доступа к файлу, то для этого сначала необходимо закрыть данный файл, а затем вновь его открыть, но с другими правами доступа. Для этого используют стандартную функцию freopen, описанную в stdio.h как FILE* freopen (char filename, chov*mode, FILE *stream). Эта функция сначала закрывает файл, связанный с потоком stream (как это делает функция fopen), а затем открывает файл с именем filename и правами доступа mode, записывая информацию об этом файле в переменную stream. В алгоритмическом языке С имеется возможность работы с временными файлами, т.е. с такими, которые нужны только в процессе работы программы и которые надо удалить после выполнения части вычислений. в этом случае используют функцию tmpfile со следующим объявлением: FILE* tmpfile (void). Функция tmpfile создает на диске временный файл с правами доступа «w+b» и возвращает указатель на управляющий блок по типу атрибута FILE. После завершения работы программы или после закрытия временного файла он автоматически удаляется из диска. Все действия по чтению/записи данных в файл можно дразделить на три группы: 1. Операции посимвольного ввода-вывода, 2. Операции построчного ввода-вывода, 3. Операции ввода-вывода по блокам. Ниже приведены основные функции, применяемые в каждой из указанных трех групп операций. Посимвольный ввод-вывод В операциях посимвольного ввода-вывода происходит прием одного символа из файла или передача одного символа в файл.
Построчный ввод-вывод. В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.
Блоковый ввод-вывод В операциях блокового ввода-вывода работа происходит с целыми блоками информации.
Пример работы с файлами. Следующая программа формирует целочисленный бинарный файл, дозаписывает в его окончание новые данные, и выводит сохраненные данные на печать: #include <stdio.h> #include <conio.h>
void main(void) { int a=1, b=20, c, d; FILE *in, *out, *add; clrscr(); /*........ ЗАПИСЬ ЧИСЕЛ В ФАЙЛ......*/ in=fopen("lr8.dat","wb"); fprintf(in,"%d %d \n",a,b); fclose(in); puts("ЧИСЛА a, b ЗАПИСАНЫ В ФАЙЛ"); puts("Press any key..."); getch(); /*......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/ out=fopen("lr8.dat","rb"); fscanf(out,"%d%d", &c, &d); printf("\n a=%d b=%d ", c, d); fclose(out); puts("\n ЧИСЛА ПРОЧИТАНЫ ИЗ ФАЙЛА"); puts("Press any key..."); getch(); /*......... ДОПОЛНЕНИЕ ФАЙЛА..........*/ add=fopen("lr8.dat","a"); puts("ВВЕДИТЕ ЧИСЛА ЦЕЛОГО ТИПА c и d"); scanf("%d%d",&c,&d); fprintf(add,"%d %d \n",c,d); printf("\n c=%d d=%d \n ",c,d); fclose(add); puts("ЧИСЛА c и d ДОПИСАНЫ В ФАЙЛ"); puts("Press any key..."); getch();
/*......... ЧТЕНИЕ ЧИСЕЛ ИЗ ФАЙЛА........*/ out=fopen("lr8.dat","rb"); fscanf(out,"%d%d%d%d", &a, &b, &c, &d); printf("\n a=%d b=%d ", a, b); printf("\n c=%d d=%d ", c, d); fclose(out); puts("\n РАСШИРЕННЫЙ ФАЙЛ!"); puts("Press any key..."); getch(); } Краткие теоретические сведения
Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки и пересылке как единое целое. Прежде, чем начать работать с файлом, его нужно открыть для доступа, т.е. создать и инициализировать область данных, которая содержит информацию о файле: имя, путь и т.д. Это выполняет функция fopen(“строка1”, “строка2”); она связывает физический файл на носителе (дискета, винчестер), путь к которому указывается в строке1, например “a:Mas_dat.dat”, “d:\\work\\Sved.txt”, с логическим именем, объявленным в программе. В строке2 указываются коды режимов доступа к открываемым файлам (табл.1). Логическое имя – это указатель на файл, т.е. на область памяти, где храниться информация о файле. Формат объявления указателя на файл следующий: FILE *указатель на файл; Например: FILE *f; f=fopen ("d:\\work\\Dat_sp.cpp", "w"); - открывается файл Dat_sp.cpp на диске d, в каталоге work, только для записи.
Таблица 1 Коды, устанавливающие режимы доступа к открываемым файлам
Текстовый режим отличается от двоичного тем, что при открытии файла как текстового пара символов «перевод строки», «возврат каретки» заменяется на один символ: «перевод строки» для всех функций записи данных в файл, а для всех функций вывода символ «перевод строки» теперь заменяется на два символа: «перевод строки», «возврат каретки». По умолчанию файл открывается в текстовом режиме. После работы с файлом доступ к нему необходимо закрыть. Это выполняет функция fclose(указатель_на_файл). Например, из предыдущего примера файл закрывается так: fclose (f); Для закрытия нескольких файлов введена функция, объявленная следующим образом: Void fcloseall(Void); Если требуется изменить режим доступа к файлу, то для этого сначала необходимо закрыть данный файл, а затем вновь его открыть, но с другими правами доступа. Для этого используют стандартную функцию freopen, описанную в stdio.h как FILE* freopen (char filename, char *mode, FILE *stream); Эта функция сначала закрывает файл, связанный с потоком stream (как это делает функция fopen), а затем открывает файл с именем filename и правами доступа mode, записывая информацию об этом файле в переменную stream. В алгоритмическом языке С имеется возможность работы с временными файлами, т.е. с такими, которые нужны только в процессе работы программы и которые надо удалить после выполнения части вычислений. В этом случае используют функцию tmpfile со следующим объявлением: FILE* tmpfile (void); Функция tmpfile создает на диске временный файл с правами доступа «w+b» и возвращает указатель на управляющий блок по типу атрибута FILE. После завершения работы программы или после закрытия временного файла он автоматически удаляется. Все действия по чтению/записи данных в файл можно разделить на три группы: - операции посимвольного ввода-вывода; - операции построчного ввода-вывода; - операции ввода-вывода по блокам. Ниже приведены основные функции, применяемые в каждой из указанных трех групп операций. Посимвольный ввод-вывод В операциях посимвольного ввода-вывода происходит прием одного символа из файла или передача одного символа в файл.
Построчный ввод-вывод В операциях построчного ввода-вывода за один прием происходит перенос из файла (или в файл) строк символов.
Варианты индивидуальных заданий В программе предусмотреть создание меню со следующими пунктами - СОЗДАНИЕ НОВОГО ФАЙЛА - ПРОСМОТР СОЗДАННОГО ФАЙЛА - КОРРЕКЦИЯ ФАЙЛА – дозапись новых данных или исправление старых.
ПРИМЕНИТЬ ФАЙЛ ТИПА ЗАПИСЬ! 1. Список товаров, имеющихся на складе, включает: - наименование товара; - количество единиц товара; - цену единицы товара; - дату поступления товара на склад. ВЫВЕСТИ В АЛФАВИТНОМ ПОРЯДКЕ СПИСОК ТОВАРОВ, ХРАНЯЩИХСЯ БОЛЕЕ ОДНОГО МЕСЯЦА, СТОИМОСТЬ КОТОРЫХ ПРИВЫШАЕТ 1000000 РУБЛЕЙ. 2. Для получения места в общежитии формируется список студентов, который включает: - Ф.И.О. студента; - номер группы (буква и четыре цифры); - средний балл; - доход на одного члена семьи; Общежитие в ПЕРВУЮ очередь предоставляется тем студентам, чьи доходы на члена семьи меньше двух минимальных зарплат, затем остальным в порядке уменьшения среднего балла. ВЫВЕСТИ СПИСОК ОЧЕРЕДНОСТИ ПРЕДОСТАВЛЕНИЯ МЕСТА В ОБЩЕЖИТИИ. 3. В справочной автовокзала хранится расписание движения автобусов. Для каждого рейсов указаны: - номер рейса; - тип автобуса; - пункт назначения; - время отправления; - время прибытия на конечный пункт; ВЫВЕСТИ ИНФОРМАЦИЮ О РЕЙСАХ, КОТОРЫМИ МОЖНО ВОСПОЛЬЗОВАТЬСЯ ДЛЯ ПРИБЫТИЯ В ПУНКТ НАЗНАЧЕНИЯ РАНЬШЕ ЗАДАННОГО ВРЕМЕНИ. 4. На междугородней АТС информация о разговорах содержит: - дату разговора; - код и название города; - время разговора; - тариф; - номер телефона в этом городе; - номер телефона абонента; ВЫВЕСТИ ПО КАЖДОМУ ГОРОДУ ОБЩЕЕ ВРЕМЯ РАЗГОВОРА С НИМ И СУММУ. 5. Информация о сотрудниках фирмы включает: - Ф.И.О. сотрудников; - табельный номер; - количество проработанных часов за месяц; - почасовой тариф; Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12% от суммы заработной платы. 6. Информация об участниках спортивных соревнований содержит: - Ф.И.О. игрока; - игровой номер; - возраст; - рост; - вес; Вывести информацию о самой молодой, рослой и легкой команде. 7. Для книг, хранящихся в библиотеке задаются: - регистрационный номер книги; - автор; - название; - год издания; - издательство; - количество страниц; Вывести список книг с фамилиями авторов в алфавитном порядке, изданных после заданного года. 8. Различные цеха завода выпускают продукцию нескольких наименований. Сведения о выпущенной продукции включают: - наименование; - количество; - номер цеха; Для заданного цехе необходимо вывести количество выпущенных изделий по каждому наименованию в порядке убывания количества. 9. Информация о сотрудниках предприятия содержит: - Ф.И.О.; - номер отдела; - должность; - дату начала работы; Вывести список сотрудников по отделам в порядке убывания стажа. 10. Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия сотрудника, наименование отдела, размер заработной платы за месяц. - Вычислить общую сумму выплат за месяц по отделу А, а также среднемесячный заработок сотрудникам этого отдела. - Напечатать для бухгалтерии ведомость для сотрудников этого отдела, у которых зарплата ниже введенной с клавиатуры. 11. Создать файл, содержащий сведения о количестве изделий категории А, В, С, собранных рабочими за месяц. Структура записи имеет поля: фамилия сборщика, наименование цеха, количество изделий по категории, собранных рабочими за месяц. Считая данными (вводятся с клавиатуры) значения расценок Sa, Sв, Sc за выполненную работу по сборке единицы изделия категории А, В, С соответственно, выдать на печать следующую информацию: общее количество изделий категории А, В, С, собранных рабочими цеха X; ведомость заработной платы рабочих цеха X; средний размер заработной платы работников этого цеха. 12. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонентов, год установки телефона, номер телефона. На печать вывести информацию следующего вида: - по вводимой с клавиатуры фамилии абонента выдается номер телефона; - определяется количество установленных телефонов с XXXX года (год вводится с клавиатуры). 13.Создать файл, содержащий сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы, например 2 – 5, т.е. от 2 до 5 лет. Вывести на печать: - название игрушек, которые подходят детям от 1 до 3 лет; - стоимость самой дорогой игрушки и ее наименование; - название игрушки, которая по стоимости не превышает «х» руб. Значение «х» вводится с клавиатуры. 14. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: номер группы, фамилия студента, оценки по пяти экзаменам и пяти зачетам (зачет – незачет). На печать вывести: - фамилии неуспевающих студентов с указанием номера группы и количества задолженностей; - средний балл, полученный каждым студентом группы Х (вводится с клавиатуры), и всей группой в целом. 15. Создать файл, содержащий сведения об ассортименте обуви в магазине. Структура записи: артикул, наименование, количество, стоимость одной пары. Артикул начинается с буквы Д для женской обуви, М для мужской, П для детской. На печать вывести информацию: - о наличии и стоимости обуви артикула Х (вводится с клавиатуры); - ассортиментный список женской обуви с указанием наименования и имеющего в наличии числа пар каждой модели. 16. Для участия в конкурсе исполнителей необходимо заполнить анкету с данными: - Ф.И.О; - год рождения; - название страны; - класс музыкального инструмента (гитара, фортепиано, скрипка, виолончель). ВЫВЕСТИ СПИСОК САМЫХ МОЛОДЫХ ЛАУРЕАТОВ КОНКУРСА ПО КЛАССАМ ИНСТРУМЕНТОВ В ПОРЯДКЕ ЗАНЯТЫХ МЕСТ. 17. Составить программу, которая записывает в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка. 18. Составить программу, которая подсчитывает количество элементов непустого файла в типе int, больших среднего арифметического всех элементов этого файла и переписывает эти элементы в файл d. 19. Составить программу определения: совпадают ли компоненты файла FS с компонентами файла GS. Если нет, то определить номера 1-й и 2-й компонент, в которых есть отличие. 20. Написать программу, которая из файла a переписывает в файл w все весенние даты, а затем в файл t все осенние. 21. Написать программу, которая перепишет с сохранением порядка следования компоненты файла F в файл G, а компоненты файла G в файл F. (Использовать вспомогательный файл). 22. Написать программу, которая объеденит два файла типа int в один файл: сначало все положительные элементы, затем отрицательные элементы. 23. Задан текстовый файл С, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены и переписать новый текст в файл D. 24. Даны два файла: a-типа int, b-типа chav. Составить программу слияния этих файлов в один по алгоритму – цифра вставляется после двух символов. 25. Переписать компоненты символьного файла FS в файл GS, заменив при этом каждый восклицательный знак на точку, а каждое двоеточие – тремя точками. 26. Компоненты файла FS – символ. Слова отделены пробелом. Получить копию файла FS в файле GS. 27. Компоненты файла H – натуральные числа. Переписать файл М все удвоенные нечетные числа. 28. Составить программу записи в файл GS всех чисел файла FS кратных 5, а файл HS – всех отрицательных чисел кратных 3. 29. Дан файл Е, который содержит данные о студентах групп (фамилия – имя – возраст). Создать файл F, который будет содержать данные о студентах, имеющих наибольший возраст. 30. Написать программу которая объединяет два файла типа int: сначала все сотни, потом десятки, потом 1.
Контрольные вопросы 1. Укажите правила открытия файла в языке С. 2. Что такое “построчный ввод/вывод”?
ЛАБОРАТОРНАЯ РАБОТА №8
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 1085; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.216.224 (0.015 с.) |