Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 1069; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.186.78 (0.017 с.) |