18171

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

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

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

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

Русский

2014-03-24

1.07 MB

3 чел.

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


 

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

11682. Автоматизація управління персоналом на базі програмного засобу Система:Кадры 117.73 KB
  Лабораторна робота №5 Тема: автоматизація управління персоналом на базі програмного засобу Система:Кадры. Мета роботи: набути практичних навичок роботи з автоматизованою системою кадрового обліку Кадры навчитися вести безперервний облік персоналу підприємства...
11683. Организация работы лесопилки с использованием инновационных программных продуктов 720 KB
  1. Минимизация отходов лесопилки Пилорама заготавливает оцилиндровывает и сушит 20футовые брёвна которые в дальнейшем используются для строительства бревенчатых домов бань и т.п. Поступил новый заказ для которого требуется 275 шт. 8футовых 100 шт. 10футовых и 250 шт. 12фу...
11684. Системи счислення в ЕОМ 64.5 KB
  ЛАБОРАТОРНА РОБОТА № 1 Тема: Системи счислення в ЕОМ. Ціль: Знайомство системами счислення в ЕОМ виконання арифметичних дій вивчення правил переведення із однієї системи счислення до іншої. Теоретичні відомо...
11685. Застосування спеціального програмного забезпечення для роботи з 8-ми розрядним мікропроцесором 309 KB
  Лабораторна робота №2 Застосування спеціального програмного забезпечення для роботи з 8ми розрядним мікропроцесором. ЗАВДАННЯ Відповідно до свого варіанта завдання за допомогою емулятору процесора К580ВМ80 записати та виконати прості арифметичнологічні операці
11686. Реалізація логічних та арифметичних операцій за допомогою восьми розрядного мікропроцесора 214.5 KB
  Лабораторна робота №3 Тема: Реалізація логічних та арифметичних операцій за допомогою восьми розрядного мікропроцесора. Мета: Перевірити на практиці правильність виконання різноманітних операцій. ЗАВДАННЯ Відповідно до свого варіанта використовуючи емулятор пр
11687. Застосування спеціального програмного забезпечення для реалізації умовних переходів при роботі з восьми розрядним мікропроцесором 269.5 KB
  Лабораторна робота №4 Застосування спеціального програмного забезпечення для реалізації умовних переходів при роботі з восьми розрядним мікропроцесором. ЗАВДАННЯ Відповідно до свого варіанта завдання за допомогою емулятору процесора К580ВМ80 написати програму щ...
11688. Научиться проводить диагностику системы с помощью программ Everest, CPU-Z, Sandra, Belarc Advisor, FreshDiagnose и д.р 401 KB
  Лабораторная работа №5 Тема: Диагностика основных блоков ПК. Цель работы: Научиться проводить диагностику системы с помощью программ Everest CPUZ Sandra Belarc Advisor FreshDiagnose и д.р. Теоретические сведения Компьютер высокотехнологичная вещь он состоит из множества неза...
11689. Вивчення архітектури материнської плати 35.5 KB
  Лабораторна робота №6 Тема: Вивчення архітектури материнської плати. Мета: Визначити архітектуру та основні складові системної плати. Структура заняття І. Організаційна частина заняття. Перевірка присутності студентів на занятті. ІІ. По...
11690. Застосування постійного запамятовуючого пристрою (BIOS) для визначення конфігурації ЕОМ 33 KB
  Практична робота №7 Тема: Застосування постійного запамятовуючого пристрою BIOS для визначення конфігурації ЕОМ. Мета: Отримати практичні навички при роботі з базовою системою введення виведення даних BIOS. Структура заняття І. Організаційна частина зан