Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. "Знакомство с Си++. Выполнение программы простой структуры"





НазваниеПрактикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. "Знакомство с Си++. Выполнение программы простой структуры"
страница5/12
Дата публикации30.08.2013
Размер0.86 Mb.
ТипЛабораторная работа
100-bal.ru > Информатика > Лабораторная работа
1   2   3   4   5   6   7   8   9   ...   12

Лабораторная работа №5
"Функции и массивы"


Цель : Организовать обработку массивов с использованием функций, научиться передавать массивы как параметры функций.

  1. Краткие теоретические сведения

1.1. Функции

Функцию в Си можно рассматривать:

  • как один из производных типов данных (наряду с массивами и указателями);

  • как минимальный исполняемый модуль программы (подпрограмму).

Все функции имеют единый формат определения:

<тип><имя_функции>(<список_формальных_параметров>) , где

<тело_функции> , где

<тип> - либо void, если функция не возвращает значения, либо тип возвращаемого функцией значения;

<имя_функции> - либо main для основной функции, либо произвольный идентификатор, не совпадающий со служебными словами и именами других объектов программы;

<список_формальных_параметров> - либо пустой ( ), либо список, каждый элемент которого имеет вид:

<обозначение_типа><имя_параметра>

Например:

(int k )

(char i, char j, int z)

<тело_функции> - это часть определения функции, заключенная в фигурные скобки { }.Тело функции может быть либо составным оператором, либо блоком. Определения функций не могут быть вложенными.

Для передачи результата из функции в вызывающую функцию используется оператор return. Он может использоваться в двух формах:

  1. return; - завершает функцию гн возвращающую никакого значения (т. е. перед именем функции указан тип void)

  2. return <выражение>; - возвращает значение выражения, выражение должно иметь тип, указанный перед именем функции.

Если программист не пишет оператор return явно, то компилятор автоматически дописывает return в конец тела функции перед закрывающей фигурной скобкой}.

Пример:

int op (char c, int x, int y)

{

switch c

{

case ‘+’ : return x+y;

case ‘-’ : return x-y;

case ‘*’ : return x*y;

case ‘/’ : return x/y;

default: cout<<“\nОперация не определена”;return 0;

}

}

Вызов функции осуществляется следующим образом:

<обозначение функции>(<список фактических параметров>); где

<обозначение функции> - либо имя функции, либо указатель на функцию;

<список фактических параметров> - список выражений, количество которых равно числу формальных параметров функции. Между формальными и фактическими параметрами должно быть соответствие по типам.

Например:

c = op ( ‘+’, 5 ,4 );

Синтаксис Си предусматривает только один способ передачи параметров - передача по значению (т. е. изменить значения параметров внутри функции нельзя). Но существует возможность косвенно изменить значения переменных передаваемых в виде параметров: с помощью указателя в вызываемую функцию можно передать адрес любого объекта из вызывающей программы. Если указатель разыменовать, то получится значение, записанное по этому адресу.

Пример:

1)

//описание функции для обмена переменных а и b

void change (int a,int b)

{

int r;

r = a; a = b; b = r;

}

// вызов функции

change(a, b);

Обмена не произойдет, т. к. результат не будет передан в вызывающую программу.

2)

void change (int *a,int *b)

{

int r;

r = *a; *a = *b; *b = r;

}

// вызов функции

change(&a, &b);

При вызове передаются адреса, по которым находятся значения и выполняется обмен значений, которые находятся по этим адресам.

1.2. Массивы и строки как параметры функций

Если в качестве параметра функции используется обозначение массива, то на самом деле в функцию передается адрес первого элемента массива.

Пример:

//вычисление суммы элементов массива

//вариант 1

int sum (int n, int a[] )

