Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Overwatcher
0 / 0 / 0
Регистрация: 30.07.2016
Сообщений: 18
#1

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

08.08.2016, 19:51. Просмотров 683. Ответов 17
Метки нет (Все метки)

Доброго времени суток. Дали задание написать программу, которая считает количество элементов массива.

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
int main() 
{
    const int x = 99, y = 99, z = 23;
    int A[x][y][z];
    unsigned long long count=0;
 
 
    for (int i = 1; i <= x; i++)
    {
        for (int j = 1; j <= y; j++)
        {
            for (int k = 1; k <= z; k++)
            {
                
                count++;
                
                
            }
 
 
 
 
 
        }
    }
 
    cout << count;
 
 
 
 
 
    _getch();
    return 0;
 
 
}
Логика такая: при каждом прохождении вложенного цикла счетчик увеличивается на 1. Пока значения небольшие (10, 10, 10 и т.д.) считает легко. Но стоит ввести что-то вроде 100 100 100, вылетает по ошибке:

Вызвано исключение по адресу 0x008D1B99 в ConsoleApplication2.exe: 0xC00000FD: Stack overflow (параметры: 0x00000000, 0x00362000).

p.s. если не сложно, не как программисту, а как обычному человеку в чем ошибка?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2016, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Счетчик элементов массива (C++):

Не работает счетчик в методе определения различающихся элементов массива - C++
#include &quot;stdio.h&quot; int main() { const int n=29; double massiv; int i,j; int proverka=0; int d=0; for (i=0; i&lt;=n; i++) ...

В одномерном массиве, состоящем из n вещественных элементов вычислить минимальный элемент массива и сумму элементов массива. [CPP] - C++
В одномерном массиве, состоящем из n вещественных элементов вычислить минимальный элемент массива и сумму элементов массива, расположенных...

Записать положительные элементы массива X подряд в массив Y. Определить k – количество положительных элементов. Вычислит сумму элементов массива Y - C++
Записать положительные элементы массива X=(x1,x2,…, xn) подряд в массив Y=(y1,y2,…, yk). Определить k – количество положительных...

Вычислить количество положительных элементов массива и сумму элементов массива, расположенных после последнего элемента, равного нулю - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: количество положительных элементов массива; сумму элементов...

В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента массива; 2) произведение элементов массива, расположенных между - C++
Помогите исправить программу Задание: В одномерном массиве, состоящем из n целых элементов, 1) номер максимального элемента...

Определить количество элементов массива, меньших среднего арифметиче-ского значений элементов этого массива - C++
Времени нет , только ещё учу . нужно сделать срочно работы . углубился в учебник пока , но не успеваю разобраться . может есть...

17
sham63
3 / 3 / 2
Регистрация: 23.06.2015
Сообщений: 38
08.08.2016, 20:08 #2
Пробелы

Добавлено через 1 минуту
Цитата Сообщение от Overwatcher Посмотреть сообщение
unsigned long long
Где то тут скорее всего
0
HelicopterK52
682 / 207 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
08.08.2016, 20:17 #3
Цитата Сообщение от Overwatcher Посмотреть сообщение
которая считает количество элементов массива.
C++
1
count = x * y * z;//Всё гениальное просто
0
Overwatcher
0 / 0 / 0
Регистрация: 30.07.2016
Сообщений: 18
08.08.2016, 20:50  [ТС] #4
ладно, попробую по другому:
который считает количество проходов вложенного цикла
На данный момент это просто счетчик, здесь дальше будет код, поэтому x*y*z, увы, не подходит.

unsigned long long потому что подозрение на то, что int count не вмещает в себя (ну это была теория) такое количество значений.
0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
08.08.2016, 20:56 #5
Overwatcher, тут проблема в том, что вы создаете int A[100][100][100]; тем самым говорите компилятору - мне нужен стэк на 4 Гигабайта непрерывной памяти

Так понятнее?
1
Overwatcher
0 / 0 / 0
Регистрация: 30.07.2016
Сообщений: 18
08.08.2016, 20:59  [ТС] #6
Ура! Программист!) А как можно запихнуть такое (а может и больше) кол-во значений в массив?
p.s. доходчиво, спасибо.
0
Хрисипп
19 / 29 / 8
Регистрация: 09.02.2016
Сообщений: 217
08.08.2016, 21:02 #7
когда запрашиваешь больше, чем тебе может дать система, место не выделяется, и ты обращаешься к несуществующим объектам. можно убедиться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>     // std::cout
#include <cstdlib>      // std::exit
#include <new>          // std::set_new_handler
 
