Пример программы

 

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

//Функция сравнения строк - стандартная.

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

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

void sort(int n, unsigned char mas[RAZ/2][RAZ]);

int vid_slov(unsigned char isx[RAZ], unsigned char slova[RAZ/2][RAZ]);

void output(int n, unsigned char slova[RAZ/2][RAZ]);

void propis(unsigned char isx[RAZ]);

 

void main()

{unsigned char st[RAZ]; //исходная строка, м.б. с кириллицей

unsigned char slova[RAZ / 2][RAZ]; //массив выделенных слов

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

 

clrscr();

printf("Введите строку\n");

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

//пробелы и символ /n

 

 

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

 

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

 

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

 

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

 

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

getchar();

}

 

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

void sort(int n, unsigned char slovo[RAZ/2][RAZ])

{int i = 0, fl = 1;

unsigned char pr[RAZ];

 

while(fl)

{fl = 0;

i = 0;

while(i < n - 1)

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

{strcpy(pr, slovo[i]);

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

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

fl = 1;

}

i++;

}

}

}

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

int vid_slov(unsigned char st[RAZ], unsigned char slova[RAZ / 2][RAZ])

{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, unsigned char slova[RAZ/2][RAZ])

{int i = 0;

 

printf("\n");

while(i < n)

{puts(slova[i]);

i++;

}

}

 

//перевод строчных букв в прописные

void propis(unsigned char st[RAZ])

{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