среда, 6 апреля 2016 г.

Урок №6 Робота з тестом.

При написанні програм нам прийдеться працювати з текстом в будь якому випадку.
Текст ми можемо записати у масив типу char. Навіщо це взагалі, це може знадобитись  наприклад при написанні програми для переводу і тому подібне.
Щоб описати змінну типу char потрібно написати так:
char a; , це для одного символа;
char a[100]; це для 100-та файлів;
Для зчитування тексту використовується функція gets(). Ця функція зчитує символьну інформацію в змінну до тих пір поки не "зустріне" символ переведення рядка.
gets(a); - зчитає ряд символів у змінну а.
А далі мажна працювати як із звичайним масивом.
Є ще така цікава річ як коментар. Він в коді не виконується , але біля якоїсь операції можна записати поясненя. приклад використання коментара я навуду в наступному прикладі.
Наведемо приклад роботи з текстом.
Приклад. Ввести текст з клавіатури. Вивести на екрат, видалити всі попередні входження останньої літери і вивести змінений масив.
#include "stdafx.h"
#include
#include

using namespace std;

int main()

{
int k;
int i = 0;
int strt = 0;//змінна яка вказує на початок слова
int end = 0;//змінна на кінець слова
setlocale(LC_ALL, "Ukr");
char a, b;
char text[100];//описуємо масив символів на 100 елементів
cout << "Введiть текст роздiлений пробiлами - " << endl;
gets_s(text);//зчитуємо текст в змінну
cout << text << endl;//виводимо вмістиме змінної на екран
//нам треба у циклі знаходити кінець і початок слова ,
//потім брати останній елемент і порівнювати з всіма попередніми
//якщо будуть збіги, то ми видалятимемо елемент з масиву
int n = strlen(text);//strlen це функція яка повертаєціле число, кількість елементав у масиві символів char
while (i < n)//цикл який буде перевіряти чи ми не вийшли за межі нашого масиву
{
while (text[i] == ' ')//цикл який шукає початок слова
i++;
strt = i;
while (isalpha(text[i]))//цикл який кінець слова. " isalpha" - це функція яка перевіряє
                                                   //чи елемент буква
i++;
end = i;
for (int k = strt; k < end-1; k++)//цикл який проходи по всіх елементах знайденого слова

if (text[k]==text[end-1])//перевірка
{
for (int t = k; t < n; t++)//видалення елемента масиву
text[t] = text[t + 1];
n--;//зменшуємо розмір масиву на одиницю
end--;//зменшуємо розмір слова на одиницю
k--;//зменшуємо індекс k щоб не пропустити символ

}
i = end;//індекс переносимо на пробіл між словами
}
cout << text << endl;//вивід нашого масиву, вже без попередніх входжень останьої літери
system("pause");
return 0;
}
Ніби не важка програма, але мені прийшлось посидіти годинку, бо трохи призабув роботу з символьними рядками.
Чекайте наступні уроки.


Комментариев нет:

Отправить комментарий