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


 

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

29128. Требования, на которые исковая давность не распространяется 27 KB
  Требования на которые исковая давность не распространяется. Исковая давность не распространяется на: требования о защите личных неимущественных прав и других нематериальных благ; требования вкладчиков к банку о выдаче вкладов; требования о возмещении вреда причиненного жизни или здоровью гражданина. требования собственника или иного владельца об устранении всяких нарушений его права хотя бы эти нарушения не были соединены с лишением владения.
29129. Содержание права собственности 25.5 KB
  Собственнику принадлежат права 1 владение т. Собственник вправе по своему усмотрению совершать в отношении принадлежащего ему имущества любые действия не противоречащие закону. Собственник несет бремя содержания принадлежащего ему имущества если иное не предусмотрено законом или договором. Риск случайной гибели или случайного повреждения имущества несет его собственник если иное не предусмотрено законом или договором.
29130. Формы права собственности 49 KB
  В РФ признаются: Негосударственная Государственная: на праве собственности РФ федеральная собственность на праве собственности субъектам РФ собственность субъекта РФ. Земля и другие природные ресурсы не находящиеся в собственности граждан юридических лиц либо муниципальных образований являются государственной собственностью. Имущество находящееся в государственной собственности закрепляется за государственными предприятиями и учреждениями во владение пользование распоряжение.
29131. Основания возникновения права собственности и их классификация 32 KB
  Находка Нашедший потерянную вещь обязан немедленно уведомить об этом лицо потерявшее ее или собственника вещи и возвратить ему найденную вещь. Вещь может быть также сдана транспортной организации в милицию или орган местного самоуправления. В случае неустановления владельца вещи в 6 месяцев нашедший вещь приобретает право собственности на нее. При возврате вещи владельцу нашедший вещь вправе потребовать от него вознаграждение за находку в размере до 20 стоимости вещи а также возмещение необходимых расходов связанных с хранением или...
29132. Приобретательская давность как основание возникновение права собственности 26.5 KB
  Приобретательная давность лицо гражданин юридическое лицо не являющееся собственником имущества но добросовестно открыто и непрерывно владеющее как своим собственным недвижимым имуществом в течение 15 лет либо иным имуществом в течение 5 лет приобретает право собственности на это имущество. Приобретательная давность это новая для отечественного законодательства форма приобретения права собственности. Право собственности на недвижимое и иное имущество подлежащее государственной регистрации возникает у лица приобретшего это...
29133. Прекращение права собственности 39.5 KB
  Прекращение права собственности – право прекращающие юридические факты которые могут быть связаны с действиями по отчуждению имущества с событиями смерть. Классификация прекращения права собственности: Добровольная – собственник передает это право другому лицу на основании различных договоров административных актов а также при отказе его от права собственности гибели или уничтожении имущества и при утрате права собственности на имущество. Принудительная – обращение взыскания на имущество по обязательствам на основании решения суда...
29134. Отступное в гражданском праве 29.5 KB
  По какимлибо причинам вы ничем кроме честного слова должника свой договор не обеспечили. Пришел час расплаты а денег у должника нет. Первый подать в суд потребовать продажи имущества должника и обязать его расплатиться с вами деньгами вырученными от продажи его имущества. Получив имущество вы отступаете от должника со своими требованиями о возврате долга.
29135. Прекращение обязательства зачетом. Недопустимость зачета 27 KB
  Обязательство прекращается полностью или частично зачетом встречного однородного требования срок которого наступил либо срок которого не указан или определен моментом востребования. Не допускается зачет требований: если по заявлению другой стороны к требованию подлежит применению срок исковой давности и этот срок истек; о возмещении вреда причиненного жизни или здоровью; о взыскании алиментов; о пожизненном содержании; в иных случаях предусмотренных законом или договором. Зачет производится если требование возникло по основанию...
29136. Новация 26 KB
  Новация. Новация обязательство прекращается соглашением сторон о замене первоначального обязательства существовавшего между ними другим обязательством между теми же лицами предусматривающим иной предмет или способ исполнения. Новация не допускается в отношении обязательств по возмещению вреда причиненного жизни или здоровью и по уплате алиментов. Новация прекращает дополнительные обязательства связанные с первоначальным если иное не предусмотрено соглашением сторон.