Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пример программы. //Тема: работа с С-строками.




 

//Тема: работа с С-строками.

//Ввести строку. Между соседними словами - не менее одного пробела. Перед первым

//и за последним словом строки может быть произвольное число пробелов.

//Вывести слова в алфавитном порядке.

//Слова выводятся в исходном виде

#include <iostream.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

const int RAZ = 80 ; //максимальная длина строки

typedef unsigned char telem ; //объявляем тип элементов строки

//исходная строка м.б. с кириллицей

typedef telem tmas[RAZ] ; //объявляем тип "символьный массив"

typedef tmas tmatr[RAZ / 2] ; //объявляем тип "матрица слов"

 

void sort(int n, tmatr mas, tmatr mas1) ;

int vid_slov(tmas isx, tmatr slova) ;

void output(int n, tmatr slova) ;

void propis(tmas isx) ;

 

int main()

{tmas st , //исходная строка

st_kop ; //копия исходной строки

tmatr slova , //массив исходных слов

slova_kop ; //массив "прописных" слов

int n ; //число найденных слов

clrscr() ;

cout << "Ввести строку. Вывести все слова этой строки по алфавиту.\n" ;

cout << "Введите строку\n" ;

cin.getline(st, RAZ) ; //функция вводит всю строку, включая

//пробелы и символ \n, который заменяется символом \0

strcpy(st_kop, st) ; //копируем строку

 

propis(st_kop) ; //заменяем в копии все буквы на прописные

 

n = vid_slov(st, slova) ; //выделяем слова в исходной строке

 

vid_slov(st_kop, slova_kop) ; //выделяем слова в "прописной" строке

 

sort(n, slova_kop, slova) ; //сортируем слова по алфавиту

 

output(n, slova) ; //выводим слова по алфавиту

 

cout << "\nДля окончания работы нажмите Enter->" ;

getch() ;

return 0 ;

}

 

//сортировка слов по алфавиту

void sort(int n, tmatr slovo_kop, tmatr slovo)

{int i, fl = 1, b = 0 ;

tmas pr ;

 

while(fl)

{fl = 0 ;

for(i = 0; i < n - 1 - b; i++)

{if(strcmp(slovo_kop[i], slovo_kop[i + 1]) > 0)

{strcpy(pr, slovo_kop[i]) ; //переставляем "прописные" слова

strcpy(slovo_kop[i], slovo_kop[i + 1]) ;

strcpy(slovo_kop[i + 1], pr) ;

 

strcpy(pr, slovo[i]) ; //переставляем исходные слова

strcpy(slovo[i], slovo[i + 1]) ;

strcpy(slovo[i + 1], pr) ;

 

fl = 1 ;

}

}

b++;

}

}

 

//выделяем из исходной строки слова и формируем из них массив

int vid_slov(tmas st, tmatr slova)

{int i = 0, j = 0 ;

 

while(st[i])

{int k = 0 ;

while(st[i] == ' ')

i++ ;

while(st[i] != ' ' && st[i])

{slova[j][k] = st[i] ;

k++ ;

i++ ;

}

slova[j][k] = '\0' ;

j++ ;

}

return j ;

}

 

//вывод выделенных слов

void output(int n, tmatr slova)

{int i = 0 ;

 

cout << endl ;

while(i < n)

{cout << slova[i] << " " ;

i++ ;

}

}

 

//преобразование всех букв в прописные

void propis(tmas st)

{int i=0 ;

 

while(st[i])

{if(st[i] >= 'a' && st[i] <= 'z' || st[i] >= 'а' && st[i] <= 'п')

st[i] -= 32 ;

else if(st[i] >= 'р' && st[i] <= 'я')

st[i] -= 80 ;

i++ ;

}

}

 


Лабораторная работа №9


Поделиться:

Дата добавления: 2015-04-04; просмотров: 154; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты