Задать вопрос
@ashot_powershot

Почему массив не сортируется методом «вставками»?

Почему массив y не сортируется? Надо обязательно методом "вставками".
#include<iostream>
#include <cstring>
#include<cmath>
#include<cstdlib>
#include<conio.h>
#include<ctime>
#include<windows.h>


using namespace std;

int main()
{
	setlocale(LC_ALL, "");
	const int n = 5;
	int x[n], y[n], i, j, temp, max = -1000, min = 1000, a, b;
	cout << "Введите 2 значения для вычесления = " << endl;
	cin >> a;
	cin >> b;
	cout << "Массив x " << endl;
	for (int i = 0; i < n; i++)
	{
		x[i] = rand() % 20 - 10;
		cout << "x[" << i << "] = " << x[i] << endl;
	}
	cout << endl;
	for (i = 0; i < n; i++)
	{
		y[i] = a / x[i] - b / sin(pow(a, 2.0));
		if (y[i] > max)
		{
			max = y[i];
		}
		if (y[i] < min)
		{
			min = y[i];
		}
	}
	for (i = 0; i < n; i++)
	{
		temp = y[i];
		for (j = i - 1; j >= 0 && y[i] > temp; j--)
		{
			y[j + 1] = y[j];
			y[j + 1] = temp;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << "y [ " << i << " ] = " << y[i] << endl;
	}
	cout << "Минимальное значение массива = " << min << endl;
	cout << "Максимальное значение массива = " << max << endl;

	system("PAUSE");

}
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вот в этих двух подряд идущих строках вас ничего не смущает?
y[j + 1] = y[j];
y[j + 1] = temp;
Ответ написан
Комментировать
@ashot_powershot Автор вопроса
Всем спасибо, исправил ошибки.
Вот правильный код
#include<iostream>
#include <cstring>
#include<cmath>
#include<cstdlib>
#include<conio.h>
#include<ctime>
#include<windows.h>


using namespace std;

int main()
{
	setlocale(LC_ALL, "");

	//14.	Дан массив x[i], заданный случайными числами.
	// Создать массив  y[i]=a/x[i]-b/sin(a2).
	// Затем упорядочить по возрастанию созданный массив методом «вставками».
	// Определить максимальные и минимальные элементы в массивы. 
	// Если значения максимумов и минимумов несколько, то вывести их индексы.
	const int n = 5;
	int x[n], y[n], i, j, temp, max = -1000, min = 1000, a, b;
	cout << "Введите 2 значения для вычисления = " << endl;
	cin >> a;
	cin >> b;
	cout << "Массив x " << endl;
	for (int i = 0; i < n; i++)
	{
		x[i] = rand() % 20 - 10;
		cout << "x[" << i << "] = " << x[i] << endl;
	}
	cout << endl;
	for (i = 0; i < n; i++)
	{
		y[i] = a / x[i] - b / sin(pow(a, 2.0));
		if (y[i] > max)
		{
			max = y[i];
		}
		if (y[i] < min)
		{
			min = y[i];
		}
	}
	for (i = 1; i < n; i++)
	{
		int k = i;
		while (k > 0 and y[k - 1] > y[k])
		{
			temp = y[k - 1];
			y[k - 1] = y[k];
			y[k] = temp;
			k -= 1;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << "y [ " << i << " ] = " << y[i] << endl;
	}
	cout << "Минимальное значение массива = " << min << endl;
	cout << "Максимальное значение массива = " << max << endl;
	if (y[0] == y[1])
	{
		cout << "Индексы минимальных элементов " << 0 << "\t" << 1 << endl;
	}
	if (y[4] == y[3])
	{
		cout << "Индексы максимальных элементов =" << 4 << "\t" << 5 << endl;
	}
	system("PAUSE");

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы