powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ребят, помогите с программой!!!
8 сообщений из 8, страница 1 из 1
Ребят, помогите с программой!!!
    #38042999
caaaat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изначально задание такое было: В массиве В, содержащем 16 элементов(заданных в ручную), определить среднее геометрическое отрицательных элементов, расположенных между минимальным и максимальным элементами данного массива.
____
но, думаю, если среднее геометрическое не получится найти, то можно и ср. арифметическое.
___
У меня получается только найти max и min массива, а потом начинается путаница...
Кроме того, нужно соблюдать условия, что если min находится после max то их нужно поменять местами и т.п.
Вообщем, ребят, кого не очень затруднит, очень прошу помочь.


#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
int main()
{


const int n=16;

int B[n],i,min,max,s=0,count;
for(i=0;i<n;i++)
{
cout<<"B["<<i<<"]:";
cin>>B[i];
}

{
min=0;
for(i=1;i<n;i++)
if(B[i]<B[min])
min=i;
cout<<"min raspolojen v "<<min<<" pozicii "<<" ego znachenie "<<B[min]<<endl;

max=B[0];
for(i=1;i<n;i++)
if(B[i]>B[max])
max=i;
cout<<"max raspolojen v "<<max<<" pozicii "<<" ego znachenie "<<B[max]<<endl;
}

system("pause");
}
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38043040
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как бы Вы искали среднее арифметическое всех элементов массива?
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38045646
Фотография Сергей Силкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно. Допустим, не получается в уме или на бумаге полностью «прогнать» программу.

Отладчиком пользоваться умеете? Трассировать программу – по шагам, до курсора или до поставленной точки останова умеете? Во время трассировки или выполнения программы сможете контролировать значения нужных переменных? Научиться этому всему совсем не трудно. Собственно, научитесь всё это делать и… – вперёд!

Да даже если нет времени или желания изучать отладчик. Вывести значения нужных переменных на экран в нужных точках программы не составляет труда обычными операторами вывода. Аналогично, не составляет труда поставить в нужных точках программы оператор задержки до нажатия на клавишу (любую или какую-нибудь конкретную).

В общем, повозитесь сами час с этой программой – и сами разберётесь.
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38045678
Системщег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если уж и учится хорошему, то еще стоит упомянуть ассерты , а также OutputDebugString (не помню, возможно в сишке есть макрос сокращающий количество буков, в МАСМ точно есть)
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38045682
Системщег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но ваще да, отладка, отладка, отладка...
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38045844
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
расчет среднего геометрического можно сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
int *min_index;
int *max_index;
float number_of_multiplications;
float geometric_mean;

//------------------------------------------
void multiplication(int val)
{
    static bool first_number=true;

    if(val<0)
    {
        if(first_number)
        {
            geometric_mean=val;
            number_of_multiplications=1.0;
            first_number=false;
        }
        else
        {
            geometric_mean*=val;
            number_of_multiplications+=1.0;
        }
    }
}
//------------------------------------------
int main()
{
        ... 
        //расчет среднего геометрического
        geometric_mean=0.0;
        for_each (min_index, max_index, multiplication);
        cout<<"multiplications="<<geometric_mean<<endl;
        cout<<"number_of_multiplications="<<number_of_multiplications<<endl;

        if(geometric_mean>0.0)
        {
            geometric_mean=pow(geometric_mean,1.0/number_of_multiplications);
        }
        else
        {
            geometric_mean=-1.0*pow(-1.0*geometric_mean,1.0/number_of_multiplications);
        }   
        cout<<"geometric_mean="<<geometric_mean<<endl;
        ...
}


...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38046006
P-032
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
#include <iostream>
#include <vector>
#include "math.h"

using namespace std;

........................

void MultCnt()
	{
		float fArray[16] = {300.01, 5.34, 4.55, 5.77, 6.01, 7.22, 90.09, 10.01, 12.22, 3.21, 11.98, 13.01, 1, 17.22, 22.34, 60.09};
		vector<float> vArray(fArray,fArray+16);
		vector <float>::iterator iCurr, iMin, iMax;
		int iDec=1;
		float fMult = 1, iCnt = 0;

		iMin = 	vArray.begin();
		iMax =  vArray.begin();

		for (iCurr=vArray.begin();iCurr<vArray.end();iCurr++)
		{
		    if ( *iCurr < *iMin )  iMin = iCurr;
		    if ( *iCurr > *iMax )  iMax = iCurr;
		}

                            cout << *iMin <<endl;
                            cout << *iMax <<endl;

		if (iMin > iMax ) iDec = -1;
		for (iCurr = iMin; iCurr != iMax + iDec; iCurr = iCurr + iDec)
		{
			cout << *iCurr <<endl;
			fMult = fMult * (*iCurr);
			iCnt++;
		}
		fMult = pow(fMult,1/iCnt);
		cout << fMult <<endl;
	}
...
Рейтинг: 0 / 0
Ребят, помогите с программой!!!
    #38046111
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
caaaat,

удачи:
Код: plaintext
1.
std::cout << pow(std::accumulate(std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) > 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::remove_if(std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) > 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) < 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::bind2nd(std::greater_equal<int>(), 0)), 1.0, std::multiplies<double>()), 1.0 / std::distance(std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) > 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::remove_if(std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) > 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::distance(std::min_element(B, B + sizeof(B) / sizeof(B[0])), std::max_element(B, B + sizeof(B) / sizeof(B[0]))) < 0 ? std::min_element(B, B + sizeof(B) / sizeof(B[0])) : std::max_element(B, B + sizeof(B) / sizeof(B[0])), std::bind2nd(std::greater_equal<int>(), 0)))) << std::endl;



Модераторам
Форматирование в одну строку сделано преднамеренно.
Пожалуйста, не меняйте его.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ребят, помогите с программой!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]