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


 

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

26372. ПРИНЦИПЫ ПАКЕТНОЙ ПЕРЕДАЧИ ДАННЫХ 227 KB
  Количество уровней их названия содержание и назначение могут отличаться в различных сетях но для всех сетей каждый уровень должен предоставлять определённый сервис для более высокого верхнего уровня скрывая реализацию своей задачи. № уровня Наименование Содержание 7 Уровень приложений Предоставление услуг на уровне конечного пользователя: почта теледоступ и прочее 6 Уровень представления данных Интерпретация и сжатие данных 5 Уровень сессии сеансовый Идентификация и проверка полномочий 4 Транспортный уровень Обеспечение корректной...
26373. Математические модели 74 KB
  Математические модели появились вместе с математикой много веков назад. Огромный толчок развитию математического моделирования придало появление ЭВМ. Применение вычислительных машин позволило проанализировать и применить на практике многие математические модели которые раньше не поддавались аналитическому исследованию.
26374. Ме́тод Мо́нте-Ка́рло 42.5 KB
  При проведении анализа по методу МонтеКарло компьютер использует процедуру генерации псевдослучайных чисел для имитации данных из изучаемой генеральной совокупности. В математической литературе часто используется термины последовательность случайных чисел или просто случайные числа . Если использовать точные термины то можно говорить только о случайной последовательности чисел или о случайном значении параметров. Однако в литературе широко используется термины случайные числа и последовательность случайных чисел и это означает что каждое...
26376. Вероятностные модели 47.5 KB
  Моделирование случайных процессов мощнейшее направление в современном математическом моделировании. При компьютерном математическом моделировании случайных процессов нельзя обойтись без наборов так называемых случайных чисел удовлетворяющих заданному закону распределения. Если он помог в чемто мы говорим повезло если оказался не в нашу пользу то сокрушаемся не судьба Многие ученые занимались изучением закономерностей случайных событий. Смоделируем ситуации которые в теории вероятности получили название случайных блужданий.
26377. Понятие модели, моделирования 94 KB
  Вначале понятие модель относилось только к материальным объектам как например манекен модель человеческой фигуры чучело модель животного модели автомобилей самолетов и т. Чертежи рисунки карты – это тоже модели но они соответствуют более высокой степени абстрагирования от оригинала поэтому их модельные свойства были осознаны намного позже. В настоящее время понятие модели расширилось оно включает и реальные и так называемые идеальные модели например математические модели.
26378. Виды моделирования 37 KB
  Например можно выделить следующие виды моделирования: Информационное моделирование Компьютерное моделирование Математическое моделирование Математикокартографическое моделирование Молекулярное моделирование Цифровое моделирование Логическое моделирование Педагогическое моделирование Психологическое моделирование Статистическое моделирование Структурное моделирование Физическое моделирование Экономикоматематическое моделирование Имитационное моделирование Эволюционное моделирование ИНФОРМАЦИОННОЕ В своей деятельности человек...
26379. Классификация моделей 73 KB
  Модель называется статической если среди параметров участвующих в ее описании нет временного параметра. Статическая модель в каждый момент времени дает лишь фотографию системы ее срез. Закон Ньютона F=am это статическая модель движущейся с ускорением a материальной точки массой m. Эта модель не учитывает изменение ускорения от одной точки к другой.
26380. Модели предметные (материальные) и модели информационные 33.5 KB
  Предметные модели воспроизводят геометрические физические и другие свойства объектов в материальной форме глобус анатомические муляжи модели кристаллических решеток макеты зданий и сооружений и др. Информационные модели представляют объекты и процессы в образной или знаковой форме. Образные модели рисунки фотографии и др.