75662

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

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

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

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

Украинкский

2015-01-24

170.05 KB

1 чел.

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

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

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

Кафедра ПЗ

Лабораторна робота №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.


 

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

13896. Демократия есть механизм, который гарантирует, что нами управляют не лучше, чем мы того заслуживаем 14.84 KB
  Демократия есть механизм который гарантирует что нами управляют не лучше чем мы того заслуживаем. Б. Шоу. Демократия политический режим при котором власть принадлежит всем или большинству свободных граждан подчиняющихся закону. Но демократия подразумевает не то...
13897. Дело – за юношей, совесть – за взрослым, молитва – за стариком 16.05 KB
  Дело за юношей совесть за взрослым молитва –за стариком. Л. Питер. На каждом этапе социализации человек осуществляет определённый вид деятельности и выполняет определённые социальные роли. Социализация – начавшийся в младенчестве и заканчивающийся в глу...
13898. Весь мир – театр. В нем женщины, мужчины – все актеры. У них есть выходы. И каждый не одну играет роль 19.44 KB
  Весь мир – театр. В нем женщины мужчины – все актеры. У них есть выходы. И каждый не одну играет роль. У. Шекспир Динамика современной жизни во многом заставляет личность приспосабливаться и трансформироваться меняя свою социальную роль. Говоря о социальной струк...
13899. Будь поучтивее с людьми, которых встречаешь, взбираясь наверх, - ты ещё встретишься с ними, когда будешь спускаться 15.52 KB
  Будь поучтивее с людьми которых встречаешь взбираясь наверх ты ещё встретишься с ними когда будешь спускаться У. Мизнер. Человеческая жизнь непредсказуема в ней бывают не только взлёты но и падения. На протяжении всей жизни человек приспосабливается к о
13900. Богатым человека делает его сердце 14.62 KB
  Богатым человека делает его сердце Л. Толстой. Нельзя судить о богатстве человека по толщине его кошелька. Только наличие высоких моральных качеств позволяет считать человека истинно богатым. Нравственность это степень усвоения личностью моральных ценностей
13901. Банки охотно дают деньги тем, кто может доказать, что в них не нуждается 25.5 KB
  Банки охотно дают деньги тем кто может доказать что в них не нуждается. Банк предоставляет свои услуги тем у кого есть средства и источники доходов. Банковская система – совокупность национальных банков и других кредитных учреждений действующих в рамках единого ф
13902. Аномия: определение, причины, характеристики 118.5 KB
  КУРСОВАЯ РАБОТА Аномия: определение причины характеристики Оглавление: Введение Понятие аномии ее характеристики и сущность теории аномии Основные теории аномии: Теория аномии Э. Дюркгейма Теория аномии Р. Мертона Аномия в современно...
13903. Республика Шкид. Глупость под лупой 30.5 KB
  Эссе Республика Шкид. Глупость под лупой Один день содержит 24 часа или 1440 минут. Сколько необходимо человеку для того чтобы совершить глупость И главное почему человек ее делает как так получается А что происходит после ее совершения Под ненаучным термином г
13904. Психологический роман русского классика Ф.М. Достоевского Преступление и наказание 40 KB
  За основу своего эссе я взял психологический роман русского классика Ф.М. Достоевского Преступление и наказание а именно анализ поведения и характера главного героя Родиона Раскольникова. В романе описывается история бывшего студента СанктПетербурга ко