
Исходный код программы:
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <windows.h>
#define Nm 9999
using namespace std;
void TIME(float *t, int N)
{
float tn=-10, tk=10, d;
int i;
d=(tk-tn)/(N-1);
for(i=0;i<N;i++)
{
t[i]=tn+i*d;
}
}
void U_ENTER (float *t, float Usr, float *Uin, int N)
{
int i=0;
for(i=0;i<N;i++)
{
if(t[i]<0)
Uin[i]=(25*t[i]+250);
else if (t[i]>0)
Uin[i]=(-25*t[i]+250);
}
}
void U_EXIT (float *t, float Usr,float *Uin, float *Uout, int N)
{
float U0=50, U1=100, a=400;
int i;
for(i=0;i<N;i++)
{
if (Uin[i]<U0)
{
Uout[i]=pow(a*(pow(Uin[i],2)),1.0/3);
}
else
{
Uout[i]=U1;
}
}
}
float U_SREDNEE(float *U,int N )
{
float Usr=0;
int i;
for(i=0;i<N;i++)
Usr=Usr+U[i];
Usr=Usr/N;
return Usr;
}
float TIMESR(float *U, float Usr, float *t, int N)
{
int X=0;float d;int i;
for(i=0;i<N;i++)
{
if(U[i]>Usr)
{
X++;
}
}
d=(t[N-1]-t[0])/(N-1);
float mtime;
mtime=X*d;
return mtime;
}
void TOCHNOST1 (float *t, float *Uin, float *Uout, int N)
{
float d1, p11, p12, Usr;
{
p11=TIMESR(Uin,Usr,t, N);
while (N<Nm)
{
N=2*N;
TIME(t,N);
U_ENTER(t,Usr,Uin,N);
p12=TIMESR(Uin,Usr,t, N);
d1=fabs((p11-p12)/p12);
if(d1<0.01)
break;
else
p11=p12;
}
printf("\nТочность входа=%4.8f; dt=%8.8f; n=%d\n", p12, d1, N);
}
}
void TOCHNOST2 (float *t, float *Uin, float *Uout,int N)
{
float d2,p21, p22,Usr;
{
p21=TIMESR(Uout,Usr,t,N);
while (N<Nm)
{
N=2*N;
TIME(t, N);
U_EXIT(t,Usr,Uin,Uout,N);
p22=TIMESR(Uout,Usr,t, N);
d2=fabs((p21-p22)/p22);
if(d2<0.01)
break;
else
p21=p22;
}
printf("\nТочность выхода=%4.8f; dt=%8.8f; n=%d\n", p22, d2, N);
}
}
void SCREEN(float *t, float *Uin, float *Uout, int N)
{
int i;
printf(" Время U входа U выхода");
printf("\n");
for(i=0;i<N;i++)
{
printf("%7.2f %7.2f %7.2f", t[i], Uin[i], Uout[i]);
printf("\n");
}
}
void STARTSCR()
{
FILE*fp;
fp=fopen("startscr.txt", "r");
if(fp==NULL){
printf("\nНе удалось найти файл startscr.txt \n");
}
char str[80];
while(fgets(str, 81, fp) !=NULL){
puts(str);
}
fclose(fp);
}
void SAVE(int N, float *t, float *Uin, float *Uout)
{
FILE *f1,*f2,*f3;
f1=fopen("time.txt","w");
f2=fopen("Uin.txt","w");
f3=fopen("Uout.txt","w");
for(int i=0;i<N;i++)
{
fprintf (f1,"\n %6.5f",t[i]);
fprintf (f2,"\n %6.5f",Uin[i]);
fprintf (f3,"\n %6.5f",Uout[i]);
}
fclose(f1);
fclose(f2);
fclose(f3);
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int N=15,k,l;
float t[Nm],Usr ,Uin[Nm], Uout[Nm], time1, time2,Usr_in, Usr_out;
while (1)
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nПрограмма расчёта входного и выходного Напряжений. \n2012-2012 All rights reserved (c)"
"\n1 - О программе"
"\n2 - Вычисление и вывод таблицы Времени, Uin[i] и Uout[i]"
"\n3 - Вывод результата с заданным параметром"
"\n4 - Вывод результата с параметром с учётом погрешности"
"\n5 - Сохранить данные таблицы как *.txt"
"\n\n\nВыберите номер нужного действия: ");
scanf("%d", &k);
switch (k)
{
case 1:
STARTSCR();
break;
case 2:
N=15;
TIME(t,N);
U_ENTER(t,Usr,Uin,N);
U_EXIT(t,Usr,Uin,Uout,N);
SCREEN(t,Uin,Uout,N);
printf("\nСпасибо, что воспользовались нашей программой.\n");
break;
case 3:
N=20;
TIME(t,N);
U_ENTER(t,Usr,Uin,N);
U_EXIT(t,Usr,Uin,Uout,N);
Usr_in=U_SREDNEE(Uin, N);
time1=TIMESR(Uin, Usr_in, t, N);
Usr_out=U_SREDNEE(Uout, N);
time2=TIMESR(Uout, Usr_out, t, N);
printf("\nВремя при котором Uin больше ср.зн.Uin=%4.3f", time1);
printf("\nВремя при котором Uout больше ср.зн.Uout=%4.3f", time2);
printf("\nСпасибо, что воспользовались нашей программой.\n");
break;
case 4:
N=15;
TIME(t,N);
U_ENTER(t,Usr,Uin,N);
U_EXIT(t,Usr,Uin,Uout,N);
Usr_in=U_SREDNEE(Uin, N);
time1=TIMESR(Uin, Usr_in, t, N);
TOCHNOST1(t,Uin, Uout, N);
Usr_out=U_SREDNEE(Uout, N);
time2=TIMESR(Uout, Usr_out, t, N);
TOCHNOST2(t,Uin, Uout, N);
break;
case 5:
TIME(t,50);
U_ENTER(t,Usr,Uin,50);
U_EXIT(t,Usr,Uin,Uout,50);
SAVE(50, t, Uin, Uout);
printf("\nДанные успешно сохранены.\n");
break;
default:
printf("\nСделан неправильный выбор, пожалуйста повторите:\n");
break;
}
printf("\nЖелаете продолжить бесплатное пользование программой? \n1 - Да; \n2 - Нет, выйти;\n");
scanf("%d", &l);
if (l==2)
break;
}
return 0;
}