Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
attachments_05-09-2012_18-55-54 / ТРЕНИНГ УМЕНИЙ.doc
Скачиваний:
10
Добавлен:
09.04.2015
Размер:
118.78 Кб
Скачать

9.Пример выполнения упражнения тренинга на умение 9 Задание

Дан текст. Слова в тексте разделяются символами пробела (‘ ’) или табулирования (‘\t’). Текст заканчивается символом начала новой строки (\n) или символом окончания строки (‘\0’), а его длина – не более 80 символов.Требуется: Соcтавить программу выдачи из текста всех слов и определение слова наибольшей длины.

1. Дано: SLмножество слов в заданном текстеTОпределить: Lmax = max strlen ( sli ) sliSL i=1,…N

strlen ( sli ) –длина словаsl

2. Алгоритм обработки текста разработаем, считая, что будем использовать программу выделения слов, рассмотренную в разделе 2.3. и функцию выделения слова –Vs

Начало ввести текст T Lmax =0 l=0 p=T цикл по просмотру символов текста по l и указателю p до конца текста если обнаружено начало слова то выделить очередное слово (SLOVO) и определить его длину (Lt) напечатать SLOVO l=l + Lt p=p +Lt если Lt > Lmax то Lmax = Lt копировать SLOVO в SLMax конец_если иначе l=l+1 p=p+1 конец_если конец_цикла по просмотру символов выдать SLMax

3. Напишем основную программу: # define n 81

Int Vs(char *s,char *sl, int Mdl);

void main ()

{ char SLOVO[n],T[n], SLMax[n];

int l,Lmax,Lt;

char *p;// указатель для просмотра символов текста Т

clrscr();

printf( "Введите текст:\n");

gets(T);

puts("Вы ввели текст: ");

puts(T);

Lmax=0;

p = T;

l=0;// переменная для обозначения номера символа текста // и проверки максим. доп. границы (l <n)

while (*p!='\n'&&*p!='\0'&&l<n)

{

if (*p!= ' '&& *p!='\t')

{

Lt=Vs(SLOVO,p,n);

puts(SLOVO);

if (Lt > Lmax)

{ Lmax = Lt;

strcpy (SLMax,SLOVO);

}

p+=Lt;

l+=Lt;

}

else

{l++;

p++;

}

}

printf ("Слово максимальной длины:\n");

puts(SLMax);

getch();

}

4. Окончательно оформим программу

# include <stdio.h>

# include <conio.h>

# include <string.h>

# define n 81

int Vs(char *s,char *sl, int Mdl);

void main ()

{ char SLOVO[n],T[n],SLMax[n];

int l,Lmax,Lt;

char *p;

clrscr();

// p=text;

printf( "Введите текст:\n");

gets(T);

puts("Вы ввели текст: ");

puts(T);

Lmax=0;

p = T;

l=0;

while (*p!='\n'&&*p!='\0'&&l<n)

{

if (*p!= ' '&& *p!='\t')

{

Lt=Vs(SLOVO,p,n);

puts(SLOVO);

if (Lt > Lmax)

{ Lmax = Lt;

strcpy (SLMax,SLOVO);

}

p+=Lt;

l+=Lt;

}

else

{l++;

p++;

}

}

printf ("Слово максимальной длины:\n");

puts(SLMax);

getch();

}

int Vs(char *s,char *sl, int d)

{int i,N;

N=0;

while (*sl!=' '&& *sl!='\0'&&*sl!='\t'&&*sl!='\n')

{*s=*sl;

s++;

sl++;

N++;

}

for(i=N;i<d;i++)

{*s='\0';

s++;

}

return N;

}

Соседние файлы в папке attachments_05-09-2012_18-55-54