Задача По Програмиране и използване на компютри Студент: Христо Стоичков Фак.№20711108 I. Задание



Дата19.02.2017
Размер60.58 Kb.
ТипЗадача
Курсова задача

По Програмиране и използване на компютри

Студент: Христо Стоичков Фак.№ 20711108

I. Задание:
Да се реализира програма за решаване на квадратно уравнение. Данните за квадратното уравнение да постъпват от двоичен файл. Обработената информация се записва във текстов файл. Имената на работните файлове се въвеждат от клавиатурата.
II. Съдържание на записката


  1. Задание;

  2. Алгоритъм на задачата;

  3. Описание на използваните данни;

  4. Описание на използваните функции;

  5. Тестов пример;

  6. Сорс код на програмата.

Габрово Ръководител:..........................

2007 / гл.ас. д-р Станимир Йорданов/
1. Задание
Да се реализира програма за решаване на квадратно уравнение. Данните за квадратното уравнение да постъпват от двоичен файл. Обработената информация се записва във текстов файл. Имената на работните файлове се въвеждат от клавиатурата.
2. Алгоритмизация на задачата
2.1 Необходимо програмно и апаратно осигуряване
За създаването на програмата са необходими следните апаратни и програмни ресурси.
2.1.1 Минимална компютърна конфигурация

CPU – Intel Seleron 333MHz, RAM 32MB, HDD 4.3 GB, SVGA, 14” Color Monitor , Keyboard, Mouse


2.1.2 Препоръчителна компютърна конфигурация

CPU – Intel Seleron 2.2 GHz, RAM 256MB, HDD 40 GB, SVGA, 17” Color Monitor , Keyboard, Mouse


2.1.3. Програмно осигуряване

Microsoft Windows 98, Microsoft Visual C++


2.1.4. Алгоритмизация

За реализирането на програмата се използва следният математически апарат


А) Структура на уравнението

Б) Метод за решаване

- Определя се дискреминантата по зависимоста



  • Ако дискреминантата е отрицателна уравнението няма реални корени

  • Ако дискреминантата е равна на нула има един реален корен, който се определя по зависимостта



  • Ако дискреминантата е по-голяма от нула има два реални корена, които се определят по зависимостта



3. Използвани данни
float a, b, c; - Параметри на уравнението

float d; - Детерминанта

float x1,x2; - Корени на уравнението

char FileName[100]; - Име на файла

FILE *fp; - Указател към входния файл

FILE *fp1; - Указатели към изходния файл
MyFile0.dat – Данни за уравнението а=1 b = 2 c = 3

MyFile1.dat – Данни за уравнението а=1 b = 2 c = 1

MyFile2.dat – Данни за уравнението а=1 b = 4 c = 1


  1. Описание на използваните функции

Име: main

Предназначение: Главна функция

Прототип: void main()

Входни данни: Няма

Резултат:

Решава квадратно уравнение.

Данните за уравнението се вземат от двоичен файл.

Резултатът се извежда на екрана и във текстов файл.
Алгоритъм___Име:_SquareEquation'>Алгоритъм


Име: SquareEquation

Предназначение: Решава квадратно уравнение

Прототип:
int SquareEquation(float a, float b, float c, float *d, float *x1, float *x2)
Входни данни

a,b,c - Параметри на уравнението

d - детерминанта

x1,x2 - корени на уравнението

Резултат:

Функцията връща стойности 0,1 и 2

0 - Няма реални корени

1 - Има един реален корен

2 - Има два реални корена
Алгоритъм

5. Тестови примери
5.1 Минимална компютърна конфигурация

CPU – Intel Seleron 333MHz, RAM 32MB, HDD 4.3 GB, SVGA, 14” Color Monitor , Keyboard, Mouse


5.2 Препоръчителна компютърна конфигурация

CPU – Intel Seleron 2.2 GHz, RAM 256MB, HDD 40 GB, SVGA, 17” Color Monitor , Keyboard, Mouse


5.3. Програмно осигуряване
MS-DOS или Microsoft Windows, Kzad_Primer.exe
5.4 Инсталиране и стартиране.

Създава се директория на диска:

c:\> md MyDir

c:\> cd MyDir


Копират се данните от носителя (в примера от дискета)

c:\> copy а:\*.* c:


Стартира се изпълнимия файл

c:\>Kzad_Primer.exe


5.5. Действия по инициатива на програмата
Програмата изисква да се въведе името на входния и изходния файл.

Input file:

Output file:
Пример 1

Входни данни:

a = 1 b = 2 c = 3

Резултат


Съдържание на файл Result0.dat
1.000000.x^2 + 2.000000.x + 3.000000 = 0

Д = -8.000000

Няма реални корени
Пример 2
Входни данни:

a = 1 b = 2 c = 1

Резултат


Съдържание на файл Result0.dat
1.000000.x^2 + 2.000000.x + 1.000000 = 0

Д = 0.000000

X1=X2=-1.000000
Пример 3
Входни данни:

a = 1 b = 4 c = 1


Резултат

Съдържание на файл Result2.dat

1.000000.x^2 + 4.000000.x + 1.000000 = 0

Д = 12.000000

X1=-0.267949 X2=-3.732051


Сорс код на програмата
#include

#include

// Деклариране на функция

int SquareEquation(float a,float b,float c,float *d,float *x1,float *x2);
void main()

{

float a, b, c, d;



float x1,x2;

char FileName[100]; // Име на файл

FILE *fp,*fp1; // Указатели към файловете

printf("\n------------ Input -----------\n");

printf("\nInput file: ");

gets(FileName);

if( (fp = fopen(FileName,"rb"))== NULL)

{

printf("\n Error"); // Извеждане на съобщение при грешка



return;

}

printf("\nOutput file: ");



gets(FileName);

if( (fp1 = fopen(FileName,"wt"))== NULL)

{

fclose(fp);



printf("\n Error"); // Извеждане на съобщение при грешка

return;


}

// Прочитанен а данните от входния файл

fread(&a,sizeof(float),1,fp); // Прочита а от файла

fread(&b,sizeof(float),1,fp); // Прочита b от файла

fread(&c,sizeof(float),1,fp); // Прочита c от файла

fclose(fp);

// Запис на уравнението в изходния файл

fprintf(fp1,"\r\n %f.x^2 + %f.x + %f = 0",a,b,c);



switch(SquareEquation(a,b,c,&d,&x1,&x2))

{

case 0: {

printf("\r\n D = %f",d);

printf("\nNRK\n");

// Запис на дискриминантата във файла

fprintf(fp1,"\r\n Д = %f",d);

// Запис на резултата във файла

fputs("\r\nНяма реални корени\r\n",fp1);

} break;

case 1: {

printf("\r\n D = %f",d);

printf("\n X1=X2=%f",x1);

// Запис на дискриминантата във файла

fprintf(fp1,"\r\n Д = %f",d);

// Запис на резултата във файла

fprintf(fp1,"\r\n X1=X2=%f",x1);

} break;


case 2: {

printf("\r\n D = %f",d);

printf("\nX1=%f\tX2=%f",x1,x2);

// Запис на дискриминантата във файла

fprintf(fp1,"\r\n Д = %f",d);

// Запис на резултата във файла

fprintf(fp1,"\r\n X1=%f\tX2=%f",x1,x2);

} break;

}

fclose(fp1);

}
/**********************************************

// Име: SquareEquation

// Предназначение: Решава квадратно уравнение

// Прототип:

// int SquareEquation(float a,float b,float c,float *d,float *x1,float *x2)

// Входни данни

// a,b,c - Параметри на уравнението

// d - детерминанта

// x1,x2 - корени на уравнението

// Резултат:

// Функцията връща стойности 0,1 и 2

// 0 - Няма реални корени

// 1 - Има един реален корен

// 2 - Има два реални корена

***********************************************/



int SquareEquation(float a, float b, float c, float *d, float *x1, float *x2)

{

// Определяне на дискриминантата



*d = b*b-4*a*c;

if(*d<0)

{

return 0; // Няма реални корени

} else {

if(*d==0)

{

*x1 = -b/(2*a);



return 1; // Има един реален корен

}else {

*x1 = (-b+(float)sqrt(*d))/(2*a);

*x2 = (-b-(float)sqrt(*d))/(2*a);



return 2; // Има два реални корена

}

}



}


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©obuch.info 2019
отнасят до администрацията

    Начална страница