Семинар 1 вариант 9 (1170106)
Текст из файла
НИУ МЭИ
ИДДО
«Программирование и основы алгоритмизации 2/2»
Вариант № 9
Семинар № 1
Выполнил: Зяблов Евгений Игоревич
группа ИД-02135-18
Задание 1
Вспомните задачи 2 и 3 из семинара 1 прошлого семестра нашего курса «Программирование и основы алгоритмизации»: разработка циклических алгоритмов с одномерными массивами (задача 2 – задачи приведены также в разделе 2 этого семинара) и с матрицами (задача 3 – условия также есть в разделе 3 этого семинара). Напишите и отладьте программы с динамическими массивами для решения этих задач, используя примеры лекции 1 этого семестра.
Условие
Пара (Xk, Yk) представляет координаты одной из n точек на плоскости. Найти число точек, у которых ордината Yk больше абсциссы Xk, и сумму расстояний от первой точки до остальных точек.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
kol | Количество точек | целый | простая переменная |
sum | Сумма точек | целый | Простая переменная |
Промежуточные данные | |||
X[5] | Массив точек по X | вещественный | Одномерный массив |
Y[5] | Массив точек по Y | вещественный | Одномерный массив |
Выходные данные | |||
kol | Количество точек | целый | простая переменная |
sum | Сумма точек | целый | Простая переменная |
Блок-схема алгоритма
Программа на С++
#include <iostream>
#include <math.h>
using namespace std;
const int SIZE = 5;
int main()
{
setlocale(0, "");
int kol = 0;
int* X = new int[SIZE];
int* Y = new int[SIZE];
double sum = 0;
//Цикл для написания точек Х
cout << "Массив X: " << endl;
for (int i = 0; i < SIZE; i++)
{
cin >> X[i];
}
//Цикл для написания точек Y
cout << "Массив Y: " << endl;
for (int i = 0; i < SIZE; i++)
{
cin >> Y[i];
}
//Цикл по поиску суммы
for (int i = 0; i < SIZE-1; i++)
{
if (Y[i] > X[i])
{
kol++;
}
sum = sum + sqrt(pow((X[i + 1] - X[0]), 2) + pow((Y[i + 1] - Y[0]), 2));
}
cout << "Сумма расстояний: " << sum << endl;
cout << "Количество точек: " << kol << endl;
delete X;
delete Y;
}
Условие
Определить число элементов, меньших заданного значения, для каждого
столбца матрицы.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
n | Количество строк матрицы | целый | простая переменная |
m | Количество столбцов матрицы | целый | простая переменная |
c | Число для условия | целый | простая переменная |
a[10][10] | Матрица | вещественный | двумерный массив |
Промежуточные данные | |||
sum | Сумма чисел меньше числа «с» | целый | простая переменная |
Выходные данные | |||
sum | Сумма чисел меньше числа «с» | целый | простая переменная |
Блок-схема алгоритма
Программа на С++
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
// количество строк и столбцов матрицы
int n, m, c;
// матрица
int** a;
cout << "Введите количество строк матрицы" << endl;
cin >> n;
cout << "Введите количество столбцов матрицы" << endl;
cin >> m;
a = new int* [n];
for (int i = 0; i < n; i++) {
a[i] = new int[m];
}
// создание и заполнение матрицы случайными числами
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
a[i][j] = rand() % 10;
cout << a[i][j] << " ";
}
cout << endl;
}
cout << "Введите число" << endl;
cin >> c;
int sum;
//Количество элементов меньше С
for (int i = 0; i < n; i++) {
sum = 0;
for (int j = 0; j < m; j++) {
if (a[j][i] < c) {
sum++;
}
}
cout << "Количество чисел меньше заданного значения в столбце № " << i << " - " << sum << endl;
}
for (int i = 0; i < n; i++) {
delete a[i];
}
delete a;
}
Задание 2
Вспомните задачу семинара 2 прошлого семестра нашего курса «Программированиеи основы алгоритмизации»: функции и многофайловые программы; условие этой задачи также приведено в разделе 4 данного семинара.Исправьте решение этой задачи в соответствии с полученными замечаниями;это очень важно, так как решение этой задачи лежит в основе курсовой работы. Измените программу, используя динамические массивы –см. примеры лекции 1 текущего семестра.Ответьте на вопрос: какие преимущества дает использование динамических массивов?
Условие
Проверить, есть ли среди элементов главной диагонали матрицы A (5×5) отрицательные элементы, а среди элементов главной диагонали матрицы B (3×3) — элементы, меньшие 2,7.
Состав данных
Имя | Смысл | Тип | Структура |
Исходные данные | |||
rows | Количество строк матрицы | целый | простая переменная |
columns | Количество столбцов матрицы | целый | простая переменная |
Промежуточные данные | |||
count | Подсчитывает количество | целый | простая переменная |
count1 | Подсчитывает количество | целый | простая переменная |
Выходные данные | |||
count | Подсчитывает количество | целый | простая переменная |
count1 | Подсчитывает количество | целый | простая переменная |
Блок-схема алгоритма (функции)
Программа на С++
ФАЙЛ main.cpp
#include "function.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
int main() {
float** A = new float* [5];
for (int i = 0; i < 5; i++)
A[i] = new float[5];
float** B = new float* [3];
for (int i = 0; i < 3; i++) {
B[i] = new float[3];
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
scanf("%f", &A[i][j]);
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%f", &B[i][j]);
}
}
if(checkMatrix(A, 5, 0))
cout << "В главной диагонали матрицы присутствуют отрицательные числа" << endl;
if(checkMatrix(B, 3, 2.7))
cout << "В главной диагонали матрицы присутствуют числа меньше 2,7" << endl;
for (int i = 0; i < 5; i++) {
delete A[i];
}
delete A;
for (int i = 0; i < 3; i++) {
delete B[i];
}
delete B;
return 0;
}
ФАЙЛ function.h
#include <iostream>
bool checkMatrix(float **, int, float); // прототип функции
ФАЙЛ function.cpp
#include <iostream>
#include <stdio.h>
#include <time.h>
#include "function.h"
using namespace std;
bool checkMatrix(float** matrix, int size, float value) {
bool result = false;
for (int i = 0; i < size; i++) {
if (matrix[i][i] < value) {
result = true;
}
}
return result;
}
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.