Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Найти значения функций / 25 сообщений из 33, страница 1 из 2
12.11.2014, 12:58
    #38803365
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Привет!
Может у студентов есть рабочая программа на С для нахождения значений функции на заданном участке. Функция пофиг какая, я сама там подгоню что нужно. Мне в итоге надо график построить и анализ сделать, но сама сделаю. Может просто есть у кого-нибудь такая рабочая программка

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
12.11.2014, 17:56
    #38803940
kab18
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
#include <iostream.h>
#include <windows.h>
#include <conio.h>
#include <math.h>
char bufRus[256];
char* Rus(const char* text) {
      CharToOem(text, bufRus);
      return bufRus;
      }

float fun (float X, float Y, float Z)
{
return ((pow(X,3)-tan(Y/X)+exp(Z))*tan(Z))+(1/(X+Y+Z));
}

void calc(float* X,float* Y,float* Z,const float E,int nx,int ny,int nz)
{
float F;
for(int i=0;i<nx;i++)
{
for(int k=0;k<ny;k++)
{
for(int m=0;m<nz;m++)
{
if(fabs(X[i])>E && fabs(X[i]+Y[k]+Z[m])>E)
{
F=fun(X[i],Y[k],Z[m]);
cout<<Rus("При X=")<<X[i]<<" Y="<<Y[k];
cout<<" Z="<<Z[m]<<" f(x,y,z)="<<F<<endl;
}
else
{
cout<<Rus("При X=")<<X[i]<<" Y="<<Y[k]<<" Z=";
cout<<Z[m]<<Rus(" функция не существует(знаменатель равен нулю)")<<endl;
}
}
}
}
}

int main()
{
char quit;
int fx,fy,fz,nx,ny,nz;
float xn,xk,hx,yn,yk,hy,zn,zk,hz;
const float E=1e-4;
do
{
clrscr();
float* X; float* Y; float* Z; float* answer;
cout<<Rus("Введите способ ввода для аргументов:\n1.Диапазон\n2.Массив\nДля X: ");
cin>>fx;
cout<<Rus("Для Y: ");
cin>>fy;
cout<<Rus("Для Z: ");
cin>>fz;
switch(fx)
{
case 1:
cout<<Rus("Введите X начальное: ");
cin>>xn;
cout<<Rus("Введите X конечное: ");
cin>>xk;
cout<<Rus("Введите шаг X: ");
cin>>hx;
if (fabs(ceil((xk-xn)/hx)*hx)<fabs(xk-xn)+E)
{
nx=fabs(ceil((xk-xn)/hx))+1;
X=(float*)calloc(nx,sizeof(float));
X[0]=xn;
for(int i=1;i<nx;i++) X[i]=X[i-1]+hx;
}
else
{
nx=fabs(ceil((xk-xn)/hx));
X=(float*)calloc(nx,sizeof(float));
X[0]=xn;
for(int i=1;i<nx;i++) X[i]=X[i-1]+hx;
}
break;
case 2:
cout<<Rus("Введите количество элементов X: ");
cin>>nx;
X=(float*)calloc(nx,sizeof(float));
for(int i=0;i<nx;i++)
{
cout<<Rus("Введите X")<<i+1<<'=';
cin>>X[i];
}
break;
}
switch(fy)
{
case 1:
cout<<Rus("Введите Y начальное: ");
cin>>yn;
cout<<Rus("Введите Y конечное: ");
cin>>yk;
cout<<Rus("Введите шаг Y: ");
cin>>hy;
if (fabs(ceil((yk-yn)/hy)*hy)<fabs(yk-yn)+E)
{
ny=fabs(ceil((yk-yn)/hy))+1;
Y=(float*)calloc(ny,sizeof(float));
Y[0]=yn;
for(int i=1;i<ny;i++) Y[i]=Y[i-1]+hy;
}
else
{
ny=fabs(ceil((yk-yn)/hy));
Y=(float*)calloc(ny,sizeof(float));
Y[0]=yn;
for(int i=1;i<ny;i++) Y[i]=Y[i-1]+hy;
}
break;
case 2:
cout<<Rus("Введите количество элементов Y: ");
cin>>ny;
Y=(float*)calloc(ny,sizeof(float));
for(int i=0;i<ny;i++)
{
cout<<Rus("Введите Y")<<i+1<<'=';
cin>>Y[i];
}
break;
}
switch(fz)
{
case 1:
cout<<Rus("Введите Z начальное: ");
cin>>zn;
cout<<Rus("Введите Z конечное: ");
cin>>zk;
cout<<Rus("Введите шаг Z: ");
cin>>hz;
if (fabs(ceil((zk-zn)/hz)*hz)<fabs(zk-zn)+E)
{
nz=fabs(ceil((zk-zn)/hz))+1;
Z=(float*)calloc(nz,sizeof(float));
Z[0]=zn;
for(int i=1;i<nz;i++) Z[i]=Z[i-1]+hz;
}
else
{
nz=fabs(ceil((zk-zn)/hz));
Z=(float*)calloc(nz,sizeof(float));
Z[0]=zn;
for(int i=1;i<nz;i++) Z[i]=Z[i-1]+hz;
}
break;
case 2:
cout<<Rus("Введите количество элементов Z: ");
cin>>nz;
Z=(float*)calloc(nz,sizeof(float));
for(int i=0;i<nz;i++)
{
cout<<Rus("Введите Z")<<i+1<<'=';
cin>>Z[i];
}
break;
}
clrscr();
calc(X,Y,Z,E,nx,ny,nz);
free(X);
free(Y);
free(Z);
cout<<Rus("Для выхода нажмите Enter\nДля повтора любую другую клавишу ");
quit=cin.get();
}while(quit!=13);
return 0;
}
...
Рейтинг: 0 / 0
12.11.2014, 19:20
    #38804045
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6a, непонятно зачем тебе "С" ? Графики рисует Excel. Он же заполняет таблицы.

А если дать тебе сорс - то ты всё равно его не сдашь т.к. это палево и лажа.
...
Рейтинг: 0 / 0
13.11.2014, 02:14
    #38804190
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
kab18, ужасный нечитабельный код
...
Рейтинг: 0 / 0
13.11.2014, 11:57
    #38804604
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
mayton, в конечном итоге мне надо распараллелить с помощью mpicc.
...
Рейтинг: 0 / 0
20.11.2014, 16:26
    #38812134
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Вот простенький код на С, выдает ошибку, как правильно подать данные из фаила, подскажите ?

Код: 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.
// Function.cpp: главный файл проекта.

#include "stdafx.h"
#include <stdio.h>
#include <math.h>

using namespace System;

double func(double a1) {
    return a1;
                       }
int main(void)
{	
	double larg, rarg, shag, c, x0, dx, exit;
	int i;
	FILE * fun = fopen ("line.txt", "r");
    //printf("A = ");
    //scanf("%lf", &arg);
    //scanf("%lf", &shag);
	fscanf(fun, "%lf %lf %lf", &larg, &rarg, &shag);

	printf("\n F(x)\n-------------------------\n");
    for ( i = 1; i <= 5; i++ )
	{
		        printf("%-10.3f %f\n", func(larg));
				larg=larg+shag;
    }
	fclose(fun);
	scanf("%lf", &exit);
    return 0;	
}



А ошибку дает вот такую
...
Рейтинг: 0 / 0
20.11.2014, 16:43
    #38812161
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6a,

fopen NULL вернула (файл не найден скорее всего, errno проверьте)


PS
printf("%-10.3f %f\n", func(larg)); - здесь аргумента не хватает
...
Рейтинг: 0 / 0
20.11.2014, 18:53
    #38812376
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6aВот простенький код на СНеправда, это Managed C++.
Мертвенький уродец отдаленно напоминающий C.
...
Рейтинг: 0 / 0
20.11.2014, 18:55
    #38812378
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Я фигею с этих преподов. Кто им задачи ставит?
...
Рейтинг: 0 / 0
21.11.2014, 00:46
    #38812586
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
White OwlMash6aВот простенький код на СНеправда, это Managed C++.
Мертвенький уродец отдаленно напоминающий C.да там от managed только using namespace System и есть, а так - чистый С, написанный, правда, грязно ))
...
Рейтинг: 0 / 0
21.11.2014, 13:57
    #38813186
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
egorych,

буду подчищать косячки :-)
...
Рейтинг: 0 / 0
21.11.2014, 14:05
    #38813204
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Изопропил,

спасибо, промахнулась фаилом, не в корень положила.
...
Рейтинг: 0 / 0
21.11.2014, 14:09
    #38813213
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Код: 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.
#include "stdafx.h"
#include <stdio.h>
#include <math.h>

using namespace System;

double func(double a1) {
    return log(a1);
                       }
int main(void)
{	
	double larg, rarg, shag, c, x0, dx, exit;
	int i;
	FILE * fun = fopen ("line.txt", "r");
    //printf("A = ");
    //scanf("%lf", &arg);
    //scanf("%lf", &shag);
	fscanf(fun, "%lf %lf %lf", &larg, &rarg, &shag);

	printf("\n F(x)\n-------------------------\n");
    for ( i = 1; i <= rarg-larg; i++ )
	{
		        printf("%-10.3f", func(larg));
				larg=larg+shag;
    }
	fclose(fun);
	scanf("%lf", &exit);
    return 0;	
}



Помогите теперь распаралелить с помощью MPI. Как разбить вычисления по ядрам ?
...
Рейтинг: 0 / 0
21.11.2014, 14:18
    #38813231
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6a, кто-ж тебе задание-то даёт? Надо сначала выяснить принципиальную возможность
(ш)кодить на МПИ с твоим стрёмным компиллятором.

Попробуй сделать хоть
Код: plaintext
1.
#include <mpi.h>.



Взлетело? Не?
...
Рейтинг: 0 / 0
21.11.2014, 14:36
    #38813270
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
mayton,

да, это то понятно отвалилось, дабы нет подходящей библиотеки - это я разобралась. Сейчас поищу может можно ее где-нибудь скачать и поставить, но даже если и не найду, то в универе проверю что не так. Вот читаю про функции:
Код: 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.
// Function.cpp: главный файл проекта.

#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include "mpi.h"

using namespace System;

double func(double a1) {
    return log(a1);
                       }
int main(void)
{	int proc, rank;

	MPI_Init(NULL,NULL);
    MPI_Comm_size(MPI_COMM_WORLD, &proc);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

	double arg, larg, rarg, shag, c, x0, dx, exit;
	int i;
	FILE * fun = fopen ("line.txt", "r");
    //printf("A = ");
    //scanf("%lf", &arg);
    //scanf("%lf", &shag);
	fscanf(fun, "%lf %lf %lf", &larg, &rarg, &shag);



	printf("\n F(x)\n-------------------------\n");
    for ( i = 1; i <= rarg-larg; i++ )
	{
		        printf("%-10.3f", func(larg));
				arg = f(larg);
				MPI_Gather(&arg, 1, MPI_DOUBLE,1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
				larg=larg+shag;
    }
	fclose(fun);
	MPI_Finalize();
	scanf("%lf", &exit);
    return 0;	
}



Проверить смогу только в понедельник :-( Посмотрите нормально получается ?
...
Рейтинг: 0 / 0
21.11.2014, 14:42
    #38813283
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Выглядит красиво. Но я не умею компилировать в уме.

Может коллеги по форуму помогут.
...
Рейтинг: 0 / 0
21.11.2014, 14:51
    #38813296
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
maytonНо я не умею компилировать в уме.


Я тоже, ладно будем ждать след. недели
...
Рейтинг: 0 / 0
21.11.2014, 15:27
    #38813337
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6a
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
	FILE * fun = fopen ("line.txt", "r");
	if( fun == NULL ) {
		printf( "Ошибка открытия файла line.txt" );
		return 0;
	}
...

Пушкин не будет проверять за вас ошибки, он умер давно, и вообще - поэт, а не программист ;-))
...
Рейтинг: 0 / 0
21.11.2014, 15:31
    #38813340
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
egorych, Спасибо Превеликий !!!:-) Сейчас добавлю такую проверку. Ну и так что проверять, если код работает, вроде даже правильный результат дает :-)
...
Рейтинг: 0 / 0
21.11.2014, 15:35
    #38813345
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
А Шекспир был - программист. Он писал латиницей довольно строгие
англо-саксонские слово-формы.
...
Рейтинг: 0 / 0
21.11.2014, 15:36
    #38813346
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
Mash6a,
а что за функция
Код: plaintext
1.
arg = f(larg);


?
...
Рейтинг: 0 / 0
21.11.2014, 15:42
    #38813351
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
egorychПушкин не будет проверять за вас ошибки
Нострадамус тоже умер, так что предрекать какая именно ошибка произошла - некому. Поэтому
программистам и приходится выводить в сообщении не только "shit happened", но также как
минимум errno, а как максимум - _sys_errlist[errno].
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.11.2014, 15:51
    #38813362
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
...
Рейтинг: 0 / 0
21.11.2014, 15:58
    #38813370
Mash6a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
SashaMercury,

чуть выше описана

Код: plaintext
1.
2.
3.
4.
double func(double a1) 
                       {
    return log(a1);
                       }
...
Рейтинг: 0 / 0
21.11.2014, 16:03
    #38813381
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Найти значения функций
как связаны функции func и f ?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Найти значения функций / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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