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

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

20.07.2019, 17:32. Показов 2817. Ответов 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
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.07.2019, 19:10
Влад Хорошавин, начинайте свой вопрос с формулировки условия задачи. из того что заметно сразу - не объявлены массивы, не подключена библиотека <algorithm>.
0
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
20.07.2019, 23:21
Влад Хорошавин,
с минимальными изменениями вашего кода для того чтобы скомпилировать в GCC 4.9.2
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
#include <iostream>
 
using namespace std;
long long a[100001], max, min;
int n, m, k, i, j;
 
int main()
{   cin >> n >> k;
    int s   [n];
    int pref[n];
    int suff[n];
    
    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] = std::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] = std::max(suff[i + 1], s[i + k - 1] - s[i - 1]);
    }
    long long best = 2e18;
    for (int i = 1; i <= n - k + 1; i++)
    {   long long t = std::max(pref[i - 1], suff[i + k]);
        best = std::min(best, t);
    }
    cout << best;
    return 0;
}
1
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
21.07.2019, 06:45
Если пишешь s[i], то почему s объявлена как простая переменная? У тебя max и переменная и "максимум". Сам себя запутываешь...
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
21.07.2019, 12:22
Цитата Сообщение от XLAT Посмотреть сообщение
C++
1
2
3
4
cin >> n >> k;
int s[n];
int pref[n];
int suff[n];
XLAT, Это полная дичь.
1
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 27
21.07.2019, 16:05  [ТС]
Смог отредактировать код до рабочего состояния, но при n больше 5000 и m больше 105 не получается то что нужно.
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 <iostream>
 using namespace std;
 long long a[100001],mx,mn;
 int n,m,k,i,j;
 int main(){
 cin>>n>>k;
 a[0]=0;
  for(i=1;i<=n;i++) {
 cin>>m;
 a[i]=a[i-1]+m;
   }
  mn=0;
   for(j=1;j<=n-k+1;j++){
     mx=0;
      for(i=j+k;i<=n-k+1;i++)
         if(mx<a[i+k-1]-a[i-1])mx=a[i+k-1]-a[i-1];
      for(i=1;i<=j-k;i++)
            if(mx<a[i+k-1]-a[i-1])mx=a[i+k-1]-a[i-1];
       if(mn==0||mn>mx)mn=mx;
   }
   cout<<mn;
   return 0;
  }
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
21.07.2019, 21:42
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
long long a[100001],mx,mn;
Остается мне думать вряд ли там нужны столько элементов. Напишите лучше исходную задачу, чтобы можно было написать более-менее нормальный код.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
22.07.2019, 00:00
Влад Хорошавин,
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
int s
тут Вы создаете s как обычную переиенную типа инт,
Цитата Сообщение от Влад Хорошавин Посмотреть сообщение
s[0] = 0;
а тут Вы обращаетесь к ней уже как к массиву поэтому и ошибка,
что вообще данный код должен делать?
0
0 / 0 / 0
Регистрация: 01.06.2019
Сообщений: 27
22.07.2019, 08:28  [ТС]
Вот условие:
Алиса и Боб стали победителями телевикторины, и теперь им предстоит выбрать себе призы. На выбор предлагается n призов, пронумерованных от 1 до n.

Распределение призов происходит следующим образом. Организаторы телевикторины сообщают победителям целое положительное число k (1 ≤ k ≤ n / 3). Сначала Алиса выбирает себе любые k подряд идущих номеров призов. Потом Боб выбирает себе k подряд идущих номеров призов, при этом он не может выбирать номера, которые уже выбрала Алиса. После этого победители забирают выбранные ими призы.

Алиса хорошо знает Боба, и для каждого приза выяснила его ценность для Боба, которая является целым положительным числом. Алиса обижена на Боба и хочет выбрать свои призы так, чтобы суммарная ценность призов, которые достанутся Бобу, была как можно меньше. При этом Алису не волнует, какие призы достанутся ей.

Требуется написать программу, которая по информации о ценности призов и значению k определит, для какого минимального значения x Алиса сможет добиться того, чтобы Боб не смог выбрать призы с суммарной ценностью больше x

