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


 

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

53865. Мій рідний край 74 KB
  Дати уявлення про мапу географічне положення Чернігівської області на мапі України. Я не помилилася По яких містах України ви подорожували Чернігів Київ Ніжин Львів А хто бував в інших державах В яких саме Росія Білорусія Туреччина Єгипет А вас там радо зустрічали Так Зізнайтеся чи хотілося вам додому Так А чому як ви думаєте Ми сумували за друзями за рідними за домівкою А як називається рідна земля Батьківщина. Що таке екскурсія Як називається людина яка проводить екскурсію Екскурсовод З...
53866. Наш край у 60 - 90-х pp. XX - на початку XXI ст 91.5 KB
  Мій дідусь Оніщенко Костянтин Іванович народився 4 квітня 1925 року в місті Полонне Хмельницької області. Воював у Великій Вітчизняній війні з березня 1943 року до червня 1945 року в Радянських Збройних Силах. В армії Південно – Західного фронту з червня до жовтня 1943 року на посаді кулеметника.
53867. Люби і знай свій рідний край 69 KB
  Підготовчий етап У чому полягає задум дізнатися якомога більше про звичаї та обряди свого села народні промисли і народних умільців свого краю; дослідити краєзнавчий матеріал; Для чого це потрібно виховувати любов до рідного краю народу його звичаїв та обрядів. Планування діяльності Зібрати матеріал про народні промисли свого краю. Від батьків дідусів бабусь довідатись про звичаї і традиції свого краю.
53868. Мій рідний край, моя земля – красива і велична 262.5 KB
  Ребро Хто кого перебреше Діють: Свербигуз Індик і Чобіт. Свербигуз: Здоров Індиче Здоров Чоботе Індик і Чобіт: Привіт Свербигузе Свербигуз: Хлопці Індик і Чобіт: Га Свербигуз: Давайте влаштуємо змагання Індик: Яке Хто далі стрибне Свербигуз: Ні. Чобіт: Хто більше зїсть вареників Свербигуз: Ні. Індик: Переплюне Свербигуз: Ні.
53869. Мой край 142.5 KB
  Вступительное слово учителя. Вначале мы предоставим слово Виктории. Слово учителя. Да и слово собака ― скифского корня.
53870. Сложные методы оценки эффективности инвестиционных проектов 36 KB
  Под методом оценки эффективности инвестиционных проектов понимается система способов и приемов сопоставления связанных с проектом результатов и затрат.
53871. Розвиток креативного мислення учнів під час пізнавальної діяльності 85 KB
  Одним із вирішальних чинників розв’язання цих завдань є розвиток креативного мислення учнів. Гілфорда який ототожнив поняття креативності та творчого мислення. Гілфорд визначав що креативність – це процес дивергентного мислення.
53872. Майстер – клас «Креативність – мислення поза стандартами» 676 KB
  Одним із вирішальних чинників розв’язання цих завдань є розвиток креативного мислення педагога. На сьогоднішній день існує більше 100 визначень креативності але ми будемо її розглядати як здатність до дивергентного мислення мислення що йде одночасно у багатьох напрямках воно спрямоване на те щоб породити безліч різних варіантів розв’язання задачі. Дивергентне мислення лежить в основі креативності.
53873. ЩО ТАКЕ КРЕАТИВНІСТЬ? 194.5 KB
  Невже не може бути так щоб школа була місцем де плекають дитячу креативність Де діти не бояться помилятися. Людська спільнота набагато більше схожа на людський організм у якому креативність відіграє роль життєвої енергії. І саме від школи залежить чи буде вона розвивати креативність чи висушувати її приглушувати і придушувати щоб перетворити на добре запрограмований в міру інтелектуальний механізм. Чому б не використати цей невичерпний потенціал у вивченні математики й природознавства читання й письма Матеріал посібника дасть змогу...