Программа нахождения значение уровня Ферми методом последовательных приближений или метод итераций

Автор работы: Пользователь скрыл имя, 21 Января 2012 в 19:56, курсовая работа

Краткое описание

Важной вехой в развитии программирования явилось создание и широкое распространение языка С++. Этот язык, сохранив средства ставшего общепризнанным стандартом для написания системных и прикладных программ языка С (процедурно-ориентированный язык), ввел в практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название “объектно-ориентированное программирование”. Внедрение в практику программирования объектно-ориентированной парадигмы дает развитие новых областей информатики, значительное повышение уровня технологичности создаваемых программных средств, сокращение затрат на разработку и сопровождение программ, их повторное использование, вовлечение в процесс расширения интеллектуальных возможностей ЭВМ.

Содержание работы

Введение 3

1 Постановка задачи 4

1.1 Анализ предметной области 4

1.2 Описание метода решения задачи 5

2 Описание программного обеспечения 8

2.1 Входные данные 8

2.2 Выходные данные 9

2.3 Требования к надёжности 10

2.4 Структурная диаграмма 10

2.5 Описание функций 11

3 Описание работы программного модуля 13

3.1 Руководство пользователя 13

3.2 Тестирование 14

Заключение 16

Список использованных источников 17

Приложение А 18

Содержимое работы - 1 файл

Записка.doc

— 1.04 Мб (Скачать файл)

            file_vuvod();

            break;

      case 6:

            graf();

            break;

      case 7:

            formyla_red();

            formyla_zag();

            break;

      case 8:

            formyla_pros();

            break;

      case 9:

            restart();

            break;

      case 10:

            exit(0);

      default: 

            printf("Указанного номера меню нет\n\n");

            }

      }

} 

Текст файла excel.h 

#import "C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE12\\MSO.DLL" \

rename( "RGB", "MSORGB" )

using namespace Office;

#import "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB"

using namespace VBIDE;

#import "C:\\Program Files\\Microsoft Office\\OFFICE12\\EXCEL.EXE" \

    rename( "DialogBox", "ExcelDialogBox" ) \

    rename( "RGB", "ExcelRGB" ) \

    rename( "CopyFile", "ExcelCopyFile" ) \

    rename( "ReplaceText", "ExcelReplaceText" )

using namespace Excel; 

Текст файла file.h 

void file()

{

FILE *fp;

char q[10];

char file_name[10];

printf("Введите  имя файла (.bin)\n");

scanf("%s",file_name);

strcpy(q,".bin");

strcat(file_name,q);

if ((fp=fopen(file_name,"r"))==NULL)

{

printf("Указанный файл не существует\n");

}

else

{

fread(&s,sizeof(info),1,fp);

printf("\nПрочитано\n");

printf("*****************\n");

printf("Ef = %f\n",s.Ef[0]);   

printf("e= %f\n",s.e[0]);

printf("*****************\n");

}

} 

Текст файла file_vuvod.h 

void file_vuvod()

{

FILE *fp;

int r=0;

float y,x,y1,y2;

int i,n;

char file_name[10];

char q[10];

if (s.Ef[0]!=0 && s.e[0]!=0)

{

do

{

x=s.Ef[0];

y1=exp((s.Ef[0]-h.Ed[0])/h.KT[0]);

y2=exp((h.Ev[0]-s.Ef[0])/h.KT[0]);

y=s.Ef[0]+0.1*(h.KT[0]*(log(((h.Nd[0]/(1+2*y1))+h.Nv[0]*y2))-log(h.Nc[0]))+h.Ec[0]);

s.Ef[0]=y;

r++;

g[0].kol=r;

g[r-1].na4=x;

g[r-1].kon=s.Ef[0];

}

while (fabs(x-s.Ef[0])>=s.e[0]);

printf("Введите имя файла\n");

scanf("%s",file_name);

strcpy(q,".txt");

strcat(file_name,q);

fp=fopen(file_name,"w");

if (fp==NULL)

printf("Ошибка открытия файла!\n");

else

{

printf("Файл успешно открыт и записан с расширением txt\n");

fwrite(g, sizeof(info3),1,fp);

}

fclose(fp);

}

else printf("Исходные данные должны быть введены\n\n");

} 

Текст файла formyla_pros.h 

void formyla_pros()

{

FILE *fp;

fp=fopen("formyla","r");

fread(&h,sizeof(info3),1,fp);

printf("*****************\n");

printf("Плотность состояний в зоне проводимости=%e\n",h.Nc[0]);   

printf("Плотность состояний в пограничной зоне=%e\n",h.Nv[0]);

printf("Плотность донорных состояний=%e\n",h.Nd[0]);   

printf("Энергия зоны проводимости=%f\n",h.Ec[0]);

printf("Энергия донорного уровня=%f\n",h.Ev[0]);   

printf("Энергия пограничной зоны=%f\n",h.Ed[0]);

printf("KT=%f\n",h.KT[0]);   

printf("Начало  диапазона=%f\n",h.na4[0]);

printf("Конец диапазона=%f\n",h.kon[0]); 

printf("*****************\n");

}  

Текст файла formyla_red.h 

void formyla_red()

{

FILE *fp;

fp=fopen("formyla","w");

if (fp==NULL)

printf("Ошибка  открытия файла!\n");

else

{

printf("Файл успешно открыт\n");

printf("Плотность состояний в зоне проводимости:\n");

scanf("%e",&h.Nc[0]);

printf("Плотность состояний в пограничной зоне:\n");

scanf("%e",&h.Nv[0]);

printf("Плотность донорных состояний:\n");

scanf("%e",&h.Nd[0]);

printf("Энергия зоны проводимости:\n");

scanf("%f",&h.Ec[0]);

printf("Энергия донорного уровня:\n");

scanf("%f",&h.Ev[0]);

printf("Энергия пограничной зоны:\n");

scanf("%f",&h.Ed[0]);

printf("KT:\n");

scanf("%f",&h.KT[0]);

printf("Начало  диапазона:\n");

scanf("%f",&h.na4[0]);

printf("Конец диапазона:\n");

scanf("%f",&h.kon[0]);

fwrite(&h, sizeof(info3),1,fp);

printf("Формула успешно изменена\n");

}

fclose(fp);

} 

Текст файла formyla_zag.h 

void formyla_zag()

{

FILE *fp;

fp=fopen("formyla","r");

fread(&h,sizeof(info3),1,fp);

} 

Текст файла graf.h 

void graf()

{

      char f[2],f2[4];

      char f3[2],f4[4];

      long i;

      ::CoInitialize(NULL);

  try

  {

    using namespace Excel;

    _ApplicationPtr excel("Excel.Application");

    excel->Visible[0] = true;

    _WorkbookPtr  book  = excel->Workbooks->Add();

    _WorksheetPtr sheet = book->Worksheets->Item[1L];

      sheet->Range["C1"]->FormulaR1C1 = "Строка 1";

      sheet->Range["D1"]->FormulaR1C1 = "Строка 2";

      for (i=2;i<g[0].kol+2;i++)

      {

      strcpy(f,"B");

      sprintf(f2,"%d",i);

      sheet->Range[strcat(f,f2)]->FormulaR1C1=g[i-2].na4;

      strcpy(f3,"C");

      sprintf(f4,"%d",i);

      sheet->Range[strcat(f3,f4)]->FormulaR1C1=g[i-2].kon;

      strcpy(f,"D");

      sprintf(f2,"%d",i);

      sheet->Range[strcat(f,f2)]->FormulaR1C1=g[i-2].na4;

      }

      _WorksheetPtr charts=book->Charts->Add();

  }

  catch (_com_error& er)

  {

    char buf[1024];

    sprintf(buf,"_com_error:\n"

                "Error       : %08lX\n"

                "ErrorMessage: %s\n"

                "Description : %s\n"

                "Source      : %s\n",

                er.Error(),

                (LPCTSTR)_bstr_t(er.ErrorMessage()),

                (LPCTSTR)_bstr_t(er.Description()),

                (LPCTSTR)_bstr_t(er.Source()));

    CharToOem(buf,buf);

    printf(buf);

  }

  ::CoUninitialize();

} 

Текст файла klav.h 

void klav()

{

      float ch(0);

      float n(0);

      int i=0,i2=0,i3=0;

printf("Введите  начальное значение Ef [%f;%f]:\n",h.na4[0],h.kon[0])

while (ch!=13)

{

ch=getch();

if (ch>47 && ch<58)

{

n=n*10+ch-48;

i++;

std::cout<<(char)ch;

}

else if (ch=='.')

{

i2=i;

std::cout<<'.';

}

else if (ch=='-')

{

i3++;

std::cout<<'-';

}

else if (ch==8)

{

n/=10;

std::cout<<(char)8<<' '<<(char)8;

}

}

      if (i==1)

      n=n;

      else

      {

      i=i-i2;

      n=n*pow(10,-i);

      }

      if (i3==1)

      n*=-1;

while (n<=h.na4[0] || n>=h.kon[0])

{

i=0;

i2=0;

i3=0;

n=0;

ch=0;

printf("\nВы вышли  из диапазона\n");

while (ch!=13)

{

ch=getch();

if (ch>47 && ch<58)

{

n=n*10+ch-48;

i++;

std::cout<<(char)ch;

}

else if (ch=='.')

{

i2=i;

std::cout<<'.';

}

else if (ch=='-')

{

i3++;

std::cout<<'-';

}

else if (ch==8)

{

n/=10;

std::cout<<(char)8<<' '<<(char)8;

}

}

      if (i==1)

      n=n;

      else

      {

      i=i-i2;

      n=n*pow(10,-i);

      }

      if (i3==1)

      n*=-1;

}

      s.Ef[0]=n;

i=0;

i2=0;

i3=0;

n=0;

ch=0;

printf("\nВведите точность e:\n");

while (ch!=13)

{

ch=getch();

if (ch>47 && ch<58)

{

n=n*10+ch-48;

i++;

std::cout<<(char)ch;

}

else if (ch=='.')

{

i2=i;

std::cout<<'.';

}

else if (ch==8)

{

n/=10;

std::cout<<(char)8<<' '<<(char)8;

}

Информация о работе Программа нахождения значение уровня Ферми методом последовательных приближений или метод итераций