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

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

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

#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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: