Консультация № 179062
12.06.2010, 06:31
0.00 руб.
0 5 1
Здравствуй те Эксперты. Проблема у меня возникает каждый раз, на любом компьютере.
"1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:
• номер максимального элемента;
• произведение элементов массива, расположенных между первым и вторым нулевыми элементами;
• преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечётных позициях, во второй – элементы, стоявшие в чётных позициях.
Каждый пункт задания оформить в виде отдельной функции.
2. Даны n и p - натуральные числа. Вычислить приближенное значение определенного интеграла I= [$8747$] (от 0 к 1) (1/((p^2)+(x^2)))dx по формуле левых прямоугольников
Вычисление слагаемого и суммы оформить в виде функций.(картинка должна быть тут надеюсь)
если нету то [$8747$] от а до б по F(x)dx=h* [$8721$](n-1(сверху) и i=0 снизу) где h= (b-a)/n; X c индексом I = x с индексом 0 +i*h , x c индексом 0 = а, х с индексом n = б


[img]C:\lod.jpg[/img]

Обсуждение

Неизвестный
12.06.2010, 08:51
общий
F(x)dx=h* ∑(n-1(сверху) и i=0 снизу)(f(x с индексом i) где h= (b-a)/n; X c индексом I = x с индексом 0 +i*h , x c индексом 0 = а, х с индексом n = б



Неизвестный
12.06.2010, 19:24
общий
15.06.2010, 14:52
это ответ
Здравствуйте, Паша Сердитов.
1. Параметрами функций являются число элементов массива и указатель на массив
-f1
-f2
-f3
2.
F функция вычисления значения функции
f4 вычисляет интеграл. принимает пределы а и б и количество разбиений(стандартно 10)

Приложение:
void f1(int n,float *m)
{
float max=m[0];
float nmax=0;

for(int i=1;i<n;i++){if(m[i]>max){nmax=i;max=m[i];}}
cout << "Number of max: " << nmax << endl;
}
void f2(int n,float*m)
{
int nz=0,fz=0,sz=0,rez=1;;

for(int i=0;i<n;i++)
{
if(m[i]==0)
{nz++;
if(nz==1){fz=i; }
if(nz==2){sz=i;}}
}
if(nz<2){cout << "No 2 zero" << endl;return;}
for(int i=(fz+1);i<sz;i++){rez*=m[i]; }
cout << "Multyplicate : " << rez << endl;
}
void f3(int n,float *m)
{
float *a=new float[n/2],*b=new float[n/2];
for(int i=0,j=0;j<n;i++,j+=2)
{
a[i]=m[j];
b[i]=m[j+1];
}
for(int i=0;i<(n/2);i++)
{
m[i]=a[i];
}
for(int i=(n/2),j=0;i<(n);i++,j++)
{
m[i]=b[j];
}
cout << "New mass" << endl;
for(int i=0;i<n;i++){cout << " " << m[i];}
}
float F(float x){return(1/(3.14*3.14)+(x*x));}
float f4(float a,float b,int n=10)
{
float I=0,h=(b-a)/n,x1,m;
x1=a;
for(int i=0;i<n;i++){
m=(x1)/2 ;
I+=h*F(m);
x1+=h;
}
cout << "\nI=" << I << endl;
return I;
}
5
полный и хороший ответ.)спасибо
давно
Академик
320937
2216
13.06.2010, 08:56
общий
cryptograph:
Добрый день! Задание.
В одномерном массиве, состоящем из n вещественных элементов, вычислить номер максимального элемента;

Допустим, v[k]=0, для некоторого k>0, v[i]<0 для всех i!=k. Ваша функция f1 печатает nmax=0.
Кроме того, функция должна возвращать значение номера максимального элемента, то есть не void f1, а int f1.
Неизвестный
13.06.2010, 11:04
общий
lamed:
nmax и есть норядковый номер максимального элемента нашего массива, и функция НЕ ДОЛЖНА возвращать максимальный элемент(это не регламентировано заказчиком), она ДОЛЖНА только ВЫЧИСЛИТЬ номер максимального элемента, а способ вывода результата не определен заказчиком.

К тому же НАИБОЛЕЕ ВЕСОМЫМ критерием адекватности ответа является оценка и комментарий)))) Человека вполне устроил мой "полный и хороший ответ".
Неизвестный
14.06.2010, 15:21
общий
Функция нахождения максимального элемента в ответе cryptograph неверная!

Допустим, все элементы массива отрицательны. Тогда функция f1 выдаст:
Код:
Number of max: 0

К тому же, у cryptograph индекс макс. элемента объявлен как float, что явно плохо.

Также соглашусь с lamed, что лучше, если функция просто вернет индекс, а сообщение пусть выдаст вызывающий модуль. По возможности, лучше разделять функциональную и интерфейсную части.

Я бы сделал так:
Код:
int find_max( const float* m, int n )
{
float max = m[0];
int imax = 0;
for( int i = 1; i < n; i++ ) {
if( m[i] > max )
max = m[imax = i];
}
return imax;
}


Цитата: 332167
К тому же НАИБОЛЕЕ ВЕСОМЫМ критерием адекватности ответа является оценка и комментарий)))) Человека вполне устроил мой "полный и хороший ответ".

Извините, cryptograph, посетитель еще только учится, он может и не заметить ошибок в ответе.
Форма ответа