Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 27

Не могу найти ошибки в коде

20.07.2019, 17:32. Показов 3044. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется код:
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
#include <iostream>
using namespace std;
long long a[100001], max, min;
int s, n, m, k, i, j, pref, suff;
int main() {
    cin >> n >> k;
    s[0] = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        s[i] = s[i - 1] + a[i];
    }
    for (int i = k; i <= n; i++) {
        pref[i] = max(pref[i - 1], s[i] - s[i - k]);
    }
    suff[n - k + 1] = s[n] - s[n - k];
    for (int i = n - k + 1; i >= 1; i--) {
        suff[i] = max(suff[i + 1], s[i + k - 1] - s[i - 1]);
    }
    long long best = 2e18;
    for (int i = 1; i <= n - k + 1; i++) {
        best = min(best, max(pref[i - 1], suff[i + k]));
    }
    cout << best;
    return 0;
}
На переменные i и 0 в s[0], пишет "выражение должно иметь тип указателя на объект", и в случаях когда max перед скобками "выражение перед скобками вероятного вызова должно иметь тип функции (pointer-to-)"
Примерно даже не знаю причину.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2019, 17:32
Ответы с готовыми решениями:

Не могу найти ошибки в коде
написал код, но он почему то не работает #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { int a, x, p,...

Не могу найти ошибки в коде. Считает неправильно
Элементы файла могут принимать целые значения от 0 до 100. Опишите алгоритм, позволяющий найти и вывести произведение элементов, которые...

Не могу исправить ошибки в коде
Парни, помогите пожалуйста ошибки в коде исправить. Всё что мог - исправил. Остальные никак не могу. void podschet(pat a, int s) { ...

25
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
25.07.2019, 13:48
Студворк — интернет-сервис помощи студентам
ReYalp, прочитайте все мои сообщения в этой теме.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
25.07.2019, 15:08
Цитата Сообщение от XLAT Посмотреть сообщение
почему же разработчики компилятора GCC оставили такую возможность?
Потому что челики из Майкрософт решили не поддерживать Си99 в своем компиляторе VC++ (и вроде насчет этого ничего не изменилось), остальные это алловят как расширение.
Цитата Сообщение от XLAT Посмотреть сообщение
почему в новом стандарте хотят запретить VLA(variable length arrays)
И запретили.
Цитата Сообщение от XLAT Посмотреть сообщение
Он писал в комитет, а оттуда пришел ответ, что, мол сами не знаем
https://groups.google.com/foru... _4lgA1JYeg
Лол, что? Вы сами кинули ссылку на обсуждение и не удосужились прочесть, собсна, о чем шла речь? Почитайте, там как раз приводят примеры почему VLA, потенциально может быть плохим вариантом.
Цитата Сообщение от XLAT Посмотреть сообщение
как вы поняли в С99 стандарте VLA была вполне узаконена.
Оглянулся еще раз, фух, смотрю, а мы все еще в разделе С++..
Цитата Сообщение от XLAT Посмотреть сообщение
ведь это такая годная фича!
Но как уже обсуждали ранее по ссылке выше - не без подводных камней. Вспоминаем, что мы в разделе С++ и в С++ есть еще такие штуки как классы, при уничтожении которых должен быть вызван д-ктор, что накладывает доп. требования к реализации VLA для С++ и потом это еще пришлось бы и стандартизировать. Здесь еще где-то привет передает sizeof, decltype и шаблоны. Коммитет пошел путем меньшего зла, просто оставив все как есть, дабы не ломать то, что работает, VLA конечно приятная штука которая позволяет сэкономить время процессора, но я бы не назвал её настоль критичной штукой и она не стоит того гемора, что бы ее вводить.

В стандарте С++ - VLA запрещен. То, что это существует как расширение еще не означает, что это надо советовать всем и думать, что потом это не аукнется. И не стоит наганять на Krokodil9798.
2
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
25.07.2019, 15:44
Цитата Сообщение от Azazel-San Посмотреть сообщение
Потому что челики
вы сами челик

Цитата Сообщение от Azazel-San Посмотреть сообщение
VLA конечно приятная штука которая позволяет сэкономить время процессора
ок, из всего вашего набора буков только за это ставлю лайк.

Цитата Сообщение от Azazel-San Посмотреть сообщение
И не стоит наганять на Krokodil9798.
он маленький школьник?
и ему поэтому нельзя отвечать?
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
28.07.2019, 16:05
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
Вот условие:
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#include <iostream>
#include <time.h>
 
int rrand(int range_max, int range_min)
{   return rand() % (range_max - range_min + 1) + range_min;
}
 
#define LOG(v)    std::cout << #v << " \t= " << v << "\n"
#define LOGi(v)   std::cout << v
#define LOG2(s,v) std::cout << s << v
 
///----------------------------------------------------------------------------|
/// Ящик с призами.
/// На выбор предлагается n призов, пронумерованных от 1 до n.
/// Для каждого приза указана его ценность для Боба (1 <= ai <= 109)
///----------------------------------------------------------------------------:
const int MAXPRIZEFORLOG = 100; // Ограничение на логирование.
class cBox
{   bool is_new;
public:
    cBox(int _n) : ai(NULL), is_new(true), is_info_bob(false)
    {   print_logo();
        n  = _n;
        am = _n;
        ai = new int[am];
        
        LOGi("\nЦенность призов будет сгенерировано рандомно!\n");
        for(int i = 0; i < am; i++)
        {   ai[i] = rrand(109, 1);
        }
        show();
        
        k = rrand(n/3, 1);
        
        work();
    }
    
    ///------------------------------------------------------------------------|
    /// Конструктор для проведения тестов.                                     |
    ///------------------------------------------------------------------------:
    cBox(int* _ai, int test) : ai(_ai), is_new(false), k(2), is_info_bob(false)
    {   print_logo();
    
        n  = 10;
        am = n;
        show();
        
        work();
        if(test == bob.s) std::cout << "\n\nТест пройден УСПЕШНО!\n\n";
        else              std::cout << "\n\nТест ПРОВАЛЕН!\n\n";
    }
    
   ~cBox()
    {   if(is_new) delete ai;
    }
    
private:
    ///--------------------------------------------------------------:sMax_human
    struct sMax_human
    {   int s;
        int i;
        
        void check_max(int _s, int _i)
        {   if(_s > s)
            {   s = _s;
                i = _i;
            }
        }
        void info (const char* c)
        {   LOGi("\nСуммарная ценность призов ");
            LOGi(c);
            LOG2(": ", s);
            LOG2(", начиная с номера - ", i+1);
            LOGi("\n\n");
        }
    };
    
    void info_number_price (const char* c, int i)
    {   LOGi("\nПризы ");
        LOGi(c);
        LOGi("---------------:\n");
        LOG2("Номер    - ", i+1);
        LOGi(": ");
        LOG2("Ценность - ", ai[i]);
        LOGi("\n");
        LOG2("Номер    - ", i+2);
        LOGi(": ");
        LOG2("Ценность - ", ai[i+1]);
        LOGi("\n");
    }
    
private:   
    int* ai;     // массив с призами
    int  am;     // Размер массивов
    int  n;      // Количество призов.
    int  k;      // Количестово, которое забирает Алиса.
    
    ///------------------------------------------------------------------:work()
    sMax_human bob;
    void work()
    {   LOG2("\nВсего призов: ", n);
        LOG2("\nРазрешенно забрать: ", k);
        LOGi("\n\nИдёт расчет! ...ждите...\n\n");
        
        sMax_human alice = calculate_max_price_alice();
                   bob   = calculate_max_price_bob  (alice);
        
        if(n < MAXPRIZEFORLOG)
            info_number_price("Алисы", alice.i);
        alice.info("Алисы");
        
        info_bob(alice, bob);
        bob.info("Боба");
        
        if(alice.s > bob.s)
            LOGi("\nАлиса выбрала самые ценные призы!\n");
        else 
        {   LOGi("\nАлиса не шмогла насолить Бобу, так как\n");
            LOGi
            ("Боб выбрал АЛЬТЕРНАТИВНЫЙ набор призов с такой же ценностью!\n");
        }  
    }
    
    ///-----------------------------------------------:calculate_max_price_bob()
    sMax_human calculate_max_price_bob(sMax_human& _a)
    {   sMax_human _bob = {0, 0};
        
        for(int b = 0; b < am-k+1; b++)
        {   int s = sum_bob(_a.i, b);
            _bob.check_max(s, b);
        }
        return _bob;
    }
    bool is_info_bob;
    int sum_bob(int _alice, int _bob)
    {   if(is_info_bob&&(n < MAXPRIZEFORLOG)) LOGi("\nПризы Боба:");
        int sum = 0,
             jj = 0;
        for(int i = _bob; i < am; i++)
        {   if((i < _alice)||(i >= _alice+k))
            {   sum += ai[i];
                jj++;
                if(is_info_bob&&(n < MAXPRIZEFORLOG))
                {   bob.i = i;
                    LOG2("\nНомер: ", i+1);
                    LOG2(", ценность: ", ai[i]);
                }
            }
            if(jj == k) break;
        }
        if(is_info_bob&&(n < MAXPRIZEFORLOG)) LOGi("\n\n");
        return sum;
    }
    void info_bob(sMax_human _a, sMax_human _b)
    {   is_info_bob = true;
        sum_bob(_a.i, _b.i);
        is_info_bob = false;
    }
    
    ///--------------------------------------------::calculate_max_price_alice()
    sMax_human calculate_max_price_alice()
    {   sMax_human alice = {0, 0};
        int s = 0;
        for(int a = 0; a < am - k; a++)
        {   s = price_alice(a);
            alice.check_max(s, a);
        }
        return alice;
    }
    int price_alice(int alice)
    {   int sum = 0;
        for(int i = alice; i < alice+k; i++)
        {   sum += ai[i];
        }
        return sum;
    }
    
    void show()///-------------------------------------------------------:show()
    {   if(n < MAXPRIZEFORLOG)
        {   std::cout << "\nПолный список призов:\n";
            for(int i = 0; i < am; i++)
            {   std::cout << "ai[" << i << "] = " << ai[i] << "\n";
            }
            std::cout << "\n";
        }
    }
    void print_logo()
    {   LOGi("\nНовый тест ===========================");
        LOGi("========================================:\n");
    }
};
 
///----------------------------------------------------------------------------|
/// Main
///----------------------------------------------------------------------------:
int main()
{   setlocale(0, "");
    srand(static_cast<unsigned int>(time(NULL)));
    
    {   int ai[10] = { 1,2,4,5,2,4,2,2,1,6};
        cBox box(ai, 7);
    }
    
    {   int ai[10] = { 7,2,4,5,2,4,2,2,1,6};
        cBox box(ai, 9);
    }
    
    {   //int n;
        //std::cout << "Введите количество призов: ";
        //std::cin >> n;
        //cBox box(n);
        cBox box(100000);
    }
    
    LOGi("\n... программа закончила работу.\n\n");
    std::cin.get();
    return 0;
}
без последнего теста на 100000 призов:
http://cpp.sh/8562h

приз из массива ai с индексом 0 (ai[0]) будет иметь номер 1. (согласно тексту задачи)
0
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 27
28.07.2019, 17:02  [ТС]
XLAT, без последнего условия мой код работал тоже и был поменьше.
0
Just Do It!
 Аватар для XLAT
4221 / 2687 / 656
Регистрация: 23.09.2014
Сообщений: 9,249
Записей в блоге: 3
28.07.2019, 18:02
ок.

Добавлено через 12 минуты
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
больше 10^5 не получается то что нужно.
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
a[100001]
возможно нужно увеличить размер массива a,
например: a[9100001] ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.07.2019, 18:02

не могу понять ошибки в коде
Запускаю этот код в браузере: function getDate(str){ var regexp = /^(?\d)-(?\d)-(\d{3})$/; var f = str.match(regexp); ...

не могу исправить ошибки в коде
Никак не могу исправить ошибки в коде,помогите. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; //Описание класса СХ class CX { ...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru