Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 21:51   #1
Медина
Пользователь
 
Регистрация: 27.03.2009
Сообщений: 14
По умолчанию Си++.Глобальные,локальные параметры.

Здравствуйте.Намудрила что-то в програмке в локальных, глоб параметрах в int main,только вот что понять не могу...

Код:
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#define tn 0.0
#define tk 2*M_PI

#define Nmax 600
using namespace std;

void formvrem(int ,float []);
void formvxoda(int ,float [],float []);
void formvixoda(int ,float [],float []);
void table(int ,float [],float [],float []);
float Raznost(int ,float [],float []);
void write(int , float [], float [], float []);
void zastavka();

void zastavka()
{
    FILE *f;
    int ch;
    f=fopen("zastavka.txt","r");
    while (!feof(f))
    {
        ch=getc(f);
        printf("%c",ch);
        if(ch==10) printf("\n \n");
    }
    fclose(f);
    getch();
    return ;
}


void formvrem(int n,float t[])
{float dt;
  int i;
dt=fabs(tk-tn)/(n-1);
for(i=0;i<n;i++)
{
t[i]=tn+i*dt;
}
    return ;
}


void formvxoda(int n,float t[],float Uvh[])
{int i;
     float U=50.0,a=0.5;
for(i=0;i<n;i++)
{
Uvh[i]=U*exp(-a*t[i])*sin(t[i]);
}
return ;
}



void formvixoda(int n,float Uvh[],float Uvih[])
{int i;
     float a1=0.5,a2=0.5,a3=0.5,Uvh1=10.0,Uvh2=50.0,b1=10.0,b2=10.0,b3=60.0;
for(i=0;i<n;i++)
{
        if(Uvh[i]<=Uvh1) Uvih[i]=a1*Uvh[i]+b1;
      if(Uvh[i]<=Uvh2&&Uvh[i]>Uvh1)  Uvih[i]=a2*Uvh[i]+b2;
        if(Uvh[i]>Uvh2) Uvih[i]=a3*Uvh[i]+b3;
        }
        return ;
        }


        void table(int n,float t[],float Uvh[],float Uvih[])
{
        int i;
        printf("\n\n i | t[i] | Uvh[i] | Uvih[i]\n");
        printf("---------------------------------------- \n");
         for(i=0;i<n;i++)
         {
         printf("%2d | %6.3f | %7.3f | %4.3f\n",i+1,t[i],Uvh[i],Uvih[i]);
         }
         return ;

         }


float Raznost(int n,float Uvih[],float t[])
{
float Umax,Umin,R;
int i;
Umax = Uvih[0];
for(i=0;i<n;i++)
 {if(Uvih[i]>Umax) Umax=Uvih[i];}
printf("\n Umax=%.3f",Umax);
Umin = Uvih[0];
for(i=1;i<n;i++)
 {if(Uvih[i]<Umin) Umin=Uvih[i];}
printf("\n Umin=%.3f",Umin);
R=Umax-Umin;
return(R);
}

      void write(int n, float t[], float Uvh[], float Uvih[])
{int i;
    FILE *f1, *f2, *f3;

    f1=fopen ("d1.txt","w");
     if (f1==NULL)
     {
                 printf("\n owibka");
                 exit(1);
                 }

    f2=fopen ("d2.txt","w");
  if (f2==NULL)
     {
                 printf("\n owibka");
                 exit(1);
                 }

    f3=fopen ("d3.txt","w");
  if (f3==NULL)
     {
                 printf("\n owibka");
                 exit(1);
                 }
    for (i=0;i<n;i++)
    {
        fprintf (f1,"\n%.3f",t[i]);
        fprintf (f2,"\n%.3f",Uvh[i]);
        fprintf (f3,"\n%.3f",Uvih[i]);
    }
    fclose(f1);fclose(f2);fclose(f3);
    return ;
}







 int main()
{
//мне нужно на каком отсчете точность расчета достигается 0.02..а выводит все время 11 или 22...уже все по 10 раз заменяла,достигала этой точности на 512 отсчете,но тогда везде писала Nmax и не присваивала N(n)=11

           int i,N,n=11;
     float  t[Nmax],Uvh[Nmax],Uvih[Nmax],dt,eps=0.02,w,v=1000000,p=1.0;
     zastavka();
    formvrem(n,t);
    formvxoda(n,t,Uvh);
    formvixoda(n,Uvh,Uvih);
    table(n,t,Uvh,Uvih);
    write(n,t,Uvh,Uvih);

    w=Raznost(n,Uvih,t);
    printf("\n w=%.3f",w=Raznost(n,Uvih,t));
        N=n;

             for(i=0;i<Nmax;i++)
             {
    do
    {  formvrem(N,t);
    formvxoda(N,t,Uvh);
    formvixoda(N,Uvh,Uvih);
          write(N,t,Uvh,Uvih);
          v=w;
          p=fabs(w-v);
          N=N*2;
                 }
          while(p>eps);
              }

          printf("\n w=%.3f",w=Raznost(N,Uvih,t));
          printf("\n pogrewnost eps=%.3f",eps);
          printf("\n trebyema9 to4nost dostignyta pri  n=%d",N);

         getch();
         return (1);
         }
или вообще не в этом проблема у меня???

Последний раз редактировалось Медина; 02.06.2009 в 22:10.
Медина вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
глобальные ф-ии в с# Natok Помощь студентам 1 25.05.2009 22:41
Локальные и глобальные переменные. Proger10 Общие вопросы Delphi 1 04.05.2009 05:55
Локальные минимумы и их номера. f4rr3l Паскаль, Turbo Pascal, PascalABC.NET 5 06.01.2009 21:51
TWebBrowser и локальные файлы... Johnson Общие вопросы Delphi 5 26.10.2008 15:15
Глобальные хуки Zeraim Win Api 2 24.05.2008 16:00