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

Error C2109: для индекса требуется массив или указатель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти произведение положительных элементов массива http://www.cyberforum.ru/cpp-beginners/thread188834.html
Подскажите, пожалуйста, оформить задачки: 1. Дан массив из N элементов (вещественные числа). Вычислить: 1) произведение положительных элементов массива; 2) сумму элементов массива, расположенных до минимального элемента. Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах. 2. Дана целочисленная квадратная матрица порядка 8....
C++ Копирование массивов Помогите решить проблемку. Нашел в нете функцию memcpy(), которая должна по идее копировать один массив в другой Вот мой код cout << "Введите размерность массива : "; cin >> dimension; int * A = new int; int * B = new int; A = random_array( dimension ); memcpy( B, A, sizeof( int ) ); http://www.cyberforum.ru/cpp-beginners/thread188828.html
Сортировка матрицы C++
Подскажите пожалуйста, как отсортировать элементы матрицы по возрастанию?.. Добавлено через 9 минут Матрица представляет собой двумерный массив типа int
C++ среднее арифметическое элементов
У меня такой вопрос, как мне нужно писать помогите мне. Вывести на экран номера строк , среднее арифметическое элементов которых наибольшее.
C++ Рандомное распределения чисел http://www.cyberforum.ru/cpp-beginners/thread188817.html
Доброго вам времени суток. Ребята, помогите с программой, собственно, нужно создать 12к равномерно распределенных чисел, потом из этих 12к получить 1к нормально распределенных. 1к чисел делим на пары, по номерам, 1-ый, 2-ой, далее 3-тий, 4-тый, и так далее и принять что эти числа координаты точек. Далее нужно по теореме Монте-Карло найти площадь фигуры , как это делается?. Моя фигура 4-х...
C++ Вычисление производной из функции Помогите с курсовым, пожалуйста! необходимо в спецификации написать теорию по алгоритмам и структурам данных. Программа пишется - вычисление производной из функции. Но что написать в спецификации по поводу алгоритма?????? подробнее

Показать сообщение отдельно
HakimotoX
 Аватар для HakimotoX
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 22
11.11.2010, 16:51  [ТС]     Error C2109: для индекса требуется массив или указатель
Цитата Сообщение от accept Посмотреть сообщение
выделенную память нужно освобождать
нужно ещё поставить запрет на повторное выделение памяти (флажок, который переключить при первом выделении)
То, что нужно освобождать я знаю, оператор delete [] a; стоит в case 3:...
А как сделать запрет, можно поподробней?

Вот готовая программа:

Показать:
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "stdafx.h"
 
#include <stdio.h>
#include <math.h>
#include <clocale>
#include <memory.h>
#include <stdlib.h>
#include <time.h>
 
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
 
    int menu = 0, size = 0;
    int *a;
        double sArf = 0, sum = 0;
 
    int wasEnt = 0;
    int wasCalc = 0;
    
    do
    {
        printf("\n");
        printf("+-----------------------------------------------------------------------------+\n");
        printf("|†† Программа для работы с массивом ††                                        |\n");
        printf("|                                                                             |\n");
        printf("|1. Ввести размер массива                                                     |\n");
        printf("|2. Вывести на экран исходный массив                                          |\n");
        printf("|3. Расчитать среднее арифметическое всех положительных элементов массива     |\n");            
        printf("+-----------------------------------------------------------------------------+\n");
        printf(" 0. Выход\n\n");
        printf("Выберете пункт меню: ");
 
        scanf("%d", &menu);
 
        srand(time(NULL));
 
        switch(menu)
        {
        case 1:
            do
            {
                printf("\nВведите размер массива: ");
                scanf("%d", &size);
                if (size <= 0)
                {
                    printf("\n\aОШИБКА!: Число должно быть больше нуля!\nвведите еще раз...\n");
                }
                else
                {
                printf("ввод завершен...");
                printf("\n\n");
                system("pause");
                }
            } while (size <= 0);
            sum = 0;
            wasEnt = 1;
            wasCalc = 0;
            break;
        case 2:
            if (1 == wasEnt)
            {                       
                a = new int [size];
                memset(a, 0, size * sizeof(int));
 
                for (int i = 0; i < size; ++i)
                {
                    a[i] = rand() % 10;
                }
                printf("\nИсходный массив: \n\n");
                for (int i = 0; i < size; ++i)
                {
                    printf("[%d] ", a[i]);
                    sum = 0;
                    wasCalc = 1;
                }
                printf("\n\n");
                system("pause");                
            }
            else
            {
                printf("\n\aОШИБКА!: Сначала введите размер массива! Выберете пункт меню 1.\n");
                printf("\n");
                system("pause");
            }
            break;
        case 3:
            if (wasCalc)
            {               
                for (int i = 0; i < size; ++i)              
                {
                    sum = sum + a[i];                   
                    sArf = sum / size;
                }
                printf("\nРасчет закончен успешно!\n");
                printf("\nСреднее арифметическое равно: %.2f\n\n", sArf);
                system("pause");
                wasCalc = 0;
                delete [] a;
            }
            else
            {
                printf("\n\aОШИБКА!: Сначала проверьте исходный массив! Выберете пункт меню 2.\n");
                printf("\n");
                system("pause");
            }
            break;
        case 0:
            break;
        default:
            printf("\n\aОШИБКА!: Неверный пункт меню!\n");
            printf("\n");
            system("pause");
        }       
    } while (menu != 0);
    
    return 0;
}


Я предполагаю 2 варианта, если при выборе меню в таком порядке:


1. Вариант:

- Выполняем операции в case 1:
- Выполняем операции в case 2:
//при повторном нажатии case 2: память первых элементов массива должна очищаться,
//а вторые учитываться.. соответственно и при тройном нажатии должно происходить тоже самое..
- Выполняем операции в case 3:


2. Вариант:

- Выполняем операции в case 1:
- Выполняем операции в case 2:
//при повторном нажатии case 2: вылетало сообщение, что необходимо выполнить
//case 1:
- Выполняем операции в case 3:

Буду признателен за помощь, в этой проблеме!
 
Текущее время: 19:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru