Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 3
1

Отсортировать элементы, а затем удалить по выбору

02.11.2016, 00:24. Показов 387. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой код. Суть программы в том, что она берет значения X и Y из файла, затем находит средние значения между двумя соседними X, и считает значение функции ( sin(cosx) ) в этих точках. Затем необходимо ввести значения X, которые нужно удалить. Как отсортировать список с новыми значениями? И еще проблема в том, что оно не удаляет новые значения X. Как это исправить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <cstdio>
#include <cmath>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
struct List {
    double x;
    double y;
    List* Next;
};
List* find(List* h, List* t, double val) {
    List* n_v = new List;
    n_v->Next = h;
    List* tmp = n_v;
    while (tmp->Next != t) {
        if (fabs(tmp->Next->y - val) < 1e-8) return tmp;
        tmp = tmp->Next;
    }
    return t;
}void del(List* v) {
    List* tmp = v->Next->Next;
    delete v->Next;
    v->Next = tmp;
    cout << "Выполнено\n";
}int main() {
setlocale(LC_ALL, "Russian");
    ifstream in("DP5102.txt");
    List* Head = new List;
    List* tmp = Head;
    cout << "Изначальный список:\n";
    cout << "   X          Y\n";
    double x, y;
    while (in.good()) {
        in >> x >> y;
        tmp->x = x;
        tmp->y = y;
        if (in.fail()) break;
        cout.setf(ios::fixed);
        cout.precision(5);
        cout << tmp->x << "   " << tmp->y << endl;
        List* t = new List;
        tmp->Next = t;
        tmp = tmp->Next;
    }
    List* t = new List;
    tmp->Next = t;
    List* Tail = tmp;
    List* end = Tail;
    tmp = Head;
    while (tmp->Next != end) {
        double val1 = tmp->x;
        double val2 = tmp->Next->x;
        double mval = (val1 + val2) / 2.0;
        Tail->x = mval;
        Tail->y = sin(cos( mval));
        List* t = new List;
        Tail->Next = t;
        Tail = Tail->Next;
        tmp = tmp->Next;
    }
    tmp = Head;
    cout << "\n\n\nСписок со средними значениями:\n";
    cout << "   X         Y\n";
    while (tmp != Tail) {
        cout.setf(ios::fixed);
        cout.precision(5);
        cout << tmp->x << "   " << tmp->y << endl;
        tmp = tmp->Next;
    }
cout << "Введите значение функций 5 элементов которые нужно удалить:\n";
    double tx;
    for (int i = 0; i < 5; ++i) {
        cin >> tx;
        List* prev_t = find(Head, Tail, tx);
        if (prev_t == Head) cout << "Такого нет " << tx << endl; else {
            if (prev_t->Next == Head) { cout <<"Выполнено"<<endl; Head = Head->Next; } else
            del(prev_t);
        }
    }
    tmp = Head;
    cout << "\n\n\nОкончательный список:\n";
    cout << "   X         Y\n";
    while (tmp != Tail) {
        cout.setf(ios::fixed);
        cout.precision(5);
        cout << tmp->x << "   " << tmp->y << endl;
        tmp = tmp->Next;
    }
    return 0;
}
Вложения
Тип файла: txt DP5102.txt (187 байт, 2 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2016, 00:24
Ответы с готовыми решениями:

Удалить из последовательности все нечетные элементы, затем отсортировать ее по возрастанию
Дана последовательность из n целых элементов. Удалить из нее все нечетные элементы, затем...

Отсортировать по выбору элементы массива с четными номерами методом выбора
Отсортировать по выбору элементы массива с четными номерами методом выбора.

Отрицательные элементы массива заменить на 0, затем отсортировать массив по убыванию
помогите пожалуйста!!!! задание &quot;в массиве из 10 целых чисел отрицательные заменить 0, затем...

Отсортировать по возрастанию и вывести на экран сперва чётные элементы вектора, а затем нечётные
Привет. Вообщем, стоит такая задача: &quot;Вывести на экран сначала отсортированные по возрастанию...

0
02.11.2016, 00:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2016, 00:24
Помогаю со студенческими работами здесь

Отсортировать вектор так, чтобы сперва шли отрицательные, затем положительные элементы
Дан вектор A(a1,a2,...,a100). Сделать так, чтобы сперва были отрицательные элементы, а затем...

Одномерный массив: отсортировать так, чтобы вначале шли положительные элементы, а затем - отрицательные
Помогите пожалуйста с задачей. Надо в одномерном массиве поменять элементы так, чтоб вначале шли...

Отсортировать массив так, чтобы сначала в нем шли нулевые элементы, затем положительные
Задан целочисленный массив размера N. Отсортировать массив так, чтобы сначала в нем шли нулевые,...

Отсортировать сначала отрицательные числа, затем положительные и затем ноль
Помогите, пожалуйста, составить программу сортировки массива, так, чтобы она сортировала сначала...

Отсортировать массив так, чтобы в нем сначала шли буквы латинского алфавита, затем цифры и, в конце, остальные элементы
Задан символьный массив размера N. Отсортировать массив так, чтобы в нем сначала шли буквы...

Удалить все нечётные элементы массива и отсортировать
1. Удалить все нечётные элементы массива #include&lt;iostream.h&gt; #include&lt;conio.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru