Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф_техн_метод_указания_КР_211000(З).DOC
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
2.03 Mб
Скачать

Алгоритм решения задачи

Листинг программы

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#include <conio.h> //библиотека подключения функции getch()

#include <iostream.h> //библиотека для cin и cout

#include <malloc.h> //библиотека для динамического выделения памяти

#include <fstream.h> //библиотека для ввода/вывода в файл

#include <windows.h> //библиотека используется в функции RUS

#include <math.h> //библиотека математических функций

#include <ctype.h> // библиотека проверки принадлежности символов

#include <stdlib.h> // библиотека некоторых стандартных функций

#include <string.h> // библиотека функций работы со строками

//

char bufRus[256];

//---------------------------------------------------------------------------

char* RUS(const char*text) //функция поддержки русского языка

{

CharToOem(text,bufRus);

return bufRus;

}

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

cout<<RUS("*** Курсовая работа, задание 5 *** \n");

const int K=256;

char s[K],s1[K],s2[K];

char *Del=" .,!?";

char *ps[K],*t;

int N=0;

unsigned int m,M;

cout<<RUS("\nВведите текст на латинице\n");

gets(s);

ps[N]=strtok(s,Del);

while(ps[N])

{

N++;

ps[N]=strtok(NULL,Del);

}

for(int i=N-1;i>0;i--) //начало сортировки по алфавиту

for(int j=0;j<i;j++)

{ strcpy(s1,ps[j]);

strcpy(s2,ps[j+1]);

strlwr(s1); //преобразование к строчным буквам

strlwr(s2);

if(s1[0]>s2[0])

{

t=ps[j];

ps[j]=ps[j+1];

ps[j+1]=t;

}

} //конец сортировки по алфавиту

for( m=97,M=65;m<=122;m++,M++)

for(int i=N-1;i>0;i--) //начало сортировки по длине в группе

for(int j=0;j<i;j++)

if((strlen(ps[j])<strlen(ps[j+1]))&&(*ps[j]==(char)m||*ps[j]==(char)M)&&(*ps[j+1]==(char)m||*ps[j+1]==(char)M))

{

t=ps[j];

ps[j]=ps[j+1];

ps[j+1]=t;

}

cout<<RUS("\nОтсортированный массив слов\n");

for(int j=0;j<N;j++) //вывод массива

cout<<'\n'<<ps[j];

cout<<RUS("\nНажмите любую клавишу для завершения программы ...\n");

getch();

return 0;

}

//---------------------------------------------------------------------------

Результаты тестирования программы