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


 

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

19798. Архітектура, основні поняття і визначення глобальних мереж 19.54 KB
  Комунікаційна мережа система що складається з об'єктів що здійснюють функції генерації перетворення зберігання і споживання продукту званих пунктами вузлами мережі і ліній передачі зв'язків комунікацій з'єднань що здійснюють передачу продукту між пунктами.Відм...
19799. Базові технології локальних мереж 30.5 KB
  Базові технології локальних мереж В локальних мережах як правило використовується середовище передачі даних моноканал що розділяється і основна роль відводиться протоколам фізичного і канального рівнів оскільки ці рівні найбільшою мірою відображають специфік
19800. Засоби доступу до Internet. Адресація в Internet IP –адреси; доменна система DNS 26.5 KB
  1.Засоби доступу до Internet. Адресація в Internet: IP адреси; доменна система DNS Засоби доступу до Інтернету є: Підключення по комутованій телефонній лінії за допомогою модемуПідключення до домашньої мережі підключення будинкамиПідключення із застосуванням супутни...
19801. Мережеві протоколи. Типи протоколів 34.5 KB
  Мережеві протоколи.Типи протоколів. Мереже́вий протоко́л в комп'ютерних мережах заснований на стандартах набір правил що визначає принципи взаємодії комп'ютерів в мережі. Протокол також задає загальні правила взаємодії різноманітних програм мережевих вузлів чи сис...
19802. Основні поняття локальних мереж. Класифікація ЛОМ 36 KB
  Основні поняття локальних мереж. Класифікація ЛОМ. Лока́льна комп'ю́терна мере́жа англ. Local Area NetworkLAN являє собою об'єднання певного числа комп'ютерів іноді досить великого на відносно невеликій території. В порівнянні з глобальною мережею WAN локальна мережа зазвич
19803. Поняття браузера. Пошукові системи в Internet 27 KB
  2.Поняття браузера. Пошукові системи в Internet. Браузер це програма для навігації та перегляду вебресурсів вебсторінок яка дозволяє запитувати і переглядати файли в локальній мережі та мережі Інтернет. Зазвичай браузери наділені здібностями перегляду елек
19804. Структура та основні принципи роботи мережі Internet 15.57 KB
  Принципи побудови мережі Інтернет це безліч комп'ютерів хостів і різних мереж об'єднаних мережею на базі протоколів зв'язку TCP / IP. Комп'ютери підключені до мережі Інтернет можуть мати будьякі апаратні і програмні платформи але при цьому вони повинні підтримувати ст
19805. Поняття про математичне програмування 13.95 KB
  Математичне програмування складова частина прикладної математичної дисципліни Дослідження операцій. До інших основних розділів цієї дисципліни відносяться теорія марковських випадкових процесів теорія масового обслуговування теорія ігор методи сітьового плану...
19806. Поняття цільової функції 13.43 KB
  Цільова функція z x1 x2 ... x n функція що виражає залежність прийнятого критерію оптимальності від керованих змінних. Критерій оптимальності є мірою наближення розвязку до поставленої мети. В економічних задачах як правило таким критерієм виступає показник ефективн