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

Проверить что высокий двухэтажный автобус может проехать под всеми мостами

21.09.2024, 12:48. Показов 1317. Ответов 8

Студворк — интернет-сервис помощи студентам
Решаю задачу №233 с сайта acmp.ru (автобусная экскурсия). Нужно писать код именно на С++, так как мы сейчас только начали изучать этот язык и нужно его практиковать в решении разных задач с сайта.

Условие задачи:

Оргкомитет Московской городской олимпиады решил организовать обзорную экскурсию по Москве для участников олимпиады. Для этого был заказан двухэтажный автобус (участников олимпиады достаточно много и в обычный они не умещаются) высотой 437 сантиметров. На экскурсионном маршруте встречаются N мостов. Жюри и оргкомитет олимпиады очень обеспокоены тем, что высокий двухэтажный автобус может не проехать под одним из них. Им удалось выяснить точную высоту каждого из мостов. Автобус может проехать под мостом тогда и только тогда, когда высота моста превосходит высоту автобуса.

Помогите организаторам узнать, закончится ли экскурсия благополучно, а если нет, то установить, где произойдет авария.

Входные данные
Первая строка входного файла INPUT.TXT содержит число N (1 ≤ N ≤ 1000). Вторая строка содержит N натуральных чисел, не превосходящих 10000, через пробел - высоты мостов в сантиметрах в том порядке, в котором они встречаются на пути автобуса.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести фразу "No crash", если экскурсия закончится благополучно. Если же произойдет авария, то нужно вывести сообщение "Crash k", где k - номер моста, где произойдет авария. Фразы выводить без кавычек ровно с одним пробелом внутри.





Так вот, как сделать так, чтобы сайт принимал код я нашла, но я не могу понять в чём проблема моего изначального кода, что сайт выдаёт "Wrong answer" (приведён ниже).


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    int n,k,i;
    cin>>n;
    int h[n];
    for (k=1, i=0; k<=n; k++, i++) {
        cin>>h[i];
        if (h[i]<=437) {
            cout<<"Crash "<<k<<endl;
            break;
        }
    }
    if (h[n-1]>437) cout<<"No crash"<<endl;
    return 0;
}

Кому интересно, вот мой "более хороший" код, который у меня приняли:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main()
{
    int n,k,i;
    bool cr=false;
    cin>>n;
    int h[n];
    for (k=1, i=0; k<=n; k++, i++) {
        cin>>h[i];
        if (h[i]<=437) {
            cout<<"Crash "<<k<<endl;
            cr=true;
            break;
        }
    }
    if (cr==false) cout<<"No crash"<<endl;
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2024, 12:48
Ответы с готовыми решениями:

Рассчитать расстояние, которое может проехать авто
Задача нетривиальная, но не для таких ламеров как я. Суть задачки в том что бы вбив показатели Размера бензобака, количества бензина в...

Сколько может проехать транспортные средство после удара со стоящим автомобилем
Здраствуйте. Большая просьба ко всем, помогите решить такую задачу. На самом деле это связано с реальным ДТП. Необходимо узнать сколько...

Высокий пинг в cs 1.6 под вайном
Версия вайна 1.4. Если из под винды, на том же самом сервере, на том же самом клиенте пинг 60-70. То под вайном 100-150. Скорость и пинг...

8
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
21.09.2024, 13:25
Цитата Сообщение от klilia Посмотреть сообщение
приняли
Цитата Сообщение от klilia Посмотреть сообщение
int n
Цитата Сообщение от klilia Посмотреть сообщение
int h[n]
Здравствуйте! Так нельзя. Размер статического массива должен быть константным.
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
21.09.2024, 14:45  [ТС]
Дело в том, что у меня это работает и в code blocks и на сайте acmp.ru, но я уже прочитала, что просто в gcc есть расширение c++, которое называется variable length array и которое позволяет писать такой код, а вообще подобные приколы должны работать в c, а в c++ - нет.

Но того, что написано в коде ниже, мы пока не проходили (нашла сейчас сама на просторах форума) и если нет других способов сделать массив размера, зависящего от введённого с клавиатуры числа, то видимо задача пока не для нашего уровня?
Хотя в таком случае конечно немного удивительно, что acmp.ru как будто поощряет такие kinda ошибки, которые в определённых компиляторах видимо не позволили бы коду сработать.

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <vector>
using namespace std;
int main() {
    size_t s;
    cin>>s;
    vector<int>a(s);
    for (size_t i=0; i<s; i++) cin>> a[i];
    system("PAUSE");
    return EXIT_SUCCESS;
}
Добавлено через 53 минуты
Переделала код так, чтобы с массивами всё было вроде как ок. На моих личных тестах всё по-прежнему выдаёт как просят, но когда сдаю эту прогу, выдаёт снова "Wrong answer"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int k;
    size_t i, n;
    cin>>n;
    vector<int>h(n);
    for (k=1, i=0; i<n; i++, k++){
        cin>>h[i];
        if (h[i]<=437) {
            cout<<"Crash "<<k<<endl;
            break;
        }
    }
    if (h[n-1]>437) cout<<"No crash"<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.09.2024, 15:01
Лучший ответ Сообщение было отмечено klilia как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main()
{
    int n,k,i;
    cin>>n;
    int h[n];//Какие значения в массиве?
    for (k=1, i=0; k<=n; k++, i++) {
        cin>>h[i];
        if (h[i]<=437) {
            cout<<"Crash "<<k<<endl;
            break;//Если вышли здесь, то чему равно h[n-1]?
        }
    }
    if (h[n-1]>437) cout<<"No crash"<<endl; //Лотырея?
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от klilia Посмотреть сообщение
Решаю задачу №233 с сайта acmp.ru
Заменил break на return 0 - accepted
1
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
21.09.2024, 15:20  [ТС]
Да, я понимаю, что из-за брейка в массиве оказываются не указаны элементы идущие после того, на котором мы брейкнулись, но ведь туда по умолчанию выставляется 0, никакой лотереи.

(но! поменяла брейк на return 0 и задачу действительно приняли, спасибо большое)
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.09.2024, 15:31
Цитата Сообщение от klilia Посмотреть сообщение
но ведь туда по умолчанию выставляется 0
Нет, там рандомный мусор, никто эту память не инициализирует.
1
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
21.09.2024, 15:32  [ТС]
А кстати, может кто-нибудь в таком случае пояснить, почему код ниже на сайте всё ещё отказываются принимать? (Даже если после строчки cout<<"Crash "<<k<<endl; напишу return 0;)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int k;
    size_t i, n;
    cin>>n;
    vector<int>h(n);
    for (k=1, i=0; i<n; i++, k++){
        cin>>h[i];
        if (h[i]<=437) {
            cout<<"Crash "<<k<<endl;
            system("PAUSE");
            return EXIT_SUCCESS;
        }
    }
    if (h[n-1]>437) cout<<"No crash"<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.09.2024, 15:52
Цитата Сообщение от klilia Посмотреть сообщение
system("PAUSE");
Зачем?

Добавлено через 6 минут
Кстати, не понятно, зачем Вам вообще массив нужен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main() {
    int n;
    std::cin >> n;
    for (int i = 0; i < n; ++i) {
        int h;
        std::cin >> h;
        if (h <= 437) {
            std::cout << "Crash " << (i + 1);
            return 0;
        }
    }
    std::cout << "No crash";
}
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
21.09.2024, 15:53  [ТС]
Не знаю, я этот код на этом форуме нашла, там так было.

Сейчас отправила на сайта без этой штуки и всё приняли. Спасибо!))

Кстати классное решение скинули, спасибо. Массивы я использовала просто потому, что вот такое вот придумалось решение, я пока ещё даже ни разу не объявляла переменную внутри цикла, так что можете не удивляться моим возможно странным способам решения задач, опыта пока мало, на что хватает ума, то и придумываю, пхпх)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2024, 15:53
Помогаю со студенческими работами здесь

Не заходит под обычным пользователем, что это может быть?
Добрый день, подскажите пожалуйста такой момент. Пытаюсь зайти под обычным пользователем через Putty, когда ввожу логин и после логина...

Температура процессора под 100 градусов, что может быть?
Здравствуйте, такая вот проблема, процессор в простое нагревается под 95-100 градусов, запускать что-то еще, кроме фильма или открыть почту...

Проверить, что ферзь за один ход может перейти с одного поля на другое
Задание: Даны координаты двух различных полей шахматной доски x1, y1, x2, y2(целые числа, лежащие в диапазоне 1-8). Проверить истинность...

Какова вероятность, что автобус остановится?
Всем Привет!!! Изучаю теорию вероятностей, столкнулся с задачей, не могу никак справиться, задача следующая Мальчик живет в деревне...

Из-за чего может быть runtime error? Задача "Автобус" с acmp
Доброго времени суток. Решаю задачу &quot;Автобус&quot;, но на 19 тесте (не могу предположить, что там может быть) ошибка runtime error. Сама задача:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru