Вот мой код программы где ошибка

Misha432

0 / 0 / 0

Регистрация: 22.02.2021

Сообщений: 1

1

Задача на поиск ошибки. Ошибка вроде найдега, но ответ выдает неверный

22.02.2021, 22:05. Показов 1658. Ответов 1

Метки cpp, java c++ jni, java для начинающих (Все метки)


Студворк — интернет-сервис помощи студентам

Использя режим дебага постарайтесь найти строчку программы, в которой эта ошибка была допущена. В поле ответа введите название переменной, объявленной в строчке с ошибкой. Ошибка вроде найдена, но система пишет что ответ не правильный. Обьясните, пожалуйста, в чем проблема.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String [ ]   args) {
int minFromFour = getMinFromFour(14, 11, 10, 15); 
System.out.printIn(minFromFour); 
 }
 public static int getMinFromFour (int a, int b, int c, int d) {
int firstPairResult = getMinFromTwo (a, b);
 int secondPairResult = [U]getMinFromTwo(d, b[/U]); 
 return getMinFromTwo(firstPairResult, secondPairResult); 
}
 public static int getMinFromTwo (int a, int b) {
if (a > b) {
return b; 
} else {
return a;
}



0



Am I evil? Yes, I am!

Эксперт PythonЭксперт Java

16474 / 9094 / 2614

Регистрация: 21.10.2017

Сообщений: 20,799

23.02.2021, 10:23

2

int secondPairResult = getMinFromTwo(d, c);



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

23.02.2021, 10:23

Помогаю со студенческими работами здесь

Программа выдает неверный (неполный) ответ
программа работает верно,но,допустим при вводе условий n=4,m=8 (или n=10/m=5) выдает не полный…

Программа работает, но выдает неверный ответ
помогите исправить ошибки, программа работает, но ответ не правельный выводит

Program u2;
uses…

Программа на Паскале, ответ выдаёт неверный, что не так
Текстовый файл состоит из не более, чем 1000 строк, каждая из которых состоит не более чем из 10**6…

Почему код выдаёт неверный ответ и что делать?
Для решения задачи "Подчёт прибыли" я написал код.
Вот условие и задание:

Вот мой код:# put…

Сервер выдаёт неправильный ответ, хотя, вроде, всё работает
Дана задача:

№1

Геннадию интересно, сможет ли слон с поля x1, y1 побить пешку x2, y2 за…

Сервер выдаёт неправильный ответ, хотя, вроде, всё работает
Дана задача:

№2

Друзья Саша и Паша живут на одной улице. Как то раз они договорились порешать…

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

Или воспользуйтесь поиском по форуму:

2

Где ошибка в моем коде

Я новичок. Я пытался изучить использование необязательного третьего параметра функции sort(). Я попытался применить это для сортировки чисел от 1 до 1000 в соответствии с их количеством делителей в порядке возрастания.

Вот мой код

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

struct data {
    int index;
    int divisor;
}a[1001];

bool sortbydivisor (const data &lhs,const data &rhs)
{
    return lhs.divisor <rhs.divisor;
}

int number_of_divisors(int n)
{
    int r=0;
    for (int i=1;i*i<=n;i++)
    {
        if (n%i==0)
        {
            if (i*i!=n)
            {
                r+=2;
            }
        else 
            {
                r+=1;
            }
    }
}

return r;
}

int main ()
{
    int i,t,x;
    for (i=1;i<=1000;i++)
    {
        a[i].index=i;
        a[i].divisor=number_of_divisors(i);
    }

    sort(a+1,a+10001,sortbydivisor);

    scanf("%d",&t);

    for (i=1;i<=t;i++)
    {
        scanf("%d",&x);
        printf("Case %d: %dn",i,a[x].index);
    }

    return 0;
}

После компиляции я не получил никаких ошибок. Но после запуска я получил это предупреждение «программа перестала работать». В онлайн-компиляторах говорится: «Ошибка выполнения» :( почему?

Заранее спасибо за вашу помощь :).

30 дек. 2013, в 17:16

Поделиться

Источник

Вы указали неверную верхнюю границу, поэтому sort пытается переместить несуществующие объекты после конца массива. Вы хотите

sort(a+1,a+1001,sortbydivisor);  // not 10001

В С++ 11 есть удобные функции библиотеки, чтобы избежать таких ошибок:

sort(std::begin(a) + 1, std::end(a), sortbydivisor);

отметив, что begin потребности немного bodging за счет индексации один-йоркского. Если вы не можете использовать библиотеку С++ 11, их легко написать:

template <typename T, size_t N> T * begin(T (&a)[N]) {return a;}
template <typename T, size_t N> T * end  (T (&a)[N]) {return a+N;}

Mike Seymour
30 дек. 2013, в 14:07

Поделиться

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

Просто обратите внимание, что вы используете свои индексы непоследовательно (заканчивается на 1000) в вашем цикле инициализации и 10001 в алгоритме сортировки. Это выходит за рамки вашего массива.

TimDave
30 дек. 2013, в 14:20

Поделиться

sort(a+1,a+10001,sortbydivisor);

Глупые опечатки!

Lightness Races in Orbit
30 дек. 2013, в 15:12

Поделиться

Ещё вопросы

  • 1Найдите совпадение в строке файла, затем перейдите к следующему файлу
  • 0Как игнорировать файлы с заданным префиксом?
  • 0загрузить плагин JQuery и JQuery до загрузки HTML
  • 0PHP в JavaScript с помощью кнопки «Отправить»
  • 1Клонировать массив с оператором распространения и добавить встроенный
  • 0Метод uploadStoredFiles не существует в jQuery.fineUploader
  • 0Как обернуть группу тегов HTML в содержащий тег, используя JavaScript?
  • 1Python, pip: избегайте gcc во время установки
  • 0Установка Qt — 5 для windows
  • 1Распределить данные из текущей деятельности по фрагментам на ней
  • 0Как выбрать первую из этих кнопок?
  • 1Развертывание таблиц базы данных в порядке взаимосвязи с ограничениями
  • 0Возврат и передача массива для работы в C ++
  • 1блоки инициализации в полиморфизме
  • 0Ошибка «Необходимо указать поле grant_type» при получении токена Oauth2
  • 1Частичное переопределение метода: как?
  • 0Гиперссылки в TextBox / ListBox ASP.NET
  • 0Как настроить контент для ссылок из вложенной навигации
  • 1Есть ли способ получить URI изображения сразу после его удаления из внешнего хранилища?
  • 0Преобразование Int в LPCWSTR
  • 1Подсчет уникальных значений по группам в двух столбцах
  • 1Разобрать данные и представить изображение PNG
  • 0Проблемы с Javascript на сайте Squarespace
  • 0Показать папку public_html автоматически
  • 1pyspark — как я могу удалить все дублирующиеся строки (игнорируя определенные столбцы) и не оставляя после себя пары дубликатов?
  • 0Как увеличить центр экрана?
  • 0Невозможно связаться с GraphicsMagik
  • 0Интеграция программы, написанной на C, с другой, написанной на C ++
  • 1Интерфейс не вызывает фрагмент
  • 0Fitbit oauth регистрация
  • 0Лучший способ отслеживать счетчик на уровне базы данных
  • 1Как конвертировать дату в метку времени
  • 0Скользящая Div от левого угла к правому углу анимации
  • 1java.lang.NoSuchFieldError: имя во время выполнения в спящем проекте
  • 1Совместимость с Android + FTDI FT232H
  • 1Entity Framework с динамическим Linq
  • 1(ASP.NET MVC4 C #) Вставьте UNICODE в SQL Server
  • 0как мне эффективно искать до и после элемента для ключевой фразы
  • 1C # x509Certificate2 не может быть создан
  • 0Как использовать app / Resources / public в Symfony2
  • 1Функция d3.queue.await не вызывается
  • 0Скрыть / показать веб-часть, щелкнув гиперссылку в карусели Sharepoint 2010
  • 1У классификатора нет сопутствующего объекта, и, следовательно, он должен быть инициализирован здесь
  • 0Проблема с запросом MySQL — сопоставление нескольких идентификаторов в объединенной таблице
  • 0Объединение и сортировка 2 каналов
  • 1ContainerRequestFilter JBoss AS 7.1.1 RestEasy 3.0.6. Финал
  • 0как получить строку, содержащуюся в div
  • 0Div открывается вертикально, когда страница загружается с помощью JavaScript и CSS
  • 0шаблон angularjs (из ng-repeat) и пользовательская директива для того же вопроса элемента
  • 0Angular SyntaxError: Неожиданный токен}

Сообщество Overcoder

У Вас несколько проблем с кодом, разной степени проблемности.
Первое, какие-то бесполезные прологи:

{
    unique_lock lck(mHandled); // Ждем запуска второго потока
    strHandled.wait(lck);      // Без проверок, так как заведомо знаем,
}  

И strHandled.notify_one(); — убрать. Эти прологи не нужны.
Второе:

Без проверок, так как заведомо знаем, что поток обработчика
единственный

Проверки нужны, т.к. существует spurious wakeup. Т.е. поток можно проснуться не потому, что получил сигнал, а просто потому что. Так что дополнительные проверки нужны всегда.

Третье, у Вас в коде гонка, а значит UB. В первом потоке Вы делаете l.push_back(s); без защиты мьютекса, что создаёт гонку с вот этой строкой из второго потока: s = l1.back();. Закрывайте добавление строки в список мьютексом mReady и уходит.

А вообще, т.к. Вы пытаетесь полностью сериализовать 2 потока, т.е. сделать их последовательно выполнимыми, Вам достаточно одного мьюеткса — не нужно тут два, ресурс-то один.

Четвёртое, и самое главное: если strReady.notify_one(); выполняется и тут же идёт переключение на другой поток, т.е. wait не успевает отработать, тогда весь код второго потока может успеть отработать, включая strHandled.notify_one();, что приведёт к тому, что сигнал улетит во вселенную и первый поток никогда не узнает о том, что он был. Расставьте правильно мьютексы, чтобы исключить эту ситуацию, тогда зависания должны прекратиться.

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


Минимально изменив изначальный код, можно получить что-то такое:

condition_variable strReady, strHandled;
mutex mGuard;

void createList(list<string>& l) {
    for(int i = 0; i < ELEMENTS; ++i) {
        string s = new_string();
        unique_lock lck(mGuard);
        l.push_back(s);
        cout << "--> String produced" << endl;
        strReady.notify_one(); 
        cout << "--> Wait string consumed" << endl;
        strHandled.wait(lck);      
    } 
}

void handleList(list<string>& l1, list<string>& l2) {

    size_t processed{0};
    for(int i = 0; i < ELEMENTS; ++i) {
        string s;
        {
            unique_lock lck(mGuard);
            strReady.wait(lck, [&](){ return processed < l1.size(); });
            s = l1.back();
            ++processed;
            cout << "<-- String consumed" << endl;
        }
        strHandled.notify_one();  
        sort(s.begin(), s.end());
        l2.push_back(s);
        cout << "<-- Wait string produced" << endl;
    }
}

Из очевидных минусов: нет уведомления потока производителя, что потребитель действительно потребил. Из-за этого приходится держать мьютекс и для вывода, и для уведомления, а также нет защиты от «перепроизводства» из-за spurious wakeup, но идея должна быть ясна.

Где ошибка в программе?

Само задание

Напиши программу, которая проверяет достаточно ли средств на карте для оплаты заказа. Сумму заказа и остаток на карте вводит пользователь.
В результате программа выводит сообщение: На вашей карте достаточно средств — False
На проверку отправь программу со значениями: сумма заказа — 678
остаток на карте — 678

Мой код:

sum = int(input("aaa"))
ost = int(input("aa"))
if ost<=sum:
    print("На вашей карте достаточно средств - False")
else:
    print("PPP")

Не понимаю в чем ошибка


  • Вопрос задан

    02 дек. 2022

  • 190 просмотров

Ошибки нет.
if ost<=sum:
Условие 678<=678 верно.

Пригласить эксперта

Ну вообще, с точки зрения логики (если ost — это остаток), и он меньше, чем сумма заказа (sum) — то денег не должно быть достаточно. Сумма ведь больше, чем остаток на карте
Я бы вот так переписал:

sum = int(input("aaa"))
ost = int(input("aa"))
if ost>=sum:
    print("На вашей карте достаточно средств")
else:
    print("Недостаточно")


  • Показать ещё
    Загружается…

09 июн. 2023, в 10:46

30000 руб./за проект

09 июн. 2023, в 10:27

5000 руб./за проект

09 июн. 2023, в 07:46

50000 руб./за проект

Минуточку внимания

В самостоятельном обучении программированию такое задание: нужно записать программу, которая считает и последовательно выводит на экран значения математических выражений:

3 в степени 5

-8 разделить на -4

остаток от деления 100 на 3.

Первый день обучения с 0, не могу понять что неправильно. Вот мой вариант:

<?php

print_r(3*5);

print_r(-8/-4);

print_r(100%3);

// BEGIN (write your solution here)

// END

Ошибки я смотрела, но пока ничего в том описании понять не могу.

Вообще у вас код на php код на с++ должен выглядеть примерно так

include <iostream>

include <cmath> //»подключение» библиотеки cmath, чтобы возвести число в степень функцией pow(иначе придется делать цикл)

using namespace std; //»подключение» библиотеки std, чтобы использовать вывод на экран через cout

int main()

{

int a,b;

a=3;

b=5;

cout << pow(a,b) << endl; //возведение в степень

cout << -8/-4 << endl; //деление -8 на -4

cout << 100%3 << endl; //остаток от деления

}

автор вопроса выбрал этот ответ лучшим

inkas­ta
[17.2K]

более года назад 

Да, все правы). Я изучаю на Хекслет php-основы программирования. Это бесплатный курс для самостоятельного обучения. Начинаю с абсолютного нуля). Плохо еще понимаю термины и различия. Но пришла туда для изучения языка С++. Мне дали задание. В общем, задание я смогла пройти . Просто в скобках между ними и значениями нужны были пробелы. В моем примере их нет. И в первом примере пропущен знак возведения в степень (2 звездочки, у меня — одна). Правильно это выглядит так:

<?php

print_r( 3 ** 5 );

print_r( -8 / -4 );

print_r( 100 % 3 );

// BEGIN (write your solution here)

// END

Знаете ответ?

Возможно, вам также будет интересно:

  • Вот критическая ошибка при обновлении
  • Вот код ошибки если он вам понадобится 0x803f8001
  • Вот и все и прощай наша встреча ошибкой была
  • Вот выдает ошибку при проверки клиента
  • Вот ведь в чем ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии