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

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

Приклад програми | Операторний блок | Приклади програм | Приклад алгоритму та програми | Приклад алгоритму та програми | Код програми | Приклад алгоритму та програми | Приклад алгоритму та програми | Код програми | Приклад алгоритму та програми |


Читайте также:
  1. Аттестация прикладных собак
  2. Гуменюк Ю.П. Організаційно-економічні механізми стимулювання розвитку рекреаційно-туристичного комплексу (на прикладі Тернопільської області). – Рукопис.
  3. Декоративно-прикладное искусство
  4. Занятия граждан военно-прикладными видами спорта
  5. ЗМІСТ ПРОГРАМИ
  6. ЗМІСТ ПРОГРАМИ
  7. ЗМІСТ ПРОГРАМИ

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

// рядку

#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. Результати роботи програми

9.3. Варіанти завдань

1. У рядку символів визначити кількість слів і знайти найдовше слово. Вилучити з рядка однолітерні слова та зайві пропуски, коми, крапки. Слова відділяються один від одного довільною кількістю пропусків, ком і крапок.

2. У рядку символів визначити кількість слів, що повторюються, та вилучити дублікати. Слова відокремлюються пробілами.

3. З рядку вилучити всі слова на непарних порядкових позиціях, а слова на парних позиціях надрукувати перевернутими.

4. Ввести два рядки, вилучити з першого рядка всі слова, які зустрічаються у другому рядку.

5. Увести масив рядків, що є реченнями. Речення може займати більше, ніж один рядок. Визначити найдовше речення і переписати його, помінявши місцями парні та непарні слова.

6. Увести масив рядків. Розширити кожний рядок до довжини 60 символів, додавши рівномірно пропуски між словами. Якщо початковий рядок містить більше 60 символів, то перенести зайві слова на новий рядок.

7. У рядку символів визначити слова-паліндроми, які однаково читаються справа наліво і навпаки. Знайти найбільшу довжину цих слів. Якщо таких слів немає, то з кожного слова на непарній позиції вилучити голосні та надрукуйте їх.

8. У рядку символів визначити слова, що починаються і закінчуються на літери, значення яких уводять з клавіатури. Надрукувати їх у перевернутому вигляді (справа наліво). Визначити частоту кожної голосної літери

9. Заданий рядок s1. Після видалення однієї літери з s1 утворюється рядок s2. Після видалення з s1 іншої літери утворюється рядок s3. Потрібно за рядками s2 і s3 відновити рядок s1.

10. У рядку символів визначити слова, які можна одержати перевертанням слова, що вводиться з клавіатури на запит користувача. Кожне друге слово розбити на склади.

11. У рядку визначити кількість однакових символів, що йдуть поспіль. Надрукувати групи символів, що повторюються та вилучити повторення символів, залишивши по одному. Розбити на склади найдовше слово.

12. У рядку слів визначити кількість слів і надрукувати ті, довжина яких більша за вказану користувачем. Якщо слово починається із заданого користувачем символа, то замінити слово на перше у рядку.

13. Увести парну кількість рядків. Вилучити з кожного парного рядка всі слова, які зустрічаються у попередньому рядку. У кожному непарному рядку знайти слова, довжина яких не перевищує N символів (значення N уводять з клавіатури) і вивести їх у алфавітному порядку.

14. Увести рядок символів та отримати новий рядок, слова якого відсортовані за алфавітом. Отримати інший рядок, у якому слова відсортовані за довжиною слів.

15. Увести рядок символів та підрахувати кількість повторень слів однакової довжини. Вилучити всі слова заданої користувачем довжини. У рядку, що залишився, кожне слово записати з великої літери.

16. Увести два рядки символів та замінити кожне слово на парній позиції першого рядка на слово, що стоїть на непарній позиції у другому рядку. Кількість слів у рядках може бути різною.

17. Розбити на склади згідно з правилами перенесення слів кожне слово на парній позиції у рядку. Слова на непарних позиціях інвертувати (записати у зворотньому порядку).

18. Задано рядок слів, між якими не менше одного пробілу. Вивести на екран слова, в яких літери розташовані в алфавітному порядку. Якщо таких слів немає, то замінити усі входження заданого користувачем символа на заданий підрядок.

19. Увести масив рядків. Рядки містять пробіли на початку та в кінці рядка. Вирівняти рядки по лівому або по правому полю відповідно до вимог користувача, вилучивши зайві пробіли.

20. Увести число та надрукувати його словесний еквівалент. Наприклад, введено число 25, надруковано "twenty five".

