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


 

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

10342. Теоретические основы, структура и функции процесса обучения. Закономерности и принципы обучения. Обучение как преподавание и как учение 75 KB
  Теоретические основы структура и функции процесса обучения. Закономерности и принципы обучения. Обучение как преподавание и как учение. Деятельность учителя в учебном процессе. Педагогические способности и их характеристика Н.В. Кузьмина А.К. Маркова. Технология проек
10343. Психологические основы деятельности учащихся в процессе обучения. Учебная деятельность, ее внешняя и внутренняя структура 67 KB
  Психологические основы деятельности учащихся в процессе обучения. Учебная деятельность ее внешняя и внутренняя структура. Формирование мотивов учения А.Б. Орлов А.К. Маркова. Диагностика учебной деятельности учащихся. Психокоррекционная работа с детьми. Обучение...
10344. Научные основы содержания общего образования. Современные концепции содержания образования (М.Н. Скаткин, И.Я. Лернер, В.В. Краевский) 71 KB
  Научные основы содержания общего образования. Современные концепции содержания образования М.Н. Скаткин И.Я. Лернер В.В. Краевский. Стандартизация образования. Психологопедагогические аспекты компетентностного подхода к отбору содержания образования. Базисный учебн
10345. Закономерности и принципы обучения. Принципы обучения в педагогических теориях Я.А. Коменского, К.Д. Ушинского, Л.Н.Толстого. 66.5 KB
  Закономерности и принципы обучения. Принципы обучения в педагогических теориях Я.А. Коменского К.Д. Ушинского Л.Н.Толстого. Психологическое обоснование дидактических принципов. Система принципов обучения в современной дидактике их реализация в практической работе учи
10346. Характеристика основных положений теории проблемно-развивающего и модульного обучения 77 KB
  Характеристика основных положений теории проблемно-развивающего и модульного обучения И.Я. Лернер М.Н. Скаткин М.И. Махмутов А.М Матюшкин Л.В. Занков В.В. Давыдов Д.Б. Эльконин и др.. Общая характеристика мышления понятие виды формы мыслительные операции. В практике
10347. Компьютер в школе. Психолого-педагогические основы компьютеризации образовательного процесса 71 KB
  Компьютер в школе. Психологопедагогические основы компьютеризации образовательного процесса. Проблемы и риски в использовании компьютеров в школе. Компьютерная зависимость и способы ее преодоления. На сегодняшний день компьютер стал неотъемлемой частью учебного про...
10348. Тесты, их классификация. Психолого-педагогические требования к разработке и применению тестов в педагогическом процессе 92.5 KB
  Тесты их классификация. Психолого-педагогические требования к разработке и применению тестов в педагогическом процессе. Тест стандартизированные задания результат выполнения которых позволяет измерять некоторые психофизиологические и личностные характеристики ...
10349. Методика индивидуально-дифференцированного подхода в обучении. Понятия обученности и обучаемости, их взаимосвязь 82 KB
  Методика индивидуально-дифференцированного подхода в обучении. Понятия обученности и обучаемости их взаимосвязь. Характеристика трех типов учения П.Я. Гальперин. Различные виды дифференциации в обучении. Психолого-педагогические условия эффективной индивидуализации...
10350. Элективные курсы в профильном обучении, психолого-педагогические условия эффективного использования элективных курсов в различных классах по предмету 55.5 KB
  Элективные курсы в профильном обучении психологопедагогические условия эффективного использования элективных курсов в различных классах по предмету. Современные подходы к образованию предусматривают реализацию принципа вариативности путей форм средств его полу