18171

Структуры языка ANSI C, операции над структурами

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

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

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

Русский

2014-03-24

1.07 MB

1 чел.

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

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

Лабораторная работа № 6. Структуры

Цель работы

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

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

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

Задание

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

следующих требований:

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

функции преобразования из строки в число;

- Исключить из программы выбор пользователем функции, подлежащей расчету;

- Рассчитанные значения G, F, Y хранить в массиве структур;

- Организовать вывод результатов расчета.

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

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

 

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

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <conio.h>

#include <string.h>

const double PI = 3.14159265;

//float arr[2][100];

char Res[1024];

struct ArrValue {

 int ID;

 float Argument;

 float Ordinata;

   } ;

struct ArrValue ArrValue_F[100];

struct ArrValue ArrValue_G[100];

struct ArrValue ArrValue_Y[100];

float EnterDigit(char* Param ) //функция считывания введенных символов в память как числовых данных

{

 char*  mmm_string="\0";

 char   buf[30];

 _flushall();

 printf("Enter %s:", Param);

 scanf("%s",buf);

 _flushall();

 mmm_string = _strdup(buf);

 

 return atof(mmm_string);

}

void OutArr(int Cnt, float ArrVal[])

{

 

 char *buffer;

 int  decimal, sign;

 strcpy_s(Res,"Result: ");

 

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

 {

   buffer = _fcvt(ArrVal[i], 7, &decimal, &sign );

strcat_s(Res,buffer);

   strcat_s(Res," ");

 }

 printf("\n%s\n", Res);

 return;

}

void FindSub()

{

 

 char   buf[30];

 char* buff;

 _flushall();

 printf("Enter substr:");

 fgets(buf,30,stdin);

 _flushall();

 int cnt=0;

 buff = strdup(Res);

 int i=0;

 while (buf[i]!=NULL)

 {

   if (buf[i] == '\n')

   {

     buf[i] = '\0';

   }

   i++;

 }

 buff = strstr(buff+1,buf);

 while (buff!=NULL)

 {

   

   buff = strstr(buff+1,buf);

   cnt++;

 }

 printf("Find %d \n",cnt);

 return;

}

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

{

 printf("Calculation G\n");

 float G,gg;

 float ArrG[100];

 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;

     

  ArrValue_G[i].ID = i;

  ArrValue_G[i].Argument = x;

     ArrValue_G[i].Ordinata = G;

  ArrG[i] = G;        

  i++;

   }

   x = x + dx;

 } while (x<x2);

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

 OutArr(i, ArrG);

 FindSub();

 

 return;

}

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

{

 printf("Calculation F\n");

 float F,ff;

 float ArrF[100];

 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);

     ArrValue_F[i].ID = i;

     ArrValue_F[i].Argument = x;

     ArrValue_F[i].Ordinata = F;

     ArrF[i] = F;

     i++;

  

   x = x + dx;

 } while (x<x2);

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

 OutArr(i, ArrF);

 FindSub();

 return;

}

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

{

 printf("Calculation Y\n");

 float Y,yy, yyy;

 float ArrY[100];

 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);      

  ArrValue_Y[i].ID = i;

  ArrValue_Y[i].Argument = x;

     ArrValue_Y[i].Ordinata = Y;

  ArrY[i] = Y;   

     i++;

   }

   x = x + dx;

 } while (x<x2);

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

 OutArr(i, ArrY);

 FindSub();

 return;

}

void vvod_dannih()

{

 int ch;

 int k;

 float a,x1,x2;

 

   system("cls");

 printf("Program from Work with Struct. Calculation Value F, G, Y\n");

     a = EnterDigit("a");

     _flushall();

     x1 = EnterDigit("x1");

     _flushall();

     x2 = EnterDigit("x2");

     _flushall();

     do 

     {

       _flushall();

       printf("Enter K (< 100):");

       scanf_s("%d",&k);

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

     f_G(a,x1,x2,k);

     f_F(a,x1,x2,k);

     f_Y(a,x1,x2,k);

  return;                 

}

int main()

{

 vvod_dannih();

 system("pause");

 return 0;

}

Результаты работы

Ввод/вывод данных

Значение структуры ArrValue_G


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

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


 

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

18575. УРОВНИ ПРЕДСТАВЛЕНИЯ ДАННЫХ 117.5 KB
  УРОВНИ ПРЕДСТАВЛЕНИЯ ДАННЫХ Существует три уровня представления данных: уровень пользователя предметная область логический и физический. Каждый объект предметной области характеризуется своими атрибутами каждый атрибут имеет имя и значение. Например объект осц
18576. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ 42.5 KB
  ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ Процесс разработки структуры БД на основании требований пользователя называют проектированием БД ПБД. Результатами ПБД являются структураБД состоящая из логических и физических компонент и руководство для прикладных программистов. Р...
18577. Функции сетевого программного обеспечения 33.5 KB
  Функции сетевого программного обеспечения Принято выделять в ПО АС общесистемное ПО системные среды и прикладное ПО. К общесистемному ПО относят ОС используемых ЭВМ и вычислительных систем а также сетевое ПО типовых телекоммуникационных услуг. Основой системной ср
18578. Прикладные протоколы и телекоммуникационные информационные услуги 65.5 KB
  Прикладные протоколы и телекоммуникационные информационные услуги Прикладные протоколы и телекоммуникационные информационные услуги Основные услуги телекоммуникационных технологий электронная почта передача файлов телеконференции справочные службы доски о
18579. Системы распределенных вычислений 42.5 KB
  Системы распределенных вычислений При выполнении проектных процедур с использованием более чем одного узла сети различают режимы удаленного узла и дистанционного управления рис. 5.1. В режиме удаленного узла основные процедуры приложения исполняются на терминальн...
18580. Информационная безопасность. Симметричную и асимметричную схемы шифрования 38 KB
  Информационная безопасность При обмене информацией между участниками проектирования возможны как утечка конфиденциальных данных так и нарушение целостности данных. Поскольку в САПР зачастую используются связи со смежными предприятиями через сети общего пользовани
18581. Основные функции и проектные процедуры, реализуемые в ПО САПР 40 KB
  Основные функции и проектные процедуры реализуемые в ПО САПР В состав развитых машиностроительных САПР входят в качестве составляющих системы CAD САМ и CAE. Функции CADсистем в машиностроении подразделяют на функции двумерного и трехмерного проектирования. К функциям 2D...
18582. Автоматизированные системы управления Автоматизация управления предприятиями 42 KB
  Автоматизированные системы управления Автоматизация управления предприятиями Системы управления в промышленности как и любые сложные системы имеют иерархическую многомодульную структуру. Если предприятие является концерном научнопроизводственным объединение
18583. Логистические системы 36 KB
  Логистические системы Сложность задач управления которые приходится решать в современных производственных системах обусловливает интерес к логистике и развитию логистических систем. Традиционно логистику связывали с управлением процедурами движения сырья от исто