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


 

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

84434. Методические указания: Основы управления персоналом 221 KB
  Целью курсовой работы является дальнейшее углубление и специализация знаний и навыков студентов в управлении персоналом в поэлементном, функциональном и объектном разрезах в условиях практического решения реальных проблем.
84436. МЕТОД РАСЧЕТА ЭКОНОМИЧЕСКОЙ ДОБАВЛЕННОЙ СТОИМОСТИ (EVA) 56.72 KB
  Управление факторами влияющими на стоимость компании. Это объяснялось тем что существующие до этого времени методы оценки деятельности фирмы уже не могли удовлетворять растущим требованиям менеджеров поскольку не позволяли оценивать деятельность компании в долгосрочном периоде.
84437. БИЗНЕС-ПЛАН ФИРМЫ «ФОТОС» 369.5 KB
  Результатом настоящего проекта будет являться открытие нового фотосалона и реализация фото-продукции и фото-услуг. Данный фотосалон будет выгодно отличаться от конкурентов наличием новейшего оборудования, позволяющем печатать на множестве различных твердых материалов...
84438. Многофункциональные аварийно-спасательные суда 3.63 MB
  Многофункциональное аварийно-спасательное судно - предназначено для борьбы с аварийными разливами нефти и спасательных операций. Его характерной особенностью является «косой» дизайн с асимметричным корпусом и несколькими винторулевыми колонками, что позволяет судну работать на переднем и заднем ходу...
84439. Усилитель звуковых частот (УЗЧ) 1.56 MB
  Усилители низкой частоты наиболее широко применяются для усиления сигналов, несущих звуковую информацию, в этих случаях они называются, также, усилителями звуковой частоты, кроме этого УНЧ используются для усиления информационного сигнала в различных сферах: измерительной технике...
84440. Анализ финансового состояния ООО «ОКОР» 627 KB
  Особо внимание уделяется эффективности использования оборотных средств, так как рациональное оборотных средств влияет на основные показатели хозяйственной деятельности промышленного предприятия: на рост объема производства, снижение себестоимости продукции, повышение рентабельности...
84441. Решение инженерной задачи методами вычислительной математики 459 KB
  В результате выполнения курсовой работы должен появиться навык и умение практического использования полученных знаний для решения некоторых теоретических и практических задач. Результаты сравнения представить в виде таблицы относительных погрешностей решения.
84442. Понятие алгоритма. Алгоритмизация 118.84 KB
  Вывод об алгоритмизации как части этапа программирования Алгоритмизация Понятие алгоритма Алгоритм - это последовательность команд выполнение которых приводит к решению поставленной задачи. Понятие алгоритма относится к первоначальным основным базисным понятиям математики.