Added main.cpp, mylib.cpp and mylib.h
This commit is contained in:
commit
4dc24e3d6e
|
@ -0,0 +1,159 @@
|
||||||
|
/*
|
||||||
|
1. Создайте проект из 2х cpp файлов и заголовочного (main.cpp, mylib.cpp, mylib.h)
|
||||||
|
во втором модуле mylib объявить 3 функции: для инициализации массива (типа float),
|
||||||
|
печати его на экран и подсчета количества отрицательных и положительных элементов.
|
||||||
|
Вызывайте эти 3-и функции из main для работы с массивом.
|
||||||
|
2. Описать макрокоманду (через директиву define), проверяющую, входит ли переданное
|
||||||
|
ей число (введенное с клавиатуры) в диапазон от нуля (включительно) до переданного
|
||||||
|
ей второго аргумента (исключительно) и возвращает true или false, вывести на экран
|
||||||
|
«true» или «false».
|
||||||
|
3. Задайте массив типа int. Пусть его размер задается через директиву препроцессора
|
||||||
|
#define. Инициализируйте его через ввод с клавиатуры. Напишите для него свою функцию
|
||||||
|
сортировки (например Пузырьком). Реализуйте перестановку элементов как макрокоманду
|
||||||
|
SwapINT(a, b). Вызывайте ее из цикла сортировки.
|
||||||
|
4.* Объявить структуру Сотрудник с различными полями. Сделайте для нее побайтовое
|
||||||
|
выравнивание с помощью директивы pragma pack. Выделите динамически переменную этого
|
||||||
|
типа. Инициализируйте ее. Выведите ее на экран и ее размер с помощью sizeof.
|
||||||
|
Сохраните эту структуру в текстовый файл.
|
||||||
|
5.* Сделайте задание 1 добавив свой неймспейс во втором модуле (первое задание тогда
|
||||||
|
можно не делать).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include "mylib.h"
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
void BubbleSort(int*, size_t);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
/* ********************** TASK #1 ********************** */
|
||||||
|
// 5th task was made instead of the 1st
|
||||||
|
|
||||||
|
/* ********************** TASK #2 ********************** */
|
||||||
|
std::cout << "\t\tTASK #2\n\n";
|
||||||
|
|
||||||
|
unsigned int iRightBoundary = 0U;
|
||||||
|
unsigned int iUserNumber = 0U;
|
||||||
|
|
||||||
|
std::cout << "\tEnter your number: ";
|
||||||
|
std::cin >> iUserNumber;
|
||||||
|
std::cout << "\tEnter the right range boundary: ";
|
||||||
|
std::cin >> iRightBoundary;
|
||||||
|
|
||||||
|
std::cout << "Answer is:\t" << std::boolalpha << CHECK_RANGE(iUserNumber, iRightBoundary);
|
||||||
|
std::cout << std::noboolalpha << std::endl;
|
||||||
|
system("pause");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
/* ********************** TASK #3 ********************** */
|
||||||
|
std::cout << "\t\tTASK #3\n\n";
|
||||||
|
size_t iArraySize = 0U;
|
||||||
|
|
||||||
|
std::cout << "Enter array size: ";
|
||||||
|
DEFINE_NUMBER(iArraySize);
|
||||||
|
|
||||||
|
int* aInts_3 = new (std::nothrow) int[iArraySize];
|
||||||
|
|
||||||
|
if (iArraySize > 0 && aInts_3 != nullptr)
|
||||||
|
{
|
||||||
|
for (size_t i = 0U; i < iArraySize; i++)
|
||||||
|
{
|
||||||
|
PRINT_MSG(i, iArraySize);
|
||||||
|
DEFINE_NUMBER(aInts_3[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "\n\tArray before sort: \n";
|
||||||
|
PrintIntArray(aInts_3, iArraySize);
|
||||||
|
BubbleSort(aInts_3, iArraySize);
|
||||||
|
std::cout << "\n\tArray after sort: \n";
|
||||||
|
PrintIntArray(aInts_3, iArraySize);
|
||||||
|
|
||||||
|
delete[] aInts_3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cerr << "Something wrong with array allocation!\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("pause");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
/* ********************** TASK #4 ********************** */
|
||||||
|
std::cout << "\t\tTASK #4\n\n";
|
||||||
|
|
||||||
|
S_Employee* empl = new S_Employee;
|
||||||
|
std::cout << "\tEnter data about employee:\n";
|
||||||
|
std::cout << "1. ID: ";
|
||||||
|
std::cin >> empl->ID;
|
||||||
|
std::cout << "2. Age: ";
|
||||||
|
std::cin >> empl->age;
|
||||||
|
std::cout << "3. Mark: ";
|
||||||
|
std::cin >> empl->mark;
|
||||||
|
std::cout << "4. Child Quantity: ";
|
||||||
|
std::cin >> empl->ChildQuantity;
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
std::cout << "\tSize of structure: " << sizeof(S_Employee) << std::endl;
|
||||||
|
std::cout << "ID: " << empl->ID << "\n"
|
||||||
|
<< "Age: " << empl->age << "\n"
|
||||||
|
<< "Mark: " << empl->mark << "\n"
|
||||||
|
<< "Child Quantity: " << empl->ChildQuantity << std::endl;
|
||||||
|
|
||||||
|
std::ofstream fout("Employee.txt");
|
||||||
|
if (!fout)
|
||||||
|
{
|
||||||
|
std::cerr << "Something wrong with file creating!\n";
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
fout << "ID: " << empl->ID << "\n"
|
||||||
|
<< "Age: " << empl->age << "\n"
|
||||||
|
<< "Mark: " << empl->mark << "\n"
|
||||||
|
<< "Child Quantity: " << empl->ChildQuantity << "\n";
|
||||||
|
fout.close();
|
||||||
|
|
||||||
|
delete empl;
|
||||||
|
system("pause");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
/* ********************** TASK #5 ********************** */
|
||||||
|
std::cout << "\t\tTASK #5\n\n";
|
||||||
|
|
||||||
|
float* aFloats = new (std::nothrow) float[iArraySize];
|
||||||
|
if (iArraySize > 0 && aFloats != nullptr)
|
||||||
|
{
|
||||||
|
size_t PositiveNumbers = 0U;
|
||||||
|
size_t NegativeNumbers = 0U;
|
||||||
|
MyNamespace::InitArray(aFloats, iArraySize);
|
||||||
|
MyNamespace::PrintArray(aFloats, iArraySize);
|
||||||
|
PositiveNumbers = MyNamespace::PosQuanArray(aFloats, iArraySize);
|
||||||
|
NegativeNumbers = iArraySize - PositiveNumbers;
|
||||||
|
|
||||||
|
std::cout << "Quantity of positive numbers: " << PositiveNumbers << std::endl;
|
||||||
|
std::cout << "Quantity of negative numbers: " << NegativeNumbers << std::endl;
|
||||||
|
|
||||||
|
delete[] aFloats;
|
||||||
|
}
|
||||||
|
|
||||||
|
system("pause");
|
||||||
|
system("cls");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BubbleSort(int* pArr, size_t size)
|
||||||
|
{
|
||||||
|
for (size_t j = 1U; j < size; j++)
|
||||||
|
{
|
||||||
|
for (size_t i = 0U; i < size - j; i++)
|
||||||
|
{
|
||||||
|
if (pArr[i] > pArr[i + 1])
|
||||||
|
{
|
||||||
|
SwapINT(pArr[i], pArr[i + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include "mylib.h"
|
||||||
|
|
||||||
|
void MyNamespace::InitArray(float* pArr, size_t size)
|
||||||
|
{
|
||||||
|
std::srand(time(0));
|
||||||
|
for (size_t i = 0U; i < size; i++)
|
||||||
|
{
|
||||||
|
pArr[i] = (float)rand() / 1000.0 + (float)(rand() % 1000 - 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyNamespace::PrintArray(float* pArr, size_t size)
|
||||||
|
{
|
||||||
|
for (size_t i = 0U; i < size; i++)
|
||||||
|
{
|
||||||
|
std::cout << "Array[" << i << "]: " << pArr[i] << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t MyNamespace::PosQuanArray(float* pArr, size_t size)
|
||||||
|
{
|
||||||
|
size_t PositiveNumbers = 0U;
|
||||||
|
|
||||||
|
for (size_t i = 0U; i < size; i++)
|
||||||
|
{
|
||||||
|
if (pArr[i] >= 0.0)
|
||||||
|
{
|
||||||
|
PositiveNumbers++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return PositiveNumbers;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define CHECK_RANGE(a, b) (a >= 0 && a < b) ? true : false
|
||||||
|
|
||||||
|
#define DEFINE_NUMBER(number) std::cin >> number
|
||||||
|
|
||||||
|
#define PRINT_MSG(a, ARRAY_SIZE) std::cout << "Enter the " << a << " element of the array[" << ARRAY_SIZE << "]: "
|
||||||
|
|
||||||
|
#define SwapINT(a, b) \
|
||||||
|
int c = a; \
|
||||||
|
a = b; \
|
||||||
|
b = c
|
||||||
|
|
||||||
|
#define PrintIntArray(arr, size) \
|
||||||
|
for (size_t i = 0U; i < size; i++) \
|
||||||
|
std::cout << "Array [" << i << "]:\t" << arr[i] << std::endl
|
||||||
|
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct S_Employee
|
||||||
|
{
|
||||||
|
char mark; // mark for professional exam as letters
|
||||||
|
short int ID;
|
||||||
|
short int age;
|
||||||
|
short int ChildQuantity;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
namespace MyNamespace
|
||||||
|
{
|
||||||
|
void InitArray(float *, size_t);
|
||||||
|
void PrintArray(float*, size_t);
|
||||||
|
size_t PosQuanArray(float*, size_t);
|
||||||
|
}
|
Loading…
Reference in New Issue