Есть программа, которая создает последовательность размера n, в определенном интервале.
Что необходимо сделать?
1) Сделать, чтобы по нормальному генерировалась последовательность в нужном интервале
(-n..0,5n) -у меня почему-то генерируется не в интервале.
2) Добавить сортировку выбором для созданной последовательности.
Буду благодарен любой помощи.
Программа:
#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
struct tl {
int d;
tl* u;
} *A = NULL, * P;
int i, n;
cout << "Введите размер последовательности A n = (3..1000): ";
while (!(cin >> n) || n < 3 || n > 1000)
{
cout << "Ошибка ввода " << "\n";
cout << "Вы ввели неправильный размер A n = (3..1000)" << "\n ";
cout << "Введите размер последовательности A n = (3..1000): ";
}
P = new tl;
P->u = A;
A = P;
A->d = rand() % (n + n / 2 + 1) - n;
cout << "--Последовательность A: " << A->d << "";
for (i = 1; i < n; i++)
{
P = new tl;
P->u = A;
A = P;
A->d = A->u->d + rand() % (n + n / 2 + 1) - n;
cout << " " << A->d;
}
}
C/C++
Сортировка выбором. Язык C++. Помощь с кодом.
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int digits;
void print_array(int *x, int size)
{
int i, j = 0, k = 120 / digits;
for (i = 0; i < size; i++)
{
cout << setw(digits) << x[i];
j++;
if (j == k)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
int i, j, jmin, m, n, min;
cout << "n: ";
cin >> n;
digits = 2;
m = n;
while (m)
{
digits++;
m /= 10;
}
int *a = new int [n];
srand(time(nullptr));
for (i = 0; i < n; i++)
a[i] = rand() % (n + n / 2 + 1) - n;
print_array(a, n);
for (i = 0; i < n - 1; i++)
{
min = a[i];
for (j = i + 1; j < n; j++)
if (a[j] < min)
{
min = a[j];
jmin = j;
}
swap(a[i], a[jmin]);
}
print_array(a, n);
}
Это с генерацией целых ПСЧ в промежутке с закрытыми концами [-n; n/2] и с упорядочением по возрастанию. Если надо промежуток (-n; n/2), то исправляйте сами, не ожидая ни от кого никаких подсказок! И вообще, на такой ерунде не нужно ни тормозить, ни тем более лохаться!

#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int digits;
void print_array(int *x, int size)
{
int i, j = 0, k = 120 / digits;
for (i = 0; i < size; i++)
{
cout << setw(digits) << x[i];
j++;
if (j == k)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
cout << endl;
}
int main()
{
int i, j, jmin, m, n, min;
cout << "n: ";
cin >> n;
digits = 2;
m = n;
while (m)
{
digits++;
m /= 10;
}
int *a = new int [n];
srand(time(nullptr));
for (i = 0; i < n; i++)
a[i] = rand() % (n + n / 2 + 1) - n;
print_array(a, n);
for (i = 0; i < n - 1; i++)
{
min = a[i];
for (j = i + 1; j < n; j++)
if (a[j] < min)
{
min = a[j];
jmin = j;
}
swap(a[i], a[jmin]);
}
print_array(a, n);
}
Это с генерацией целых ПСЧ в промежутке с закрытыми концами [-n; n/2] и с упорядочением по возрастанию. Если надо промежуток (-n; n/2), то исправляйте сами, не ожидая ни от кого никаких подсказок! И вообще, на такой ерунде не нужно ни тормозить, ни тем более лохаться!

Найти наименьшее значение в списке.
Записать его в начало списка, а первый элемент - на место, где раньше стоял наименьший.
Снова найти наименьший элемент в списке. При этом в поиске не участвует первый элемент.
Второй минимум поместить на второе место списка. Второй элемент при этом перемещается на освободившееся место.
Продолжать выполнять поиcк и обмен, пока не будет достигнут конец списка.
Записать его в начало списка, а первый элемент - на место, где раньше стоял наименьший.
Снова найти наименьший элемент в списке. При этом в поиске не участвует первый элемент.
Второй минимум поместить на второе место списка. Второй элемент при этом перемещается на освободившееся место.
Продолжать выполнять поиcк и обмен, пока не будет достигнут конец списка.
Дмитрий Перминов
А насчёт генерации последовательности в интервале? Не подскажите, где ошибся?
Дмитрий Перминов
Хорошо, в любом случае, спасибо.
Похожие вопросы
- Задача на сортировку структур. Язык C++.
- Задание на C++. Помощь с кодом.
- Сравнение скорости сортировки выбором и сортировки слиянием (SelectionSort vs MergeSort)
- Написал код для языка C, но работает не правильно
- Как сделать сортировку массива по убыванию, сохранив индексы на языке C
- Написать код на языке C++
- Очень нужна помощь. нужен код на C. Задачка будет в описании.
- Объясните максимально простым языком, как работает данный код C++
- Чем лучше язык С языка C++?
- Написать код на языке C++