Выделение слов в тексте по нажатию произвольной клавиши — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Выделение слов в тексте по нажатию произвольной клавиши

2020-08-21 337
Выделение слов в тексте по нажатию произвольной клавиши 0.00 из 5.00 0 оценок
Заказать работу

Программа в цикле вводит строки текста, по нажатию произвольной клавиши поочередно выделяет каждое слово строки, проверяет его на наличие букв и цифр, выводит длину минимального слова в строке и само это слово.

#include <string.h>

#include <ctype.h>

 

int main ()

{const int n=70;

 char s[n],*st,str[n];

 unsigned min;

 bool flag=0;

 cout << "input of string" << endl;

 while (cin.getline(s, n))  //цикл ввода строк, выход – Ctrl+z

{ cout << endl;   

 

st=strtok(s,",.:;!?"); //выделение 1-ой лексемы (слова)

min=strlen(st); //получение в min длины слова

strcpy_s(str,st);        //запоминание минимального слова

  

while (st!=NULL)

       { cout << st << endl;

         _getch();

       for (unsigned j=0; j<=(strlen(st)-1);j++)

       if (isalnum(st[j])) //проверка слова на буквы и цифры

                        flag=1;

       else

             {

             flag=0;

             break;

       }     

   if (flag)  

             if (strlen(st)<min)

                              {min=strlen(st);

                               strcpy_s(str,st);

                 }

       st=strtok(NULL,",.:;!?"); //выделение i-ой лексемы

 

} //end while выделения лексем

 

cout << "min dlina = " << min << "\nmin lexema = " << str<< endl;

cout << "input of string or Ctrl+z" << endl;

 

}//end while ввода строк

_getch();

return 0;    

}

Сортировка вводимых с клавиатуры строк *

Вводимые строки помещаются в двумерный массив. Признак завершения ввода – STOP_STRING=“*!*”. Сортировка проводится по методу пузырька в порядке возрастания кода первого символа (по алфавиту). При сортировке перемещаются при необходимости не сами строки, а указатели на них. Для сравнения строк используется библиотечная функция strcmp().

// prot. h

void vvod_str (char **,const int, int&);

void vyvod_str (char **, int);

void sortirovka (char **, int);

 

// stdafx.h

#pragma once

 

#define WIN32_LEAN_AND_MEAN       

#include <stdio.h>

#include <tchar.h>

 

// TODO: reference additional headers your program requires here

#include <iostream>

#include <conio.h>

#include <string.h>

#include "prot.h"

using namespace std;

 

//fun.cpp

#include "stdafx.h"

 

void vvod_str (char **mas_str,const int n, int &dn)

{ const char * STOP_STRING= "*!*";

cout << "Input of string:" << endl;

for (int index=0; index<n; index++)

{cin>> mas_str[index];

if (!strcmp(mas_str[index], STOP_STRING))

                         {dn=index;break;}     

}

}

 

void vyvod_str (char **mas_str, int n)

{ cout << "----------------------" << endl;

 int m=n;

 for (int index=0; m>0; m--)

       cout << mas_str[index++] << endl;

 

}

 

void sortirovka (char **pointers, int n)

{ char *ptr;

for (int index=0; index<n; index++)

for (int i=n-1; i > index; i--)

        if (strcmp(pointers[i-1], pointers[i])>0)

       {ptr= pointers[i];

        pointers[i] = pointers[i-1];

         pointers[i-1] = ptr;

    }

}

 

 

// main.cpp

#include "stdafx.h"

 

int main()

{

const int STRING_NUMBER= 100;          //количество строк

const int BUFFER_SIZE =81;                 //количество символов в строке

char buffer [STRING_NUMBER][BUFFER_SIZE]; //двумерный массив строк

char *pointers [STRING_NUMBER];          //массив указателей на строки

int dn;                                  //количество введенных строк

                           //присваивание значений элементам массива указателей

for (int index=0; index<STRING_NUMBER; index++)   

         pointers[index] = buffer[index];      

                           //или pointers[index] = &buffer[index][0];

                       

vvod_str(pointers, STRING_NUMBER, dn); //ввод строк

vyvod_str(pointers, dn);          //вывод строк

 

sortirovka (pointers, dn);        //сортировка строк

vyvod_str(pointers, dn);

_getch();

return 0;

}

Сортировка строк в зависимости от признака, передаваемого функции main() через аргумент argv *

Программа сортирует строки в лексикографическом порядке, возрастающем или убывающем в зависимости от признака, передаваемого функции main() через аргумент argv, и выводит их на стандартный вывод. Исходный текст программы с комментариями и подробное описание выполняемых действий, представлены в лекции 1.

Инвертирование строки с помощью рекурсивной функции

void reverse();

int main()

{ reverse();

cout << endl;

_getch(); 

return 0;

}

void reverse()

{ char c= _getche();

if (c!= 13) reverse(); //’\r’

cout << c;

return;

}

 


[1] Об этих способах определения строк мы поговорим чуть позже в данной лекции

 

[2] Об этих способах определения строк мы поговорим чуть позже в данной лекции

 


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.