Все значения передавать функциям в виде параметров.
1. Ввести с клавиатуры целое число N. Используя рекурсию, распечатать сначала последовательность, состоящую из N букв 'А', а затем из N букв 'В'. 2. Напечатать в обратном порядке последовательность чисел, признаком конца которой является 0. 3. Водится любое целое число b и вещественные a, c. Вычислить z=a b +c b , используя рекурсивную функцию x n 1, если n = 0 x n = 1/ x -n , если n < 0 x × x n-1 , если n > 0 4. Для N=12 найти числа Фибоначчи, которые вычисляются следующим образом: F(0)=1, F(1)=2, F(N)=F(N-2)+F(N-1) 5. Методом деления отрезка пополам найти с точностью EPS=0,0001 корень уравнения cos(2/x)-2*sin(1/x)+1/x=0 6. Даны целые числа m и n, где 0<=m<=n. Вычислить рекурсивно число сочетаний по формуле: 7. Дана последовательность положительных чисел, признаком конца которых служит отрицательное число. Используя рекурсию, подсчитать количество чисел и их сумму. 8. Дана последовательность ненулевых целых чисел, признаком конца которых служит 0. Используя рекурсию, напечатать сначала все отрицательные, а потом – все положительные числа этой последовательности. 9. Дан вектор Х из N вещественных чисел. Найти минимальный элемент вектора, используя вспомогательную рекурсивную функцию, находящую минимум среди последних элементов вектора Х, начиная с N-го. 10. Дана строка символов, в конце которой стоит точка. Напечатать строку в обратном порядке. 11. Задан вещественный массив из N. Упорядочить его по возрастанию методом быстрой сортировки: выбрать средний элемент массива и переставить элементы так, чтобы слева от выбранного элемента были меньшие, а справа только большие (т.о. выбранный элемент окажется на окончательном месте). Затем применить этот способ рекурсивно к левой и правой части массива. 12. Имеется 10 населенных пунктов. Дана последовательность пар чисел пар чисел I и J (I<J), указывающих, что I –ый J-ый пункты соединены дорогой. Признак конца этой последовательности - пара нулей. Используя рекурсию, определить, можно ли по этим дорогам попасть из 1-го пункта в N-ый. КОНТРОЛЬНЫЕ ВОПРОСЫ 4.1. Что такое рекурсия? 4.2. Как меняются локальные и глобальные переменные в рекурсиях? 4.3. Где находится окончание рекурсии?
Лабораторная работа № 8 Структуры 1. ЦЕЛЬ РАБОТЫ: Приобретение практических навыков в составлении алгоритмов и программ со структурами. ОСНОВНЫЕ СВЕДЕНИЯ Структура – это фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в структурах могут содержаться элементы как одного, так и разных типов. Элементами структуры могут быть базовые типы, массивы, указатели, структуры и т.д. Элементы структуры вместе с их описанием называются полями. Над полями можно выполнять действия, допустимые для данных этого типа. Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными. Например, структуру Воок можно описать следующим образом: struct card {char аuthor [15]; char title[20]; int year ; float cena;} Book; или struct card { char аuthor [15]; char title[20]; int year ; float cena;}; stuct card Book; Тип структуры (например, card) вводит только шаблон и с его именем не связан никакой конкретный объект. Объект (например, структура Book) должен быть также объявлен. Обращение к полю структуры выполняется с помощью составного имени, которое состоит из имени_структуры . имени_поля. Например, присвоить значения элементам записи Author и Title можно так: Book.author= “Довгаль С.И.”; Book.title=”Турбо Паскаль V 7.0”; Ввод цены книги с клавиатуры : scanf (“%f”, &Book.cena); Можно создавать массив структур: Struct card bibl[100]; Обращение к полю элемента массива: bibl[i].title; Пример: Дана информация о 10 товарах: название, цена, количество. Вычислить общую стоимость товара, название которого вводится с клавиатуры. //lab7_1 #include <stdio.h> #include <conio.h> #include <string.h> #define n 10 main() { int i,k; float sum; //k-количество искомых товаров, sum- их общая стоимость. struct tov {char name[10]; float c; int kol;} t; //Объявление структуры t struct tov mag[n]; //объявление массива структур mag[n] char nazv[10]; //Наименование искомого товара clrscr(); printf(“\n Введите информацию о товарах \n“); for (i=0;i<n;i++) { printf("\n наименование , цена, количество : "); scanf("%s %f %d",t.name,&t.c,&t.kol); //Заполнение информацией структуры t mag[i]=t; //Присвоение i-му элементу массива структуры t целиком } printf("\n введите искомый товар: "); scanf("%s",nazv); for (i=0,sum=0,k=0;i<n;i++) if (strcmp(mag[i].name,nazv)==0) { sum+=mag[i].c*mag[i].kol; k++; } printf("Товаров %s %d, их стоимость %5.2f ",nazv,k,sum); getch(); } ВЫПОЛНЕНИЕ РАБОТЫ В соответствии с вариантом написать и выполнить программу. Варианты заданий 1. Дана информация о пяти студентах. Запись имеет вид: фамилия, год рождения, факультет. Вывести данные о студентах по факультетам. 2. Дана информация о пяти школах. Запись имеет вид: номер школы, год, количество выпускников, число поступивших в ВУЗы. Вывести данные об общем количестве выпускников и доле поступивших в ВУЗ. 3. Дана информация о пяти комнатах в общежитии. Запись имеет вид: фамилии, номер комнаты, факультет, площадь. Вывести данные о комнатах по факультетам, а также количество комнат на факультетах. 4. Дана информация о пяти рабочих цеха. Запись имеет вид: фамилия, размер зарплаты, стаж работы. Вывести данные о рабочем с наибольшей зарплатой и наименьшим стажем. 5. Дана информация о четырех вузах. Запись имеет вид: название вуза, число студентов, количество факультетов, количество кафедр. Вывести данные об общем числе студентов, факультетов и кафедр. 6. Дана информация о шести вкладчиках в сберкассы. Запись имеет вид: фамилия, район, социальное положение, величина вклада. Вывести данные о том, сколько среди вкладчиков служащих, рабочих и колхозников. 7. Дана информация о пяти больных. Запись имеет вид: фамилия, возраст, пол, давление. Вывести данные о больных с повышенным давлением (больше 140) . 8. Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с площадью меньше 30 кв.м и подсчитать их количество. 9. Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по возрасту студентах, предполагая что год рождения может быть одинаков. 10. Дана информация о пяти школах. Запись имеет вид: номер школы, год, количество выпускников, число поступивших в ВУЗы. Вывести данные о школе с самым большим отношением числа поступивших к числу выпускников. 11. Дана информация о пяти комнатах в общежитии. Запись имеет вид: фамилии, номер комнаты, факультет, площадь. Вывести данные о комнате, в которой наименьшая площадь. 12. Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести данные о квартирах с самой большой площадью и самой маленькой. 4. КОНТРОЛЬНЫЕ ВОПРОСЫ 4.1. Какие типы данных относятся к простым, какие к составным? 4.2. Как объявляются структуры и чем отличается структура от массива? 4.3 Как обращаться к полям структуры? 4.3. Какие операции допустимы над структурой в целом?
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (323)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |