Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2 Программирование.doc
Скачиваний:
24
Добавлен:
17.03.2015
Размер:
285.18 Кб
Скачать

Функции и матрицы Цель работы

1. Научиться:

–писать программу, состоящую из нескольких функций;

– правильно оформлять функцию пользователя;

– создавать массив результат в функции пользователя и передавать его в main;

– писать прототип функции пользователя;

–вызывать из функции mainфункцию пользователя, передавая матрицу как исходное данное и как результат;

–размещать текст программы в соответствующих файлах проекта.

2. Составить, выполнить и протестировать указанную задачу с помощью компьютера.

Порядок написания программы

1. Внимательно прочитать условие задачи и формулировку функций.

2. Провести анализ характеристик функций:

Дать название функции;

Выделить список исходных данных функции, определить их типы;

Определить тип результата функции, передаваемого с помощью оператора return.

Определить тип результатов функции, передаваемых с помощью параметров-ссылок.

3. Написать текст функций пользователя.

4. Написать прототипы функций.

5. Написать функцию mainс вызовом функции пользователя.

6. Создать проект из файлов с расширением cpp(для функций пользователя иmain), и один заголовочный файл с расширениемh. Выполнить проект.

Примечание. Вызов функцииRusперед строками-константами с русским текстом осуществляйте самостоятельно.

Примеры написания программ

Задача. Найти количество положительных элементов произвольного столбца целочисленной матрицы.

Напишите функции:

-заполнения двумерного массива числами с клавиатуры;

-вывода двумерного массива;

-вычисления количества положительных элементов произвольного столбца матрицы.

Анализ решения задачи. Необходимо написать три функции.

Для определения характеристик каждой функции ответим на три вопроса.

Функция заполнения двумерного массива числами с клавиатуры:

  • Имя функции – InMatr

  • Список параметров функции (исходные данные). Функции необходимо передать двумерный массив для его изменения (ввода) – int*p,intn,intm;

  • Тип функции (тип возвращаемого результата). Функция ничего не будет вычислять, поэтому и передавать нечего. Тип функции – void

Функция вывода массива на экран монитора:

  • Имя функции – OutMatr

  • Список параметров функции (исходные данные). Функции необходимо передать двумерный массив для его вывода, а массив определяется тремя параметрами – int*p,intn,intm;

  • Тип функции (тип возвращаемого результата). Функция ничего не будет вычислять, поэтому и передавать нечего. Тип функции – void

Функция вычисления количества положительных элементов произвольного столбца матрицы:

  • Имя функции – KolMatr

  • Список параметров функции (исходные данные). Функции необходимо передать двумерный массив – int*p,intn,intm; иномер обрабатываемого столбцаintJ;

  • Тип функции (тип возвращаемого результата). Функция определяет количество, поэтому тип результата - int.

Программа будет строиться в виде проекта.

Текст функций пользователя будет выглядеть так:

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

void InMatr(int *p, int n, int m)

{

int i, j;

for(i=0; i<n; i++) //перебор элементов массива

for(j=0; j<m; j++)

cin>>*( p+i*m+j);

return;

}

void OutMatr(int *p, int n, int m)

{

int i, j;

for(i=0; i<n; i++) //перебор элементов массива

{

for(j=0; j<m; j++)

cout<<setw(5)<< *(p+i*m+j); //выводим элемент массива

cout<<endl; //переводим курсор на след строку

}

return;

}

int KolMatr(int*p, int n, int m, int J)

{

int i;

int kol=0; //вычисление количества начинается с 0

J--; //номер столбца превращаем в индекс

for(i=0; i<n; i++) // перебор строк одного столбца с индексом J

if(*(p+i*m+J)>0) // если элемент массива положительный

kol++; //количество увеличиваем на1

return kol; // завершаем функцию и передаем результат из kol

}

Текст заголовочного файла mas2.h будет выглядеть так:

#ifndef MAS2_H

#define MAS2 _H

void InMatr(int *p, int n, int m); //прототипы функций

void OutMatr(int *p, int n, int m);

int KolMatr(int*p, int n, int m, int J);

#endif

Текст функции main будет выглядеть так:

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include " Mas2.h"

#include "Rus.h" //прототип функции русификации

#define STR 3 //задаем количество строк в массиве

#define STLB 4 //задаем количество столбцов в массиве

int main(void)

{

int matr[STR][STLB]; //объявляем массив

int kol; //переменная под количество

cout<<"Введите массив"<<endl;

InMatr(matr[0],STR, STLB); //вводим массив

cout<<"Исходный массив: ";

OutMatr(matr[0],STR, STLB); //выводим массив на экран

kol=KolMatr(matr[0], STR, STLB, 1);//кол-во в первом столбце

cout<< "Количество равно "<< kol<<endl;

return 0;

}