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


 

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

41374. Трансляция сетевых адресов NAT 170.52 KB
  Сначала мы собрали типологию сети представленную на рис. 1 IP адреса сетевых интерфейсов После этого мы настроили OSPF маршрутизацию рис. Рис.
41375. Виртуальные локальные сети VLAN 209.62 KB
  3 показан ping подсети 20 и подсети 30.4 показана недоступность компьютера из подсети 20 к подсети 30.4 Ping из подсети 20 в подсеть 30 Далее мы изменили типологию №1 на типологию №2 которая изображена на рис. Для этого мы разбили исходную сеть на две подсети.
41376. Введение в межсетевую операционную систему Cisco IOS 583 KB
  В данной лабораторной работе мы знакомились с компонентами межсетевой операционной системы Cisco IOS. Мы узнали, чем отличаются друг от друга привилегированный, пользовательский режимы и режим глобального конфигурирования, познакомились с некоторыми консольными командами, такими как CDP (Cisco Discovery Protocol), ping, а так же выполнили лабораторную работу, снимки которой будут представлены ниже.
41377. Настройка статической маршрутизации 530.94 KB
  Перед тем, как мы начали выполнять основную часть работы, мы создали типологию, которая указана на рис.1. После создания типологии, мы задали IP адреса сетевым интерфейсам маршрутизаторов, интерфейсам управления коммутаторов и сетевым интерфейсам локальных компьютеров. Далее мы установили связь на физическом и канальном уровнях между соседними маршрутизаторами по последовательному сетевому интерфейсу.
41378. Настройка протоколов динамической маршрутизации 388.37 KB
  Перед тем, как мы начали выполнять основную часть работы, мы создали типологию, которая указана на рис.1. После создания типологии, мы задали IP адреса сетевым интерфейсам маршрутизаторов, интерфейсам управления коммутаторов и сетевым интерфейсам локальных компьютеров. Далее мы установили связь на физическом и канальном уровнях между соседними маршрутизаторами по последовательному сетевому интерфейсу. Пример показан на рисунке 2, связь между C1-R1.
41379. Применение списков управления доступом ACL 164.97 KB
  Перед тем как мы начали выполнять данную работу мы настроили динамическую маршрутизацию между всеми узлами сети типология которой представлена на рис. На рис. 2 предоставлен список управления доступом на маршрутизаторе R1 Рис.
41380. Базы данных SQL Server аgent SSА 197 KB
  SS job: SSзадача которую можно определить один раз и выполнять по расписанию. Создание SS job: рр ррр PGE 1.
41381. Базы данных SQLXML XML: Extensible Mrkup Lnguge 47.5 KB
  XHTML – словарь XML. XMLдокумент. XML: правильно построенный документ – соответствует синтаксическим правилам XML.
41382. Базы данных Транзакции. Транзакция: одна или несколько команд SQL 236.5 KB
  Транзакция: блокировка в транзакциях dedlock Транзакция: уровни изоляции NSI SQL92 читатели писатели RED UNCOMMITED неподтвержденное грязное чтение. Читатель не может изменить незафиксированные строки ожидает; RED COMMITED подтвержденное чтение. Читатель не может прочитать неподтвержденные данные ожидает писатель может изменить и удалить уже прочитанные читателем данные; REPETBLE RED повторяемое чтение. RED UNCOMMITED RED COMMITED RERETBLE RED Если в 12.