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

В одномерном массиве серию равных элементом заменить на max элемент массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить произведение положительных элементов строки матрицы http://www.cyberforum.ru/cpp-beginners/thread1083342.html
Вычислить произведение положительных элементов строки матрицы. При обнаружении 0 должно выдаваться сообщение «Обнаружен 0». #include <iostream> using std::cin; using std::cout; int myfunc(int**matrix,int m,int n){ int res = 1; for (int i = 0; i < m; ++i){ for (int j = 0; j < n; ++j){
C++ в чем ошибка? if(data[i]>max_el) /--------------------------------------------------------------------------- #include <iostream.h> #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int data,int n) { int max_el=0, max_count=0; http://www.cyberforum.ru/cpp-beginners/thread1083340.html
C++ C++ спрайты
Здравствуйте, уважаемые форумчане! Прошу отнестись с пониманием, пытаюсь создать простейшую игрушку, так для себя, изучаю книги, но застопорился на одном моменте (самое начало). Будете смеяться, но никак не могу вывести на экран спрайт!!! Тучу вариантов пробовал, то ошибки выдает, то вообще ничего не понятно.... Кто нибудь может выдать код, который сделает это? Если есть возможность - целиком с...
Поиск файла Dev c++ C++
Как найти нужный файл и скопировать по нужному пути?
C++ Умножить два больших целых числа по правилу умножения "в столбик" http://www.cyberforum.ru/cpp-beginners/thread1083323.html
Умножить два больших целых числа по правилу умножения “в столбик”. Для таких чисел вещественный тип неприемлем, а типа long int недостаточно, так как в числе больше 10 цифр. Для хранения такого числа предлагается использовать одномерный массив, каждый элемент которого представляет собой одну десятичную цифру числа.
C++ Вычислить сумму элементов после первого отрицательного элемента Написать программу, которая в одномерном массиве размером n (задается пользователем) 1. вычисляет сумму элементов после первого отрицательного элемента 2. вычисляет произведение элементов после последнего отрицательного элемента 3. вычисляет количество элементов между А и В, где А, В-это элементы заданные пользователем. Если элементы повторяются в массиве то для А рассматривается последнее... подробнее

Показать сообщение отдельно
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
28.01.2014, 06:47     В одномерном массиве серию равных элементом заменить на max элемент массива
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
#include <iostream>
#include <list>
#include <vector>
using namespace std;
 
struct series {
    int beg_i, end_i, count;
};
 
list <series> st_ser;
 
void findGroups(int * a, int n)
{
    int curr_count = 0;
    for (int i = 0; i < n; i++)
    {
        int tmp_beg_ind = i, tmp_end_ind = tmp_beg_ind + 1, tmp_count = 0;
        while ( a[tmp_beg_ind] == a[tmp_end_ind] )
        {
            ++tmp_count, ++tmp_end_ind;
        }
        if (tmp_count > 0 && tmp_count >= curr_count)
        {
            series tmp;
            tmp.beg_i = tmp_beg_ind;
            tmp.end_i = tmp_end_ind - 1;
            curr_count = tmp.count = tmp_count;
            while (!st_ser.empty() && st_ser.back().count < tmp_count) 
                st_ser.pop_back();
            st_ser.push_back(tmp);
        }
    }
}
 
int findMaxElement(int * a, int n)
{
    int max_el = a[0];
    for (int i = 1; i < n; i++)
        if (a[i] > max_el)
            max_el = a[i];
    return max_el;
}
 
void changeElements(int * a, int n, int to_change, vector<int> & res)
{
    int del = 0;
    while (!st_ser.empty())
    {
        vector<int>::iterator it = res.begin() + st_ser.front().beg_i - del;
        *it++ = to_change;
        while (st_ser.front().count-- > 0)
        {
            it = res.erase(it);
            ++del;
        }
        st_ser.pop_front();
    }
}
 
int main()
{
    const int SIZE = 14;
    int arr[SIZE] = {1, 2, 8, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 7}; 
    int max = findMaxElement(arr, SIZE);
    findGroups(arr, SIZE);
    vector <int> resulted_array(arr, arr + SIZE);
    changeElements(arr, SIZE, max, resulted_array);
    for (vector<int>::iterator it = resulted_array.begin(); it != resulted_array.end(); ++it)
        cout << *it << " ";
    cout << endl;
    system("PAUSE");
    return 0;
}
 
Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru