Студопедия

Главная страница Случайная страница

Разделы сайта

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






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






 

//Программа создает файл строк. Признак окончания ввода - ввод пустой строки.

//Слово - это последовательность русских букв. Между словами не менее одного

//пробела. Затем строки считываются и программа печатает те слова из каждой

//строки, которые содержат равное количество гласных и согласных букв.

 

#include < stdio.h>

#include < conio.h>

#include < string.h>

#include < stdlib.h>

 

const FNAME = " C: \\stroka.txt\0"; //имя файла объявлено константой

void make_file(char *fname); //создание файла

void pro_verka(char *fname); //чтение и обработка строк файла

int glasn(char ch); //проверка на гласность

int so_glasn(char ch); //проверка на согласность

 

void main()

{clrscr();

char fname[20] = FNAME;

make_file(fname);

pro_verka(fname);

}

 

//Функция проверяет, является ли символ гласной русской буквой

int glasn(char ch)

{static char gl[] = " АаЕеИиОоУуЫыЭэЮюЯя\0";

int i = 0;

 

while(gl[i] & & gl[i]! = ch)

i++;

if(gl[i])

return(1); //значит буква - гласная

else return(0); //значит буква - не гласная

}

 

//Функция проверяет, является ли символ согласной русской буквой

int so_glasn(char ch)

{static char so_gl[] = " БбВвГгДдЖжЗзКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщ\0";

int i = 0;

 

while(so_gl[i] & & so_gl[i]! = ch)

i++;

if(so_gl[i])

return(1); //значит буква - согласная

else return(0); //значит буква - не согласная

}

 

//Функция создания текстового файла

void make_file(char *fname)

{unsigned char st[80]; //исходная строка

FILE *in; //текстовый файл

puts(" \nСоздание файла");

puts(" После ввода каждой строки нажмите < Enter>.");

puts(" Признак окончания ввода - ввод пустой строки\n");

 

//Открываем файл в режиме записи (w) текста (t)

//Если файл с таким именем уже есть, то новые данные

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

if((in = fopen(fname, " wt")) == NULL)

{printf(" Ошибка открытия файла для записи. Нажмите < Enter> ");

getchar();

exit(0);

}

 

printf(" Введите строку и нажмите < Enter> \n");

printf(" -> ");

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

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

while(strlen(st)! = 0)

{fprintf(in, " %s\n", st);

printf(" \nВведите строку и нажмите < Enter> \n");

printf(" -> ");

gets(st);

}

fclose(in); //закрываем файл

}

 

//читаем и обрабатываем строки файла

void pro_verka(char *fname)

{FILE *in; //текстовый файл

unsigned char st[80]; //исходная строка

unsigned char sr[80]; //результирующая строка

unsigned char pr[80]; //обрабатываемое слово

int i, j, k; //номер обрабатываемого символа

int gl = 0; //число гласных букв в слове

int sogl = 0; //число согласных букв в слове

int ok; //признак гласной (согласной) буквы

int n; //длина результирующей строки

int m; //максимально возможная длина строки

//Открываем файл в режиме чтения (r) текста (t)

if((in = fopen(fname, " rt")) == NULL)

{printf(" Ошибка открытия файла для чтения");

getchar();

exit(0);

}

 

printf(" \nРезультат: \n");

m = 80;

fgets(st, m, in); //читаем строку файла

while(! feof(in))

{i = 0;

n = 0;

sr[i] = '\0';

 

while(st[i]) //обрабатываем строку

{k = 0;

while(st[i]! = ' ' & & st[i+1]) //копируем слово

{pr[k] = st[i];

k++;

i++;

}

pr[k] = '\0';

 

j = 0; //обрабатываем слово

gl = 0;

sogl = 0;

while(pr[j])

{ok = glasn(pr[j]); //считаем гласные

if(ok)

gl++;

 

ok = so_glasn(pr[j]); //считаем согласные

if(ok)

sogl++;

j++;

}

if(gl == sogl)

{for(j = 0; j < k; j++, n++)

sr[n] = pr[j];

if(st[i])

sr[n] = ' ';

n++;

}

i++;

}

 

sr[n] = '\0';

printf(" \n%s", sr);

fgets(st, m, in);

}

fclose(in); //Закрываем файл

printf(" \nДля завершения нажмите < Enter> ");

getch();

}

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.