Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Method_Lab_Work_ANSI_C__2010_lab1-10_v2.doc
Скачиваний:
39
Добавлен:
22.11.2018
Размер:
1.14 Mб
Скачать

9.2. Приклад алгоритму та програми

//отримати рядок без зайвих пробілів на початку, в кінці та в середині

// рядку

#include<stdio.h>

#include<string.h>

#include<conio.h>

char str [80]; //початковий рядок

char *ptr; //покажчик на рядок

int i, j, k; //параметри циклу, кількість слів

//================вилучення початкових пропусків===================//

void delspacebeg(char s[80])//параметр s – рядок, що обробляється

{

k=0; //лічильник кількості пропусків

while(s[0]==' ') //доки першим символом є пропуск,

{

k++; //зсунути рядок вліво на кількість пропусків

for(i=0;i<strlen(s)-k;i++)

s[i]=s[i+1]; //зсунути символи рядка на позиції пропусків

}

printf ("Number of spacesymbol of beginning %d \n\n", k);

s[strlen(s)-k]='\0'; //довжину рядка зменшити на кількість вилучених

// пропусків

puts (s);

}

//==================вилучення кінцевих пропусків=================///

void delspaceend(char s[80])

{ ptr=strrchr(s,' '); //позиція останнього входження пропуску

if (ptr != 0)

while(s[ptr-s]==' ' && s[ptr-s+1]=='\0') //доки у кінці рядка пропуск

{ s[ptr-s]='\0'; //заміна пропуску на символ кінця рядка

ptr=strrchr(s,' '); //визначити покажчик на символ пропуску

}

puts(s);

printf("Length of string after delete last spaces %d \n\n",strlen(s));

}

//=================вилучення проміжних пропусків===============//

void delbeetw(char s[80])

{ k=0; //кількість пропусків

for(i=0; i<strlen(s)-1; i++) {

while(s[i]==' ' && s[i+1]==' ') //доки є два підряд пропуски

{ k++; //лічильник пропусків, що йдуть підряд

for(j=i; j<strlen(s)-k; j++) //зсунути рядок вліво

s[j]=s[j+1];

s[strlen(s)-k]='\0'; //вилучити пропуски, що у кінці рядка

k=0; //обнулити лічильник пропусків для нового зсунення рядка

}

}

puts(s); //контрольне виведення

printf("Length of string after delete inside spaces %d \n\n",strlen(s));

}

//============== підрахунок кількості слів у рядку s =======//

void word(char s[80])

{

s[strlen(s)]=' '; //додавання символа пробіл до кінця рядка

s[strlen(s)+1]='\0'; //вставка пропуску після останнього символа

for(i=0,k=0; i<strlen(s); i++)

if(s[i]==' '&&s[i+1]!=' ') //якщо не існує два підряд пропуски, то

k++; //починається k-е слово

printf("Number of words %d \n", k);

}

//================ головна програма ==============================//

void main()

{

puts("Input string:");

gets(str);

puts(str); //введення та виведення рядка

puts("");

printf("\nLength of string %d \n",strlen (str));

delspacebeg(str); //видалення пробілів на початку рядка

printf("length of string after deleted beginning spaces %d \n\n",strlen(str));

delspaceend(str); //видалення пробілів у кінці рядка

delbeetw(str); //видалення пробілів у середині рядка

word(str); //визначення кількості слів

puts(str);

while(!kbhit()); //затримка зображення до натиснення будь-якої клавіші

}

Рис. 9.1. Результати роботи програми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]