Форум программистов, компьютерный форум CyberForum.ru

Массивы(статические) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Наверное синтаксическая ошибка http://www.cyberforum.ru/cpp-beginners/thread198244.html
Выдает ошибку Unit1.cpp(35): E2141 Declaration syntax error double funBendel (double A, double E, double S) { double f1 = pow(24/A,14); double e = exp(-0.18*pow(pow(18.0/A,0.5)*(E-A),0.5)); double f3 = 1.0 - e; double f2 = pow(f3,4.0); double f = (f1 * f2) - S; double f = ((pow(24/A,14)) * (pow((1.0 - (exp(-0.18*pow(pow(18.0/A,0.5)*(E-A),0.5)))),4.0))) - S;
C++ При отображении выборки из структуры отображаются артефакты Здравствуйте, уважаемые форумчане. Имеется программа на Си. Компилятор использую Dev-cpp. Вот сам проект Программа представляет из себя информационно-поисковую систему. При выборе пункта 5 программа должна отображать все телепрограммы с жанром "спорт",а она стала отображать всю базу. Что еще интереснее отображает даже позиции, которые были удалены. Вместо них отображает артефакты. Один... http://www.cyberforum.ru/cpp-beginners/thread198231.html
C++ Объединить массивы
Даны два массива A и B размера m, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив остался упорядоченным. Добавлено через 14 минут P.S. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит...
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение C++
Найти значение 3-го по величине элемента и значения всех элементов массива, которые его превышают, заменить на найденное значение Добавлено через 14 минут P.S. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит реальную длину массива (не...
C++ Добавить после элемента массива с заданным индексом элемент со значением 100 http://www.cyberforum.ru/cpp-beginners/thread198224.html
Удалить последний элемент равный 0. Добавить после элемента массива с заданным индексом элемент со значением 100. Добавлено через 15 минут P.S. При выполнении работы используются статические массивы. Для организации статических массивов с псевдопеременными границами необходимо объявить массив достаточно большой длины N. Затем пользователь вводит реальную длину массива (не больше N) и работает...
C++ BigInteger(c++) Здравствуйте!!! Помогите составить программу которая вычесляет сумму двух больших цифр (до 10^100 степени). Пробовал через unsigned long long ничего не получаилось... Пробовал через char но он вместо символов выводит символы аски кода... Я знаю что нужно решить через char массив но не получается... Или хотя бы подкиньте идею (а лучше алгоритм) как это решить подробнее

Показать сообщение отдельно
ne6u4u
12 / 12 / 0
Регистрация: 14.11.2010
Сообщений: 29
27.11.2010, 15:40
простестил тока на твоем примере, так что 100% результат не гарантирую)) но предложу свою версию решения (если будет две одинаковые последовательности по длине, то должна выводить ту, которая встречается раньше)

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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int N;
    const int MAX = 1000;
    int arr[MAX], temp_arr[MAX];
    
    //Ввод массива
    cout << "Введите размерность массива: ";
    cin >> N;
    cout << "Заполните массив:\n";
    for (int i=0; i<N; i++)
    {
        cout << i+1 << " элемент: ";
        cin >> arr[i];
    }
 
    //создаю массив для отслеживания последовательносетей
    for (int i=0; i<N-1; i++)
    {
        if ((arr[i] - arr[i+1]) == 1)
            temp_arr[i] = -1;
        else if ((arr[i] - arr[i+1]) == -1)
            temp_arr[i] = 1;
        else
            temp_arr[i] = 0;
    }
 
 
    //вычисление наибольшей последовательности
    int index=0, delta=0, temp_ind=0, temp_del=0;
    if (temp_arr[0]==1 || temp_arr[0]==-1)
    {
        temp_ind = 0; temp_del = 1;
    }
    for (int i=1; i<N; i++)
    {
        if((temp_arr[i]==1 && temp_arr[i-1]==1) || ((temp_arr[i]==-1 && temp_arr[i-1]==-1)))
        {
            temp_del++;
        }
        else if ((temp_arr[i]==1 && temp_arr[i-1]==-1) || ((temp_arr[i]==-1 && temp_arr[i-1]==1)))
        {
            if (temp_del > delta)
            {
                index = temp_ind;
                delta = temp_del;
            }
            temp_del = 1;
            temp_ind = i+1;
        }
        else
        {
            if (temp_del > delta)
            {
                index = temp_ind;
                delta = temp_del;
            }
            temp_del = 1;
            temp_ind = i;
        }
    }
    cout << endl;
 
    // Вывод введенного массива
    for (int i=0; i<N; i++)
        cout << arr[i] << " ";
    cout << endl;
    if(temp_arr[index] == 1)
        cout << "Наибольшая по длине последовательность монотонно возрастающая" << endl;
    if(temp_arr[index] == -1)
        cout << "Наибольшая по длине последовательность монотонно убывающая" << endl;
    cout << "Номер элемента с которого начинается данная последовательность - " << index+1 << endl;
    cout << "Последовательность состоит из " << delta+1 << " значений." << endl;
    cout << "Последовательность: ";
    for (int i=0; i<delta+1; i++)
    {
        cout << arr[index+i] << " ";
    }
    cout << endl;
    return 0;
}
Добавлено через 13 часов 19 минут
Не у меня с математикой плохо ночью) 1 3 5 тоже монотонная последовательность, тогда, наверно, так
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int N;
    const int MAX = 1000;
    int arr[MAX], temp_arr[MAX];
    
    //Ввод массива
    cout << "Введите размерность массива: ";
    cin >> N;
    cout << "Заполните массив:\n";
    for (int i=0; i<N; i++)
    {
        cout << i+1 << " элемент: ";
        cin >> arr[i];
    }
 
    //создаю массив для отслеживания последовательносетей
    for (int i=0; i<N-1; i++)
    {
        temp_arr[i] = arr[i] - arr[i+1];
    }
 
 
    //вычисление наибольшей последовательности
    int index=0, delta=0, temp_ind=0, temp_del=0;
    temp_ind = 0;
    temp_del = 1;
 
    for (int i=0; i<N; i++)
    {
        if (temp_arr[i] == temp_arr[i+1])
        {
            temp_del++;
        }
        else
        {
            if(temp_del > delta)
            {
                index = temp_ind;
                delta = temp_del;
            }
            temp_del = 1;
            temp_ind = i+1;
        }
    }
    cout << endl;
 
    // Вывод введенного массива
    for (int i=0; i<N; i++)
        cout << arr[i] << " ";
    cout << endl;
    if(temp_arr[index] < 0)
        cout << "Наибольшая по длине последовательность монотонно возрастающая" << endl;
    if(temp_arr[index] > 0)
        cout << "Наибольшая по длине последовательность монотонно убывающая" << endl;
    cout << "Номер элемента с которого начинается данная последовательность - " << index+1 << endl;
    cout << "Последовательность состоит из " << delta+1 << " значений." << endl;
    cout << "Последовательность: ";
    for (int i=0; i<delta+1; i++)
    {
        cout << arr[index+i] << " ";
    }
    cout << endl;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru