75662

Операції над стрічками

Лабораторная работа

Информатика, кибернетика и программирование

Визначення позиції початку в стрічці s слова з номером n. Потім вводиться ціле число номер слова у рядку що буде перевірятись. Далі у циклі шукається позиція слова під введеним номером. За умовами необхідно врахувати усі символироздільники що розташовані між словами наприклад кома і пробіл крапка і пробіл два пробіли тощо.

Украинкский

2015-01-24

170.05 KB

2 чел.

Міністерство  освіти  і  науки України

Вінницький національний технічний університет

Інститут інформаційних технологій та комп’ютерної інженерії

Кафедра ПЗ

Лабораторна робота №2 варіант №9

з дисципліни Алгоритми та структури даних

Виконала: ст. гр. 1 ПІ-13б                            Лілик Л. С.

Перевірив:                                                       Власюк В. Х.

Вінниця, 2013

Тема: операції над стрічками.

Мета: набуття практичних навичок застосування операцій над стрічками.

Завдання:

Розробити процедури та функції які забезпечують виконання операції вказаних в завданні. В контрольному прикладі передбачити всі можливі комбінації вхідних параметрів (нульова довжина, вихід за межі стрічки і т.п.), в тому числі і неправильні.

Варіант № 9.

Визначення позиції початку в стрічці s слова з номером n.

Хід роботи

Програма починається з того, що користувач вводить бажаний рядок будь-якого змісту латинськими буквами.  Потім вводиться ціле число – номер слова у рядку, що буде перевірятись. Далі за допомогою стандартний функцій для роботи з рядками , як strtok(), рядок розбивається на лексеми. Ці лексеми записуються у окремий масив. Кількість елементів масиву і буде дорівнювати кількості слів. Роздільниками вважаються символи «пробіл» та .,?!:;_-'  . Підраховується кількість слів. Якщо введене число більше нуля і менше або дорівнює кількості знайдених слів, а рядок не порожній, то обчислення продовжуються. Інакше ж виводиться повідомлення про помилку.

Далі у циклі шукається позиція слова під введеним номером. За умовами необхідно врахувати усі символи-роздільники, що розташовані між словами (наприклад кома і пробіл, крапка і пробіл, два пробіли тощо). Тому пошук позиції з використанням складеного масиву слів недоречний, адже втрачаються символи-роздільники, що йдуть підряд. Для цього необхідно «підрахувати слова» вручну. Початком нового слова буде вважатись символ попередній символ якого дорівнює одному з роздільників, а сам він не роздільник. Таким чином обчислення доходять до шуканого слова. При кожній ітерації розглядається наступний символ, і номер символу збільшується на 1. В результаті початком шуканого слова й буде номер ітерації у циклі, тобто останній символ, що розглядається.

Складність алгоритму

Складність алгоритму дорівнює ( 7n+14 )Т, де Т - час виконання.


Блок-схема алгоритму

Лістинг програми

#include <iostream>

#include <string.h>

#include <stdio.h>

using namespace std;

void WordIndex()

{

   char st[100];

  cout<<"\nInput the string:\n\n";

  gets (st);

  int n=0;

  cout<<"\nInput number of the word: " ;

  cin>>n;

  char DELIMITERS[] = " .,?!:;_-'";

  int i=1;

  int wordNum=0;

  char arr[30][100];

  char *p;

  p=strtok(st, DELIMITERS); // splitting string into tokens

  while (p!=0)  // filling the array by tokens

  {

      strcpy (arr[wordNum], p);

      p=strtok(NULL, DELIMITERS);

      wordNum++;

  }

  cout<<endl;

if (n>0&&n<=wordNum&&strlen(st)!=0)

{

  int wordNum2=0;

  while (wordNum2<n-1)

  {

       if(!strchr(DELIMITERS, st[i])&&(strchr(DELIMITERS, st[i-1])!=0))

                  wordNum2++;

       i++;

  }

   int wordPos=i;

 сout<<"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nWord number "<<n<<"  is:  " <<arr[n-1];

  cout<<"\nPosition of the "<<n<<" word is: "<<wordPos;   cout<<"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";

}

  else

   {

       cout<<"ERROR!";

       //WordIndex();

   }

}

int main()

{

  cout<<"\nLab #2 variant 9.\nKseniia Ivchenko\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;

   WordIndex();

   cout<<endl;

   return 0;

}


Результат виконання

Висновки

Набуто практичних навичок застосування операцій над стрічками. У ході виконання лабораторної роботи розроблено процедури та функції які забезпечують виконання операції вказаних в завданні. Передбачено всі можливі комбінації вхідних параметрів (нульова довжина, вихід за межі стрічки і т.п.), в тому числі і неправильні. Написано програму для визначення позиції початку в стрічці s слова з номером n.


 

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

72724. Курс химии: Учебно-методическое пособие 1.44 MB
  В практикуме представлены лабораторные работы для тринадцати лабораторных работ студентам МГУПИ, изучающим курс химии по всем формам обучения на всех специальностях, на которых это предусмотрено учебным планом в соответствии с Государственным стандартом на специальность.
72725. ТРЕХФАЗНЫЙ АСИНХРОННЫЙ ДВИГАТЕЛЬ С КОРОТКОЗАМКНУТОЙ РОТОРНОЙ ОБМОТКОЙ 96.5 KB
  Цель работы: изучение устройства, способов пуска, опытное определение параметров и исследование рабочих характеристик асинхронного двигателя. Программа работы Ознакомление с заданием. Исследование пусковых режимов работы двигателя: при прямом пуске; с переключением статорной обмотки...
72726. ИССЛЕДОВАНИЕ ХАРАКТЕРИСТИК СИНХРОННОГО ГЕНЕРАТОРА 93 KB
  Цель работы: Изучение конструкции синхронного генератора и экспериментальное определение его характеристик и параметров. Программа работы Ознакомиться с конструкцией генератора и схемой испытательного стенда. Снять характеристику холостого хода генератора...
72727. ДВИГАТЕЛЬ ПОСТОЯННОГО ТОКА С ПАРАЛЛЕЛЬНЫМ И СМЕШАННЫМ ВОЗБУЖДЕНИЕМ 298.5 KB
  Изучение устройства двигателя постоянного тока, условий его пуска, реверсирования и исследование эксплуатационных свойств. Ознакомиться с лабораторной установкой. Записать паспортные (номинальные) данные электродвигателя.
72728. ИССЛЕДОВАНИЕ ПОЛУПРОВОДНИКОВОГО СТАБИЛИЗАТОРА НАПРЯЖЕНИЯ 290.5 KB
  Полупроводниковые стабилизаторы напряжения используются в основном для питания электронной аппаратуры. При их разработке нужно обеспечить две группы показателей: 1 максимальное выходное напряжение заданный диапазон регулирования выходного напряжения допустимую относительную...
72730. Создание простейшего прикладного приложения: калькулятор, просмоторщик рисунков, графический редактор, текстовый редактор, медиаплеер 4.9 MB
  Цель работы. Разработка приложений использующих главное меню формы всплывающего меню строки состояния панели инструментов быстрых кнопок с картинками подсказок к кнопкам а также стандартных диалогов открытия и сохранения файлов на примере создания приложения для просмотра графических файлов точечных рисунков.