void no_memory () {
  std::cout << "Failed to allocate memory!\n";
  std::exit (1);
}
 
int main () {
  std::set_new_handler(no_memory);
  std::cout << "Attempting to allocate 1 GiB...";
  char* p = new char [1024*1024*1024];
  std::cout << "Ok\n";
  delete[] p;
  return 0;
}
пример с http://www.cplusplus.com/reference/new/set_new_handler/
0
HelicopterK52
682 / 207 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
08.08.2016, 21:13 #8
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
мне нужен стэк на 4 Гигабайта
100*100*100*4 == 4000000 байт
Где здесь 4 Гб? Вы в тысячу раз ошиблись.
1
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
08.08.2016, 21:17 #9
HelicopterK52, что-то я запутил)

Overwatcher, да там не гигайбайты, а мегабайты - а в вашем случаи вроде бы стэк максимум 20 КБ, а вы хотите туда положить 4 МБ. Как фиксить? Не выделять память просто так - только по требованию к примеру по 100 байт в цикле в куче через new int[100]
0
HelicopterK52
682 / 207 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
08.08.2016, 21:19 #10
Хрисипп, это может не сработать, памяти может не быть, но система об этом не скажет до фактического обращения.
0
Хрисипп
19 / 29 / 8
Регистрация: 09.02.2016
Сообщений: 217
08.08.2016, 21:33 #11
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
но система об этом не скажет до фактического обращения.
так это при динамическом выделении и выключенной подкачке на жестик
0
HelicopterK52
682 / 207 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 1
08.08.2016, 21:36 #12
Цитата Сообщение от Хрисипп Посмотреть сообщение
так это при динамическом выделении и выключенной подкачке на жестик
Всё зависит от реализации конкретной платформы.
Например, та же убунту с дефолтными настройками выдаст Вам хоть сто гигов - пофигу, в т.ч. и на подкачку.
Я, например, эту стратегию распределения памяти сразу вырубаю.
0
Хрисипп
19 / 29 / 8
Регистрация: 09.02.2016
Сообщений: 217
08.08.2016, 21:40 #13
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
Всё зависит от реализации конкретной платформы.
да, тут правда. всё забываю про остальные ос, при использовании wind'ы
0
Overwatcher
0 / 0 / 0
Регистрация: 30.07.2016
Сообщений: 18
08.08.2016, 21:44  [ТС] #14
я потерялась (с) Гадя Петрович Хренова

Мне то что делать?)

Не выделять память, т.е. не объявлять что мой массив int?
0
hoggy
6701 / 2883 / 494
Регистрация: 15.11.2014
Сообщений: 6,480
Завершенные тесты: 1
09.08.2016, 00:51 #15
Цитата Сообщение от Overwatcher Посмотреть сообщение
Мне то что делать?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
const size_t x = 99, y = 99, z = 23;
int A[x][y][z];
 
int main() 
{
    unsigned long long count=0;
 
    for (size_t i = 1; i < x; ++i)
        for (size_t j = 1; j < y; ++j)
            for (size_t k = 1; k < z; ++k)
                ++count;
 
    cout << count;
    _getch();
}
0
09.08.2016, 00:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2016, 00:51
Привет! Вот еще темы с ответами:

Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива...) - C++
Помогите пожалуйста разработать программу и реализовать интуитивный понятный интерфейс (используя формы).При написании программы можно...

Функции в с++. Найти сумму элементов массива D, а также суммы квадратов и кубов элементов массива D. - C++
Запутался уже -_- Куда че пихать не могу понять... Дан произвольный массив D размера k. Найти сумму элементов массива D, а также суммы...

Вычислить среднее арифметическое элементов массива без учета минимального и максимального элементов массива - C++
Написать программу, которая вычисляет среднее арифметическое элементов массива без учета минимального и максимального элементов массива.

Определить кол-во элементов массива, которые больше среднеарифметического значения всех элементов массива - C++
Сделать программу, к-рая случайно заполняет массив А (n&lt;30) целыми значениями. Определить кол-во элементов массива, которые больше...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru