С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
1

Не получается выделелить памать в CASE для динамического массива и объявить его размер

19.05.2016, 10:43. Показов 1282. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Появилась некоторая проблема с выделением памяти для динамического массива и с объявлением его размера. И еще вопрос: как сделать так, чтобы размер динамического массива брался из файла? Код:
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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
using namespace std;
struct COMPANIES{
    char NAME[20]; //Название компании
    int PRODUCTNUMBER; //Количество продуктов
    unsigned int YEARSALESVOLUME; //Продажи за год
    double MARKETPERCENT; // Часть рынка %
}final;
void sort();
void InFile(COMPANIES*, int);
void fromFile(COMPANIES*, int);
void search(COMPANIES*, int);
void outInConsole(COMPANIES*, int);
void InfInput(COMPANIES*, int);
int main() {
    setlocale(LC_ALL, "russian");
    int CompNum;
    int choise;
    cout << "Вы хотите получить значения из файла или ввести их вручную?\n 1.Из файла \n 2.Вручную\n";
    cin >> choise;
    switch (choise) {
    case 1:
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final = new COMPANIES[CompNum];
        fromFile(final, CompNum);
        InFile(final, CompNum);
        outInConsole(final, CompNum);
        search(final, CompNum);
        break;
    case 2:
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final2 = new COMPANIES[CompNum];
        InfInput(final2, CompNum);
        InFile(final2, CompNum);
        outInConsole(final2, CompNum);
        search(final2, CompNum);
        break;
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
19.05.2016, 10:43
Ответы с готовыми решениями:

Почему при передачи параметра(динамического массива) нельзя установить его размер через SetLength
procedure TFilter.CreateMassCheckBox(Var NameMass : array of TCheckBoxTransparent; Parent:...

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

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

Для динамического массива подсчитать количество его элементов, равных первому его элементу
Для ДИНАМИЧЕСКОГО массива подсчитать количество его элементов, равных первому его элементу. В...

14
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
19.05.2016, 10:48 2
Эмм... , короче тут не верно что int main() и внутри него объявляются функции и даже вызываются в нем.И структура внутри главной функции и сами функции не описаны вот и логично не ничего не работает.
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.05.2016, 10:48  [ТС] 3
Компилятор при таком коде выдает такую ошибку: "пропуск инициализации "final" из-за метки "case""
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
19.05.2016, 10:49 4
Цитата Сообщение от DenKG Посмотреть сообщение
Появилась некоторая проблема
Какая именно?
Цитата Сообщение от Dastan4ik Посмотреть сообщение
внутри него объявляются функции
Э-э-эм... Где?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.05.2016, 10:52 5
Цитата Сообщение от DenKG Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    switch (choise) {
    case 1:
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final = new COMPANIES[CompNum];
        fromFile(final, CompNum);
        InFile(final, CompNum);
        outInConsole(final, CompNum);
        search(final, CompNum);
        break;
    case 2:
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final2 = new COMPANIES[CompNum];
        InfInput(final2, CompNum);
        InFile(final2, CompNum);
        outInConsole(final2, CompNum);
        search(final2, CompNum);
        break;
    }
Добавь block scope.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    switch (choise) {
    case 1: {
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final = new COMPANIES[CompNum];
        fromFile(final, CompNum);
        InFile(final, CompNum);
        outInConsole(final, CompNum);
        search(final, CompNum);
        break;
      }
    case 2: {
        cout << "Введите количество компаний: ";
        cin >> CompNum;
        COMPANIES *final2 = new COMPANIES[CompNum];
        InfInput(final2, CompNum);
        InFile(final2, CompNum);
        outInConsole(final2, CompNum);
        search(final2, CompNum);
        break;
      }
    }
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.05.2016, 10:52  [ТС] 6
Цитата Сообщение от Hikari Посмотреть сообщение
Появилась некоторая проблема
Какая именно?
Компилятор при таком коде выдает такую ошибку: "пропуск инициализации "final" из-за метки "case"
0
62 / 62 / 55
Регистрация: 18.10.2014
Сообщений: 190
19.05.2016, 10:52 7
Ой уже исправили int main(); в самом начале стоял)))
0
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.05.2016, 10:56  [ТС] 8
Цитата Сообщение от DrOffset Посмотреть сообщение
Добавь block scope.
Вот такая ошибка с блоком
Миниатюры
Не получается выделелить памать в CASE для динамического массива и объявить его размер  
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
19.05.2016, 11:03 9
Лучший ответ Сообщение было отмечено DenKG как решение

Решение

Цитата Сообщение от DenKG Посмотреть сообщение
Компилятор при таком коде выдает такую ошибку: "пропуск инициализации "final" из-за метки "case"
У тебя есть глобальная переменная с таким именем. Убери ее раз используешь локальную.
Цитата Сообщение от DenKG Посмотреть сообщение
Вот такая ошибка с блоком
Да у тебя функции не описаны судя по всему. Те, что ты перед main() объявил. Где их тела?
Цитата Сообщение от DrOffset Посмотреть сообщение
Добавь block scope.
А в Си разве без него работать этот оператор выбора не будет?
1
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.05.2016, 11:04 10
Цитата Сообщение от DenKG Посмотреть сообщение
Вот такая ошибка с блоком
Это не с блоком ошибка, а у тебя в коде отсутствует туловище функции void fromFile(COMPANIES*, int);. Его там не было изначально и добавление\удаление блока на эту ошибку никак не влияет.
Добавь, короче говоря, тело этой функции в свой код.
1
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.05.2016, 11:06  [ТС] 11
Цитата Сообщение от Hikari Посмотреть сообщение
Да у тебя функции не описаны судя по всему. Те, что ты перед main() объявил. Где их тела?
Спасибо, родина Вас не забудет
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.05.2016, 11:06 12
Цитата Сообщение от Hikari Посмотреть сообщение
А в Си разве без него работать этот оператор выбора не будет?
У него переменная определяется внутри метки case. Ошибка
Цитата Сообщение от DenKG Посмотреть сообщение
"пропуск инициализации "final" из-за метки "case"
как раз об этом. Метка case не вносит области видимости же.
1
11 / 11 / 7
Регистрация: 23.12.2015
Сообщений: 950
19.05.2016, 11:07  [ТС] 13
Всем спасибо, помогли
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.05.2016, 11:11 14
Цитата Сообщение от DenKG Посмотреть сообщение
помогли
Главное, чтобы ты понял, что у тебя в коде была не одна ошибка, а несколько.
Причем сначала ты указал на ошибку компиляции, а затем, когда мы ее исправили, последовала ошибка линковки из-за отсутствующего определения функции.
Разберись с этим и подружись с компилятором - он же пишет тебе в чем проблема
0
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
19.05.2016, 11:23 15
Цитата Сообщение от DrOffset Посмотреть сообщение
Метка case не вносит области видимости же.
А вот этого я не знала...
0
19.05.2016, 11:23
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
19.05.2016, 11:23
Помогаю со студенческими работами здесь

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

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

Для динамического массива подсчитать количество его элементов, равных первому его элементу
FreePascal

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

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

Для динамического массива подсчитать количество его нулевых элементов
Для динамического массива подсчитать количество его нулевых элементов.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru