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, в основе которой лежит алгоритм структуры с массивами.


 

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

69607. Определение свободной линейной усадки некоторых литейных сплавов 162 KB
  Краткие теоретические сведения Усадка это свойство металлов и сплавов уменьшать линейные размеры отливки в процессе ее охлаждения после кристаллизации до нормальной температуры. литейная форма не будет препятствовать усадке отливки и усадка будет свободной линейной.
69610. АНАЛИЗ СИСТЕМНЫХ ТРЕБОВАНИЙ И РАЗРАБОТКА UML ДИАГРАММ КОНЦЕПТУАЛЬНОГО УРОВНЯ МОДЕЛИРОВАНИЯ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ 49.55 KB
  Диаграммы вариантов использования описывают функциональное назначение системы или то что система должна делать. Диаграмма стойкости Способ дальнейшей детализации модели прецедентов Диаграмма последовательностей Диаграммы последовательности используются для моделирования взаимодействия...
69611. РАЗРАБОТКА UML ДИАГРАММ ЛОГИЧЕСКОГО УРОВНЯ ПРОЕКТИРОВАНИЯ КОМПОНЕНТНЫХ ПРОГРАМНЫХ РЕШЕНИЙ: МОДЕЛИРОВАНИЕ СТАТИСТИЧЕСКИХ АСПЕКТОВ 45.71 KB
  Описывает структуру системы показывая её классы их атрибуты и операторы а также взаимосвязи этих классов. Диаграмма объектов Они показывают множество объектов экземпляров классов изображенных на диаграмме классов и отношений между ними в некоторый момент времени.
69612. РАЗРАБОТКА UML ДИАГРАММ ЛОГИЧЕСКОГО УРОВНЯ ПРОЕКТИРОВАНИЯ КОМПОНЕНТНИХ ПРОГРАММНЫХ РЕШЕНИЙ (КПР): МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКИХ АСПЕКТОВ 45.05 KB
  Диаграмма состояний Показывает как объект переходит из одного состояния в другое. Диаграмма активности Используются для визуализации алгоритмов программы. Диаграмма кооперации Показывает поток сообщений между объектами системы и основные ассоциации между ними...
69613. Разработка спецификации системных требований в процессе проектирования ПО 16.6 KB
  Разработка программного обеспечения для изучения динамического хаоса Прецедент: Решение задач для одномерных отображений Заинтересованные личности прецедента и их требования студент: изучить и получить первичные знания о динамическом хаосе преподаватель: обучить студентов с помощью программы.
69614. ДВИГАТЕЛЬ АСИНХРОННЫЙ С КОРОТКОЗАМКНУТЫМ РОТОРОМ 18.97 MB
  Цель работы: рассчитать размеры статора и ротора, выбрать тип обмотки, обмоточные провода, изоляцию, материалы активных и конструктивных частей машины. Сконструировать и рассчитать отдельные части машины, то есть связать электротехнические понятия с геометрическими размерами.
69615. Управление риском 246 KB
  Сжатие графиков проекта. В контексте проекта риск это вероятность наступления нежелательного события и всех его возможных последствий Некоторые нежелательные события можно выявить еще до начала проекта некоторые нельзя ни предвидеть ни даже вообразить.