Приклад 8.
Текст складається з фраз розділених символом "крапка з комою". Кожна фраза складається з двох слів розділених проміжком. Вивести друге слово з кожної фрази.
#include <iostream.h>
#include <ctype.h>
#include <string.h>
void main()
{
char t[40]="qqq qwer;www2 sdff;rtrtrtr3 dffg;",*k,*h;
int r;
k=strtok(t,";");
while (k)
{
h=strchr(k,' ');
r=h-k;
cout<<k+r+1<<endl;
k=strtok(NULL,";");
}
}
Питання для самоперевірки
1) Опишіть і ініціалізуйте два рядки. Напишіть оператор, який перевіряє чи однакові ці рядки і виводить відповідне сповіщення.
2) Опишіть і ніціалізуйте рядок. Напишіть оператор, який перевіряє чи є в рядку вказаний символ і виводить відповідне сповіщення.
3) Опишіть і ініціалізуйте два рядки. Напишіть оператор. який перевіряє чи співпадають в цих рядках перші три символи і виводить відповідне сповіщення.
4) Описати масив з 50 символів. Записати в цей масив фразу "Ученье свет, а не ученье тьма".
5) Описати два рядки і ініціювати їх. Об'єднати їх в один рядок.
6) Описати і ініціалізувати рядок символів. Записати оператор, який визначає чи є в цьому рядку вказаний підрядок і вивести відповідне сповіщення.
7) Написати функцію, яка визначає і повертає відповідь чи є два заданих символи символами цифр.
8) Записати прототип функції, яка визначає і повертає відповідь чи є два заданих символи символами цифр.
9) Написати функцію, яка визначає і повертає відповідь чи заданий символ є маленькою літерою латинського алфавіту.
10) Написати функцію, яка визначає і повертає відповідь чи є заданий символ цифрою
Робота з екраном<conio.h>
Звернення | Пояснення |
wherex() | Повертає поточне значення Х |
wherety() | Повертає поточне значення Y |
gotoxy(<x>,<y>) | Переміщення курсора в (х,у). |
window(<x1>,<y1>,<x2>,<y2>) | Вікно, де х,y – лівий верхній кут, а х1,y1 – правий нижній |
clrscr() | Очистка екрану |
textcolor(<колір>) | Встановлення кольору символів |
textbackground(<колір>) | Встановлення кольору фону |
sound(<частота в гц>) | Включити звук з вказаною частотою |
nosound() | Віключити звук |
delay(<час в млсек>) | Затримка на вказаний час |
Використання графіки
<graphics.h>
Попередньо необхідно ініціалізувати графіку. Для цього можна використати функцію:
void ingr(void)
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "d:\\turboc~1\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
cout<<"Graphics error: “<<grapherrormsg(errorcode);
exit(1);
}
}
Звернення | Пояснення |
getmaxx() | Повертаї максимальне значення Х |
getmaxy() | Повертає максимальне значення Y |
getx() | Повертає поточне значення Х |
gety() | Повертає поточне значення Y |
moveto(<x>,<y>) | Переміщення курсора в (х,у). |
moverel(<dx>, <dy>) | Переміщення в (х+dx, y+dy) |
putpixel(<x1>,<y1>,<колір>) | Точка |
line(<x1>,<y1>,<x2>,<y2>) | Лінія, де х,y – точка початку, а х1,y1 – кінця |
lineto(<x>,<y>) | Лінія від поточної точки до вказаної |
linerel(<dx>, <dy>) | Лінія від поточної до точки, що визначається (х+dx, y+dy) |
rectangle(<x1>,<y1>,<x2>,<y2>) | Прямокутник |
circle(<x>,<y>,<радіус>) | Коло |
arc(<x>,<y>,<початковий кут>, <кінцевий кут>,<радіус>) | Дуга кола. Х,y - координати центру |
ellipse(<x>,<y>,<початковий кут>, <кінцевий кут>, <радіусX>,<радіусY>) | Дуга еліпсу |
drawpoly(<кількість вузлів>,<м.‘я масиву з координатами вузлів>) | Ломана лінія або багатокутник. В другому випадку перша вершина описується вдруге як і остання. Масив типу int, розмір=2*<кількість вузлів>. Елементи масиву послідовно містять координати вузлів. Наприклад для трикутника int M[6]={50,20,100,100,50,20}; drawpoly(3,M); |
setlinestyle (<тип лінії>, <шаблон>,<товщина>) | Встановлення стилю лінії <тип лінії> 1 - пунктирна 2 – штрихпунктирна 3 – 4 - визначається шаблоном Для типу лінії 0-3 шаблон 0. <Товщина>: 1 - в 1 піксел, 3 - в 3 пікселі |
setbkcolor (<колір>) | Колір фону (від 0 до 7) |
setcolor (<колір>) | Колір ліній (від 0 до 15) |
getbkcolor() | Повертає поточне значення кольору фону |
getcolor() | Повертає поточне значення кольору ліній |
setFillStyle (<шаблон>, <колір>) | Встановлення шаблону заливки <шаблон>: 0 - суцільна заливка кольором фона; 1 - " ; 2 - ============ ; 3 - //////////// ; 4 - жирні //////// ; 5 - " \\\\\\\\\\\\ ; 6 - тонкі \\\\\\\\\ ; 7 - рідкий штрих ; 8 - густий штрих |
bar(<x1>,<y1>,<x2>,<y2>) | Прямокутник, залитий по поточному шаблону |
bar3d(<x1>,<y1>,<x2>,<y2>, <глибина>,<0 або 1>) | Паралелепіпед. Верхня грань залита по поточному шаблону |
fillpoly(<кількість вузлів>,<ім‘я масиву з координатами вузлів>) | Багатокутник, залитий по поточному шаблону |
fillellipse(<x>,<y>, <радіусX>,<радіусY>) | Еліпс, залитий по поточному шаблону |
sektor (<x>,<y>,<початковий кут>, <кінцевий кут>, <радіусX>,<радіусY>) | Сектор еліпсу, залитий по поточному шаблону |
floodfill(<x>,<y>, <колір лінії контуру>) | Заливка замкнутої області по поточному шаблону. <x>,<y> - точка в середині області. |
outtext (<текст>) | Виведення тексту з поточної точки |
outtextxy(<x1>,<y1>,<текст>) | Виведення тексту з вказаної позиції |
settextstyle (<номер шрифта>, <положення текста>, <розмір символів>) | Вибір шрифта <номер шрифта>: 0 - матричний 8х8; 1 - полужирний ; 2 - тонкий ; 3 - рублений; 4 - готичний. <положення текста>: 0 - горизонтальне, зліва - направо; 1 - вертикальне знизу-вверх; 2 - букви повернуто на 90, але вивід горизонтальний. <розмір символів> - 0.....10 |
cleardevice() | Очистка екрану. Курсор встановлюється у початок координат |
closegraph() | Вийти з графічного режиму |
Приклад 1:Побудувати правильний багатокутник.
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#define n 6 // кількість кутів
#define n1 2*n
void main()
{
float a;
int x=200,y=200,r=100; // координати центру і радіус описаного кола
int m[n1]; // масив вершин багатокутника. Послідовно //заносяться значення x1, Y1, X2, Y2, ... ,x6, y6, x1, y1
// Перехід в графічний режим
int r0=DETECT, r1;
initgraph(&r0,&r1,"d:\\turboc~1\\bgi");
if (r0<0)
{ cout<<"ERROR GRAPH!!!"<<endl;
exit(1);
}
// Формування координат вершин багатокутника
for (int i=0;i<n*2;i+=2)
{
/* аргумент у функцій sin, сos повинен бути в радіанах. Кути у багатокутника вимірюються в градусах. Тому значення в градусах необхідно перевести в радіани:
Кут в радіанах= Рі/180*(кут в градусах)
*/
a=360/n*i/2; //кут кожної вершини багатокутника
m[i]=x+(int)(cos(3.14/180*a)*r);
m[i+1]=y+(int)(sin(3.14/180*a)*r);
cout<<a<<endl<<m[i]<<" "<<m[i+1]<<endl;
}
// Додатково задається перша вершина як остання
m[12]=m[0];
m[13]=m[1];
drawpoly(n+1,m);
}
Організація даних в мові С++
1) Масиви
2) Структури
3) Об¢єднання
4) Розробка програм з використанням структурованих типів даних
Масиви
1) Одновимірні масиви. Ініціалізація одновимірних масивів
2) Двовимірні масиви. Ініціалізація двовимірних масивів
3) Питання для самоперевірки
4) Розробка програм з використанням масивів
Масив - це обмежена послідовність даних однакового типу. Масив характеризується іменем, типом елементів і розміром. Нумерація елементів завжди починається з нуля. До елементів масиву можна звернутись за допомогою індексу. Індексом може бути ціле число або вираз. Індекс є номером елементу.
Елементи масиву можуть мати довільний тип, крім типу void.
Масиви можуть бути одновимірними і багатовимірними.
Одновимірні масиви
Формат опису масиву:
<тип елементів> <ім¢я масиву>[<розмір>];
Наприклад:
int mas1[10]; float mas2[5]; char mas3[15];
Опис масиву тільки відводить необхідний розмір пам¢яті для елементів масиву, але не заповнює їх ніякими значеннями - елементи масиву можуть мати довільне значення. Тільки для зовнішніх і статичних масивів компілятор заповнює їх елементи нулями.
При описі масиву може бути виконана ініціалізація його елементів. Для цього після опису розміщується перелік значень елементів масиву, обмежений фігурними дужками.
Формат ініціалізації:
<тип елементів> <ім¢я масиву>[<розмір>]={<знач.1>,<знач.2>,...<знач.n>};
Наприклад: int mas1[3]={2,34,189};
Можливі різні варіанти ініціалізації:
1) Кількість вказаних елементів співпадає з розміром масиву;
2) Кількість вказаних елементів менше розміру масиву. В цьому випадку перші елементи масиву будуть ініціалізовані вказаними значеннями, а значення інших буде дорівнювати нулю.
Наприклад: int mas[10]={3,5,7,9}; Перші чотири елементи набудуть вказаних значень, а значення інших буде 0.
Якщо необхідно заповнити всі елементи масиву нулями, достатньо вказати в фігурних дужках лише один ноль: int mas[10]={0}; Значення всіх елементів масиву буде 0.
Для масивів типу char не ініціалізовані елементи набувають значення коду нуля, а саме ‘\x0’.
Для визначення пустого рядка можна записати: char m[10]={“”}; або
char m[10]=“”;
3) Кількість вказаних елементів більше розміру масиву. В цьому випадку при трансляції формується сповіщення про помилку.
4) Розмір масиву встановлюється по кількості заданих значень при ініціалізації. В цьому разі при описі масиву його розмір в квадратних дужках не вказується. Наприклад: int mas[]={3,5,7,9}; Буде створено масив з чотирьох цілих елементів і ці елементи отримують початкові значення з списку ініціалізації.
Двовимірні масиви
Двовимірний масив можна розглядати як масив, елементам якого є масив.
Формат опису двовимірного масиву:
<тип елементів> <ім¢я масиву>[<розмір1>][<розмір2>];
Наприклад:
int mas4[10][10]; float mas5[5][6]; char mas6[3][15];
Для звернення до елементу двовимірного масиву необхідно вказувати два індекси. Наприклад,
mas[0][0], mas[5][7].
Елементи двовимірних масивів зберігаються в пам¢яті по рядках. Перший індекс - це номер рядку, а другий - номер елементу в рядку, тобто номер стовпця.
Правила ініціалізації для двовимірних масивів такі ж, як і для одновимірних.
Наприклад:
1) int mas[3][3]={ 1,2,3,
4,5,6,
7,8,9};
Елементи заповнюються послідовно по рядкам. Можна явно вказувати поділ на рядки:
int mas[3][3]={ {1,2,3},
{4,5,6},
{7,8,9}};
2) Кількість рядків можна не вказувати, кількість визначиться по заданим даним:
int mas[][3]={ {1,2,3},
{4,5,6},
{7,8,9}};
Буде сформовано матрицю 3х3.
3) Щоб заповнити всю матрицю нулями: int mas[3][3]={0};
4) Можна вказувати не всі значення в рядках:
int mas[3][3]={ {1},
{4,5},
{7,8,9}};
Не ініціалізовані елементи заповняться нулями.
5) Для масиву рядків, в кінці кожного рядка буде записано код нуля.
char str[3][50]={ “Рядок 1”,
“Рядок 2”,
“Рядок 3”};
Визначення масиву пустих рядків char str[3][50]={“”};
Для двовимірних масивів можна використовувати рядки матриці, як масиви. Тобто, наприклад, mas[i] може бути передано як масив у функцію.
Питання для самоперевірки
1) Описати масив з 10 цілих значень. П'ятому елементу цього масиву присвоїти значення.
2) Описати масив з 10 символів. Другому елементу цього масиву присвоїти значення.
3) Описати масив з 20 дійсних значень. Першому елементу цього масиву присвоїти значення.
4) Описати двовимірний масив 5х8, що містить дійсні значення. Елементу цього масиву, що знаходиться в третьому рядку і шостому стовбці присвоїти значення.
5) Описати двовимірний масив 4х4, що уміщує символьні значення. Елементу цього масиву, що знаходиться в другому рядку і першому стовбці присвоїти значення.
6) Описати двовимірний масив 5х8, що містить дійсні значення. Першому елементу головної діагоналі цього масиву присвоїти значення.
7) Описати масив з трьох цілих значень і ініціалізувати всі його елементи.
8) Описати масив з 10 символів і ініціалізувати перші три його елементи.
9) Описати і ініціалізувани нулями масив з 30 цілих значень.
10) Описати і ініціалізувати двовимірний масив дійсних чисел, розміром 2х2.
11) Описати двовимірний масив цілих елементів розміром 3х13. Ініціалізувати його таким чином, щоб в кожному рядку перший елемент мав значення номеру рядку, а інші дорівнювали нулю.
12) Описати двовимірний масив символів, 3х10. Ініціалізувати його таким чином, щоб перший рядок містив першу літеру латинського алфавіту, другий рядок - першу і другу, третій - три перші літери.
13) Описати двовимірний масив, розміром 5х15. Написати фрагмент програми, що заповнює другий рядок цього масиву числами від 1 до 15.
14) Описати двовимірний масив, розміром 20х10. Написати фрагмент програми, що заповнює четвертий стовбець цього масиву числами від 1 до 20.
15) Описати двовимірний масив, розміром 10х10, що містить символи. Написати фрагмент програми, що заповнює перший рядок цього масиву символами цифр від 0 до 9.
16) Описати двовимірний масив, розміром 10х10, що містить символи. Написати фрагмент програми, що заповнює перший стовбчик цього масиву символами цифр від 0 до 9.
17) Напишіть оператори, за допомогою яких знаходять суму елементів другого рядка масиву 3х3.
18) Напишіть оператори, за допомогою яких знаходять суму елементів третього стовбця масиву 3х3.
19) Опишіть і ніціалізуйте два рядки .
20) Підрахуйте середнє арифметичне елементів масиву. Кількість елементів дорівнює 10 і значення елементів задаються із клавіатури користувачем.
21) Підрахуйте суму непарних елементів масиву. Кількість елементів дорівнює 10 і значення елементів задаються із клавіатури користувачем.
22) Запропонуєте користувачеві ввести із клавіатури 15 цілих чисел, збережете їх у масиві й виведіть на екран номера тих елементів масиву, значення яких кратно 3.
23) Написати програму, що змінює порядок проходження елементів масиву на протилежний (тобто перший елемент стає останнім, а останній - першим; другий елемент стає передостаннім, а передостанній - другим і так далі) і вивідний результуючий масив на екран. Елементи масиву вводяться користувачем із клавіатури.
24) Використайте одномірний масив для рішення наступного завдання. Прочитайте 20 чисел, кожне з яких перебуває в діапазоні від 10 до 100 включно. Після того, як прочитали чергове число, надрукуйте його, але тільки в тому випадку, якщо воно дублює раніше прочитані числа. Передбачите "найгірший випадок", коли всіх 20 чисел різні. Використайте найменший можливий масив для рішення цього завдання.
25) Написати програму, що міняє значення двох однотипних змінних без використання додаткової змінної.
Розробка програм з використанням масивів
Приклад 1.Для заданого масиву з 10 дійсних значень знайти суму позитивних значень.
Дата добавления: 2015-08-26; просмотров: 956;