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, операции над строками, функций стандартной библиотеки по работе со строками.


 

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

46589. Методы и средства предупреждения пожара, взрыва и обеспечения противопожарной защиты на объекте экономики 21.1 KB
  Для ограничения развития пожара в зданиях сооружениях предусматривают противопожарные преграды: противопожарные стены перегородки перекрытия зоны тамбурышлюзы двери окна люки и клапаны. В этих стенах перекрытиях и перегородках допускают устройство проемов в которых предусмотрены противопожарные двери окна ворота люки и клапана или тамбурышлюзы. Противопожарные двери могут быть НГ или ГВ. НГ двери изготовляют из металлического каркаса обшитого кровельной сталью.
46590. Радиационная, химическая и медико-биологическая защита населения 21.14 KB
  Она реализуется тремя способами защиты: 1 укрытие населения в защитных сооружениях; 2 рассредоточение в загородной зоне работников предприятий и других объектов экономики продолжающих трудиться в городах а также эвакуация из этих городов населения; 3 использование населением СИЗ. Щель не обеспечивает защиту людей от ОВ и БВ поэтому необходимо применение СИЗ. Применение СИЗ и медицинских СЗ. Как известно СИЗ подразделяются на СЗ органов дыхания и кожи.
46591. Реформирование системы государственной власти и законодательства 1985-1991 гг 21.17 KB
  было заменено 70 членов Политбюро 60 секретарей областных партийных организаций 40 членов ЦК КПСС. был смещен первый секретарь Московского горкома КПСС В. состоялся XXVII съезд КПСС который изменил Программу партии. На январском пленуме ЦК КПСС в 1987 г.
46592. Организационные основы обеспечения ОТ на предприятиях 21.25 KB
  Они вытекают из обязанностей и прав по ОТ работодателя и работника которые регламентируются КЗоТом РФ и Основами законодательства РФ об ОТ далее Основами. 3 Основ закрепляет признание и обеспечение приоритета жизни и здоровья работников по отношению к результатам производственной деятельности предприятия. 139 КЗоТ РФ основной обязанностью работодателя по ОТ является обеспечение здоровых и безопасных УТ на каждом РМ. Поэтому он обязан внедрять современные средства ТБ предупреждающие травматизм и обеспечивать санитарногигиенические...
46593. Архитектурная акустика 21.46 KB
  Термическое сопротивление. Сопротивление теплопередаче ограждающей конструкции.Требуемое сопротивление теплопередаче. Сопротивление теплопередаче.
46594. Методика преподавания на профильном уровне. Элективный курс по художественному профилю и специфика его разработки 21.48 KB
  Макаренко в своем учении выделяет несколько стадий этапов:1 стадия становление коллектива стадия первоначального сплочения.актив поддерживает требования педагога и сам предъявляет их к членам колва руководствуясь своими понятиями о том что приносит пользу а что ущерб интересам коллектива. Если активисты правильно понимают потребности коллектива то они становятся надежными помощниками педагога.Происходит стабилизация структуры коллектива.
46595. Мовне законодавство в Україні 21.5 KB
  Мовне законодавство в Україні. В Україні державна мова закріплена першою частиною десятої статті Конституції України відповідно до якої державною мовою в Україні є українська мова. Окрім того вживання мов в Україні регулюється Законом Української РСР Про мови в Українській РСР . Мовна ситуація в Україні є доситьтаки суперечливою і законодавство зовсім її не спрощує.
46596. Пряме й переносне значення слова. Вияви полісемії в різностильових текстах 21.5 KB
  Пряме й переносне значення слова. Пряме значення слова це дефініція слова яка безпосередньо вказує на його співвідношення з тією чи іншою ознакою об'єктивної дійсності як це історично закріпилося у свідомості мовців. Це первинне значення слова. Переносне значення слова це одне із значень слова яке виникло внаслідок перенесення одних ознак предметів чи явищ на інші.
46597. Синонімія, види синонімів. Роль синонімів у різностильових текстах 21.5 KB
  Синонімія це сукупність синонімів тієї чи іншої мови а також розділ науки про мову у якому вивчаються синоніми як одиниці мови. Синоніми це слова однієї частини мови що мають близьке лексичне значення але відрізняються за формою. Традиційно виділяють загальномовні синоніми зрозумілі для кожного носія мови граний красивий; контекстуальні або авторські синоніми у конкретному тексті. Окремо виділяють абсолютні синоніми слова які мають тотожні значення лелека чорногуз сум смуток століття сторіччя.