17788

Символы и строки в ANSI C

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

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

Целью данной лабораторной работы является изучение на практике строк языка ANSI C, операции над строками, функций стандартной библиотеки по работе со строками.

Русский

2014-03-24

531.4 KB

7 чел.

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

по дисциплине “Языки программирования”

Символы и строки

Цель работы

Целью данной лабораторной работы является изучение на практике строк языка ANSI C, операции над строками, функций стандартной библиотеки по работе со строками.

Задача лабораторной работы

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

Задание

Модифицировать программу из лабораторной работы № 4 с учетом следующих требований:

- Организовать ввод начального и конечного значений аргумента и  параметра, количество шагов расчета функций 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];

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)

{

 

 char *buffer;

 int  decimal, sign;

 strcpy_s(Res,"Result: ");

 

 for (int i=0;i<Cnt;i++)

 {

   buffer = _fcvt( arr[2][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)

{

 float G,gg;

 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;

     arr[1][i] = x;

     arr[2][i] = G;

     i++;

   }

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i);

 FindSub();

 

 

 return;

}

void f_F(float a, float x1,float x2, int k)

{

 float F,ff;

 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);

     arr[1][i] = x;

     arr[2][i] = F;

     i++;

 

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i);

 FindSub();

 

 return;

}

void f_Y(float a, float x1,float x2, int k)

{

 float Y,yy;

 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);

     arr[1][i] = x;

     arr[2][i] = Y;

     i++;

   }

   x = x + dx;

 } while (x<x2);

 printf("******SUBMENU*******\n");

 OutArr(i);

 FindSub();

 

 return;

}

void menu()

{

 int ch;

 int k;

 float a,x1,x2;

 do 

 {

   system("cls");

   printf("******MENU*******\n");

   printf("F1. Function G\n");

   printf("F2. Function F\n");

   printf("F3. Function Y\n");

   printf("ESC. Exit...\n");

   ch = _getch();

   switch (ch)

   {

   case 0: { switch (_getch())

           {

   case 59:      //клавиша F1

      printf("Calculation G...\n");

 _flushall();

     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);

     system("pause");

     break;

   case 60:      //клавиша F2

     printf("Calculation F...\n");

 _flushall();

     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_F(a,x1,x2,k);

     system("pause");  

     break;                                

   case 61:     //клавиша F3

     printf("Calculation Y...\n");

 _flushall();

     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_Y(a,x1,x2,k);

     system("pause");

     break;

           }

           break;   

           }

   }

 } while (ch !=27);

 return;                 

}

int main()

{

 //printf("A = %2.2f   X = %2.5f\n",a,x);

 menu();

 

 //printf_s("\n%f\n", EnterDigit("New param"));

 system("pause");

 return 0;

}

Результаты работы

Вывод преобразованной строки

Поиск символа в строке результата

Выводы по работе

В ходе выполнения лабораторной работы я изучил особенности  написания  программы  на языке ANSI C, в основе которой лежит алгоритм структуры с строками языка ANSI C, операции над строками, функций стандартной библиотеки по работе со строками.


 

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

43284. Формування раціональної структури і використання парку рухомого складу при виконанні перевезень заданого виду вантажу 560.5 KB
  Для досягнення мети необхідно вирішити наступні задачі: проаналізувати існуючі методи організації перевезень дрібнопартіонних вантажів; вибрати ефективний рухомий склад для виконання перевезень з урахуванням заданого виду вантажу та конкретних умов експлуатації автомобілів; визначити раціональні маршрути перевезень; розрахувати технікоексплуатаційні показники роботи обраних автомобілів на визначених маршрутах; визначити необхідну кількість транспортних засобів. Партіонність перевезень визначається потребою в одночасному перевезенні...
43285. Расчет параметров линейной дискретной акустической антенны без амплитудного распределения чувствительности 501 KB
  Излучение или прием звука осуществляется при совместной работе антенны с передающим в режиме излучения или приемным в режиме приема трактом. Акустическая антенна обычно состоит из электроакустических преобразователей элементов антенны акустических экранов несущей конструкции акустических развязок амортизаторов и линий электрокоммуникаций Основными частями антенного устройства являются: электроакустические преобразователи состоящие из активных элементов предназначенные для преобразования энергий; акустические поглотители...
43286. Объединить в локальную сеть по технологии FastEthernet компьютеры, которые находятся в квартирах трех домов 1.04 MB
  Сетевая карта Dlink DGE528T 1port 1000BseT PCI . Еще на стадии разработки стандарта 100BseT комитет IEEE 802. В результате этого каждый трансивер должен использовать свой собственный набор схем кодирования наилучшим образом подходящий для соответствующего физического интерфейса например набор 4B 5B и NRZI для интерфейса 100BseFX.1: 100BseFX 100BseTX и 100BseT4.
43288. Основы геометро-кинематического синтеза механизмов с высшими кинематическими парами 747 KB
  Значительно большие возможностями для воспроизведения почти любого закона движения имеют механизмы с высшими кинематическими парами, так как условие касания взаимодействующих поверхностей звеньев высшей пары по линиям и точкам могут быть выполнены бесчисленным множеством различных поверхностей.
43289. Разработка технологического процесса изготовления фрезы шпоночной 2234-0375 199.5 KB
  Задачи стоящие перед современным машиностроением в значительной степени определяет инструмент обеспечивающий промышленное производство наличие режущего инструмента способного обрабатывать поверхности детали с требуемой точностью и качеством поверхностного слоя позволяющего выполнять производственные задания и изготавливать конкурентоспособную продукцию проектированию режущего инструмента уделяется большое внимание для создания нового инструмента а не стандартизированного. Эффективность работы металлообрабатывающего...
43290. ОПРЕДЕЛЕНИЕ ОСНОВНЫХ ЭЛЕМЕНТОВ ГЛАДКИХ ЦИЛИНДРИЧЕСКИХ СОЕДИНЕНИЙ 2.09 MB
  1 Предельные размеры отверстия определяются по формулам: Dmx = D ES; Dmx = 63 0030 = 63030 мм Dmin = D EI; Dmin = 63 0= 63000 мм где Dmx Dmin наибольший и наименьший размеры отверстия; D номинальный размер соединения; ES EI верхнее и нижнее отклонения отверстия. Квалитеты точности отверстия и вала определяются по числу единиц допуска: D = TD i; D = = 16 где i единица допуска; i = 186 d = Td i; d = = 10 По числу...
43291. Структура реестра Windows 630 KB
  Курсовая работа состоит из трех основных глав, введения и заключения. Первая глава – ознакомление с реестром операционной системы Windows, роль реестра в операционной системе. Во второй главе рассматривается древовидная структура реестра операционной системы Windows, описание каждого раздела структуры реестра и их подразделов, параметры, типы данных и значения файлов реестра. В третьей главе описан редактор реестра Windows (Register Editor)
43292. УЧЕТ РАСЧЕТА С БЮДЖЕТОМ В ООО ПКЗ «ОМСКИЙ» РАЙОНА ОМСКОЙ ОБЛАСТИ 3.87 MB
  Организация аналитического и синтетического учета расчетов с бюджетом по налогам и сборам.26 ВВЕДЕНИЕ Любая бухгалтерия как сердце предприятия особенно чувствительна к изменениям в налогах. Среди экономических рычагов при помощи которых государство воздействует на рыночную экономику важное место отводится налогам. Для достижения этой цели необходимо решить ряд задач: анализ проблем формирования налоговых поступлений; особенности организации учета расчетов с бюджетов по налогам и сборам; представить...