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


 

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

76438. Усыновление. Понятие, значение, порядок усыновления 16.4 KB
  Понятие значение порядок усыновления Усыновление представляет собой правовой институт призванный создать между усыновителем и усыновленным отношения наиболее близкие к тем которые возникают между родителями и родными детьми. Усыновление или удочерение далее усыновление является приоритетной формой устройства детей оставшихся без попечения родителей п. Усыновление допускается в отношении несовершеннолетних детей и только в их интересах с соблюдением требований абзаца третьего пункта 1 статьи 123 СК РФ а также с учетом возможностей...
76439. Дети, подлежащие усыновлению. Лица которые могут быть усыновителями 20.88 KB
  Поэтому при усыновлении ребенка должны учитываться его этническое происхождение; принадлежность к определенной религии и культуре родной язык возможность обеспечения преемственности в воспитании и образовании а также возможность обеспечить усыновляемым детям полноценное физическое психическое духовное и нравственное развитие п. 124 СК закреплено правило согласно которому усыновление братьев и сестер разными лицами не допускается так как при усыновлении прекращаются правоотношения ребенка не только с родителями но и с другими...
76440. Условия усыновления 18.15 KB
  129 СК специально оговорено что при усыновлении ребенка несовершеннолетних родителей которые не достигли возраста шестнадцати лет требуется также согласие их родителей или опекунов попечителей а при отсутствии родителей или опекунов попечителей согласие органа опеки и попечительства. Если законные представители несовершеннолетних родителей не выразили согласия на усыновление ребенка то усыновление не может состояться...
76441. Тайна усыновления и меры по ее обеспечению 13.95 KB
  Тайна усыновления ребенка должна соблюдаться лишь по желанию усыновителей что главным образом касается случаев усыновления малолетних детей новорожденных детей и иных случаев когда целесообразность обеспечения тайны усыновления не вызывает сомнений. Иногда усыновители по какимлибо причинам педагогического морального или иного свойства не считают нужным сохранять тайну усыновления и не скрывают от ребенка факта его усыновления. Таким образом тайна усыновления охраняется законом но не всегда является обязательным элементом любого...
76442. Правовые последствия усыновления 15.11 KB
  Если ребенок имеет кровного родителя и усыновлен одним лицом другого пола При усыновлении ребенка не всегда разрываются все его связи с кровными родственниками например мать ребенка вступила в новый брак и ребенка усыновил отчим. Однако закон сохраняет право родителя ребенка на сохранение правовых отношений с ним не только для тех случаях когда ребенка усыновил отчим мачеха а для всех случаев когда ребенок усыновлен только одним лицом и при этом ребенок имеет кровного родителя другого пола чем усыновитель. Закон формулирует это...
76443. Отмена усыновления ребенка 15.27 KB
  Однако могут быть и другие ситуации например не сложились семейные родственные отношения усыновителя и ребенка или тяжелая болезнь усыновителя и т. Во всех случаях суд тщательно изучает все обстоятельства конкретного дела и вправе отменить усыновление ребенка исходя из его интересов и с учетом его мнения п. Порядок отмены усыновления Отмена усыновления ребенка производится в судебном порядке п.
76444. Правовые последствия отмены усыновления 13.52 KB
  При отсутствии родителей а также если передача ребенка родителям противоречит его интересам ребенок передается на попечение органа опеки и попечительства. Изменение имени отчества или фамилии ребенка достигшего возраста десяти лет возможно только с его согласия. Суд исходя из интересов ребенка вправе обязать бывшего усыновителя выплачивать средства на содержание ребенка.
76445. Опека и попечительства как форма семейного воспитания детей 16.24 KB
  Опекун попечитель назначается органом опеки и попечительства №48ФЗ от 24. В соответствии с Семейным и Гражданским кодексами РФ дети находящиеся под опекой попечительством имеют право на: воспитание в семье опекуна попечителя заботу с их стороны; совместное с ним проживание исключения допускаются с разрешения органа опеки и попечительства когда подопечный достиг возраста 16 лет и раздельное проживание не отразится неблагоприятно на его воспитании и защите прав и интересов; обеспечение условий для содержания воспитания...
76446. Права и обязанности опекунов и попечителей 27.96 KB
  Проживание будущего опекуна или попечителя и его потенциального подопечного по разным адресам может породить проблему выбора места установления опеки и попечительства. При этом в отдельных случаях при наличии заслуживающих внимания обстоятельств допускается установление опеки попечительства по месту проживания кандидата в опекуны и попечители например если он уже привез к себе нуждающегося в помощи гражданина либо не имеет возможности долго находиться в доме будущего подопечного. Но потом личное дело подопечного где хранится вся...