Как завершить программу в режиме do-while (С++)

Вот мой код. Я пытаюсь завершить всю программу, если она переходит во второй оператор if внутри цикла do-while. Но каждый раз, когда я запускаю его, он вылетает. Я не уверен, что я делаю неправильно.

#include <iostream>
using namespace std;

int main() {
    int myData[10];
    for(int i=0;i<10;i++){
        myData[i] = 1;
        cout<<myData[i];
    }
    
    do{
        int i;
        cout<<endl<<"Input index: ";
        cin>> i;
        
        int v;
        cout<<endl<<"Input value: ";
        cin>>v;
        
        if (i>=0||i<10){
            myData[i]=v;
            for(int i=0;i<10;i++){
                cout<<myData[i]<<" ";
            }
        }
        
        if (i<0||i>=10){
            cout<<"Index out of range. Exit.";
            return 0;
        }
        
    }while(1);
} 
if (i>=0||i<10){ Подумайте, какие числа больше нуля или меньше десяти. Я уверен, вы понимаете, что это верно для всех чисел. Вы хотели написать if (i>=0&&i<10){
john 09.02.2023 20:54

да, я понял, что забыл в своем коде, что у меня есть «return 0;» во втором операторе if. я только что добавил это

Ryan 09.02.2023 20:54

Программа должна аварийно завершать работу с ошибкой типа index-out-of-bounds в одном из двух мест, где вы пытаетесь получить доступ к myData[i]=. Я бы проверил ваши счетчики.

Ross Bush 09.02.2023 20:56

Спасибо, Джон, это было так. Я изо всех сил пытался понять, что не поймал эту ошибку. Еще раз спасибо!

Ryan 09.02.2023 20:56

@Ryan Для справки в будущем, StackOverflow — это сайт вопросов и ответов, а не служба отладки. Ожидается, что вы будете заниматься отладкой самостоятельно. См., например, Как отлаживать небольшие программы.

Remy Lebeau 09.02.2023 21:04

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

Ryan 09.02.2023 21:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
107
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
if (i>=0||i<10){ 

Подумайте, какие числа больше нуля или меньше десяти. Я уверен, вы понимаете, что это верно для всех чисел. То, что вы хотели написать, это

if (i>=0&&i<10){

Это объясняет ваш сбой, вы обращаетесь к массиву myData с индексом, который находится за пределами массива.

Новички очень часто путают && и ||, особенно там, где присутствует отрицание.

Другие люди рассказали вам о проблеме:

    if (i>=0||i<10){

Я объясню, почему вы наткнулись на это. Вы попали в нее, потому что не использовали пробелы.

    if (i >= 0 && i < 10) {

Пожалуйста, пожалуйста, пожалуйста, ради всего хорошего в мире, используйте пробелы свободно. У вас точно будет меньше ошибок, потому что моя версия гораздо легче читается. Кроме того, если вы работаете со старыми разработчиками (такими как я), нам действительно будет намного легче читать ваш код.

отсутствие пробелов заставило OP использовать неправильный оператор?

NathanOliver 09.02.2023 20:59

Также поможет заключение сравнений внутри скобок: ((i >= 0) && (i < 10)).

Thomas Matthews 09.02.2023 20:59

Компилятор не заботится о пробелах

Remy Lebeau 09.02.2023 21:18

Хотя я согласен, что пробелы (и хорошее форматирование в целом) облегчают чтение кода, я не понимаю, как это относится к OP. Больше комментарий, чем ответ.

Johnny Mopp 09.02.2023 21:19

Отсутствие пробела делает || оператора НАМНОГО труднее увидеть. Насекомые прячутся, когда наши глаза не могут их сразу заметить. Это точно, почему была ошибка? Возможно, нет, но это помогло мне дважды прочитать код, прежде чем я его увидел.

Joseph Larson 09.02.2023 21:56

Другие вопросы по теме