С ПАСКАЛЕМ Задача 2. Знайти корені квадратного рівняння: 2х + 5х + 3 = 0.
Словесний опис алгоритму розв'язування квадратного рівняння.
1. Надати змінним a, bic числові значення.
2. Обчислити значення дискримінанта d за формулою d:= b*b - 4ас
3. Якщо d < 0, перейти до пункту 6, інакше виконати пункт 4
4. Визначити хі іх, за формулами:
х1:= (-b+sqrt(d)) / (2а);
х2 := (- b – sqrt(d))/(2а)
5. Перейти до пункту 7.
6. Дискримінант від'ємний. Рівняння розв'язків не має.
7. Кінець.
int main()
{
using namespace std;
setlocale(LC_ALL, "ru");
srand(time(NULL));
int N = 10, M = 0;
int* parr_1 = new int[N];
int* parr_2 = new int[M];
cout << "Начальный массив: " << endl;
for (int i = 0; i < N; i++)
{
parr_1[i] = getRandomNumber(-30, 30);
cout << parr_1[i] << '\t';
if (parr_1[i] < 0) push_pack(parr_2, M, parr_1[i]);
}
cout << "\n\nОтсортированный массив: " << endl;
bubbleSort(parr_1, N);
for (int i = 0; i < N; i++)
cout << parr_1[i] << '\t';
cout << "\n\nМассив с отрицательными числами: " << endl;
for (int i = 0; i < M; i++)
cout << parr_2[i] << '\t';
delete[] parr_1;
delete[] parr_2;
return 0;
}
void push_pack(int *&arr, int& size, const int val)
{
int *newArr = new int[size + 1];
for (int i = 0; i < size; i++)
newArr[i] = arr[i];
newArr[size++] = val;
delete[] arr;
arr = newArr;
}
int getRandomNumber(const int min, const int max)
{
static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}
void bubbleSort(int* arr, const int size)
{
int temp = 0;
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - 1; j++)
{
if (arr[j + 1] < arr[j])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
using namespace std;
setlocale(LC_ALL, "ru");
srand(time(NULL));
int N = 10, M = 0;
int* parr_1 = new int[N];
int* parr_2 = new int[M];
cout << "Начальный массив: " << endl;
for (int i = 0; i < N; i++)
{
parr_1[i] = getRandomNumber(-30, 30);
cout << parr_1[i] << '\t';
if (parr_1[i] < 0) push_pack(parr_2, M, parr_1[i]);
}
cout << "\n\nОтсортированный массив: " << endl;
bubbleSort(parr_1, N);
for (int i = 0; i < N; i++)
cout << parr_1[i] << '\t';
cout << "\n\nМассив с отрицательными числами: " << endl;
for (int i = 0; i < M; i++)
cout << parr_2[i] << '\t';
delete[] parr_1;
delete[] parr_2;
return 0;
}
void push_pack(int *&arr, int& size, const int val)
{
int *newArr = new int[size + 1];
for (int i = 0; i < size; i++)
newArr[i] = arr[i];
newArr[size++] = val;
delete[] arr;
arr = newArr;
}
int getRandomNumber(const int min, const int max)
{
static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}
void bubbleSort(int* arr, const int size)
{
int temp = 0;
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - 1; j++)
{
if (arr[j + 1] < arr[j])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}