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.


 

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

49902. Искусственный нейрон. Алгоритм обратного распространения 467.33 KB
  Нейронные сети обратного распространения – это мощнейший инструмент поиска закономерностей, прогнозирования, качественного анализа. Такое название – сети обратного распространения (back propagation) они получили из-за используемого алгоритма обучения, в котором ошибка распространяется от выходного слоя к входному, т.е. в направлении...
49903. Расчёт конденсатора паровой турбины 840 KB
  Расчет поверхностного конденсатора Тепловой расчет конденсатора Гидравлический расчет конденсатора Расположение трубок в конденсаторе
49904. Использование нейронных сетей при моделировании цен на подержанные автомобили 564.5 KB
  Что такое нейронные сети Зачем нужны нейросети и нейрокомпьютеры Примеры использования нейросетей Чем обусловлено рождение новой науки. НЕЙРОСЕТИ: ОСНОВНЫЕ ПОЛОЖЕНИЯ Что такое нейронные сети Прежде всего когда мы говорим о нейронных сетях то чаще имеем в виду искусственные нейронные сети. Некоторые из них моделируют биологические нейронные сети некоторые нет.
49906. Использование нейронных сетей для прогнозирования моделей цифрового фотоаппарата фирмы Nikon 649.5 KB
  Искусственные нейронные сети Нейронные сети –- это набор нейронов соединенных между собой. Нейронные сети и нейрокомпьютеры это одно из направлений компьютерной индустрии в основе которого лежит идея создания искусственных интеллектуальных устройств по образу и подобию человеческого мозга. Искусственный нейронные сети в значительной мере заимствуют принципы работы головного мозга.
49907. Игра “Восемь ферзей” 86 KB
  В результате выполнения указанной процедуры получим следующий словарь предметной области: Поле для игры в шахматы TField €œАтрибуты Координата Х Координата Y Цвет клетки Ферзи Действия нарисоваться Pint€...
49908. Зведення та опорядження 5ти поверхового будинку 893.02 KB
  Основні вказівки по технології ведення монтажний робіт 10.Вибір вантажозахватних пристроїв При виборі кранів для виконання будівельних монтажних робіт необхідно визначити монтажні характеристики конструкцій які зводяться ; за технікомонтажними характеристиками підібрати кран. Додаток 9 № Назва Галузь застосування Ескіз Вантажопідйомність т Маса кг Технологічна висота м 1 2 3 4 5 6 7 1 Строп з чотирьох віток Монтаж сходових майданчиківплит перекриття і покриття 5 7 9 10 44 48 56 91 45 2 Строп з 4х віток дві з яких подовжені Монтаж...
49910. Методы локализации неисправностей на аппаратуре СВ и РМ 739.72 KB
  Задано внешнее проявление неисправности: В кабине 49Л6 на экране ЭЛТ БИВ АРМ отображается только таблично знаковая информация. Краткое описание тракта прохождения сигнала Тракт прохождения сигнала при отображении информации в режиме ЛУПА x2 и ЛУПА x4 включает следующие устройства: БИВ БГЗ ЦВУ Опишем предназначение и состав устройств участвующих в тракте прохождения данных: Блок индикатора вспомогательный БИВ предназначен для отображения справочной вспомогательной информации а также вторичной радиолокационной информации в режиме...