PDA

Просмотр полной версии : [c++] составить программы для решения задач


anti_sec2
09.05.2007, 19:11
привет помогите plz зделат 2 простых программы на c++ для этих задач я думаю для вас это очен проста
ЗАРАНЕЕ THANK

задачи здес

http://img230.imageshack.us/img230/6463/zadaciat1.jpg

anti_sec2
10.05.2007, 21:50
Plzzzzzzzzzzz Help
ну это же для вас проста

wano81
11.05.2007, 02:34
Напиши нормально условие задачи. А то вопросов туева хуча.
По 1-й задаче:
1) интервал для всех трех функций одинаков или [0.2; 2] только для первой, а для остальных требуется ввести
2) шаг везде одинаков или только для второй функции 1.2
3) что за бред, и во второй функции и в третьей у тебя x=0.9, такого не может быть

++Norton++
14.05.2007, 19:51
Если я правильно понял условия, то вот решение задачи №2:

#include <stdio.h>
#include <conio.h>
int main() {
int n, S=0, i;
printf("Input n: ");
scanf("%d", &n);

for(i=1; i<=(2*n); i++) {
S=S+(i*(i+1)); }

printf("S=%d", S);
getch();
return 0; }

scrat
14.05.2007, 21:45
про вторую поподробней.решу.
2norton: как же меня бесит скан и принт Ф!чувак юзай std!

_Great_
14.05.2007, 23:46
2norton: как же меня бесит скан и принт Ф!чувак юзай std!
А не по боку?

Benzin
15.05.2007, 00:17
Попробовал вот тут сделать первую.., но че то запара (да и кстати просили же на С++, а не на С)
Проблема скорее всего в последних строках, кароче не те функции выбирает..., подправьте, мне влом разбираться...



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

class Benzin
{
public:
double x0, xk, dx; //***** интервал [x0; xk] и шаг dx


public:
virtual double func1 (double)=0; //***** 1-я виртуальная
virtual double func2 (double)=0; //***** 2-я виртуальная
virtual double func3 (double)=0; //***** 3-я виртуальная

double tab1(); //***** функция табулирования №1
double tab2(); //***** функция табулирования №2
double tab3(); //***** функция табулирования №3

void input();
double cnt(double);
void output(double, double);

};


//*****
double Benzin::tab1()
{
double x, y;
for (x=x0; x<=xk; x+=dx)
{
y =func1(x);
output(x,y);
}
return 0;
}

//*****
double Benzin::tab2()
{
double x, y;
for (x=x0; x<=xk; x+=dx)
{
y =func2(x);
output(x,y);
}
return 0;
}

//*****
double Benzin::tab3()
{
double x, y;

for (x=x0; x<=xk; x+=dx)
{
y =func3(x);
output(x,y);
}
return 0;
}

//***** Метод ввода значений интервала и шага
void Benzin::input()
{
cout<<"Input\n\n";
cout<<"x0="; cin>>x0; cout<<"\n";
cout<<"xk="; cin>>xk; cout<<"\n";
cout<<"dx="; cin>>dx; cout<<"\n";
cout<<"Output:\n\n";
}

//***** Метод условий
double Benzin::cnt(double x)
{
double z;

if (x<0.9)
z=tab1();

if (x==0.9)
z=tab2();
else
z=tab3();

return 0;
}

//*****Метод вывода
void Benzin::output(double x, double y)
{
cout<<"x= "<<x<<'\t';
cout<<"f("<<x<<")= "<<y<<'\n';
}

//***** Производный класс
class Proizv : public Benzin
{
//***** 1-я виртуальная
virtual double func1 (double x)
{
double G1, G2, G3, G4;

G1=x*x;
G2=pow(G1,3)+(x*x);
G3=sqrt(x+1);
G4=G2/G3;

return G4;
}

//***** 2-я виртуальная
virtual double func2 (double x)
{
double G1, G2;

G1=sqrt(x+1);
G2=1./(pow(x,2));

return G2;
}

//***** 3-я виртуальная
virtual double func3 (double x)
{
double G1, G2, G3, t=1.9;

G1=cos(x);
G2=pow(G1,2);
G3=G1+(t*G2);

return G3;
}
};

//MAIN
void main()
{
Proizv S;
S.input();

double r; // Здесь ошибка, и я это знаю, но как исправить...
S.cnt(r); //вот с этим методом у меня возникает проблема!!!

_getch();
}

Benzin
15.05.2007, 16:02
Прогу исправил.., теперь все ок.


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

class Benzin
{
public:
double x0, xk, dx; //***** интервал [x0; xk] и шаг dx


public:
virtual double func1 (double)=0; //***** 1-я виртуальная
virtual double func2 (double)=0; //***** 2-я виртуальная
virtual double func3 (double)=0; //***** 3-я виртуальная

double tab(); //***** функция табулирования


void input();
double cnt(double);
void output(double, double);

};


//***** Алгоритм табулирования (единый для всех функций)
double Benzin::tab()
{
double x, y;
for (x=x0; x<=xk; x+=dx)
{
y =cnt(x);
output(x,y);
}
return 0;
}

//***** Метод ввода значений интервала и шага
void Benzin::input()
{
cout<<"Input\n\n";
cout<<"x0="; cin>>x0; cout<<"\n";
cout<<"xk="; cin>>xk; cout<<"\n";
cout<<"dx="; cin>>dx; cout<<"\n";
cout<<"Output:\n\n";
}

//***** Метод условий
double Benzin::cnt(double x)
{
double z;

if ( x < 0.9 )
z=func1(x);
else if ( x > 0.9 )
z=func3(x);
else
z=func2(x);

return z;
}

//*****Метод вывода
void Benzin::output(double x, double y)
{
cout<<"x= "<<x<<'\t';
cout<<"f("<<x<<")= "<<y<<'\n';
}

//***** Производный класс
class Proizv : public Benzin
{
//***** 1-я виртуальная
virtual double func1 (double x)
{
double G1, G2, G3, G4;

G1=x*x;
G2=pow(G1,3)+(x*x);
G3=sqrt(x+1);
G4=G2/G3;

return G4;
}

//***** 2-я виртуальная
virtual double func2 (double x)
{
double G1, G2;

G1=sqrt(x+1);
G2=1./(pow(x,2));

return G2;
}

//***** 3-я виртуальная
virtual double func3 (double x)
{
double G1, G2, G3, t=1.9;

G1=cos(x);
G2=pow(G1,2);
G3=G1+(t*G2);

return G3;
}
};

//MAIN
void main()
{
Proizv K;
K.input();

K.tab();
_getch();

}

scrat
15.05.2007, 20:14
_getch(); O_o
вместо матс можно либу без .h юзать