Примеры написания программ
Задача. Найти количество положительных элементов произвольного столбца целочисленной матрицы.
Напишите функции:
-заполнения двумерного массива числами с клавиатуры;
-вывода двумерного массива;
-вычисления количества положительных элементов произвольного столбца матрицы.
Анализ решения задачи. Необходимо написать три функции.
Для определения характеристик каждой функции ответим на три вопроса.
Функция заполнения двумерного массива числами с клавиатуры:
Имя функции – 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;
}
- ОбрабоТка строк Цель работы
- Порядок написания программы
- Примеры написания программ
- 1 Вариант решения – обращение к элементу массива идет через имя элемента массива, память выделяется статически, строка вводится без пробелов внутри.
- 2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, строка вводится с пробелами внутри.
- Контрольные вопросы и задания
- Задание
- ОбрабоТка одномерных числовых массивов
- 2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, заполняется массив с клавиатуры.
- Контрольные вопросы и задания
- Задание
- ОбрабоТка двумерных числовых массивов
- 2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, заполняется массив с клавиатуры.
- Контрольные вопросы и задания
- Задание
- Функции с одним результатом Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание
- Функции с несколькими результатами Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание
- Функции и строки Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание
- Функции и одномерные числовые массивы Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание
- Функции и матрицы Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание
- Шаблоны функций Цель работы
- Порядок написания программы
- Примеры написания программ
- Контрольные вопросы и задания
- Задание