Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Легко ли найти нужную информацию на сайте?

Очень просто
Нахожу почти сразу
Приходится тщательно покопаться
Почти невозможно
Не нашел (лень разбираться)


Результаты
Другие опросы

Всего голосов: 593
Комментарии: 0


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Лабораторная работа 7

Лабораторная работа 7

Программирование с использованием типа запись

Теоретический материал Справочник по процедурам и функциям


Цель работы: познакомить с понятием "запись"; выработать навыки работы со структурой данных запись в языке программирования Pascal. научиться правильно описывать тип record, уметь инициализировать переменные типа record, выводить на экран переменные типа record; научится решать задачи на использование записей

Общие сведения

Под записью понимается структура данных, объединяющая под одним именем данные различных типов. Записи состоят из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут иметь (в отличие от элементов массива) различный тип. Обращение к элементу записи выполняется с помощью составного имени. Первая часть составного имени - это имя записи, вторая часть - имя поля. Между именем записи и именем поля ставится точка: ZAP.IMP, где ZAP - имя записи, IMP- имя поля. Перед выполнением работы необходимо изучить правила описания и использования записей, типизированных констант типа запись, оператора присоединения WITH.

Пример

Пример1. Даны два рациональных числа, опишите их, используя структуру данных запись (числитель, знаменатель). Привести их к несократимому виду, найди их сумму.

