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

Массивы : невозможно выделить память для массива постоянного нулевого размера

09.12.2019, 11:58. Показов 1525. Ответов 6
Метки c++ (Все метки)

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
47
48
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
cout<<"Введите n"<<endl;;
int n;
cin>>n;
string arr[n];
for (int i=0; i<n; i++)
{
getline(cin, arr[i]);
 
}
int length=arr[0].length();
int num=0;
for (int i=0; i<n; i++)
{int x=arr[i].length();
if (x<length) 
{
length=x;
num=i;
}
}
int c0=0;
int c2=0;
int c4=0;
int c6=0;
int c8=0;
for (int i=0; i<arr[num].length();i++)
{
if (arr[num][i]=='2') { c2++;
arr[num].erase(i,1);
i--;
}
if (arr[num][i]=='4') { c4++;
arr[num].erase(i,1);
i--;}
if (arr[num][i]=='6') { c6++;
arr[num].erase(i,1);
i--;}
if (arr[num][i]=='8') { c8++;
arr[num].erase(i,1);
i--;}
if (arr[num][i]=='0') { c0++;
arr[num].erase(i,1);
i--;}
}
cout<<arr[num]<<endl;
cout<<"\n"<<" нулей "<<c0<<" двоек "<<c2<<" четверок "<<c4<<" шестерок"<<c6<<" восьмерок "<<c8;
return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2019, 11:58
Ответы с готовыми решениями:

Массивы : невозможно выделить память для массива постоянного нулевого размера
Помогите или направьте. 1&gt;3.cpp(10): error C2057: требуется константное выражение 1&gt;3.cpp(10):...

Невозможно выделить память для массива постоянного нулевого размера
/* Дан массив из N элементов (вещественные числа). Вычислить: 1) произведение элементов массива...

Невозможно выделить память для массива постоянного нулевого размера
Доброго вечера. Никак не могу решить проблему с char Вот так вызываю функцию read: if (read(18,...

Невозможно выделить память для массива постоянного нулевого размера
unsigned const __int16 scrx = GetSystemMetrics(SM_CXSCREEN); char sstring; Что не так в этих двух...

6
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
09.12.2019, 12:08 2
Цитата Сообщение от Demo4555 Посмотреть сообщение
Массивы : невозможно выделить память для массива постоянного нулевого размера
Попробуй сделать
C++
1
2
3
4
5
6
7
8
cin>>n;
string arr[n];
 
cin.ignore();
 
for (int i=0; i<n; i++)
{
getline(cin, arr[i]);
1
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
09.12.2019, 12:08 3
Цитата Сообщение от Demo4555 Посмотреть сообщение
string arr[n];
n должно быть константой.

или:
C++
1
2
3
4
5
6
    
   string* arr=new string[n];
//... работа с массивом строк
   delete[] arr;
   return 0;
}
1
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
09.12.2019, 12:25 4
Demo4555, условие задачи писать не надо? И в чем конкретно проблема?

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
n должно быть константой.
Впрочем, это и есть причина

Добавлено через 12 минут
Не мешало бы добавить и
C++
1
    setlocale(LC_ALL, "");
0
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
09.12.2019, 12:27 5
Лучший ответ Сообщение было отмечено Demo4555 как решение

Решение

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
//#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Rus");
    cout << "Введите n" << endl;;
    int n;
    (cin >> n).get();
    string* arr=new string[n];
    for (int i = 0; i<n; i++)
        getline(cin, arr[i]);
    int length = arr[0].length();
    int num = 0;
    for (int i = 1; i<n; i++)
    {
        int x = arr[i].length();
        if (x<length)
        {
            length = x;
            num = i;
        }
    }
    int c[5] = { 0 };
    for (size_t i = 0; i < arr[num].length(); i++)
    {
        if (isdigit(arr[num][i]) && arr[num][i] % 2 == 0)
        {
            int ind = (arr[num][i] - '0') / 2;
            c[ind]++;
            arr[num].erase(i, 1);
            i--;
        }
    }
    cout << arr[num] << endl;
    cout << "\n" << " нулей " << c[0] << " двоек " << c[1] << " четверок " << c[2] << " шестерок " << c[3] << " восьмерок " << c[4]<<endl;
    delete[] arr;
    return 0;
}
1
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
09.12.2019, 12:35 6
Ну да, а то if-ы приводили к вылету. Надо было либо if-else, либо switch, либо, как у ZSS
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 5
09.12.2019, 13:56  [ТС] 7
Огромное спасибо
0
09.12.2019, 13:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2019, 13:56
Помогаю со студенческими работами здесь

Msvc2015 специализация шаблона для массива нулевого размера
здарова. по стандарту с++, массивы нулевой длины запрещены. warning: ISO C++ forbids zero-size...

выделить память для массива*[]
привет. чего-то не получается организовать работу массива char *c; это динамический массив строк...

Выделить память для трехмерного массива и изменить индексы начального элемента массива
Выделить память для трехмерного массива а. Изменить индексы начального элемента массива на ....

Выделить память для трёхмерного массива
Пожалуйста помогите! нужно решить 4 задания, но у меня совершенно нет времени! срочно нужно ехать к...

Как выделить память для динамического массива?
Как выделить память для динамического массива? typedef TPrimitives *TPrimitive; //......

Как выделить память для двухмерного массива?
Как выделить память для двухмерного массива в С++ a=new int???


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

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