Professional Documents
Culture Documents
Лабораторна робота 8 (ап)
Лабораторна робота 8 (ап)
Теоретичні відомості
Частина І. Робота з рядками
У мові С++ розроблена бібліотека функцій string.h, яка містить засоби
для роботи з рядковими масивами. Рядок символів – це одномірний масив
типу char, який закінчується нульовим байтом. Для нульового байту
визначена спеціальна символьна константа «\0». Це необхідно враховувати
при визначенні масиву символів. Якщо символьний рядок вміщує N
символів, то при його визначенні необхідно вказати N+1 елемент.
Наприклад визначення:
char str[11];
#include <iostream>
void main()
{
char str [80];
cout<<"Введіть рядок < 80 символів:"<<endl;
cin>>str;
cout<<"Ви ввели рядок:"<<endl;
cout<<str<<endl;
cout<<"Введіть ще рядок 80 символів:"<<endl;
cin>>str;
cout<<"Ви ввели рядок: "<<str<<endl;
}
#include <iostream>
void main()
{
char str [80];
cout<<"Введіть рядок < 80 символів:"<<endl;
cin.getline(str,30);
cout<<"Ви ввели рядок: "<<str<<endl;
cout<<str<<endl;
}
#include<iostream>
#include<string.h>
#include<conio.h>
main()
{const int m=50;
char sim, *pt, str[m];
int n, k=0;
cout<<"Введіть рядок"<<endl;
cin>>sim;
pt=strchr(str, sim);
while(pt)
{k++;
N=pt-str;
cout<<k<<"позиція входження символу ="<<n<<endl;
pt=strchr(++pt, sim);}
cout<<"Кількість входжень="<<k<<endl;
if(k==0) cout<<"Символ не входить в рядок"<<endl;
getch();
}
Приклад
Задача 1. З клавіатури вводяться символи доти, поки не зустрінеться знак
оклику ' ! '. Підрахувати у введеному рядку кількість символів ' о '.
Розв'язання.
Таблиця символічних імен
Математичне Ім'я у Змінна
Смислове значення
ім'я програмі Тип Значення
i i Параметр циклу int Змінне
значення
k k Кількість символів 'о' int Змінне
значення
n n Лічильник, кількість int Змінне
символів, уведених до значення
символу '!'
c[100] c[100] Масив символів із 100 char З'ясовується у
елементів процесі
#include <iostream>
#include <string.h>
int main()
{
int i, n, k; n = 0; char c[100];
cout << "Уведіть рядок:" << endl;
cin >> c[n]; // уводиться перший символ рядка
while (c[n]!='!') // умова вводу символів, доки не зустірнеться
'!'
{
n++; // лічильник збільшується на одиницю
cin >> c[n]; // уводиться наступний символ
}
k = 0; // початкове значення кількості символів 'о'
for (i = 0;i < n;i++) // відкриваємо цикл для перебору елементів
{
if (c[i] == 'o') // якщо поточний елемент матриці = 'о',
k++; // кількість збільшується на одиницю
}
// вивід результатів
if ( k == 0 )
cout << "Немає символів 'о' " << endl;
else
cout <<"Кількість символів 'о' = "<< k << endl;
return 0;
}
# include <iostream>
# include <string.h>
void main ()
{
char ch;
int int1, int2;
cin>>int1; // уводимо ціле число з проміжка 0 .. 255
ch=char(int1); // конвертуємо число у відповідний символ
cout<<"ch = "<<ch<<endl; // виводимо на екран символ
int2=int(ch); // конвертуємо символ назад у число
cout<<"int2 = "<<int2<<endl; // виводимо число на екран
}
Приклад:
struct Automobile
{ int year; // рік випуска автомобіля
int doors; //кількість дверей автомобіля
double horse_Power; // Потужність двигуна (кінські сили)
char model [10]; // Назва моделі
};
Приклад 2:
struct Automobile Car[10]; Car [i] . year = 1997;
Car [i] . doors = 5;
Car [i] . horse_Power = 200; Car [i]. model = "Ford";
void main()
{
At_Mble my_Car = {2000, 4, 100, "BMV"}; /*ініціалізація
структурної змінної*/
int Age_my_Car;
Age_my_Car = Age_Car (my_Car); //виклик функції Age_Car
cout << вік моєї машини = << Age_my_Car ;
}
void main () {
…
Pw (my_Car);
...
}
void main () {
At_Mble Car[10];
…
double S = Sum_Power (Car);
...
}
Завдання 2.
Елементи структури:
− вакансія,
− освіта,
− оплата,
15. − кількість робочих годин на тиждень.
Функція, яка повертає погодинну оплату
Рекомендації діетолога:
− прізвище та ініціали;
− ріст (см.);
− вага (кг.);
− діагноз;
Функція, яка присвоює значення діагноз: якщо ріст – вага > 120, діагноз –
"дистрофія", якщо ріст – вага < 80, діагноз – "ожиріння", інакше діагноз –
18. "практично здоров".
Військовий облік:
− прізвище та ініціали;
− ріст (см.);
− вага (кг.);
− рік народження;
− признак "чи годен до служби";
− функція, яка присвоює значення признака "чи годен до служби":
19.
якщо 80<(ріст – вага)<120 і 1992>рік народження>1968, признака=1, інакше
признака=0.
Елементи структури:
вид приміщення,
кількість кімнат,
площа,
рік введення в експлуатацію.
23.
вивід на дисплей і у файл інформації про приміщення, що мають площу більше
100 м2
Сортувати за елементами: вид приміщення, рік введення в експлуатацію.
– якщо такі відсутні, вивести відповідне повідомлення
№ варіанта Зміст програми
Діагностика пацієнтів лікарні
− прізвище та ініціали;
− артеріальний тиск верхній;
− артеріальний тиск ніжній;
− діагноз;
− функція, яка присвоює значення діагноз: якщо артеріальний тиск верхній > 140
і артеріальний тиск ніжній>70, діагноз – "гіпертонія", якщо артеріальний тиск
верхній < 110 і артеріальний тиск ніжній<50, діагноз – "гіпотонія", якщо
24. артеріальний тиск верхній < артеріальний тиск ніжній, виводить повідомлення
"переміряти тиск" діагноз – не встановлено, інакше діагноз – "тиск в нормі".
Елементи структури:
− назва цукерок,
− виробник,
− сорт,
− ціна за кілограм.
30.
Створення динамічного масиву
вивід на дисплей і у файл всіх цукерок певного сорту, чия вартість не перевищує
ціни, яка вводиться з клавіатури. Сортувати за елементами: назва цукерок, ціна.
− Якщо таких немає, вивести відповідне повідомлення.
Контрольні питання
1. Що розуміють під символьним рядком?
2. Чим відрізняються рядки від масивів символів?
3. Чим відрізняється запис рядків від запису окремих символів?
4. Яким типом даних представляються рядки в мові C++?
5. Яким чином оголосити рядок у С++?
6. Якою може бути максимальна довжина рядка в С++?
7. Які основні функції надає бібліотека string.h?
8. Яким чином визначити довжину рядка?
9. Яким чином виділити слова з рядка?
10. Для чого необхідні структури?
11. Що таке об’єднання?
12. Яким чином оголосити структуру в програмі мовою С++?
13. Яким чином оголосити об’єднання в програмі мовою С++?
14. Яким чином виконується ініціалізація структури?
15. Яким чином можна звернутися до елементів структури?
16. Чи можна передавати структуру в якості аргументу в функцію та
повертати з функції значення типу структура?
17. Що таке бітове поле?
18. Які дії можна виконувати над бітовими полями?
19. Чи може структура містити в собі структури або об’єднання?
20. Яким чином розподіляється пам’ять для структури?
21. Яким чином розподіляється пам’ять для об’єднання?
22. Що таке перелічення?
23. Яким чином оголосити перелічення в програмі мовою С++?
24. Чим відрізняються об’єднання від структур?