Задать вопрос
  • Почему массив не сортируется методом "вставками"?

    @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");
    
    }
    Ответ написан
    Комментировать