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

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

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

Ник:
Пароль:

Меню сайта




Ваше мнение
Оцените дизайн сайта

Супер
Симпатично
Пойдет
Ничего хорошего
Просто клиника


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

Всего голосов: 891
Комментарии: 2


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



Статистика




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




Книги-online



Лабораторная работа №4

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

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

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



Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов.

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

Массив - это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс. Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, типизированных констант типа массив.

Примеры:

Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить.

Этапы решения задачи:
1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
2. Напишем программу на псевдо паскале:
program example1; 
var 
V:array[1..100,1..100] of integer; 
   m,n, i,j, c: integer; 
     flag: boolean; 
begin 
     <ввод размерности массива m*n> 
     <заполнение ячеек массива> 
for i:=1 to m do 
      repeat 
         flag:= true; 
            for j:=1 to n-1 do 
              if (v[i,j]=0) and (v[i,j+1]0) then begin 
                <поменять их местами> 
                  flag:= false; 
                end; 
             until flag; 
         <Печать массива> 
      readln; 
   end. 


3.Составим блок схему алгоритма

Детализируем блок "Упорядочиваем 1-ю строку"

Блок схема алгоритма целиком:

4.Приведем программу на языке Паскаль:

program example1; 
  var 
    V:array[1..100,1..100] of integer; 
      m,n, i,j, c: integer; 
         flag: boolean; 
begin 
       write('Введите размерность массива m-n> '); readln(m,n); 
         for i:= 1 to m do 
            for j:= 1 to n do begin 
               write('V[',i,',',j,']= '); readln(V[i,j]); 
  end; 
    for i:=1 to m do 
      repeat 
          flag:= true; 
              for j:=1 to n-1 do 
           if (v[i,j]=0) and (v[i,j+1]0) then begin 
         c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c; 
      flag:= false; 
  end; 
     until flag; 
      for i:= 1 to m do begin 
         for j:= 1 to n do write(V[i,j]:2);
         writeln
     end; 
  readln; 
end.

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

  • Каким образом определяются переменные типа массив (одномерный и двумерный)?
  • Как осуществляется доступ к отдельному элементу одномерного и двумерного массива?
  • Каким образом выводятся элементы массива на экран?
  • Приведите пример фрагмента программы, который выводит на экран двумерный массив в виде матрицы.
  • Сколько чисел можно записать в шестимерный массив X : Array[0..1, 0..1, 0..1, 0..1, 0..1, 0..1] of Integer?
    Задания
  • Даны целые числа а1, а2, а3. Получить целочисленную матрицу [bij]i,j=1,2,3, для которой bij=ai-3aj.
  • Получить [aij]i=1,…10; j=1,…12 - целочисленную матрицу, для которой aij=i+2j.
  • Дано натуральное число n. Получить действительную матрицу [aij]i, j=1,…n, для которой aij= .
    Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной части матрицы.
    а)   б)   в)   г)

  • Дана квадратная вещественная матрица размерности n. Найти количество нулевых элементов, стоящих: выше главной диагонали; ниже главной диагонали; выше и ниже побочной.
  • Дана вещественная матрица размерности n * m. По матрице получить логический вектор, присвоив его k-ому элементу значение True , если выполнено указанное условие и значение False иначе: - все элементы k столбца нулевые; - элементы k строки матрицы упорядочены по убыванию; - k строка массива симметрична.
  • Дана вещественная матрица размерности n * m. Сформировать вектор b, в котором элементы вычисляются как: - произведение элементов соответствующих строк; - среднее арифметическое соответствующих столбцов; - разность наибольших и наименьших элементов соответствующих строк; - значения первых отрицательных элементов в столбце.
  • Дан двухмерный массив A[1..m,1..n]. Написать программу построения одномерного массива B[1..m], элементы которого соответственно равны а) суммам элементов строк, б) произведениям элементов строк, в) наименьшим средних арифметических элементов строк.
  • Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения).
  • В данном массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных местах.
  • Задачи повышенной сложности
  • В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце.
  • Массив А[1..5,1..7] содержит вещественные числа. Требуется ввести целое число K и вычислить сумму элементов А[I,J], для которых I+J=К. Прежде, однако следует убедиться, что значение К позволяет найти решение, в противном случае нужно напечатать сообщение об ошибке.
  • Дан массив A[1..N,1..N]. Составить программу, которая прибавила бы каждому элементу данной строки элемент, принадлежащий этой строке и главной диагонали.
  • Дана матрица NxM. Переставляя ее строки и столбцы, переместить наибольший элемент в верхний левый угол. Определить можно ли таким же образом поместить минимальный элемент в нижний правый угол.
  • Заполнить двухмерный массив Т[1..n,1..n] последовательными целыми числами от 1 до n 52 0, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке:
  •       
          1   2   3   4   5   6 
          20   21   22   23   24   7 
          19   32   33   34   25   8 
          18   31   36   35   26   9 
          30   29   28   27   10 
          15   14   13   12   11 
    

  • Элемент двухмерного массива называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером NxN найти максимум среди всех локальных минимумов.
  • Назад На главную     Учебник по языку Pascal          Лабораторные работы по программированию          bookdelphi bookdelphi


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


    .


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