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


 

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

78779. ІНСТРУМЕНТАЛЬНИЙ АСПЕКТ ДОСЛІДЖЕННЯ ВПЛИВУ ГЛОБАЛІЗАЦІЇ НА ФОРМУВАННЯ ДЕРЖАВНОЇ ІНФОРМАЦІЙНОЇ ПОЛІТИКИ 165.5 KB
  На сьогоднішній день практика становлення державної інформаційної політики випереджає процес її теоретичного осмислення. Цей процес знаходиться в прямій залежності від процесів наукової обгрунтованості та ефективності політичної ідеології держави, її світоглядного забезпечення.
78781. ВЗАИМОСВЯЗЬ ЛИЧНОСТИ И ПРОФЕССИОНАЛЬНОЙ ОРИЕНТАЦИИ 371 KB
  При удачном выборе профессии вера в своё призвание может избавить молодого человека от ненужных колебаний и сомнений. Можно констатировать, что перед личностью возникают проблемы, требующие от неё определения своего отношения к профессиям, иногда анализа и рефлексии собственных...
78782. Усовершенствование надзорных функций Национального банка Республики Беларусь 1.01 MB
  Банки необходимый финансовый институт на данном этапе развития. При постоянном наличии средств на корсчете а также при имеющейся возможности привлекать их со стороны в случае необходимости никаких проблем с платежеспособностью у банка не будет.
78783. Робота з базами даних в MS Excel 2010 1.88 MB
  Excel вміє складати, віднімати, множити, ділити і виконувати безліч інших операцій. Excel дає можливість попередньо проаналізувати наслідки прийняття тих чи інших рішень при конкретних обставинах. Excel дозволяє автоматизувати не тільки розрахунки як такі...
78784. ФАКТОРЫ РИСКА ХРОНИЧЕСКИХ НЕИНФЕКЦИОННЫХ ЗАБОЛЕВАНИЙ В НЕОРГАНИЗОВАННОЙ ПОПУЛЯЦИИ МУЖЧИН ТРУДОСПОСОБНОГО ВОЗРАСТА 2.48 MB
  В процессе диспансеризации неорганизованной популяции мужчин трудоспособного возраста изучить особенности структуры и распространенность факторов риска хронических неинфекционных заболеваний, их динамику в условиях пятилетнего проспективного наблюдения...
78785. ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ СОВРЕМЕННЫХ ФОРМ И МЕТОДОВ РЕКЛАМНОЙ ДЕЯТЕЛЬНОСТИ В СИСТЕМЕ МАРКЕТИНГОВЫХ КОММУНИКАЦИЙ 2.02 MB
  Исходя из этого для обеспечения конкурентоспособности авиакомпаниям требуется проводить постоянный поиск новых или совершенствование известных форм методов моделей рекламной деятельности в системе маркетинговых коммуникаций на предприятиях авиационной отрасли позволяющих...
78786. ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ ВОСПРИЯТИЯ БАЗИСНЫХ ЧАСТЕЙ РЕЧИ В ТЕКСТЕ: ПОЗИЦИОННЫЙ АСПЕКТ 3.64 MB
  Данная диссертационная работа посвящена экспериментальному исследованию восприятия базисных частей речи в позиционной структуре текста и выполнена в русле общей теории текста с учетом знаний, накопленных в области теории языка, психолингвистики и лингвосинергетики.
78787. Формирование траектории устойчивого развития региональной социально-экономической системы 861 KB
  Социально-экономическое развитие общества в XX веке, ориентированное в основном на быстрые темпы экономического роста, нанесло огромный ущерб окружающей природной среде. По существу развитие отождествлялось с экстенсивным вовлечением природных ресурсов в экономику, индустриализацией промышленности...