Страница 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]

Код: Выделить всё

#include <math.h>
а эта библиотека у вас неиспользуется

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 ).
Что вы предлагаете изменить?