18171

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

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

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

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

Русский

2014-03-24

1.07 MB

2 чел.

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


 

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

83624. Расчёт осветительной сети 34.54 KB
  Освещение безопасности предназначено для продолжения работы при аварийном отключении рабочего освещения. Светильники рабочего освещения и светильники освещения безопасности должны питаться от независимых источников. Устройство рабочего освещения обязательно во всех помещениях независимо от устройства в них других видов освещения. Светильники аварийного освещения рекомендуется по возможности выделять из числа светильников рабочего освещения.
83625. Картограмма нагрузок. Определение условного центра электрических нагрузок 56.37 KB
  Определение условного центра электрических нагрузок. Картограмма нагрузок. Для определения места положения ГПП ТП при проектировании системы электроснабжения на генеральный план промышленного предприятия наносится картограмма нагрузок которая представляет собой размещённые на генеральном плане окружности причём площади ограниченные этими окружностями в выбранном масштабе равны расчётным нагрузкам цехов.
83626. МОЛНИЕЗАЩИТА ПОДСТАНЦИЙ 32.29 KB
  Молниезащита Iкатегории Защита от прямых ударов молнии зданий и сооружений относимых по устройству молниезащиты к I категории должна выполняться отдельно стоящими стержневыми или тросовыми молниеотводами. Защита от прямых ударов молнии зданий и сооружений II категории с неметаллической кровлей должна быть выполнена отдельно стоящими или установленными на защищаемом объекте стержневыми или тросовыми молниеотводами обеспечивающими зону защиты в соответствии с требованиями табл. Установка молниеприемников или наложение молниеприемной сетки не...
83627. Условия и требования норм проектирования по выбору трансформаторов тока (встроенные или отдельно стоящие, 10% погрешность, чувствительность продольной дифференциальной защиты) 39.83 KB
  Трансформаторы тока предназначены для понижения первичного тока до стандартной величины и для отделения цепей измерения и защиты от первичных цепей высокого напряжения. Основные номинальные параметры трансформаторов тока: Номинальное напряжение линейное Uном кВ Номинальный первичный ток I1ном А Номинальный вторичный ток I2ном А 1 или 5 Номинальная вторичная нагрузка с коэффициентом мощности cosφ2=0.8 ВА Номинальный класс точности для измерений Номинальный класс точности для защиты Коэффициент трансформации...
83628. Требования нормами технологического проектирования и САНПИНом к городским подстанциям и электрическим сетям 32.97 KB
  Нормами технологического проектирования к городским ПС и электрическим сетям рассматриваются и регламентируются следующие разделы: 1 Общие положения общие указания обьем и состав проектной документации 2 Расчетные электрические нагрузки расчетные электрические нагрузки жилых зданий электрические нагрузки общественных зданий и промышленных предприятий электрические нагрузки распределительных линий до 1 кВ электрические нагрузки сетей 106 кВ и ЦП укрупненные показатели расхода электроэнергии коммунальнобытовых потребителей 3...
83629. Очерёдность выполнения чертежей «План и разрезы подстанции и плана фундаментов» и что отражено на этих чертежах 28.85 KB
  В рабочие чертежи включают: 1 общие данные по рабочим чертежам; 2 принципиальную схему главных цепей; 3 принципиальные полные схемы релейной защиты управления измерения сигнализации и т.; 4 планы расположения электрооборудования ошиновки и прокладки сетей заземления; 5 планы прокладки электрических сетей; 6 схемы таблицы подключения; 7 кабельный журнал; 8 рабочую документацию задания МЭЗ; 9 эскизные чертежи общего вида НКУ. На схеме указывают: 1 номинальное напряжение сборных шин; 2 типы номинальные токи и сопротивление...
83630. Перечислить основные виды спецификаций и что отражает экспликация на чертеже 30.3 KB
  Описание спецификации дается в ГОСТ 2. Над основной надписью помещаются графы спецификации. В основной надписи спецификации указывают наименование сборочной единицы масштаб ее изображения. Спецификации первого типа чаще используются в конструкторскотехнологических подразделениях а второго на сборочных участках и при работе по заказам.
83631. Перечислить мероприятия предотвращающие электромагнитную наводку на кабели в ОРУ и устройства в ЗРУ 29.45 KB
  Должны выполняться мероприятия исключающие электростатические и электромагнитные наводки на металлических элементах расположенных в помещениях аккумуляторных батарей а также заносы туда высоких потенциалов. Для защиты от электростатической индукции на указанных элементах достаточно надежно присоединить к общему заземляющему устройству электростанций и подстанций гладкие трубы в помещениях аккумуляторных батарей предназначенные для отопления и выдержать расстояния от токоведущих шин до частей здания и других заземленных элементов не менее...
83632. Назначение кабельного журнала и что отражено на листах кабельного журнала 30.27 KB
  В кабельном журнале описывается маркировка каждого кабеля откуда и куда он идет его марка длина кабельной линии и его назначение. Назначение: Всю необходимую информацию о кабелях можно представить непосредственно на схемах: можно указать марку длину способ прокладки кабеля. Однако при построении достаточно большой системы во избежание перегруженности чертежей удобнее вынести эти данные в отдельную таблицу оставив на схемах лишь присвоенные кабелям обозначения. Во время монтажа в кабельный журнал заносятся следующие сведения: номер...