Страница 1 из 1
Одномерный массив, проблема в умножении..
Добавлено: 22 фев 2011, 21:03
rodin_jr
Код: Выделить всё
#include <iostream.h>
#include <math.h>
void main()
{
const int k=5;
int a[k];
int i,j,l;
int prz=1;
for (l=0; l<k; l++){
cout << l+1 << ":";
cin >> a[l];
}
int min= a[0];
for (j=1; j<k; j++){
if (a[j]<min) min= a[j];
}
cout << "Minimal'nyi element massiva= " << min << endl;
int max= a[0];
for (i=1; i<k; i++){
if (a[i]>max) max= a[i];
}
cout << "Maksimal'nyi element massiva= " << max << endl;
for (int t= min+1; t <max; t++){
prz= prz* a[t];
}
cout << "Proizvedenie elementov= " << prz << endl;
}
Re: Одномерный массив, проблема в умножении..
Добавлено: 24 фев 2011, 22:18
rrrFer
rodin_jr
на самом деле, проблема в подсветке и форматировании кода.
А еще, стоит подсказать нам какое у вас задание.
Догадаюсь, надо найти произведение элементов массива, расположенных между минимум и максимум(такая задача встречается в интернетах чуть реже чем постоянно).
приведу пример как работает ваша программа
массив: 1,2,-2,100.
всего 4 элемента. min=-2, max=100. по-любому a[min+1]=a[-1] завершится с ошибкой, a[max-1]=a[99] - тоже самое.
Вам надо искать индекс минимума и индекс максимума(назовем их imax и imin) и обращаться к a[imax] и a[imin]
а эта библиотека у вас неиспользуется
Re: Одномерный массив, проблема в умножении..
Добавлено: 24 фев 2011, 22:27
rrrFer
Код: Выделить всё
#include <iostream.h>
int main(){
const int k=5;
int a[k],
i,imax,imin,
p;
for (i=0; i<k; i++){
cout << i+1 << ":";
cin >> a[i];
}
imin=0;
for(i=1; i<k; i++)
if(a[i]<a[imin])
imin=i;
cout << "Minimal'nyi element massiva= " << a[imin] << endl;
imax=0;
for(i=1; i<k; i++)
if(a[i]>a[imax])
imax=i;
cout << "Maksimal'nyi element massiva= " << a[imax] << endl;
if(imin>imax){
imin+=imax;
imax=imin-imax;
imin-=imax;
}
p=1;
for(i=imin+1;i<imax;i++)
p*=a[i];
cout << "Proizvedenie elementov= " << p << endl;
return 0;
}
старался сохранить код
rodin_jr
Re: Одномерный массив, проблема в умножении..
Добавлено: 24 фев 2011, 23:13
rodin_jr
Задание:
найти произведение элементов массива, между его минимальным и максимальным элементом.
Спасибо большое за помощь!))
Re: Одномерный массив, проблема в умножении..
Добавлено: 26 фев 2011, 22:01
rodin_jr
if(imin>imax){
imin+=imax;
imax=imin-imax;
imin-=imax;
}
а что происходит вот здесь?
если можно, то с коментами)
Re: Одномерный массив, проблема в умножении..
Добавлено: 26 фев 2011, 22:25
rrrFer
Код: Выделить всё
if(imin>imax){
imin+=imax;
imax=imin-imax;
imin-=imax;
}
обмен значений двух переменных через сумму
например А=2, В=3
А+=В // А=2+3=5, В=3
В=А-В // В=5-3=2, А=5
А-=В // А=5-2=3, В=2
можно заменить на обмен со вспомогательной переменной, гугл должен помочь

Re: Одномерный массив, проблема в умножении..
Добавлено: 27 фев 2011, 09:43
rodin_jr
Ага, ну вобщем-то понял)
спасибо за разъяснение)
Re: Одномерный массив, проблема в умножении..
Добавлено: 07 мар 2011, 18:06
THuND3Rb0LT
Добавьте еще две переменные j1,j2;
if (a[j]<min) { min= a[j];j1=j}
...
if (a>max) { max= a;j2=i}
...
for (int t= j1; t <j2; t++)
...
Re: Одномерный массив, проблема в умножении..
Добавлено: 07 мар 2011, 18:31
rrrFer
THuND3Rb0LT
зачем их добавлять?
j1 и j2 которые предлагаете добавить это индексы минимума и максимума, в том коде что я предложил, ими являются переменные imax и imin (с чуть более говорящими названиями чем j1 и j2 xD ).
Что вы предлагаете изменить?