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


 

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

30200. Моделирование систем управления различного уровня 1.04 MB
  Новшества различного рода проявляют себя в организациях в виде организационной модернизации системы управления, что требует уточнения основных параметров системы, отдельных связей, применение более эффективных методов их реализации, увеличение уровня надежности. Организационная модернизация системы затрагивает уже не только отдельные связи, но и структуру управления, в общем
30201. Общая классификация вторжений и характеристика угроз 136.5 KB
  3] Правовая защита Защита информации Возросший интерес к проблеме защиты информации основан на объективных процессах создания и сбора информации и информационного обмена. Угроза искажения информации существует в любой точке сети начиная от места ввода в сеть сообщения и до места его получения. Проблемы защиты информации затрагивают различные аспекты ее представления хранения и обработки а также вопросы выбора и реализации средств защиты.
30202. Налоги и налогообложение. Методические указания по выполнению аналитической части дипломной работы 60.5 KB
  Содержание и оформление разделов основной части ВКР По структуре дипломная работа должна состоять из следующих разделов: Введение; Теоретическая часть работы; Практическая часть работы; Заключение. В общем виде ВКР включает пояснительную записку и иллюстрационные плакаты. II раздел баланса стр. 220 стр.
30203. Анализ пожарной опасности медицинских учреждений 623 KB
  Анализ зарегистрированных крупных пожаров в медицинских учреждениях показал что при пожарах в этих зданиях создается сложная обстановка для пожаротушения поэтому требуется разработка комплекса мероприятий по противопожарной защите. В профилактической работе ГПС важно не только предупреждение пожаров но и создание условий для их локализации. Знание условий распространения пожара позволяет заранее предусмотреть эффективные решения пожарной безопасности для предупреждения крупных пожаров.
30204. Состояние и пути совершенствования технологии производства молока в ООО «Бебелево» Ферзиковского района Калужской области 44.5 KB
  Выпускная квалификационная работа бакалаврская работа изложена на 77 страницах компьютерного набора состоит из введения пяти разделов характеристика хозяйства и организационноэкономический анализ хозяйственной деятельности; современное состояние и зоотехническая оценка отраслей животноводства; мероприятия по охране труда животноводов и охране природы; работа в условиях радиоактивного загрязнения местности; экспериментальное исследование по теме выводов и предложений списка использованной литературы; содержит 28 таблиц. Состояние...
30205. РАЗРАБОТКА СИСТЕМЫ КОМПЬЮТЕРНОГО ТЕСТИРОВАНИЯ 1.67 MB
  Обследование объекта и обоснование необходимости систем компьютерного тестирования. Очень актуальным становится использование школами различных систем компьютерного тестирования. Объектом исследования является системы компьютерного тестирования используемые для контроля знаний.
30206. Изучение туристских ресурсов на территории Аргентины 923.5 KB
  Эта латиноамериканская страна становилась чемпионом Кубка мира дважды в 1978 а также в 1986 годах и такая знаменитая личность конечно после Че Гевары как Диего Марадонна обеспечивает загруженность поклонникам футбола и журналистам уже последние 10 лет. Временный поверенный в делах Аргентины в России Маркос Беднарски недавно сообщал журналистам что в 2007 году число российских туристов посетивших Аргентину выросло на 10. Лист № докум. Подпись Дата Лист 2 МОГКТЭП 100401 ПЗ ДР 15781 зачеткак1212номзачеткизачетки ...