Входные данные
Первая строка входного файла содержит два целых числа: n — общее количество призов и k — количество подряд идущих номеров призов, которое должен выбрать каждый из победителей (3 ≤ n ≤ 100 000, 1 ≤ k ≤ n / 3).

Вторая строка содержит n целых положительных чисел: a1, a2, …, an. Для каждого приза указана его ценность для Боба (1 ≤ ai ≤ 109)

Выходные данные
Выходной файл должен содержать одно число — минимальное значение x, для которого Алиса сможет добиться того, чтобы Боб не смог выбрать призы с суммарной ценностью больше x

Пояснения к примеру
В приведенном примере Алиса может, например, выбрать 4-й и 5-й призы. После этого для Боба оптимально выбрать 9-й и 10-й призы с суммарной ценностью 7.

входные данные
10 2
1 2 4 5 2 4 2 2 1 6
выходные данные
7
0
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
25.07.2019, 07:42
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
XLAT, Это полная дичь.
тема эта уже обсуждалась.
приходили мастистые джедаи и высказывались, что, мол, "это не по стандарту".
я тож скромно делал заметкy, почему так кодить не камильфо.

ну, а теперь включите мозг и подумайте почему же разработчики компилятора GCC
оставили такую возможность?
всем плюс в карму за правильный ответ.

мож они просто дикари и очень сильно любят дичь?
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
25.07.2019, 07:55
XLAT, а теперь включите мозг и подумайте, чем может грозить такое поведение при компиляции программы другим компилятором.
0
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
25.07.2019, 08:00
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
чем может грозить такое поведение при компиляции программы другим компилятором.
уже отвечал, смотрите в других темах.

еще раз тот же вопрос:
почему же разработчики компилятора GCC оставили такую возможность?

C++
1
2
3
4
int main()
{   int n = 5;
    int m[n];
...
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
25.07.2019, 08:04
XLAT, мне это зачем? Даже если и есть такое безобразное поведение, писать программы в стиле индусского кода я не планирую и вам не советую. Почему? Узнаете, когда будете работать над мало-мальськи крупным проектом
0
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
25.07.2019, 08:08
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
мне это зачем?
однако, весёлый вы!
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.07.2019, 08:10
Krokodil9798, а почему так писать нельзя?
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
cin >> n >> k;
int s[n];
int pref[n];
int suff[n];
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
25.07.2019, 08:11
XLAT, спасибо
0
Just Do It!
 Аватар для XLAT
4211 / 2670 / 655
Регистрация: 23.09.2014
Сообщений: 9,083
Записей в блоге: 3
25.07.2019, 13:25
ReYalp,
отчего же вы не доверяете Krokodil9798'у?
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
такое безобразное поведение, писать программы в стиле индусского кода
а вот ссылка на архив конференции comp.std.c++
где чел с ником Scott Meyers спрашивает(2009 год):
почему в новом стандарте хотят запретить VLA(variable length arrays),
ведь это такая годная фича!
Он писал в комитет, а оттуда пришел ответ, что, мол сами не знаем
https://groups.google.com/foru... _4lgA1JYeg

В общем надо колоть Крокодайла: знает только он, почему так писать нельзя.

как вы поняли в С99 стандарте VLA была вполне узаконена.
На текущий момент все(опробированые мною) версии GCC продолжают поддерживать массивы переменной длины.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.07.2019, 13:39
XLAT, GCC же делает исключение для этого случая но каким вообще образом? Память для статических объектов выделяется на этапе компиляции же,как так,компилятор не выделяет память под массив? Или как-то выделяет под массив уже n элементов?
0
 Аватар для Krokodil9798
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
25.07.2019, 13:42
XLAT, выше я уже написал, почему так писать не стоит. Вы же упёрлись на своём и в упор не видите весь вред такого подхода. Продолжать эту "дисскусию" я не намерен.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
25.07.2019, 13:46
Krokodil9798, Вы не написали почему так делать не стоит как раз,поэтому я и спрашивал.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2019, 13:46
Помогаю со студенческими работами здесь

не могу понять ошибки в коде
Запускаю этот код в браузере: 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 ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru