42707

Изучение массивов в языке ANSI C

Лабораторная работа

Информатика, кибернетика и программирование

Задача лабораторной работы состоит в практическом освоении массивов, совмещения их с функциями ввода и вывода, математическими функциями в одном приложении, написание приложения по индивидуальному варианту.

Русский

2014-03-24

1.8 MB

6 чел.

Лабораторная работа № 4

по дисциплине “Языки программирования”

Массивы

Цель работы

Целью данной лабораторной работы является изучение массивов в языке ANSI C.

Задача лабораторной работы

Задача лабораторной работы состоит в практическом освоении массивов, совмещения их с функциями ввода и вывода, математическими функциями в одном приложении, написание приложения по индивидуальному варианту.

Задание

Модифицировать программу из лабораторной работы № 3 с учетом следующих требований:

- Организовать ввод начального и конечного значений аргумента и  параметра, количество шагов расчета функций G, F, Y;

- Организовать расчет значений функций  G, F, Y с сохранением результатов в массив;

- В полученных массивах найти и вывести наибольший и наименьший элементы;

- Организовать вывод результатов расчета в табличной форме (пары аргумент - значение).

Составим схему программы:

Блок-схема основной программы и дополнительных функций.

Листинг программы

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

const double PI = 3.14159265;

float arr[2][100];

void f_G(float a, float x1,float x2, int k)

{

 float G;

 float gg;

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

   gg = 25 * a * a + 30 * a * x + 9 * x * x;

   if (gg != 0 )

   {

     G = 9 * (7 * a * a - 19 * a * x + 10 * x * x) / gg;

     arr[1][i] = x;

     arr[2][i] = G;

     i++;

   }

   x = x + dx;

 } while (x<x2);

 for (int j=0;j<i;j++)

 {

   printf("%4f \t %8f\n",arr[1][j],arr[2][j]);

 }

 

 return;

}

void f_F(float a, float x1,float x2, int k)

{

 float F;

 float ff;

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

  ff = 9 * a * a - 13 * a * x - 10 * x * x;

   

  F = cos(ff);

     arr[1][i] = x;

     arr[2][i] = F;

     i++;

 

   x = x + dx;

 } while (x<x2);

 for (int j=0;j<i;j++)

 {

   printf("%4f \t %8f\n",arr[1][j],arr[2][j]);

 }

 return;

}

void f_Y(float a, float x1,float x2, int k)

{

 float Y;

 float yy;

 float x,dx;

 x = x1;

 dx = fabs((x2-x1)/k);

 int i = 0;

 do 

 {

 yy = -80 * a * a - 46 * a * x + 21 * x * x + 1;

 

 if (yy >= 0)

   {

     Y = logf(yy)/logf(10.0);

     arr[1][i] = x;

     arr[2][i] = Y;

     i++;

   }

   x = x + dx;

 } while (x<x2);

 for (int j=0;j<i;j++)

 {

   printf("%4f \t %8f\n",arr[1][j],arr[2][j]);

 }

 

 

 

 return;

}

void menu()

{

 int ch;

 int k;

 float a,x1,x2;

 do 

 {

   system("cls");

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

   printf("F1. Function G\n");

   printf("F2. Function F\n");

   printf("F3. Function Y\n");

   printf("ESC. Exit...\n");

   ch = _getch();

   switch (ch)

   {

   case 0: { switch (_getch())

           {

   case 59:      //F1

     _flushall();

           

     printf("Enter a:");

     scanf_s("%f",&a);

     _flushall();

     printf("Enter x1:");  //Началное значение интервала для расчета функции G

     scanf_s("%f",&x1);

     _flushall();

     printf("Enter x2:"); //Конечное значение интервала для расчета функции G

     scanf_s("%f",&x2);

  

     do 

     {

       _flushall();

       printf("Enter K (not biger 100):");  //Количество шагов расчета функции G

       scanf_s("%d",&k);

     } while (k<0 || k>100);

     f_G(a,x1,x2,k);

     system("pause");

     break;

   case 60:      //F2

     _flushall();

     

     printf("Enter a:");

     scanf_s("%f",&a);

     _flushall();

     printf("Enter x1:");  //Началное значение интервала для расчета функции F

     scanf_s("%f",&x1);

     _flushall();

     printf("Enter x2:"); //Конечное значение интервала для расчета функции F

     scanf_s("%f",&x2);

  

     do 

     {

       _flushall();

       printf("Enter K (not biger 100):"); //Количество шагов расчета функции F

       scanf_s("%d",&k);

     } while (k<0 || k>100);

     f_F(a,x1,x2,k);

     system("pause");  

     break;                                

   case 61:     //F3

     _flushall();

    

     printf("Enter a:");

     scanf_s("%f",&a);

     _flushall();

     printf("Enter x1:");  //Началное значение интервала для расчета функции Y

     scanf_s("%f",&x1);

     _flushall();

     printf("Enter x2:"); //Конечное значение интервала для расчета функции Y

     scanf_s("%f",&x2);

     do 

     {

       _flushall();

       printf("Enter K (not biger 100):"); //Количество шагов расчета функции Y

       scanf_s("%d",&k);

     } while (k<0 || k>100);

     f_Y(a,x1,x2,k);

     system("pause");

     break;

           }

           break;   

           }

   }

 } while (ch !=27);

 return;                 

}

int main()

{

 menu();

 system("pause");

 return 0;

}

Тестирование работы программы

Функция f_G


Функция f_F

Функция f_Y

Выводы по работе

В ходе выполнения лабораторной работы я изучил особенности  написания  программы  на языке ANSI C, в основе которой лежит алгоритм структуры с массивами.


 

А также другие работы, которые могут Вас заинтересовать

27705. Умышленное причинение тяжкого и средней тяжести вреда здоровью (ст. ст. 111, 112 УК). Признаки тяжкого и средней тяжести вреда здоровью. Отличие преступления, предусмотренного ч.4 ст. 111 УК, от убийства 37 KB
  Признаки тяжкого и средней тяжести вреда здоровью. Кроме того причинение тяжкого вреда здоровью приносит длительные физические страдания инвалидность и прочие негативные для потерпевшего последствия. 2 Объективная сторона: выражается в противоправном причинении тяжкого вреда здоровью человека.
27707. Условное осуждение. Основания, условия и порядок его применения. Условия продления испытательного срок и отмены условного осуждения 32 KB
  Условия продления испытательного срок и отмены условного осуждения. Применение условного осуждения возможно только при назначении наказания в виде: исправительных работ; ограничения по военной службе; ограничения свободы; содержания в дисциплинарной воинской части; лишения свободы на срок до восьми лет. Законодатель ограничивает возможность применения условного осуждения не только определенными видами наказания но и максимальным сроком. Закон предусматривает возможность применения условного осуждения при назначении лишения свободы...
27710. Хулиганство (ст. 213 УК). Отличие этого преступления от вандализма (ст. 214 УК) 55 KB
  При квалификации действий лица по пункту а части 1 статьи 213 УК РФ судам следует при необходимости на основании заключения эксперта устанавливать является ли примененный при хулиганстве предмет оружием предназначенным для поражения живой или иной цели. В случаях когда в процессе совершения хулиганства лицо использует животных представляющих опасность для жизни или здоровья человека содеянное с учетом конкретных обстоятельств дела может быть квалифицировано по пункту а части 1 статьи 213 УК РФ. дает основание для квалификации содеянного...
27712. Принудительные меры медицинского характера. Виды, основания применения и порядок исполнения. Продление, изменение и прекращение применения принудительных мер медицинского характера 34.5 KB
  Продление изменение и прекращение применения принудительных мер медицинского характера. Принудительные меры медицинского характера это установленные уголовным законом меры государственного принуждения применяемые к лицам совершившим преступление и нуждающимся в лечении с целью их излечения и предупреждения с их стороны совершения новых общественно опасных деяний. Принудительные меры медицинского характера сами по себе наказанием не являются отрицательной оценки деяния от имени государства не выражают кары в себе не содержат судимости...