Search code examples
c++debuggingdo-while

How to end program in a do-while (C++)


Here is my code. I am trying to get the entire program to end if it goes into the second if statement inside the do-while loop. But every time I run it, it crashes. I am not sure what I am doing wrong.

#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);
} 

Solution

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

    Think about which numbers are either greater than zero or less than ten. I'm sure you realise that is true of all numbers. What you meant to write is

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

    This explains your crash, you are accessing the myData array with an index that is outside the array bounds.

    It's very common for beginners to get && and || confused especially where there is negation involved as well.