Так. Разбираем по порядку.
Привыкни это заменять на такое:
Дальше.
Привыкни писать так:
Затем. Ошибка в 10-й строчке:
Во-первых, MIN не инициализируется. Почему? Потом в коде происходит ее сравнение с другой переменной. Если в ней нет первоначального значения, в ней "мусор". Это значит, что условие сравнения может и "пролететь". Для этого лучше дать ей значение, любое. Плюс, переменная Y лишняя, ее можно объявить прямо в цикле повторения for. Получаем следующее:
Код | int a[n], g, min=1000;
|
Много ошибок в циклах повтора.
Код | for (int s=0; s<n; s++) { for (int d=s+1; d<n; d++) { a[y]=abs(a[s]-a[d]); if (a[y]<min) min=a[y]; cout<<a[y]<<' '; y=y+1; } }
|
Вот объясни мне, для чего здесь два цикла? Плюс с использованием тьмы ненужных переменных? Меняем на вот такое:
Код | for(int y=0; y<n; y++) { a[y]=abs(a[y]-a[y+1]); if (a[y]<min) min=a[y]; cout<<a[y]<<" "; }
|
Не правда ли, так куда проще и правильней?
Код | for ( int p=0; p<n; p++) { for ( int l=1; l<n; l++) { g=abs(a[p]-a[l]); if (g==min) cout<<p+1<<' '<<l+1<<';'<<' '; } }
|
Зачем так? Меняем на такое:
Код | for(int p=0; p<n; p++) for(int l=1; l<n; l++) { g=abs(a[p]-a[l]); if (g==min) cout<<a[l]<<" "<<a[l+1]<<";"<<" "; }
|
Вот. В итоге получаем следующий код:
Код | #include <iostream.h> #include <stdlib.h> #include <conio.h> #include <math.h>
//------------------------------------------------- int main(void) { const int n=5; int a[n], g, min=1000;
clrscr(); randomize();
for (int i=0;i<n;i++) { a[i]=random(20)+1; cout <<a[i]<<" "; }
cout<<"\n";
min=a[0]+a[1];
for(int y=0; y<n; y++) { a[y]=abs(a[y]-a[y+1]); if (a[y]<min) min=a[y]; cout<<a[y]<<" "; }
cout<<"\n"<<min<<" --> ";
for(int p=0; p<n; p++) for(int l=1; l<n; l++) { g=abs(a[p]-a[l]); if (g==min) cout<<a[l]<<" "<<a[l+1]<<";"<<" "; }
getch(); } //-------------------------------------------------
|
|