Nano Hash - криптовалюты, майнинг, программирование

Как я могу правильно установить условие для определенного места в массиве?

Я разрабатываю небольшое приложение для практических целей на С++, мне действительно удалось разработать этот алгоритм без использования массивов, но сейчас я хочу сделать это с помощью массива. Программа должна принимать четыре практики 2 класса по 15 баллов (первое и третье значение), два по 20 баллов (второе и четвертое значения) и одно по 30 баллов. это мой код:

int main(int argc, char** argv){

    int grades[5];
    int i; 
    int sum=0;

    for(i=0; i<5; i++){
        cin >> grades[i];

        sum+=grades[i];

        if(grades[0]>15||grades[1]>20){

            cout<<"ERROR"<<endl;
            break;

        }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

        }if(grades[4]>30){

            cout <<"ERROR"<<endl;
            break;
        }

    }   
}

Проблема здесь в том, что он не должен печатать ошибку на консоли и прерывать ее продолжение, только если условие выполнено, в этот момент, если я ввожу значения даже в пределах отсрочки условия, он печатает «Ошибка» и останавливается.

На самом деле я не ищу кого-то, кто решит эту проблему, я хочу узнать, что я делаю неправильно, не заставляя кого-то решить это за меня, другими словами, я ищу советы / подсказки.


  • Программа должна принимать четыре оценки... 2... две... и одну. Возможно, вы имеете в виду, что она должна принимать пять оценок? 07.08.2012
  • Вероятно, вы хотите, чтобы ваш цикл for заканчивался после строки sum+=.... Не нужно делать все проверки на каждой итерации... 08.08.2012
  • Вы помещаете проверку ошибок внутри своего цикла. Это означает, что вы проверяете наличие ошибок пять раз. Еще хуже посмотрите на свои проверки, например, вы проверяете if(grades[4]>30), вы делаете это каждый раз в цикле, даже если вы еще не ввели значение для оценок[4]. Вам нужно проверить наличие ошибок только один раз, поэтому поместите код проверки ошибок после цикла. 08.08.2012

Ответы:


1

Эта линия здесь

     }else if(grades[2]||grades[3]){

            cout<<"ERROR"<<endl;
            break;

     }

приведет к тому, что ваша ошибка будет отображаться в любое время, когда ваши элементы с индексами 2 или 3 не равны нулю. Вы не инициализируете элементы массива, поэтому вполне возможно, что значения не равны нулю при запуске цикла. Чтобы убедиться, что это не так, вы можете перед началом присвоить всем элементам ноль. Я не уверен, что ваш код пытается сделать, но когда пользователь вводит что-либо, кроме нуля, для cin в i = 2 и i = 3, ваш цикл прервется с выводом ошибки (при условии, что первое if условие в вашем if-else блоке не выполняется, но если бы это условие было выполнено, ваш цикл все равно вышел бы)

07.08.2012
  • целые оценки[5] = {0}; Если вы хотите сделать так, как говорит mathematician1975. 07.08.2012
  • Спасибо, Математик и Научная фантастика. 13.08.2012
  • @OmarPérez Если этот ответ решил вашу проблему, рассмотрите возможность принятия его в качестве принятого ответа. 13.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..