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

Инкрементирование элементов массива-счётчика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу удалить динамический массив http://www.cyberforum.ru/cpp-beginners/thread1632360.html
В общем, выдает критическую ошибку: HEAP CORRUPTION DETECTED: after Normal block (#140) at 0x004452BF0. CRT detected that the application wrote to memory after end of heap buffer. когда собираюсь удалить из памяти динамический массив. без delete все работает. в чем проблема? void fillArray(int *pArray, int size); void showArray(int *pArray, int size); void freeArray(int *pArray); void...
C++ Запись в файл слов, которые не повторяются Добрый вечер, помогите с кодом. Как сделать чтобы считать с файла слова в односвязный список, сделать сортировку, и записать в другой файл слова кроме тех которые повторяются. Вот мой код: void List::readFromFile(char *FileWay) { FILE *file; int j = 0; file = fopen(FileWay,"r"); if (file == NULL) { cout << "Error" << endl; return; } http://www.cyberforum.ru/cpp-beginners/thread1632342.html
Разбить текст на страницы C++
Дан текстовый файл. Преобразовать его, разбив текст на страницы и пронумеровав их, причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы определяется самой длинной строкой в данной странице. Конец страницы отмечается символом с кодом 12, который помещается в отдельной строке. ...
C++ Проверить код на наличие ошибок
Добрый день, форумчане! Кто может проверить код на наличие ошибок ? Вариант задания 26 #include <iostream> #include <cmath> #include <cstdlib> using namespace std; int main() { int i, k = 0, j = 1; double q, z, x = -3;
C++ В одномерном целочисленном массиве поменять местами последний элемент с первым нулевым элементом http://www.cyberforum.ru/cpp-beginners/thread1632292.html
Ввести в память машины одномерный целочисленный массив, размерностью не более 50 элементов. 1)Поменять местами последний элемент с первым нулевым элементом. 2)Упорядочить массив таким образом, чтобы в начале шли отрицательные элементы, затем нулевые, затем положительные. Вывести на экран исходный массив и данные, полученные согласно заданию в варианте. Ввод массива, манипуляции с массивом,...
C++ Задача на поиск совпадений букв первого слова во втором Ребят, решите пожалуйста задачу: Даны два слова. Для каждой буквы первого слова (в том числе для повторяющихся в этом слове букв) определить, входит ли она во второе слово. Например, если заданные слова информация и процессор, то для букв первого из них ответом должно быть: нет нет нет да да нет нет да нет нет Заранее спасибо:) подробнее

Показать сообщение отдельно
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
05.01.2016, 21:16     Инкрементирование элементов массива-счётчика
Я как-то писал подобную штуку:
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
#include <iostream>
#include <random>
 
using namespace std;
 
class Ranger {
    std::vector<unsigned long> counts;
    double offset;
    double width;
    int count;
public:
    Ranger( double offset, double width, int count ) {
        this->offset = offset;
        this->width = width;
        this->count = count;
        for( int i = 0; i < count + 1; i++ ) {
            counts.push_back( 0 );
        }
    }
    vector<unsigned long>& getData() {
        return counts;
    }
    Ranger& operator<<( double value ) {
        int pos = int(value / this->width);
        if( pos > counts.size() - 1 ) {
            ++counts[counts.size() - 1];
            return *this;
        }
        ++counts[pos];
        return *this;
    }
    void debugPrint() {
        for( auto& it : counts )
            cout << it << endl;
    }
};
 
int main() {
 
    std::default_random_engine rn1;
    std::exponential_distribution<double> distribution( 1.0 );
 
    int tests = 0;
 
    cout << "Enter number of tests" << endl;
    cin >> tests;
 
    Ranger table( 0.0, 0.5, 20 );
    
    for( int i = 0; i < tests; i++ ) {
        table << distribution( rn1 );
    }
 
    //table.debugPrint();
 
    for( auto & i : table.getData() ) {
        const int WIDTH = 80;
        double coef = double(WIDTH) / double(tests);
        for( int j = 0; j < i * coef; j++ ) {
            cout << "*";
        }
        cout << endl;
        
    }
 
    return 0;
 
}
Собственно класс Range этим занимается. В конструктор подается - смещение от нуля (значение 1 столбца), ширина столбца, количество столбцов.
В вашем случае будет Range( 200.0, 99.0, 4 )
Не уверен на счет работоспособности, так что пробуйте запустить у себя
 
Текущее время: 01:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru