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.


 

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

9553. Генеалогическая классификация языков 32.5 KB
  Генеалогическая классификация языков I. Индоевропейские языки. 1. Славянские: восточные - русский, украинский, белорусский западные - польский, чешский, словацкий, верхне- и нижнелужицкий (на юге ГДР) южные - болгарский, македонски...
9554. Экономический рост и типы экономического роста 76 KB
  Повышение ставок налога, как средства внутреннего долга, может подорвать действие экономических стимулов, развитие производства и снизить естественное превращение многих программ, но самое главное может, усилит социальное напряжение...
9555. Дыхательный отдел периферического речевого аппарата 35 KB
  Дыхательный отдел периферического речевого аппарата Дыхательный отдел периферического речевого аппарата составляет энергетическую основу речи, обеспечивая так называемое речевое дыхание. Анатомически этот отдел представлен грудной клеткой, легкими, ...
9556. Парадоксальная дыхательная гимнастика А.Н. Стрельниковой 15.95 KB
  Парадоксальная дыхательная гимнастика А.Н. Стрельниковой. В логопедической работе над речевым дыханием заикающихся детей, подростков и взрослых широко используется парадоксальная дыхательная гимнастика А.Н. Стрельниковой. В гимнастике основное внима...
9557. Дыхательные движения 15.01 KB
  Дыхательные движения Дыхательные движения - это циклические (ритмические, вдох - выдох) изменения объёма грудной клетки за счет работы дыхательных мышц и эластичности аппарата внешнего дыхания. Вдох и выдох ритмически сменяют друг друга, обеспечивая...
9558. Упражнения для тренировки речевого дыхания 15.59 KB
  Упражнения для тренировки речевого дыхания Для речи обычного физиологического дыхания не хватает. Речь и чтение вслух требуют большего количества воздуха, постоянного дыхательного запаса, экономного расходования его и своевременного возобновления. В...
9559. Строение и функции голосового отдела речевого аппарата 12.62 KB
  Строение и функции голосового отдела речевого аппарата. Речевой аппарат состоит из двух отделов: центрального и периферического. К центральному отделу относиться головной мозг с его корой подкорковых узлами, проводящими путями и ядрами соответствующ...
9560. Механизм голосообразования 12.87 KB
  Механизм голосообразования Голос - это совокупность разнообразных по своим характеристикам звуков, возникающих в результате колебания эластических голосовых складок. Звук голоса - колебания частиц воздуха, распространяющихся в виде волн сгущения и р...
9561. Особенности произношения имен и отчеств 118.56 KB
  Особенности произношения имен и отчеств Сочетание имени и отчества употребляется в различных ситуациях как в письменной,так и устной речи.Многие русские имена и отчества имеют варианты произношения,которые желательно учитывать в то...