Практические / Отчеты студентов 2011-2012 / ВТ-12 ЛР / Понтеев / 8 лаба / Лабораторная работа №8
.docxМосковский Государственный Университет Леса
Лабораторная работа №8.
Программирование на языках высокого уровня
Выполнил: Пантеев В.В.
Проверил: Ларионов Н.В.
Москва 2012.
В темнице там царевна тужит,
А бурый волк ей верно служит;
Там ступа с Бабою Ягой
Идет, бредет сама собой;
Там царь Кащей над златом чахнет;
Ввести текст с клавиатуры или инициализировать массив строк:
Написать программу в виде функций
1. Вывести текст на экран оформив его в красивый арнамент.
2. Подсчитать длины слов в тексте.
3. Подсчитать количество букв 'a' в каждой строке.
4. Упорядочить текст по длине строки по возростанию.
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
char strings[10][100];
void find_a();
void ornament();
void bukvy();
void vvod();
void uporyadochenie();
int i = 0;
int main()
{
vvod();
ornament();
printf("\n");
printf("dliny slov v tekste:\n");
bukvy();
printf("\n");
printf("Kolichestvo bukv \'a\' v strokah:\n");
find_a();
printf("\n");
uporyadochenie();
getch();
return 0;
}
void vvod()
{
do {
gets(strings[i]);
i++;
} while(strings[i-1][strlen(strings[i-1])- 1] != '.');
}
void bukvy()
{
int j = 0;
int n = 0;
int ii,len;
for(ii = 0;ii < i;ii++)
{
len = strlen(strings[ii]);
while(j < len)
{
while(strings[ii][j] == ' ') j++;
while(strings[ii][j] != ' ' && j < len)
{
j++;
n++;
}
while(strings[ii][j] == ' ') j++;
printf("%d ",n);
n = 0;
}
printf("\n");
j = 0;
n = 0;
}
}
void ornament()
{
int max_length = 0;
int length = 0;
int n,j,ii = 0;
n = 0;
j = 0;
printf("\n\n");
for(ii = 0;ii < i;ii++)
{
length = strlen(strings[ii]);
if (length > max_length)
max_length = length;
}
for(ii = 0;ii <= max_length + 2;ii++)
printf("*");
printf("\n");
for(ii = 0;ii < i;ii++)
{
printf("*");
strings[ii][strlen(strings[ii]) - 1] = '\0';
printf("%s",strings[ii]);
for(j = 0;j <= max_length - strlen(strings[ii]) - 1;j++)
printf("*");
printf("*\n");
}
for(ii = 0;ii <= max_length + 2;ii++)
printf("*");
printf("\n\n");
}
void find_a()
{
int ii,j = 0;
int n = 0;
for(ii = 0;ii < i;ii++)
{
while(strings[ii][j] != '\0')
{
if (strings[ii][j] == 'a')
n++;
j++;
}
printf("%d\n",n);
j = 0;
n = 0;
}
}
void uporyadochenie()
{
char buffer[100];
char array1[10][100];
int n,j,len,temp;
int array[i];
int ii;
for(ii = 0;ii < i;ii++)
array[ii] = strlen(strings[ii]);
for(n = 0;n < i;n++)
for(j = i - 1;j > n;j--)
if (array[j - 1] > array[j])
{
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
strcpy(buffer,strings[j-1]);
strcpy(strings[j-1],strings[j]);
strcpy(strings[j],buffer);
}
for(ii = 0;ii < i;ii++)
printf("%s\n",strings[ii]);
}