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.


 

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

83281. Розквітни красою на щастя, на долю, моя Україно 573 KB
  Обладнання: книга - Усний журнал із оформленням сторінок карта України символіка народні символи: кетяги калини барвінок чорнобривці вишиті рушники образ Матері Божої вінок із квітів символів колоски пшениці дитячі малюнки із краєвидами фотоматеріали міста дитячі журнали Моя країна...
83282. Про доброту і милосердя 51.5 KB
  Ще з давніх часів доброта і милосердя були в традиціях нашого народу. Природним вважалося допомогти знедоленому, нещасному,поділитися шматком хліба, дати притулок бездомному, захистити старість,немічність, скривдженого. Добро виховується в наших душах і серцях старанням і бажанням його творити.
83283. Україно, ти моя молитва… Літературно-музичне свято 56 KB
  Юнак. Україна! Одне тільки слово – і ми входимо у світи сивої, мов жито, історії і барвінкової юності, у світи трагедійного епосу і поетичного відродження, у світи героїчних діянь і неповторної краси. Дівчина. Україно! Про тебе сиві кобзарі співали, що ти обездолена чайка-небога...
83284. Україна – наш спільний дім 317 KB
  Мета: Узагальнити та систематизувати знання учнів про Україну її історію державні та народні символи. На уроках ви співали пісні й декламували вірші знайомились з державною символікою знаходили на карті її ріки міста і гори засвоювали мову звичаї і традиції читали оповідання з історії.
83285. Україна та її історія на уроках зарубіжної літератури 121.5 KB
  Мета: Поглибити знання учнів про життя і творчість зарубіжних письменників, пов’язаних з Україною, її історією та культурою; сприяти творчо – асоціативній діяльності, розвивати дослідницькі та комунікативні навички.
83286. Вірю в майбутнє твоє, Украіно! 49 KB
  А я вважаю, що кожен народ має право на самобутність, свою мову, свою культуру. І той, хто не поважає свою мову, свій народ,- той не поважає,перш за все,себе. Хіба англійці соромляться своєї мови, а французи говорять китайською? Хіба ми гірші за інші народи?
83287. Слава синам України – українським повстанцям 965.5 KB
  Цілі: знайомити учнів з героїчними сторінками минулого України, розкрити діяльність Української Повстанської Армії з 1942р. по 1959р., як армії ІІ світової війни; забезпечити розуміння основних термінів, фактів; пробуджувати високі почуття патріотизму: формувати вміння розповідати...
83288. Київ – столиця України. Культурно-історичні пам’ятки Києва 90 KB
  Мета: дидактична: формувати уявлення про столицю як головне місто країни, ознайомити з культурно-історичними пам’ятками м. Києва, з історією заснування Києва, формувати інтерес до історичного минулого нашого народу; розвивальна: розвивати мислення, увагу, пам’ять, спостережливість...
83289. Звуки с, с, позначення їх буквами Сс. Читання складів і слів з ними. Вправи на доповнення речень словами. Читання тексту «Зустріч з лисом» за А. Давидовим 220.5 KB
  Сьогодні до нас на урок завітало дуже багато гостей і урок наш трішки незвичайний. Ми вирушаємо у подорож, щоб знайти скарб, але шукати буде його нелегко, адже треба докласти усiх зусиль: виявити читацькі знання, розум, кмiтливiсть, винахідливість, уважність, спостережливість.