Пример программы
//Ввести строку. Вывести слова в алфавитном порядке.
//Функция сравнения строк - стандартная.
#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