21. Увести декілька рядків. Об'єднати перші два, встановивши довжину об'єднаного рядка не більше за задану користувачем кількість символів. Символи, що залишилися, приєднати до третього рядка. Повторити операцію для наступної групи рядків.

22. Увести рядок символів, серед яких є цифрові, пробіли та алфавітні. Визначити слова, які є паліндромами (симетричними), ідентифікаторами зміних, натуральними числами.

23. Увести рядок, що містить арифметичний вираз (дужки, символи арифметичних операцій, операнди). Визначити коректність виразу (парність дужок, коректність операцій та операндів).

24. Увести два рядки символів. Визначити кількість замін, видалень, вставки символів, які необхідно здійснити для того, щоб один із уведених рядків перетворити в інший.

9.4 Контрольні запитання

1. Чим відрізняється поточна довжина рядка від його загальної довжини?

2. Як позначається кінець рядка?

3. Як ініціалізувати рядок під час його оголошення?

4. Як здійснити доступ до елемента рядка?

5. Як увести та вивести рядок?

6. Які бібліотечні функції визначені для змінних рядкового типу?

7. Чи можна виконати операції присвоєння рядків?

8. Як реалізуються операції порівняння рядків?

9. У чому особливість застосування функції розкладання рядка на лексеми?


Структури та масиви структур
Лабораторна робота 10

10.1 Теоретичні відомості

Структура - це тип даних користувача, який об'єднує дані різних типів. Елементами структури можуть бути дані будь-якого типу. Елементи структури називаються полями.

Оголошення структури задається у такому вигляді:

struct ім'я_типу_структури

{

тип ім'я_змінної;

тип ім'я_змінної;

................;

};

Оголошення структури обов'язково закінчується фігурною дужкою }, після якої ставиться крапка з комою.

Оголошення структурного типу не резервує жодного простору в пам'яті, тільки створює новий тип даних, який використовується у процесі оголошенні змінних. Пам'ять для структури резервуватиметься під час оголошення змінної. Для визначення обсягу пам'яті, який резервується для змінної структурного типу, використовується операція sizeof(ім'я_типу_структури).

Структурна змінна оголошується як будь-яка змінна через ім'я або покажчик на тип:

ім'я_типу_структури ім'я_змінної;

ім'я_типу_структури *ім'я_покажчика;

 

Доступ до елемента структури здійснюється через складене ім'я, яке утворюється за допомогою операції точки через ім'я об'єкта чи посилан-ня:

 

ім'я_змінної_типу_структури.ім'я_поля_структури

 

Якщо задано покажчик на структурний тип, то для доступу до елемента структури використовується складене ім'я, яке утворюється за допомогою операції стрілка:

 

ім'я_покажчика_на_тип_структури -> ім'я_поля_структури

 

У будь-якій функції можна оголошувати структурну змінну, але оголошення типу структури треба подати як глобальне на початку програми.

 

Приклад:

 

#include <iostream>

struct anketa //структурний тип

{

char fio[20]; //поля структури

int year_birth;

float salary;

};

void main(){

anketa student, *pointer_student;

pointer_student = &student;

cin >> student.fio;

cin >> pointer_student-> salary;

cout << student.fio;

cout << pointer_student->salary;

}

Структурній змінній можна присвоїти значення іншої структурної змінної, можна передавати як параметри у функцію і повертати в основну програму як результат роботи функції над полями структури. Попередньо оголошений покажчик на структурну змінну передається у функцію під час її виклику, щоб не створювати копії основного об'єкта.

Якщо у функцію передається покажчик на структурну змінну, то у процесі виклику функції параметр замінюється на аргумент, значенням якого є адреса структурної змінної: &ім'я_структурної_змінної

Якщо параметром є структура, то під час виклику функції аргументом є ім'я структурної змінної.

Структурні змінні можна об'єднувати у масиви, кожний елемент якого - це структурна змінна.Оголошення масиву структур:

ім'я_типу_структури ім'я_масиву_структур[кількість елементів];

 

Доступ до поля масиву структур здійснюється за допомогою індекса елемента: ім'я_масиву_структур[індекс].ім'я_поля

 

Якщо у функцію передається покажчик на масив структур, то він ініціалізується значенням нульового елемента масиву:

 

ім'я_типу_структури *ім'я_покажчика; //оголошення покажчика

ім'я_покажчика = &ім'я_масиву_структур[0];

 


Дата добавления: 2015-08-27; просмотров: 416 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Визначення рядка| Приклад алгоритму та програми

mybiblioteka.su - 2015-2024 год. (0.016 сек.)