0

I wrote a program in C++ for my assignment, but upon compiling the code with G++ and running it using a.exe, the program exits and won't run. Can someone help?

I know that atleast the cout statements would run, even if the switch inside the while loop dosent, right? I'm a beginner, so please keep that in mind, thank you.

#include<iostream>
using namespace std;

int count;
void insertionSort(int A[], int len){
    int value, key;
    for(int i=1;i<len;i++){
        value = A[i]; // Value of the element at index i
        key = i; // Key : The element to be inserted
        while(key>0 && A[key-1]>value){
            count++;
            A[key] = A[key-1];
            key = key-1;
        }
        A[key] = value;
    }
}

int main()
{
int n, m, A[m];
cout<<"Enter your choice:-"<<endl;
cin>>n;
while(n!=0)
{
    switch(n)
    {
    case 1:
        cout<<"Enter the number of elements in the array:-"<<endl;
        cin>>m;
        for(int i=0;i<m;i++){
            A[i] = rand()%100;
        }
        cout<<"Array created"<<endl;
        cout<<"Array is:-"<<endl;
        for(int i=0;i<m;i++){
            cout<<A[i]<<" ";
        }
        break;

    case 2:
        cout<<"Array will be sorted in ascending order"<<endl;
        insertionSort(A, m);
        cout<<"New Array is:-"<<endl;
        for(int i=0;i<m;i++){
            cout<<A[i]<<" ";
        }
        break;

    case 3:
        cout<<"Array will be sorted in descending order"<<endl;
        insertionSort(A, m);
        for(int i=0;i<m;i++){
            A[i] = A[m-i-1];
        }
        cout<<"New Array is:-"<<endl;
        for(int i=0;i<m;i++){
            cout<<A[i]<<" ";
        }
        break;

    case 4:
        cout<<"Time Complexity for ascending is:-"<<endl;
        cout<<"O(n^2)"<<endl;
        break;

    case 5:
        cout<<"Time Complexity for descending is:-"<<endl;
        cout<<"O(n^2)"<<endl;
        break;
    default: "Invalid Choice";
        break;
    }

}
    return 0;
}
2
  • 1
    int n, m, A[m]; is undefined behavior as m is uninitialized. Also VLA are not standard C++. Refer to a good C++ book and the dupes. Commented Aug 4, 2022 at 4:50
  • Thank you! This solved the error. I didn't realise that m was unitialized. :) Commented Aug 4, 2022 at 4:58

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.