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;
}
  • 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](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) and the dupes. – Jason Aug 04 '22 at 04:50
  • Thank you! This solved the error. I didn't realise that `m` was unitialized. :) – Shashank Shridhar Aug 04 '22 at 04:58

0 Answers0