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.


 

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

8345. Пенсионное страхование в Китае 25.05 KB
  История развития пенсионного страхования. Пенсионное страхование в Китае возникло и развивалось вместе с промышленной революцией и крупным общественным производством после распада традиционного сельскохозяйственного общества. После провозглашения Ки...
8346. Китайская народная республика 1.97 MB
  Выдвигается в мировые экономические и политические лидеры. Пять принципов мирного сосуществования – в конституции страны. Хунвейбины и Цзаофани громили учебные заведения и университеты. Публичные казни представителей интеллигенции и перевоспитание.
8347. Джентльменский набор костолома или компоненты традиционного обучения боевым искусствам в Китае 217.5 KB
  Джентльменский набор костолома или компоненты традиционного обучения боевым искусствам в Китае. Очень часто можно услышать про разные стили, что в одном только удары, и нет бросков, в другом - нет техники ударов ногами, еще где-то не используют захв...
8348. Экономика Китайской Народной Республики 31 KB
  Экономика Китайской Народной Республики Экономика Китайской Народной Республики - 2-я экономика мира по объёму ВВП (на 2010 год). При оценке ВВП страны необходимо учитывать, что данные за прошлые годы регулярно пересматриваются в сторону пов...
8349. Феодальный Китай под властью цинской монархии 96.45 KB
  Феодальный Китай под властью цинской монархии План. Крестьянская война XVII в. Захватнические войны Цинов. Первая опиумная война. Крестьянская...
8350. Фразеология китайского языка 86 KB
  Классификация фразеологизмов. В соответствии со своими дифференциальными признаками (лексико-семантическими и грамматическими), а также особенностями функционирования или способами существования в речевой цепи, фразеологизмы подразделяют на соответс...
8351. Маньчжуры и династия Цин в Китае 55.5 KB
  Маньчжуры и династия Цин в Китае За полтора века затянувшейся политической борьбы в верхах за необходимые стране реформы процесс разорения крестьян достиг крайней степени. Снова оживилась деятельность тайных обществ типа Белого лотоса. Год от года...
8352. Китайские игры. Го в Древнем Китае 68 KB
  Го в Древнем Китае Содержание: 1. Введение. 2. Легенды о мудрых королях и гадания. 3. Го и война. 4. Го в классике. 5. Сумбур в Хань- и Вей-времена. 6. Литература. 1. ВВЕДЕНИЕ Китайской игре Вей-чи (Weichi,Weiqi), более известной у нас под ее...
8353. Main trends in the government’s policy on internationalization 71 KB
  Main trends in the governments policy on internationalization Internationalization of higher education is a reality. The Russian higher educational institutions have at their disposal much less funds than universities in the developed co...