Помогите Студенту ))

  • Автор темы Programmist-Zadrot
  • Дата начала
P

Programmist-Zadrot

здравствуйте уважаемые будущие коллеги)) нам в институте задали задание:
Дано вещественное число s(s>0) и действительное х(х не равное нулю) . Найти сумму ряда, для которого k-й элемент определяется по формуле: a=((x^k)/k)^(1/4k) . Процесс вычисления закончить, когда будет справедливо условие: |a-(а предидущее)|<s . Выдать сумму ряда, количество членов последовательности, значение последнего члена.

Собственно проблема вот в чём: это "чудо" компелируеться , ошибок не выдаёт , запускаеться ,я ввожу х , ввожу s , а дальше ничего не происходит :RTFM: такое ощущение , что оператор for даже не начинает работу ( ибо я пробовал вставлять в тело цикла cout<<k<<endl; и на экран ничего не выводилось.я уже не знаю , это я туплю или это висуал студио от мелкософта мне мозг насилует :crash: преподу показывал програмный код - он говорит всё вроде правильно , но почему оно не хочет работать - не знает.
взываю вас о помощи о великие ))
вот програмный код:


#include <stdafx.h>
#include <iostream>
#include <math.h>
using namespace std ;

int main()
{
int k;
double x,s,sum,last,m;
a: cout<<"Vvedite x ( x ne doljen ravnyatsa nolyu)"<<'\n';
cin>>x;
if(x==0) goto a;
b: cout<<"Vvedite s (s doljno bit bolshe nolya)"<<'\n';
cin>>s;
if(s<0) goto b ;
m=0;
sum=0;
last=pow(x,(1/4));
for(k=2;abs(last-m)<s ;k=k+1)
{
m=last;
last=pow((pow(x,k)/k),(1/4*k));
sum=last+sum;
}
cout<<"Summa ryada="<<sum;
cout<<"Kollichestvo chlenov="<<k;
cout<<"Znachenie poslednego chlena="<<last;





return 0;
}
 
L

lazybiz

Перед return 0; добавь system( "pause" );

И еще, строку: last=pow(x,(1/4)); замени на: last=pow(x,(1.0/4));
 
R

rrrFer

и строчку:
Код:
last=pow((pow(x,k)/k),(1/4*k));
на:
Код:
last=pow((pow(x,k)/k),(1./4*k));
 
P

Programmist-Zadrot

спасиба товарищи , программа заработала. с меня пиво))) :lol: :YES:
P.S.
Вся романтика работы программиста заключаеться в том ,что на столе стоит бутылочка пивка , под столом пушыстый котЭ трёться об твою ногу и согревает торчащий из дырявого носка большой палец ,хлебные крошки и шерсть того самого котЭ уже пол-года находяться между кнопками клавиатуры, на колонках играет Heavy Metal , в раковине уже неделю лежит посуда , которую использовали по третьему разу , так и не помыв; на лице щетина, совсем немного недотягивающяя до полноценной бороды - и именно поэтому девушка не может быть программистом ))))
 
P

Programmist-Zadrot

и как на зло опять та же самая проблема . програмный код -метод решения уравнения методом дихотомии . только здесь нету функций возведения в степень. компилируеться , ошибок не выдаёт . где я мог допустить ошибку? и вообще , не посоветуете ли мне какую-нибуть литературу по этой теме? потому,что взывать форумчан о помощи каждый раз когда происходит таакое - неудобно как то
#include "stdafx.h"
#include <iostream>
#include <math.h>
double f(double x)
{
return cos(2.0/x)*sin(x)+1.0 ;
}
double minimum (double a,double b) // funktsiya nahodit naimenshee znachenie
{
double min;
if(f(a)>f(b))
min=f(b);
else
min=f(a);
return min;
}


int main()
{
double a,b,c,epsilon,k; // k - minimalnoe znachenie funktsii "f"
a: std::cout<<"Enter a,b,epsilon (epsilon>0)"<<'\n';
std::cin>>a>>b>>epsilon;
if(epsilon<=0) goto a;
if(f(a)>f(b))
k=f(b);
else
k=f(a);
while((b-a)<epsilon)
{
c=(a+b)/2.0 ;
if( (f(с))*(f(b))<0 )
a=c;
else
b=c;
if(k>minimum(a,b)) k=minimum(a,b);
}
std::cout<<"koren uravneniya ="<<c<<'\n';
std::cout<<"minimalnoe znachenie funktsii ="<<k;


return 0;
}
 
P

Programmist-Zadrot

C++:
// 5laba.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <iostream>
#include <math.h>
double f(double x)
{
return (cos(2.0/x))*(sin(x))+1.0;
}


double minimum (double a,double b) // funktsiya nahodit naimenshee znachenie
{
double min;
if( (f(a))>(f(b)) )
min=f(b);
else
min=f(a);
return min;
}


int main()
{
double a,b,c,epsilon,k; // k - minimalnoe znachenie funktsii "f"
a: std::cout<<"Enter a,b,epsilon (epsilon>0)"<<'\n';
std::cin>>a>>b>>epsilon;
if(epsilon<=0) goto a;
k=minimum((f(a)),(f(b)));
while((b-a)<epsilon)
{
c=(a+b)/2.0;
if( (f(c))*(f(b))<0 )
a=c;
else
b=c;
if(k>(minimum(a,b)) ) k=minimum(a,b);
}
std::cout<<"koren uravneniya ="<<c<<'\n';
std::cout<<"minimalnoe znachenie funktsii ="<<k;


return 0;
}
P/S
Приезжай в Харьков - попьём пивася ))
 
R

rrrFer

Код:
double minimum (double a,double b) // funktsiya nahodit naimenshee znachenie
{
double min;
if( (f(a))>(f(b)) )
min=f(b);
else
min=f(a);
return min;
}
вызов функции - это уже тяжелая операция, т.к. состояние вызывающей функции сохраняется в нерезиновом стеке...а еще и вызванная функция должна отработать, поэтому более гуманно написать так:
Код:
double minimum (double a,double b) {
double min, fa,fb;
fa = f( a ), fb = f( b );
if( fa > fb )
return fb;
return fa;
}
и тут тоже:
Код:
if(k>(minimum(a,b)) ) k=minimum(a,b);
но сам перепиши )


------------
Код:
std::cout<<"minimalnoe znachenie funktsii ="<< k;
если k - это значение функции - то что это:
Код:
 if(k>(minimum(a,b)) ) k=minimum(a,b);
? - тут "К" получает значение границы интервала.

Ну и минимальное значение надо икать не так. Если ты не заметил - то метод дихитомии использует информацию о том, что функция на заданном участке монотонна - именно поэтому произведение значений функции на границах интервала сравнивают с нулем. Ну а если функция монотонна - то возьми сразу ее минимальное значение - это либо f(a), либо f:)lol: - где а и b - данные, введенные пользователем.
 
W

woka

если ты на первом курсе под первые лабы по праграмухе пьёшь пиво, то до второго курса у тебя есть большой шанс не дожить. и с пивом ты подло поступил. пообещав не дал его. когда говорят с меня пиво то это подразумеваеться что если чел живёт от тебя далеко и не может к тебе приехать ты кидаешь ему капейку на какой нибудь веб мани кошелёк
 
P

Programmist-Zadrot

ну , как говориться всё в меру хорошо , поэтому и пиво я потр*цензура*ю в меру))) а вот насчёт ОБЕЩАНОГО пива - прошу прощения , если кого обидел. жил бы человек в моём городе - яб само собой угостил , а вот насчёт копейки на вебмани - это не пиво ))) да и к тому же я этим вэбманям не доверяю
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!