{

int i,int s=0;

for( i=0; i
s+=a[i]

return s;

}

void main()

{

int a[]={ 3, 5, 7, 9, 11, 13, 15 };

int s = sum( 7, a );

cout<
}

//вариант 2

int sum (int n, int *a)

{

for(int i=0, s=0; i
return s;

}

void main()

{

int a[]={ 3, 5, 7, 9, 11, 13, 15 };

int s = sum( 7, a );

cout<
}

Строки в качестве фактических параметров могут быть определены либо как одномерные массивы типа char[], либо как указатели типа char*. В отличие от обычных массивов в этом случае нет необходимости явно указывать длину строки.
2. Постановка задачи

Используя функции, решить указанную в варианте задачу. Массив должен передаваться в функцию как параметр.

3. Варианты

  1. В двумерном массиве записаны слова, представляющие собой последовательность цифр, завершающихся 0. Необходимо распечатать слова через запятую, заключив печатную строку в скобки. Длина печатной строки 60 символов. Извлечение слова оформить в виде функции.

Например:

исходные данные - 123023402303450

234450234567010

234455677670450

результат - (123,234,23,345)(23445,234567,1)(23445567767,45)

  1. Написать функцию для обмена строк двумерного массива с ее помощью отсортировать массив по элементам третьего столбца.

  2. Написать процедуру для суммирования матриц. С ее помощью сложить исходную матрицу и транспонированную (т. е. полученную поворотом исходной на 90 ).

  3. Написать функцию для удаления строки из двумерного массива. Оставшиеся строки должны быть расположены плотно, недостающие элементы заменяются 0. С помощью разработанных функций исключить из массива строки с номерами от А до В.

  4. Определить является ли матрица ортонормированной, т. е. такой, что скалярное произведение каждой пары различных строк равно 0, а скалярное произведение строки самой на себя равно 1.

  5. Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки.

  6. Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают.

  7. Написать функцию транспонирования квадратной матрицы (т.е. поворота исходной матрицы на 90 ). С ее помощью определить является ли заданная матрица симметрической. (Матрица называется симметрической, если транспонированная матрица равна исходной).

  8. Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. С ее помощью найти максимальное значение такой суммы в n матрицах.

  9. Написать функцию, проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными элементами, удаленная строка заполняется 0 и переносится в конец массива.

  10. Написать функцию, проверяющую по возрастанию или убыванию упорядочена указанная строка двумерного массива. Упорядочить по возрастанию все строки двумерного массива, которые неупорядочены по убыванию.

  11. Написать функцию, для поиска максимального элемента в указанной строке двумерного массива. Сдвинуть в двумерном массиве все строки циклически вправо на количество элементов равное максимальному элементу в этой строке.

  12. Определить можно ли в двумерном массиве найти такой столбец, который разбивает массив на два так, что сумма элементов в первом больше, чем сумма элементов во втором. Сам столбец в разбиваемые части не входит.

  13. Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на главной и побочной диагонали.

  14. Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних, сумму элементов третьего столбца без трех последних и т. д. Последний столбец не обрабатывается. Среди найденных сумм найти максимальную.

  15. Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Проверить, можно ли выполнив конечное количество перестановок в столбцах, расположить на побочной диагональ элементы так, чтобы он возрастали.

  16. Задан двумерный массив N x M. Найти в нем подмассив 3 х 3, сумма элементов которого максимальна. N и M могут быть не кратны трем.

  17. Задан двумерный массив N x N. Последовательно рассматриваются квадратные подмассивы, правый верхний элемент которых лежит на побочной диагонали. В каждом таком подмассиве находится максимальный элемент. Путем перестановок строк и столбцов (целиком) элемент надо переместить в правый верхний угол подмассива. Проверить получилась ли на побочной диагонали убывающая последовательность элементов.

  18. Задана строка из N2 цифр. Установить можно ли, разбив строку на подстроки длиной N, записать их в строки двумерного массива N x N по одной цифре в одном элементе так, чтобы они в первом столбце расположились в порядке возрастания.

  19. Найти минимальный из неповторяющихся элементов двумерного массива.

  20. Найти максимальный из повторяющихся элементов двумерного массива.

  21. В двумерном массиве найти среднее арифметическое первого столбца и количество элементов в каждом из следующих столбцов, превышающих среднее арифметическое предыдущего столбца.

  22. Задан одномерный массив состоящий из N целых чисел. Сформировать на его основе двумерный массив N x N так, чтобы сумма элементов в первом столбце была равна первому элементу одномерного массива, сумма элементов во втором столбце была равна второму элементу одномерного массива и т. д. Нули не использовать.

  23. Определить сколько элементов двумерного массива больше любого элемента на главной диагонали.

  24. Из двумерного массива в одномерный записали сначала строки в произвольном порядке, затем столбцы в произвольном порядке. Написать программу восстанавливающую исходный двумерный массив по одномерному, если известна размерность двумерного массива и элементы в нем не повторяются.

4. Содержание отчета

  1. Постановка задачи.

  2. Вариант задания

  3. Текст программы.

  4. Результат решения конкретного варианта.



1   2   3   4   5   6   7   8   9   ...   12

Похожие:

Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconПрактикум по курсу Информатика (раздел Работа с пакетами прикладных...
Лабораторная работа №6. Обобщение данных. Создание таблицы подстановки. Подведение итогов 28
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconУчебно-методический комплекс «Внеаудиторная самостоятельная работа...
Методические рекомендации разработаны на основании фгос по специальности по 270802 «Строительство и эксплуатация зданий и сооружений»,...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconПрактикум по работе в вики-среде на примере Русской Википедии (для...
Учебник предназначен для студентов технических вузов по специальности 010100 математика. Работа студентов по этому учебнику позволит...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconУроков
Вид учебных занятий: лекция, экскурсия, исследовательская лабораторная работа, учебный и трудовой практикум
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconЛабораторная работа №2 Использование логической функции если
Методические указания к семинарским занятиям, практикум, контрольные работы и задания
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconАннотация рабочей программы дисциплины «Лабораторная диагностика»...
В соответствии с гос впо дисциплина «Лабораторная диагностика» в структуре учебного плана Основной образовательной программы выделена...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconТипы уроков Урок изучения и первичного закрепления новых знаний
Вид учебных занятий: лекция, экскурсия, исследовательская лабораторная работа, учебный и трудовой практикум
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconЛабораторная работа №
Лабораторная работа №1. Изучение основных возможностей программного продукта Яндекс. Сервер. Установка окружения, установка и настройка...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconБиология 7 класс
Отдел Настоящие Грибы. Лабораторная работа №1 «Строение плесневого гриба мукора». Лабораторная работа №2 «Строение дрожжей»
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconАнализ посещенного урока
Наименование прорабатываемой на занятиях темы знакомство с объектно-ориентированным языком программирования Visual Basic. Лабораторная...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconМетодика подготовки к уроку
Урок изучение и первичное закрепление новых знаний. Вид учебных занятий: лекция, экскурсия, исследовательская лабораторная работа,...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconТипы открытых уроков
Урок изучения и первичного закрепления новых знаний. Вид учебных занятий: лекция, экскурсия, исследовательская лабораторная работа,...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconОтчет по дисциплине «Учебная практика по информатике»
Лабораторная работа № Тема: «Операционная система ms windows». Знакомство с ос windows xp. 4
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconПрограмма курса «Русский язык и культура речи». Для студентов Пермского...
Е. В. Зырянова, Е. М. Крижановская. Интернет-ресурсы и виртуальные словари для делового общения, учебно-методическое пособие. Пермь,...
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconПрактикум по специальности 210404 Многоканальные телекоммуникационные...
Практикум предназначен для студентов заочной формы обучения по специальности: 210404 Многоканальные телекоммуникационные системы
Практикум для студентов специальности асу пермь, 2001 Лабораторная работа №1. \"Знакомство с Си++. Выполнение программы простой структуры\" iconРабочая программа Основы цитологии Индекс сд. 08 По специальности...
Государственными требованиями к минимуму содержания и уровню выпускников (гос спо) по специальности: 060110. 51 «Лабораторная диагностика»...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск