Это мой первый раз здесь. Я действительно надеюсь, что кто-нибудь может помочь мне там. Так что это моя проблема. Я продолжаю получать ошибку времени выполнения # 2 о коррумпированном «arr». Но программа работает нормально до конца. Я не могу понять это.
Это мой код:
#include <iostream>
using namespace std;
void main(){
int arr1[3];
int temp;
//INPUT NUMBERS
for (int i=0; i<5;i++)
{
cin>>arr1[i];
}
cout<<endl;
//SORT
for(int c=0;c<5;c++)
{
for (int k=0;k<5;k++)
{
if(arr1[c]<arr1[k])
{
temp=arr1[k];
arr1[k]=arr1[c];
arr1[c]=temp;
}
}
}
for (int m=0; m<5; m++)
{
cout<<arr1[m]<<endl;
}
}
Попробуйте это:
#include <iostream>
using namespace std;
int main()
{
int arr1[5];
int temp;
//INPUT NUMBERS
for (int i = 0; i < 5; i++) {
cin >> arr1[i];
}
cout << endl;
//SORT
for (int c = 0; c < 5; c++) {
for (int k = 0; k < 5; k++) {
if (arr1[c] < arr1[k]) {
temp = arr1[k];
arr1[k] = arr1[c];
arr1[c] = temp;
}
}
}
for (int m = 0; m < 5; m++) {
cout << arr1[m] << endl;
}
}
Он правильно компилируется без ошибок. Ошибка, которую вы сделали, заключается в объявлении размера массива. Если вы хотите сохранить 5 строк, вам нужно объявить массив размером 5. Ваш код может работать, но хороший компилятор всегда выдаст ошибку.
Причина в том, что когда вы объявляете массив, вы фактически создаете указатель на первый элемент массива. И затем, некоторые области памяти сохраняются для этого массива, в зависимости от размера. Если вы попытаетесь получить доступ к элементу, который находится за пределами этих областей памяти, вы можете столкнуться со значением мусора.
Воттвой код в ideone.
Других решений пока нет …