Регистрация
9 Фев 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
#include



using namespace std;



int main(){



int n;

int s[n];



cin >> n;

for (int i = 0; i < n; i++){

cin >> s;

}



for (int i = 0; i < n; i++){

for (int j = 0; j < n-1; j++){

if (s[j] > s[j + 1]){

int t = s[j];

s[j] = s[j + 1];

s[j + 1] = t;

}

}

}

for (int i = 0; i < n; i++){

cout
 
вместо system(&#34;pause&#34;);
return 0;
 
Потому, что вот это: int n;
int s[n];
cin >> n; бред, приводящий к ошибке &#34;переполнение буфера&#34; с непредсказуемым результатом.

Если уж хочешь массив в духе языка C, то СНАЧАЛА вводи значение n, а только ПОТОМ создавай переменную s: int n;
cin >> n;
int s[n];
Но это массив в стиле C - который не реальный массив, а синтаксический сахар над указателями и адресной арифметикой. А полноценный массив в C++ создаётся так: #include
...
int n;
cin >> n;
vector s(n);
 
#include

using namespace std;

int main() {

size_t n;
int* s = new int[n];

cin >> n;
for (size_t i = 0; i < n; ++i) {
cin >> s;
}

for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < n - 1; ++j) {
if (s[j] > s[j + 1]) {
int t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
}
}
}

for (size_t i = 0; i < n; ++i) {
cout
 
Назад
Сверху