Вот программа на С++, которую я пытался написать для вышеуказанного вопроса. Наш учитель сказал нам использовать цикл for.
void main()
int A[30],B[30],m,n,i,j,x,z;
cout<< "enter two numbers";
cin>>m>>n;
for(i=1,j=0;i<=m,j<30;i++,j++)
{
if(m%i==0)
{ A[j]=i;
z=j;
}
}
for(i=1,j=0;i<=n,j<30;i++,j++)
{
if(n%i==0)
{ B[j]=i;
x=j;
}
}
for(i=z;i>=0;--i)
{
for(j=x;j>=0;--j)
{
if(A[i]==B[j])
{ cout<<"gcd="<<A[i];
}
}
}
}
На выходе отображается «Введите два числа:», и когда я ввел 15 и 3, в результате я получил мигающий курсор. Работая с программой, я понял, что делители для каждого числа при хранении в массивах A и B не сохранялись непрерывно или имели промежутки между ними. Если в памяти нет ничего, скажем, для A[11], что произойдет, если вы проверите его на другую переменную с числом? Может кто-нибудь изменить это, чтобы заставить его работать и сказать мне, что не так? Я новичок в программировании, так что извините мою программу, если она корявая.
void main()
является неправильным среди ряда других вещей, таких как индексация за пределами границ. Узнайте, как использовать отладчик для проверки кода. - person πάντα ῥεῖ   schedule 15.08.2015i<=m,j<30
не делает то, что вы думаете... вы, вероятно, хотели&&
вместо,
- person Jarod42   schedule 15.08.2015