Условие: Отсортировать по возрастанию элементы массива, находящиеся между первым и
последним элементами, в которых первой цифрой после запятой является 3. Использовать алгоритм сортировки выбором.
Что получается:
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "");
double A[10] = { 1, 2, 4.3, 3, 2.3, 5, 10, 1.3, 30 }, a;
for (int i = 1; i < 8 && i > 0; ++i) {
a = ((int)(A[i] * 10)) % 10;
if(a == 3)
}
}
И не могу понять, что делать дальше...
C/C++
Помогите, пожалуйста, с заданием по программированию.
1. Найти индекс первого элемента массива который отвечает заданному условию, для чего начать проверку элементов массива на соответствие с начала массива.
2.1. Если дойдя до конца массива такого элемента не обнаружено, сообщить об этом пользователю и прекратить дальнейший поиск.
2.2. Если соответствующий элемент обнаружен запомнить его индекс и выйти из цикла.
3. Найти индекс последнего элемента массива который отвечает заданному условию, для чего начать проверку элементов массива на соответствие с конца массива.
4. Найти последний соответствующий элемент в массиве, запомнить его индекс и выйти из цикла.
5. Если индекс последнего соответствующего элемента равен индексу первого соответствующего элемента, то такой элемент в массиве единственный, о чём следует сообщить пользователю и прекратить дальнейшее выполнение алгоритма.
6. Если индексы массива отличаются, то индекс первого элемента массива следует увеличить на единицу.
7. Если разность между индексами последнего и первого элементов меньше двух, то сортировка не требуется, о чём также можно сообщить пользователю. Прекратить дальнейшее выполнение алгоритма.
8. Иначе следует отсортировать выбранный диапазон методом выбора, вызвав следующую функцию, передав в неё первым аргументом адрес первого соответствующего элемента, а вторым разность между индексами последнего и первого соответствующих элементов.
void selection_sort(int* box, const size_t n) {
for (int i = 0; i < n - 1; ++i) {
int m = i;
for (int j = i + 1; j < n; j++) {
if (box[j] < box[m]) {
m = j;
}
}
swap(box[i], box[m]);
}
}
size_t first = 2;
++first;
size_t last = 7;
size_t length = last - first;
int* begin = A[first];
selection_sort(begin, length);
2.1. Если дойдя до конца массива такого элемента не обнаружено, сообщить об этом пользователю и прекратить дальнейший поиск.
2.2. Если соответствующий элемент обнаружен запомнить его индекс и выйти из цикла.
3. Найти индекс последнего элемента массива который отвечает заданному условию, для чего начать проверку элементов массива на соответствие с конца массива.
4. Найти последний соответствующий элемент в массиве, запомнить его индекс и выйти из цикла.
5. Если индекс последнего соответствующего элемента равен индексу первого соответствующего элемента, то такой элемент в массиве единственный, о чём следует сообщить пользователю и прекратить дальнейшее выполнение алгоритма.
6. Если индексы массива отличаются, то индекс первого элемента массива следует увеличить на единицу.
7. Если разность между индексами последнего и первого элементов меньше двух, то сортировка не требуется, о чём также можно сообщить пользователю. Прекратить дальнейшее выполнение алгоритма.
8. Иначе следует отсортировать выбранный диапазон методом выбора, вызвав следующую функцию, передав в неё первым аргументом адрес первого соответствующего элемента, а вторым разность между индексами последнего и первого соответствующих элементов.
void selection_sort(int* box, const size_t n) {
for (int i = 0; i < n - 1; ++i) {
int m = i;
for (int j = i + 1; j < n; j++) {
if (box[j] < box[m]) {
m = j;
}
}
swap(box[i], box[m]);
}
}
size_t first = 2;
++first;
size_t last = 7;
size_t length = last - first;
int* begin = A[first];
selection_sort(begin, length);
#include < iostream >
using namespace std;
void selection_sort(double* box, const size_t n) { //любезно скопипастил у Веселухи
for (int i = 0; i < n - 1; ++i) {
int m = i;
for (int j = i + 1; j < n; j++) {
if (box[j] < box[m]) {
m = j;
}
}
swap(box[i], box[m]);
}
}
int main() {
setlocale(LC_ALL, "");
int it_b = -1, it_end = -1;
double A[10] = { 1, 2, 4.3, 3, 2.4, 5, 10, 1.3, 30, 2 }, a;
double faa;
for (int i = 0; i < 10; ++i) {
a = modf(A[i], &faa); a = a * 10;
cout << a << endl;
if (a > 2.1 && a < 3.1)
if (it_b == -1) it_b = i; else
{
it_end = i; break;
}
}
if (it_end == -1) { cout << "Нет двух необходимых элементов"; return 1; }
selection_sort(A + it_b+1, it_end-it_b-1);
puts("");
for (double& ass : A) cout << ass << " ";
}
using namespace std;
void selection_sort(double* box, const size_t n) { //любезно скопипастил у Веселухи
for (int i = 0; i < n - 1; ++i) {
int m = i;
for (int j = i + 1; j < n; j++) {
if (box[j] < box[m]) {
m = j;
}
}
swap(box[i], box[m]);
}
}
int main() {
setlocale(LC_ALL, "");
int it_b = -1, it_end = -1;
double A[10] = { 1, 2, 4.3, 3, 2.4, 5, 10, 1.3, 30, 2 }, a;
double faa;
for (int i = 0; i < 10; ++i) {
a = modf(A[i], &faa); a = a * 10;
cout << a << endl;
if (a > 2.1 && a < 3.1)
if (it_b == -1) it_b = i; else
{
it_end = i; break;
}
}
if (it_end == -1) { cout << "Нет двух необходимых элементов"; return 1; }
selection_sort(A + it_b+1, it_end-it_b-1);
puts("");
for (double& ass : A) cout << ass << " ";
}
Похожие вопросы
- Помогите пожалуйста сделать задачу по программированию C++
- Помогите пожалуйста с задачей по программированию на С++.
- Помогите пожалуйста решить лабараторную по программированию С++
- Помогите, пожалуйста, решить задание. Работа с двумерными массивами.
- Помогите пожалуйста с заданиями.В языке С.
- Помогите с заданием по программированию язык C(не С++)
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- Помогите решить данное задание, на языке программирования с++
- Доброго всем дня. Помогите с заданием по программированию С++ (Программа Dev-C++)
- Доброго всем дня. Помогите с заданием по программированию С++ (Программа Dev-C++)
Правда пришлось int* заменить на double*