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


 

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

19551. Строение матрицы Адамара 448.32 KB
  2 Лекция 20. Строение матрицы Адамара Элементы матрицы можно вычислить непосредственно. Нумерацию строк и столбцов начнем с 0. В этом случае номер строки или столбца задается двоичным вектором: . Положим . Предложение. Элемент матрицы . Доказательство. Для ...
19552. Преобразования Адамара и Хаараара 445.63 KB
  2 Лекция 21. Преобразования Адамара и Хаара Подсчет числа перемен знаков в матрице Адамара Аналогом частоты в базисе Фурье для матриц Адамара является число перемен знаков в строке. Предложение. Для того чтобы найти число перемен знаков в строке с номером...
19553. Фильтрация и преобразование Адамара 260.31 KB
  2 Лекция 22. Фильтрация и преобразование Адамара Результат любого из рассмотренных выше преобразований рассматривается как спектр исходного сигнала. В этой связи имеется возможность изменить спектр произвольным образом а затем применить обратное преобраз
19554. Метод главных компонентов в задаче сжатия 341.43 KB
  1 Лекция 23. Метод главных компонентов в задаче сжатия Идея сжатия сигнала на основе разложения по ортогональному базису была изложена выше. Рассмотренные базисы являются универсальными и не учитывают особенность сигнала. Когда имеется набор сигналов одной п...
19555. Линейное предсказание 442.3 KB
  1 Лекция 24. Линейное предсказание Пусть имеется вещественный случайный процесс с дискретным временем обладающий свойствами: зависит только от . Задача заключается в предсказании следующего значения на основе предыдущих. Требуется выбрать коэффициенты ...
19556. Вивчення приладів магнітоелектричної системи 26.17 KB
  В ході лабораторної роботи досліджувався прилад магнітоелектричної системи М906 для вимірювання струму та напруги. Для розширення меж вимірювання струму використовуються шунти. Шунтами є опори, які підключаються паралельно до приладу.
19557. Технічне конструювання. Основні правила оформлення креслень (типи ліній, нанесення розмірів, застосування масштабу, умовні позначення). Креслярський інструмент 38 KB
  Тема 1.3: Технічне конструювання. Основні правила оформлення креслень типи ліній нанесення розмірів застосування масштабу умовні позначення. Креслярський інструмент. Мета: Навчальна: сформувати знання вміння та навички креслення рамки і оформляти креслення. Вих...
19558. Прийоми поділу відрізків і кутів на рівні значення 31.5 KB
  Тема 12: Прийоми поділу відрізків і кутів на рівні значення. Мета: Навчальна: сформувати знання вміння та навички поділу відрізків та кутів. Виховна: виховувати в учнів культуру праці та бережливе ставлення до інструментів охайне виконання роботи. Розвиваюч...
19559. Охрана недр в Российской Федерации 89 KB
  Охрана недр рассматривается как система мероприятий, обеспечивающая сохранение существующего разнообразия и рациональное использование геологической среды, образование особо охраняемых геологических объектов, имеющих особую научную, историческую, культурную, эстетическую и рекреационную ценность.