Этапы решения программы:
  • Составим блок-схему программы
  • Уточним содержимое блока "Вычисление НОД для числителя и знаменателя каждой дроби".
    Во-первых, НОД это наибольший общий делитель, число крайне необходимое чтобы сократить дробь.
    Вычислять НОД будем по алгоритму Евклида. Пусть даны два числа а и b:

    В качестве чисел a и b будут участвовать числитель и знаменатель дробей.
    Как сокращать и складывать дроби, надеюсь, вы еще не забыли, поэтому детализировать этот блок не будем.
    Желательно блок "Поиск НОД" оформить в виде функции, что будет предварять тему следующей лабораторной работы.
  • Переведем программу на язык Паскаль
  •       PROGRAM Example1; 
             Type Tfraction = record; 
                Chisl: Integer; 
                 Znam; Word; 
              End; 
           Function nod(a,b:integer):integer; 
             Var k:integer; 
               Begin 
                 If a>b then k:= a else k:=b; 
              While not((a mod k=0)and(b mod k =0)) do dec(k);
          End; 
              Var 
                x,y,s: Tfraction 
             n,p:integer; 
           st: string; 
          begin 
             writeln('Введите два рациональных числа');ъ
               write('x= '); readln(st); n:= post('/',st);
                val(copy(st,1,n-1),x.chisl,p);
               val(copy(st,n+1,length(st)-n),x.znam,p);
               write('y= '); readln(st); n:= post('/',st);
               val(copy(st,1,n-1),y.chisl,p);
                 val(copy(st,n+1,length(st)-n),y.znam,p);
                  {находим НОД для каждой дроби и сокращаем их}
                 n:=nod(x.chisl,x.znam);
                x.chis:= x.chisl div n;
               x.znam:= x.znam div n; 
               n:=nod(y.chisl,y.znam); 
               x.chis:= y.chisl div n; 
              x.znam:= y.znam div n; 
            writeln('Сокращенные дроби:'); 
            writeln('X= ',x.chisl,'/',x.znam); 
          END.
    

    Контрольные вопросы

  • Как описываются переменные типа запись?
  • В каких случаях целесообразно использовать переменные типа запись?
  • Из каких компонентов состоит переменная типа запись?
  • Каково назначение оператора WITH?
  • Какие операции допустимы над полями записи?
  • В чем отличие записей от массивов?
  • Задания

  • Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно - действительное (вес в килограммах).
    a) Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0.3 кг от общего среднего веса одной вещи.
    b) Найти число пассажиров, имеющих более двух вещей и число пассажиров, количество вещей которых превосходит среднее число вещей.
    c) Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей и различаются по весу не более чем на 0,5 кг.
    d) Выяснить, имеется ли пассажир, багаж которого превышает багаж каждого из остальных пассажиров и по числу вещей, и по весу.
    e) Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг.
  • После поступления в ВУЗ о студентах собрана информация: фамилия, нуждается ли в общежитии, стаж, работал ли учителем, что окончил, какой язык изучал. Составить программу, определяющую: 1) сколько человек нуждаются в общежитии; 2) списки студентов, проработавших 2 и более лет учителем; 3) списки окончивших педучилище; 4) списки языковых групп.
  • Описать, используя структуру данных запись, данные на учеников (фамилия, улица, дом, квартира). Составить программу, определяющую сколько учеников живет на улице Свердлова, списки учеников, живущих в доме номер 45.
  • В библиотеке для каждого заказывающего книгу читателя заполняется карточка: фамилия, дата заказа, дата выдачи книги. Определить: 1) самый маленький срок, за который нашли книгу; 2) сколько заказов было не удовлетворено; 3) кто чаще всего берет книги; 4) кому выдали книги 15.09.90; 5) сколько человек заказывали книги 25.04.90.
  • Описать, используя структуру данных запись, почтовую сортировку (город, улица, дом, квартира, кому, ценность). Составить программу, определяющую: 1) сколько посылок отправлено в г.Самару; 2) сколько и куда (список городов) отправлено посылок ценностью выше 10 рублей; 3) есть ли адреса куда отправлено более 1 посылки, если есть то сколько и кому.
  • Описать, используя структуру данных запись, завод (наименование станка, время простоя в месяц, время работы в месяц). Составить программу, определяющую общее время простоя на заводе, списки станков, не имеющих простоя, относительное время простоя всех и каждого станка (
  • В школе было три 9 класса, в августе каждый классный руководитель имел сведения о своих учениках: фамилия, куда поступал, поступил или нет. Определить сколько учеников хотели пойти в 10 класс, кто хотел поступать в училище и техникум, кто поступил в училище или техникум, сколько учеников будет учится в 10 классе, сколько необходимо создать 10 классов и по сколько человек.
  • На олимпиаде по информатике на школьников заполнялись анкеты: фамилия, номер школы, класс, занятое место. Напечатать: 1) списки школ, занявших призовые места; 2) какая из школ заняла больше всех призовых мест; 3) списки учеников занявших первое место, указать их класс.
  • В деканате хранится информация о зимней сессии на 1 курсе (фамилия, номер группы, оценка 1 по геометрии, оценка 2 по алгебре, оценка 3 по информатике). Составить программу, печатающую фамилии студентов, имеющих задолженность хотя бы по одному предмету, качество успеваемости, процент студентов, т.е. сдавших экзамены на 4 и 5, название предмета, который был сдан лучше всего, номера групп в порядке убывания средней успеваемости их студентов.
  • В отделе кадров студентов хранится следующая информация о каждом студенте: фамилия, имя, отчество, пол, возраст, курс. Составить программу которая печатает номер курса, на котором наибольший процент мужчин, самые распространенные мужские и женские имена, фамилии в алфавитном порядке и инициалы всех студенток, отчество и возраст которых являются одновременно самыми распространенными.
  • Задачи повышенной сложности
  • В счете указано: название игрушки, стоимость в копейках, возрастные границы. Получить следующие сведения: 1) название игрушек, цена которых не превышает 4 руб. и которые подходят детям до пяти лет; 2) цену самого дорогого конструктора; 3) названия наиболее дорогих игрушек, цена которых отличается от цены самой дорогой игрушки не более, чем на 1 руб.; 4) название игрушек, которые подходят как детям 4 лет, так и детям 10 лет; 5) можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч так, чтобы стоимость игрушек не превосходила 5 руб.
  • Хранятся сведения о лесе: вид дерева, общая численность, численность здоровых деревьев. Составить программу вычисления: 1) суммарного числа деревьев на контрольном участке; 2) суммарного числа здоровых деревьев; 3) относительную численность (%) больных деревьев; 4) относительную численность (%) различных видов, в том числе больных (%) для каждого вида.
  • Написать программу вычисления длин сторон, углов, площади, радиусов вписанной и описанной окружностей для треугольника, заданного координатами вершин на плоскости в декартовых или полярных координатах. Использовать структуру данных запись с вариантами.
  • Дана дата (число, месяц, год и день недели). Определить правильность заданной даты, вычислить последний день данного месяца, сколько дней прошло от 1-го января 1-го года нашей эры, определить день недели, приходящийся на заданную дату, если 1-е января 1-го года нашей эры было понедельником.
  • Разработать программу вычисления длин сторон, углов, площади, радиусов вписанной и описанной окружностей для треугольника, заданного координатами вершин: на плоскости в декартовых или полярных координатах.
  • Написать программу, осуществляющую приведение подобных членов многочлена с использованием структуры данных запись. Назад На главную     Учебник по языку Pascal          Лабораторные работы по программированию          bookdelphi bookdelphi


  • Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


    .


    книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать