Програмний продукт Pacific З Compiler
МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
ДОНБАСЬКА ДЕРЖАВНА МАШИНОБУДІВНА АКАДЕМІЯ
КАФЕДРА АВТОМАТИЗАЦІЇ ВИРОБНИЧИХ ПРОЦЕСІВ
Звіт про практику
Краматорськ 2003
ЗМІСТ
1. Локальна обчислювальна мережа кафедри АВП
2. Індивідуальне завдання
2.1 Визначення суми рядка
2.2 Визначення добутку множників
2.3 Визначення добутку множників
2.4 Визначення добутку рядка
2.5 Визначення суми рядка
2.6 Виведення заданого рядка без “А” або “а”
2.7 Визначення суми добутків
2.8 Знаходження числа
2.9 Знаходження суми рядка
2.10 Виведення заданого рядка до першого знаку “
2.11 Виведення дня народження
2.12 Знаходження кількості слів “no”
2.13 Знаходження точки перетину двох прямих
2.14 Знаходження певних тризначних чисел
2.15 Знаходження певного тризначного числа
2.16 Вивід квадратної матриці М<20
2.17 Вивід матриці В(М;N)
2.18 Знаходження найбільшого з від’ємних чисел матриці
2.19 Знаходження найбільшого значення напруги в електромережі
2.20 Знаходження першого члену послідовності
2.21 Видалення пробілів з рядка
2.22 Знаходження кількості вказаних символів
2.23 Змінення матриці певним чином
2.24 Знаходження суми j-того рядка
2.25 Знаходження кількості цифр в числі та їх суми
2.26 Знаходження номера селища
2.27 Перевід числа до різних систем счислення
2.27.1 Заголовний модуль stdafx.cpp
2.27.2 Заголовний модуль stdafx.р
2.27.3 Заголовний модуль resource.h
2.27.4 Заголовний модуль Proga27_01Dlg.h
2.27.5 Заголовний модуль Proga27_01Dlg.cpp
2.27.6 Заголовний модуль Proga27_01.h
2.27.7 Заголовний модуль Proga27_01.cpp
2.28 Знаходження раціональної кількості предметів
2.29 Знаходження четвірок простих чисел
2.30 Обчислення числа Фібоначі
2.31 Видалення з рядку певних символів
2.32 Сума двох рядків
2.33 Редагування тексту
2.34 Копіювання одного рядка в інший
Перелік посилань
1. Локальна обчислювальна мережа кафедри АВП
Локальна обчислювальна мережа (ЛВС) кафедри АВП служить для організації навчального процесу по 42 навчальних дисциплінах, у тому числі для виконання лабораторних і практичних занять, курсового і дипломного проектування, проведення ознайомлювальної практики.
ЛВС розгорнута в аудиторіях 2105, 2112 другого корпуса ДДМА та складається з файлового сервера, що виконує функції основного контролера домена, та 24 робочих станцій. Як середовище передачі сигналів використовується тонкий коаксіальний кабель з темпом передачі інформації 100 Мбіт/с по протоколу TCP/IP.
Апаратне забезпечення являє собою IBM-сумісні компьютери наступних конфігурацій.
Сервер - Атх-платформа на базі процесора Celeron 1100 Мгц, ОЗП 256 Мбайт, відеопам'ять 32 Мбайт, два жорстких диски 40 Гбайт зі швидкістю обертання шпинделя 7200 об/хв, привід CD-ROM 48x, один привід гнучких дисків, 15" монітор SVGA-типу.
Робочі станції представлені наступними типами комп'ютерів.
Перший тип - Атх-платформа на базі процесора Celeron 1100 Мгц, ОЗП 256 Мбайт, відеопам'ять 32 Мбайт, один жорсткий диск 40 Гбайт зі швидкістю обертання шпинделя 7200 об/хв чи 20 Гбайт зі швидкістю обертання 5400 об/хв, 15" монітор SVGA-типу.
Другий тип - Ат-платформа на базі процесора AMD Кб 266 Мгц, ОЗП 32 Мбайт, один жорсткий диск 2 Гбайт зі швидкістю обертання шпинделя 3600 об/хв, відеопам'ять 1 Мбайт, 14" монітор SVGA-типу.
Для керування роботою користувачів у мережі використовуються операційні системи (ОС) Windows наступних типів. На сервері встановлена ОС Windows NT 4.0 Server, на робочих станціях - Windows NT 4.0 Workstation чи Windows 2000 Professional.
Керування робочим середовищем користувачів забезпечує адміністрація домена шляхом ведення відповідної системної політики. Користувачі домена розбиті на групи по курсам, кожен користувач має власний обліковий запис і робочий каталог для збереження особистої інформації обсягом не більш 10 Мбайт. База даних облікових користувачів нараховує більш 500 записів. Робочі каталоги зберігаються в розділі User жорсткого диска сервера, обсяг розділа 2 Гбайт. Доступ до робочого каталогу заблокований для всіх користувачів, за винятком його власника й адміністратора.
На кожній робочій станції встановлене наступне прикладне програмне забезпечення.
Microsoft Office 2000 - для підготовки текстових документів за допомогою текстового процесора Word.
Matlab - система інженерних і наукових розрахунків з можливістю візуального моделювання.
Electronic Workbench 5.12 - система моделювання електронних схем.
AutoCad 2000 - система автоматизації конструкторських робіт.
PCAD 2000 - система конструювання друкованих плат. Для виконання лабораторних робіт використовується версія PCAD 4.5.
Microsoft Visual Studio 6.0 - інтегроване середовище для швидкої розробки додатків на базі мов Visual C++ 6.0 і Visual Basic 6.0.
MathCAD - система автоматизації проектування науково-технічних задач.
Компас - система автоматизації підготовки керуючих програм для верстатів з числовим програмним керуванням (ЧПК);
Крім того, на окремих робочих станціях встановлені:
Rational Rose 2000 - засіб об’єктно-орієнтованого аналізу і проектування технічних, переважно програмних, систем на базі нотації UML (Unified Model Language - уніфікованої мови моделювання) з можливістю генерації вихідного коду мовою Visual Basic 6.0.
BPWin і Erwin - засоби, що дозволяють автоматизувати етапи розробки програмного забезпечення, інструменти CASE (Computer-Aided Software/System Engineering).
Visio 5 - двовимірна графічна САПР для підготовки науково-технічних документів - схем, алгоритмів, карт і т.п., сумісна з текстовим процесором Word.
PROMT 2000 - автоматичний переклад науково-технічних текстів з англійської, німецької й ін. мов, переважно по тематиці, зв'язаної з обчислювальною технікою і програмуванням.
Передбачається встановлювання пакета Microsoft Visual Studio .NET 7, призначеного для розробки мобільних і переносних продуктів за допомогою мов програмування С# (Си шарп) і Visual Basic .Net
Інформаційне забезпечення навчального процесу підтримується Web-сервером кафедри на базі програмного продукту IIS (Internet Information Server) фірми Microsoft. Для читання документів використовується броузер Internet Explorer 5.0. У розділі Home обсягом 8 Гбайт розташовується стартова сторінка, за допомогою якої можливий мережний доступ до документації по профілях спеціальності АВП. Є каталоги фірм-виробників апаратного забезпечення таких, як Intel, Analog Devices, Maxim, Siemens і ін. із загальним числом одиниць збереження понад 12 тисяч, база знань MSDN фірми Microsoft обсягом порядку 1,3 Гбайт, що містить кілька десятків річних комплектів журналів з обчислювальної техніки та програмування, окремі книги і довідкова документація по програмних продуктах фірми. Широко представлена науково-технічна тематика російською мовою - статті з журналів, книги, методичні і навчальні видання, у тому числі виконані викладачами кафедри. Організовано рубрики, присвячені нейронним мережам, Internet-програмуванню, програмуванню на мовах Си і Visual Basic і ін. перспективним напрямкам. Для публікації документів у Intranet-мережі кафедри встановлені пакети Adobe Reader (для документів у pdf-форматі), HomeSite 4.5 (у форматі гіпертексту). Net Studio 2000 (для графічного дизайну Web-сторінок).
Встановлене програмне забезпечення дає можливість проводити лабораторні заняття в режимі відеоконференції з використанням дошки на екрані дисплея. Крім того, проводиться підготовка до перекладу класів у режим дистанційного навчання, при якому контакт студента і викладача буде розділятися у просторі та часі, з веденням обліку використання машинного часу і проведенням тестування по окремих темах і в цілому по окремих дисциплінах кафедри АВП.
Для виконання програми ознайомлювальної практики студентами першого курсу на Web-сервері оприлюднена програма практики з варіантами індивідуальних завдань; виконання завдань передбачає самостійне вивчення основ програмування мовою Си++ з використанням програмного продукту Pacific З Compiler, що забезпечує генерацію машинного коду для мікроконтролерів серії MCS 51.
2 ІНДИВІДУАЛЬНЕ ЗАВДАННЯ
2.1 Визначення суми рядка
Програма Proga1.срр призначена для знаходження суми рядка
по заданим параметрам X та N:
Вхідні дані: параметр Х (тип double)
параметр N (тип int)
Вихідні дані: сума рядка S (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h та
#include <math.h> // math.h
int fact(int h, int f) //Оголошуємо функцию fact,яка по заданому
{ // параметру h та кінцевому значенню f int result=1; // знаходить факторіал цього числа
for (h=1;h==f;h++)
return result*=h;
}
void main() //Оголошуємо головну функцію main()
{
int N,i,W; //Оголошуємо перемінні N,і,W цілого типу
double х,S; //та перемінні х та S типу double
cout<<"Введіть Х та N через ENTER:"<<"\n"; //Виводимо запрос на екран
cout<<"x=";
cin>>x; //Вводимо Х
cout<<"N=";
cin>>N; //Вводимо N
S=0; //Обнулюємо початкове значення суми S
for (i=1;i<=N;i++) //Задаємо цикл для проходження значень
//паматра і від 1 до значення N
S=S+((pow(-1,(i+1))*pow(x,2*i)/fact(i,N))); //Знаходимо S
cout<<"\n"<<"Відповідь: S="<<S<<"\n"<<"\t"; //Виводимо відповідь
cout<<"\n"<<"Dlya vihoda vvedite EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.2 Визначення добутку множників
Програма Proga2.срр призначена для знаходження добутку перших N множників l/2*3/4*5/6*... ., якщо задане натуральне число N
Вхідні дані: параметр N (тип int)
Вихідні дані: добуток множників P (тип double)
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main () //Оголошуємо головну функцію main()
{
int N,W; //Оголошуємо перемінні N та W цілого типу
double i,P=1; //та перемінні і та Р типу double,
//добутку Р задаємо початкове значення 1
cout<<"Введіть N:"<<"\n"; //Даємо запрос на введення числа N
r:; //Ставимо мітку r
cout<<"N=";
cin>>N; //Вводимо N
if (N==0) //Задаємо умову: при N=0 програма
{ //виводить помилку та пропонує ввести
cout<<"Error! Введіть інше число"<<"\n"; //інше значення N,
goto r; //і відбувається перехід до мітки r
}
else if (N==1) //при N=1 програма видає відповідь 0.5,
{
cout<<"P=0.5"<<"\n"; //тому що перший член послідовності=1/2
}
else //Якщо N не дорівнює ні 0, ні 1,
{
i=2; //задаємо значення параметра і=2
do
{
Р*=(((2*i)-1)/i); //Задаємо розрахункову формулу
i+=2; //знаходження Р та зміну параметра і на 2
}
while (i!=(2*N)); //Програма буде виконуватися доки і не
//стане дорівнювати значенню 2*N.
cout<<"P="<<P<<"\n"; //Після цього виведеться відповідь
}
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.3 Визначення добутку множників
Програма Proga3.срр призначена для знаходження добутку суми одного рядка на добуток іншого , якщо задане натуральне число N
Вхідні дані: параметр N (тип int)
Вихідні дані: добуток множників S (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include <math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int N,k,m,W; //Оголошуємо перемінні N,k,m,W цілого типу
double S1,P1,S; //та перемінні S1,P1 та S типу double
cout<<"Введіть N:"<<"\n"<<"N="; //Даємо запрос на введення числа N
cin>>N; //Вводимо N
S1=0; //Обнулюємо початкове значення суми S1
for(k=1;k<=N;k++) //Задаємо цикл для проходження значень
{ //параметра k від 1 до значення N
S1+=pow(-1,k+1); //Знаходимо S1
}
N=k; //Перемінній N присвоюємо значення перемінної k
P1=1; //Добутку P1 присвоюємо початкове значення 1
for(m=1;m<2*k;m++) // Задаємо цикл для проходження значень
// параметра m від 1 до значення 2*k
P1=P1*cos((m+1)/2*k); //Знаходимо Р1
S=S1*P1; //Перемінній S присвоюємо добуток перемінних S1 та P1
cout<<"Відповідь: S="<<S<<"\n"; //Виводимо відповідь
cout<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.4 Визначення добутку рядка
Програма Proga4.срр призначена для знаходження добутку рядка
,
якщо задане натуральне число N
Вхідні дані: параметр N (тип int)
Вихідні дані: добуток рядка P (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include <math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int N,i,W; //Оголошуємо перемінні N,і,W цілого типу
double P; //та перемінну P типу double
cout<<"Введіть N:"<<"\n"; //Даємо запрос на введення числа N
cout<<"N=";
cin>>N; //Вводимо N
P=1; //Добутку P присвоюємо початкове значення 1
for (i=1;i<=N;i++) // Задаємо цикл для проходження значень
//параметра і від 1 до значення N
P=P*(1+1/sqrt(sqrt(i))); //Знаходимо Р
cout<<"Відповідь: P=" <<P<<"\n"; //Виводимо відповідь
cout<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.5 Визначення суми рядка
Програма Proga5.срр призначена для знаходження суми рядка
,
где , якщо задане натуральне число N
Вхідні дані: параметр N (тип int)
Вихідні дані: сума рядка S (тип double)
Блок-схема до програми Proga5.срр представлена на рисунку 2.1
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int N,i,a,d,W; //Оголошуємо перемінні N,і,а,d,W цілого типу
double S; //та перемінну S типу double
cout<<"Введіть N:"<<"\n"<<"N="; //Даємо запрос на введення числа N
cin>>N; //Вводимо N
S=0; //Обнулюємо початкове значення суми S
for(i=1;i<=N;i++) // Задаємо цикл для проходження значень
{ // параметра і від 1 до значення N
d=i%3; //d присвоюємо залишкок від ділення перемінної на 3
if(d==0) a=i/3; //При умові d=0 перемінній “а” присвоюємо і/3
else a=i/(i-3); //Інакше - паремінній а присвоюємо і/(і-3)
S+=a*a; //В кінці всього циклу до суми S додаємо (а*а)
}
cout<<"Відповідь S="<<S<<"\n"; //Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
S=0;
d=i%3;
Ні Так
a=i/3;
a=i/(i-3);
S+=a*a;
Рисунок 2.1 Блок-схема алгоритму до програми Proga5.срр
2.6 Виведення заданого рядка без “А” або “а”
Програма Proga6.срр призначена для виведення заданого рядка, який закінчується “@”, без літер “а” або “А”
Вхідні дані: символьний масив STRING (тип char)
Вихідні дані: заданий рядок без літер “а” або “А”
Блок-схема до програми Proga6.срр представлена на рисунку 2.2
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int W,N; //Оголошуємо перемінні W,N цілого типу,
char STRING[100]={0}; //масив STRING
char STRING1[100]={0}; //та STRING1 символьного типу,
char i; //перемінну і символьного типу
cout<<"Введіть ваш рядок \n"; // Даємо запрос на введення рядка
cout<<"В кінці введіть @:"; //в кінці рядка поставимо “@”
cin>>STRING; //Вводимо рядок
if (STRING[0]=='@') //Умова: якщо на початку рядка стоїть “@”,
{
cout<<"Цей рядок не має символів"<<"\n"; //програма виводить
goto t; //повідомлення і починає працювати після мітки “t”
}
N=0; //Перемінній N присвоюємо значення 0
for (i=0;STRING[i]+='\0';i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до символа кінця рядку
if (STRING[i]!='@') //Умова: якщо і-ий елемент масива=”@”
{
STRING1[i]=STRING[i]; //Нічого не відбувається
N=N+1; //Перемінній N присвоюємо її значення додаючи 1
}
else goto p; //В іншому разі – програма виходить з циклу
}
p:;
cout<<"\n"; //Переводимо курсор на наступний рядок
cout<<"Відповідь: "; //Виводимо оголошення про відповідь
for(i=0;i<=N-1;i++) // Задаємо цикл для проходження значень
{ //параметра і від 0 до N-1, кроком 1
if ((STRING1[i]=='A')||(STRING1[i]=='a')) //Якщо елемент
cout<<" "; //масива =”А” або “а”, пропускаємо його,
else cout<<STRING[i]; //виводячи всі останні елементи
}
cout<<"\n"; //Переводимо курсор на наступний рядок
t:; //Мітка t
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
Ні Так
Так Ні
Goto p;
p:;
STRING[i]=STRING[i];
N+=1;
Ні Так
t:;
Рисунок 2.2 Блок-схема алгоритму до програми Proga6.срр
2.7 Визначення суми добутків
Програма Proga7.срр призначена для знаходження добутку суми добутків
,
якщо задане натуральне число N
Вхідні дані: параметр N (тип int)
Вихідні дані: сума добутків рядка S (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
int fact(int h, int f) //Оголошуємо функцию fact,яка по заданому
{ // параметру h та кінцевому значенню f
// знаходить факторіал цього числа
int result=1;
for (h=1;h==f;h++)
result*=h;
return result*=h;
}
void main() //Оголошуємо головну функцію main()
{
int i,j,N,W; //Оголошуємо перемінні i,j,N,W цілого типу
double S,S1,P; //та перемінні х та S типу double
cout<<"Введіть N:"<<"\n"<<"N="; //Даємо запрос на введення числа N
cin>>N; //Вводимо N
S1=0; //Обнулюємо початкове значення суми S1
P=1; //Добутку P присвоюємо початкове значення 1
for(i=1;i<=N;i++) // Задаємо цикл для проходження значень
{ //параметра і від 1 до N, кроком 1
for(j=1;j<=i;j++) // Задаємо цикл для проходження значень
{ //параметра j від 1 до i, кроком 1
P=fact(j,i)/fact(i,N); //Знаходимо значення Р
S1+=P; //До значення перемінної S1 додаємо значення Р
} //Кінець циклу
}
S=S1; //Перемінній S присвоюємо кінцеве значення перемінної S1
cout<<"Відповідь: S="<<S<<"\n"; //Виводимо відповідь
cout<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.8 Знаходження числа
Програма Proga8.срр призначена для знаходження такого числа аi, що |аi - ai-1 |< е, якщо послідовність задана по правилу аi = 1 / і, та дано число 0 < е < 0.1 типу double
Вхідні дані: параметр е (тип double)
Вихідні дані: сума рядка S (тип double)
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main() //Оголошуємо головну функцію main()
{
int i; //Оголошуємо перемінну і цілого типу
double e,W; //та перемінні e,W типу double,
double r[100]={0}; //масив r типу double
cout<<"Введіть 0<e<0.1"<<"\n"; //Даємо запрос на введення числа “e”
cin>>e; //Вводимо “e”
for (i=0;i<=100;i++) //Задаємо цикл для проходження значень
{ //параметра i від 0 до 100, кроком 1
r[i]=(1/(i+1)); //і-й елемент масива =(1/і+1)
if((r[i]-r[i-1])<=e) //Умова: е, яке більше або =(r[i]-r[i-1])
goto p; // програма виходить з циклу по мітці “р”
} //Кінець циклу
p:; //Мітка “р:”
cout<<”Відповідь:е=”<<r[i]<<"\n"; //Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.9 Знаходження суми рядка
Програма Proga9.срр призначена для знаходження суми рядка
якщо задане натуральне число N та М (N>M)
Вхідні дані: параметр М (тип int) параметр N (тип int)
Вихідні дані: сума рядка S (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
int fact(int i, int f) //Оголошуємо функцию fact,яка по заданому
{ // параметру i та кінцевому значенню f
// знаходить факторіал цього числа
int result=1;
for (i=1;i<=f;i++)
result*=i;
return result;
}
void main() //Оголошуємо головну функцію main()
{
int N,M,W; //Оголошуємо перемінну і цілого типу
double S; //та перемінну S типу double
cout<<"Введіть N i M; (N>M)"<<"\n";//Даємо запрос на введення чисел
//N та M при умові (N>M)
p: //Мітка р:
cout<<"N="; //Запрос на введення N
cin>>N; //Вводимо N
cout<<"M="; //Запрос на введення М
cin>>M; //Вводимо М
if(M>N) //При умові М>N
{
cout<<"ERROR: Введіть N>M"<<"\n";//буде виведено повідомлення
goto p; //Перехід до мітки р:
}
S=0; //Обнулюємо початкове значення суми S
for(M;M<=N;M++) //Задаємо цикл для проходження значень
//параметра M від свого значення до N, кроком 1
S+=(M*M*log(fact(M,N))); //Знаходимо суму
cout<<"Відповідь: S="<<S<<"\n"; //Ввиводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.10 Виведення заданого рядка до першого знаку “
Програма Proga10.срр призначена для виведення заданого рядка, який закінчується “@”, до першого знаку “:”
Вхідні дані: символьний масив STRING (тип char)
Вихідні дані: заданий рядок до першого знаку “:”
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int W,N; //Оголошуємо перемінні W,N цілого типу,
char STRING[100]={0}; //масив STRING
char STRING1[100]={0}; //та STRING1 символьного типу,
char i; //перемінну і символьного типу
cout<<"Введіть ваш рядок \n"; //Даємо запрос на введення рядка
cout<<"В кінці введіть @:"; //в кінці рядка поставимо “@”
cin>>STRING; //Вводимо рядок
if ((STRING[0]=='@')||(STRING[0]==':')) //Умова: якщо на початку
{ // рядка стоїть “@”,або “:”,програма
cout<<"Цей рядок не містить символів"<<"\n"; //виводить goto t; //повідомлення і починає працювати після мітки “t”
}
N=0; //Перемінній N присвоюємо значення 0
for (i=0;STRING[i]+='\0';i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до символа кінця рядку
if (STRING[i]!='@') //Умова: якщо і-ий елемент масива=”@”
{
STRING1[i]=STRING[i]; //Нічого не відбувається
N=N+1; //Перемінній N присвоюємо її значення додаючи 1
}
else goto p; //В іншому разі – програма виходить з циклу
}
p:;//Мітка р:
cout<<"\n";//Переводимо курсор на наступний рядок
cout<<"Відповідь: ";//Ввиводимо оголошення про відповідь
for(i=0;i<=N-1;i++) // Задаємо цикл для проходження значень
{ //параметра і від 0 до символа кінця рядку
if (STRING1[i]!=':')//Умова: якщо і-ий елемент масива не=”:”
cout<<STRING1[i];//виводимо його
else goto t; //в іншому випадку програма виходить з циклу
}
cout<<"\n"; //Переводимо курсор на наступний рядок
t:; //Мітка t:
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.11 Виведення дня народження
Програма Proga11.срр призначена для розрахунку дуже щасливого, щасливого або звичайного дня народження по введеному року, місяцю та дню народження користувача
Вхідні дані: масиви цілих чисел GODROJD,MASROJD,DENROJD
параметри Sgod,Smes,Sden (тип int)
Вихідні дані: дуже щасливий, просто щасливий або звичайний день народження користувача
#include<iostream.h>> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
main() //Оголошуємо головну функцію main()
{
int G,M,D,i,j,k,W; //Оголошуємо перемінні G,M,D,i,j,k,W,
int Sgod,Smes,Sden; //Sgod,Smes,Sden цілого типу
int GODROJD [4]; //масив GODROJD,
int MESROJD [2]; //масив MESROJD,
int DENROJD [2]; //масив DENROJD цілого типу
p:; //мітка Р:
cout<<"Введіть ваш рік народження через ENTER:"<<"\n"; //запрос
for (i=0;i<=3;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до 3
cout<<"Рік:";
cin>>GODROJD[i]; //Вводимо кожен раз по одній цифрі року народж.
}
//Умова: якщо буде введений 2004 рік і більше,
if((GODROJD[0]>=2)&&(GODROJD[1]>=0)&&(GODROJD[2]>=0)&&(GODROJD[3]>=4))
{
cout<<" Ми ще не дожили до цього часу!"<<"\n"; //програма
goto p; //виведе повідомлення і перейде до мітки р:
}
r:; //мітка r:
cout<<"Введіть номер вашого місяця народження через ENTER:"<<"\n";
for (j=0;j<=1;j++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до 1
cout<<"Місяць:";
cin>>MESROJD[j];//Вводимо кожен раз по одній цифрі місяця народж.
}
//Умова: якщо буде введений 13 місяць і більше
if ((MESROJD[0]>=1)&&(MESROJD[1]>=3))
{
cout<<" В 1 році 12 місяців. Спробуйте ще раз."<<"\n";//програма
goto r; //виведе повідомлення і перейде до мітки r:
}
s:; //мітка s:
cout<<"Введіть номер вашого дня народження через ENTER:"<<"\n";
for (k=0;k<=1;k++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до 1
cout<<"День:";
cin>>DENROJD[k]; //Вводимо кожен раз по одній цифрі дня народж.
}
//Умова: якщо буде введений 32 день місяця і більше
if ((DENROJD[0]>=3)&&(DENROJD[1]>=2))
{
cout<<" В 1 місяці 31 або 30 днів. Спробуйте ще раз."<<"\n";
goto s; //програма виведе повідомлення і перейде до мітки s:
}
Sgod=0; //Обнуляємо значення перемінної Sgod
for (i=0;i<=3;i++) //Задаємо цикл для проходження значень
//параметра і від 0 до 3
Sgod+=GODROJD[i];//До значення перемінної Sgod додаємо значення
//і-го елементу масива GODROJD
Smes=0; //Обнуляємо значення перемінної Smes
for (j=0;j<=1;j++) //Задаємо цикл для проходження значень
//параметра і від 0 до 1
Smes+=MESROJD[j];//До значення перемінної Smes додаємо значення
//і-го елементу масива MESROJD
Sden=0; //Обнуляємо значення перемінної Sden
for (k=0;k<=1;k++) //Задаємо цикл для проходження значень
//параметра і від 0 до 1
Sden+=DENROJD[k]; //До значення перемінної Sden додаємо значення
//і-го елементу масива DENROJD
G=Sgod%7;//перемінній G присвоюємо залишок від ділення на 7
//перемінної Sgod
M=Smes%7;//перемінній M присвоюємо залишок від ділення на 7
//перемінної Smes
D=Sden%7;//перемінній D присвоюємо залишок від ділення на 7
//перемінної Sden
if((G==M)&&(M==D)&&(G==D)) //Умова: якщо значення змінної G дорівнює //значенню змінної М, значення змінної М дорівнює значенню змінної D //та значення змінної G дорівнює значенню змінної D, то програма //виведе:
cout<<"Ваш день народження дуже щасливий"<<"\n";
else if ((G==M)||(M==D)||(G==D))//Якщо співпадають тільки будь-які
//дві змінні, то програма виведе:
cout<<" Ваш день народження просто щасливий"<<"\n";
//Якщо співпадань не має, то програма виведе:
else cout<<" Ваш день народження звичайний"<<"\n
cout<<"Для виходу введіть EXIT:"<<"\n";//Даємо запрос
cin>>W; //Вводимо зайву перемінну W для затримки екрану
return 0; //Функція вертає 0
} //Кінець функції main()
2.12 Знаходження кількості слів “no”
Програма Proga12.срр призначена для знаходження кількості слів “no”, якщо слова у введеному тексті розділяються пробілами
Вхідні дані: параметр і (символьного типу)
Вихідні дані: кількість kol (цілого типу)
Блок-схема до програми Proga12.срр представлена на рисунку 2.3
#include<stdio.h> //Підключаємо бібліотеки stdio.h
#include<conio.h> //та conio.h
oid main() //Оголошуємо головну функцію main()
{
int kol;//Оголошуємо перемінну kol цілого типу,
char i; //та перемінну і символьного типу
//Вводимо рядок в кінці якого просимо поставити @
puts("Введіть ваш рядок. В кінці поставте @: ");
kol=0; //Початкове значення параметра кількості дорівнює 0
i=0; //Задаємо початкове значення параметра і
while((i=getchar())!='@')//Читаємо рядок доки не зустрінеться символ @
{
if ((i=='n')&&(i+1=='o')) //Умова знаходження слова "no"
kol=kol+1; //Якщо умова TRUE, то кількість
//слів збільшуємо на одиницю
i+=1; //Збільшуємо лічильник на одиницю
}
printf("Відповідь: %d \n",kol); //Виводимо відповідь
getch(); //Утримуємо екран
} //Кінець функції main()
Ні Так
Рисунок 2.3 Блок-схема алгоритму до програми Proga12.срр
2.13 Знаходження точки перетину двох прямих
Програма Proga13.срр призначена для знаходження взаємного розташування двох прямих A1*x+B1*y=C1 та A*x+B*y=C, якщо задані числа A1,B1,C1,A,B,C. Якщо прямі перетинаються, то вивести на єкран координати точки перетину.
Вхідні дані: перемінні A1,B1,C1,A,B,C,x,y,W; (тип float)
Вихідні дані: координати точки перетину х,у (тип float)
Блок-схема до програми Proga13.срр представлена на рисунку 2.4
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
float A1,B1,C1,A,B,C,x,y,W;//оголошуємо перемінні
// A1,B1,C1,A,B,C,x,y,W типу float
cout<<"Введіть A1 "<<"=";
cin>>A1; //Вводимо значення перемінної А1
cout<<"Введіть B1 "<<"=";
cin>>B1; //Вводимо значення перемінної В1
cout<<" Введіть C1 "<<"=";
cin>>C1; //Вводимо значення перемінної С1
cout<<" Введіть A "<<"=";
cin>>A; //Вводимо значення перемінної А
cout<<" Введіть B "<<"=";
cin>>B; //Вводимо значення перемінної В
cout<<" Введіть C "<<"=";
cin>>C; //Вводимо значення перемінної С
if((A1==A)&&(B1==B)) //Умова: якщо значення перемінної А1=А та
//значення перемінної В1=В
cout<<"Прямі паралельні"<<"\n";//Виводимо, що прямі паралельні
else //Инакше
{
x=((C1-B1)/((A1*C)/(A*C-A*B1+A1*B)))/A1;//Знаходимо х та у
y=((A1*C)/(A*C-A*B1+A1*B)); //по відповідних формулах
//Ввиводимо координати точти перетину двох заданих прямих
cout<<"Прямі перетинаються в точці S("<<x<<";"<<y<<")"<<"\n";
}
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
Ні Так
Рисунок 2.4 Блок-схема алгоритму до програми Proga13.срр
2.14 Знаходження певних тризначних чисел
Програма Proga14.срр призначена для знаходження всіх тризначних чисел які можна представити різницею між квадратом числа, яке утворюється першими двома цифрами, та квадратом третьої цифри
Вхідні дані: всі тризначні числа
Вихідні дані: певні тризначні числа
Блок-схема до програми Proga14.срр представлена на рисунку 2.5
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //оголошуємо головну функцію main()
{
int W,i=100,a=0,b=0; //Оголошуємо перемінні W,I,a,b цілого типу //Перемінній “і” присвоюємо початкове значення 100, перемінним
//“а” та “b” - 0
cout<<"Ось ваші числа:"<<"\n"; //Виводимо повідомлення на екран
for(i=100;i<1000;i++) //Задаємо цикл для проходження значень
{//параметра і від 100 до 999 кроком 1
a=(i/10)*(i/10); //Знаходимо квадрати перших двох цифр
// від 100 до 999
b=(i%10)*(i%10); //Знаходимо квадрати залишків від
// ділення на 10 чисел від 100 до 999
if(((a-b)>=100)&&((a-b)<1000))//Умова: отримані числа повинні бути
//тризначними
cout<<i<<"\n"; //Виводимо ці числа на екран
}
cout<<"Для виходу введіть EXIT:"<<"\n;//Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
a=(i/10)*(i/10);
b=(i%10)*(i%10;)
Ні Так
Рисунок 2.5 Блок-схема алгоритму до програми Proga14.срр
2.15 Знаходження певного тризначного числа
Програма Proga15.срр призначена для знаходження елемента масива, значення якого найбільш наближене до якогось цілого числа
Вхідні дані: масиви чисел В,С,С1 (тип int)
параметр М (тип int)
Вихідні дані: певний елемент масива В
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main() //оголошуємо головну функцію main()
{
int N,W,i,M,amin; //Оголошуємо перемінні N,W,i,M,amin цілого типу
int B[100]; //Оголошуємо массив В зі 101 елементу типу int
int C[100]; //Оголошуємо массив С зі 101 елементу типу int
int C1[100]; //Оголошуємо массив С1 зі 101 елементу типу int
cout<<"Скількі елементі в буде у вашому масиві: "; //Робимо запит
cin>>N; //Вводимо кількість елементів масиву
cout<<"Введіть елементи вашого масиву через ENTER: \n";
for (i=0;i<N;i++) //Вводимо елементи
cin>>B[i]; //масива В
cout<<"Введіть ваше число: ";
cin>>M; //Вводимо довільне число М
for (i=0;i<N;i++)
C[i]=(B[i]-M); //Елементам масива С присвоюємо елементи масива
// В мінус значення числа М
cout<<"\n"; //Переводимо курсор на новий рядок
for (i=0;i<N;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до N кроком 1
if (C[i]<0) C1[i]=C[i]*(-1); //Умова: якщо отримані елементи
//<0, то домножаємо їх на (-1)
else C1[i]=C[i]; //Инакше, залишаємо без змін
}
cout<<"\n"; //Переводимо курсор на новий рядок
amin=C1[0]; //Переменній amin присвоюємо значення нульового
// елемента масива С1
for (i=1;i<N;i++) //Задаємо цикл для проходження значень
{/параметра і від 1 до N кроком 1
if (C1[i]<amin) //За допомогою зрівнювання чисел в масиві С1
amin=C1[i]; //знаходимо мінімальний елемент масива
}
cout<<"Елемент масива="<<(M-amin)<<"\n"; //Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.16 Вивід квадратної матриці М<20
Програма Proga16.срр призначена для виводу матриці розмірності M<20 виду
Вхідні дані: параметр n (тип int)
Вихідні дані: матриця заданої розмірності
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main() //оголошуємо головну функцію main()
{
int i,j,n,s,k,h,m;//Оголошуємо перемінні i,j,n,s,k,h,m цілого типу
double A[100][100]={{0},{0}};//Оголошуємо масиви А та В
double B[100][100]={{0},{0}};//типу double
cout<<"Введіть розмірність вашого масива (<20):";//Робимо запит
cin>>n; //Вводимо розмірність квадратної матриці А
s=0;//Перемінній s присвоюємо початкове значення - 0
k=2; //Перемінній k присвоюємо початкове значення - 2
for (i=0;i<n;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до n кроком 1
s+=1; //До значення перемінної s додаємо одиницю
for (j=0;j<n;j++) //Задаємо цикл для проходження значень
{ //параметра j від 0 до n кроком 1
if (i==j) //Умова: якщо значення перемінної і дорівнює j,
{
A[i][j]=1; //заданому елементу масива А присвоюємо значення 1
for (m=1,h=2;m<n,h<n;m++,h++) //Задаємо цикл
A[i+m][j]=h;//Заданому елементу масива А присвоюємо значення h
}
else //В іншому випадку
{
A[i][0]=s; //Заданому елементу масива А присвоюємо значення s
}
cout<<A[i][j]<<" "; //Виводимо елементи масива через пробіл
}
cout<<"\n";//Переводимо курсор на новий рядок
k+=1; //До значення перемінної k додаємо одиницю
}
cout<<"\n"; //Переводимо курсор на новий рядок
} //Кінець функції main()
2.17 Вивід матриці В(М;N)
Програма Proga17.срр призначена для виводу матриці В(M;N), елементами якої є випадкові числа, рівномірно розташовані в інтервалі (-5;7). Переставляючи її рядки та стовпці, домогтися того, щоб найбільший елемент матриці виявився в правому нижньому куті
Вхідні дані: масив чисел В (тип int)
параметри М,N (тип int)
Вихідні дані: матриця В певного вигляду
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<math.h> //math.h
#include<stdlib.h> // та stdlib.h
void main() //оголошуємо головну функцію main()
{
int B[100][100]; //Оголошуємо масив В типу int, та перемінні
int i,a,b,N,M,W,x,y,j, max=-5;// i,a,b,N,M,W,x,y,j, max=-5 типу
//int. Перемінній max присвоюємо початкове значення -5
cout<<"Скількі рядків буде у вашій матриці? "; //Даємо запит
cin>>M; //Вводимо кількість рядків матриці
cout<<" Скількі стовбців буде у вашій матриці? "; //Даємо запит
cin>>N; //Вводимо кількість стовбців матриці
cout<<"Ось ваша матриця: "<<"\n\n"; //Виводимо повідомлення
for(i=0; i<M; i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до М кроком 1
for(j=0;j<N;j++) //Задаємо цикл для проходження значень
{ //параметра j від 0 до N кроком 1
B[i][j]=(rand()%13)-5; //Заповнюємо масив В випадковими
cout<<B[i][j]<<" "; //числами в інтервалі (-5;7)
}
cout<<"\n"; //Переводимо курсор на новий рядок
}
for(i=0;i<M;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до М кроком 1
for(j=0;j<N;j++)//Задаємо цикл для проходження значень
//параметра j від 0 до N кроком 1
if(B[i][j]>max) //Умова: якщо елемент масиву В >max,
{
max=B[i][j];//перемінній max присвоюємо значення елементаB[i][j]
x=i; //перемінній x присвоюємо значення параметра і
y=j; //перемінній y присвоюємо значення параметра j
}
}
cout<<"\n"<<"max. елемент="<<max<<"\n\n";//Виводимо найбільший елемент
//матриці
for(i=0;i<M;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до М кроком 1
a=B[i][y]; //перемінній а присвоюємо значення B[i][y]
B[i][y]=B[i][N-1];//Змінюємо значення елементів в масиві В
B[i][N-1]=a; //Значенню елемента матриці В присвоюємо
} //значення перемінної а
for(j=0;j<N;j++) //Задаємо цикл для проходження значень
{ //параметра j від 0 до N кроком 1
b=B[x][j]; //перемінній b присвоюємо значення B[x][j]
B[x][j]=B[M-1][j]; //Змінюємо значення елементів в масиві В
B[M-1][j]=b; //Значенню елемента матриці В присвоюємо
} //значення перемінної b
cout<<"Змінена матриця:"<<"\n\n"; //Виводимо повідомлення
for(i=0;i<M;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до М кроком 1
for(j=0;j<N;j++) //Задаємо цикл для проходження значень
{ //параметра j від 0 до N кроком 1
cout<<B[i][j]<<" "; //Виводимо елементи матриці В
}
cout<<"\n"; //Переводимо курсор на новий рядок
}
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.18 Знаходження найбільшого з від’ємних чисел матриці
Програма Proga18.срр призначена для знаходження найбільшого з від’ємних чисел матриці А(85), рівномірно розподілених в інтервалі [-20;10]
Вхідні дані: масив чисел А (тип int)
Вихідні дані: параметр min (тип int)
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<stdlib.h> //та stdlib.h
void main() //оголошуємо головну функцію main()
{
int A[85], i,min=10, s,W;//Оголошуємо масив цілих чисел А, та
//перемінні і,s,W,min типу int
s=0; //Перемінній s присвоюємо початкове значення 0
for(i=0; i<85; i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до 85 кроком 1
A[i]=(rand()%31)-20;//Заповнюємо матрицю А випадковими числами
cout<<A[i]<<" "; //Виводимо елементи матриці А на екран
}
cout<<'\n'; //Переводимо курсор на новий рядок
for(i=0;i<85;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до 85 кроком 1
if(A[i]<0) //Умова: якщо елемент матриці А менше 0,
{ if (A[i]<min) min=A[i];} //та якщо він менше значення min,
} //перемінній min присвоюємо значення і-го елемента матриці А
cout<<"\n"<<"max="<<min<<"\n"; //Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.19 Знаходження найбільшого значення напруги в електромережі
Програма Proga19.срр призначена для знаходження найбільшого значення напруги в електромережі в інтервалі (20,6)годин та часу, якщо протягом доби кожну годину були проведені 24 заміра напруги
Вхідні дані: масив чисел А (тип int)
Вихідні дані: параметр mахМ (тип int)
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<math.h> //math.h та
#include<stdlib.h> //stdlib.h
void main() //оголошуємо головну функцію main()
{
int maxN,i,maxM,N,M,W; //Оголошуємо перемінні maxN,i,maxM,N,M,W
int A[23]={0}; // типу int, та масив цілих чисел А
for(i=0;i<=23;i++) //Заповнюємо масив А випадковими числами
A[i]=(rand()%450)-200; //в інтервалі (200;250)
maxN=200; //Переміннії maxN присвоюємо початкове значення 200
for(i=0;i<6;i++) //Задаємо цикл
if(A[i]>=maxN) //Умова: якщо елемент масива А > або = maxN,
{
maxN=A[i]; //перемінній maxN присвоюємо значення і-го елементу А
N=(i+1); //Перемінній N присвоюємо значення (і+1)
}
for(i=19;i<24;i++) //Задаємо цикл
if(A[i]>=maxM) //Умова: якщо елемент масива А > або = maxМ,
{
maxM=A[i]; //перемінній maxМ присвоюємо значення і-го елементу А
M=(i+1); //Перемінній М присвоюємо значення (і+1)
}
if(maxN>=maxM)//Умова: якщо значення maxN > значення maxN, виводимо
cout<<"Напруга="<<maxN<<" вольт о "<<N<<" годині ранку"<<"\n";
else cout<<"Напруга="<<maxM<<"вольт о"<<M<<"годині вечора"<<"\n";
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.20 Знаходження першого члену послідовності
Програма Proga20.срр призначена для знаходження першого члену послідовності , n = 1, 2, … , який не належить відрізку [А,В], якщо задані числа А<0 та B>0 типу double
Вхідні дані: параметри А та В (тип double)
Вихідні дані: параметр і (тип int)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<math.h> //та math.h
void main() //оголошуємо головну функцію main()
{
int N=100,i; //Оголошуємо перемінні N=100,і цілого типу
double S,a,A,B,W; //та перемінні S,a,A,B,W типу double
cout<<"Введіть A<0: ";//Вводимо запит
cin>>A; //вводимо число А<0
cout<<"Введіть B>0: ";//Вводимо запит
cin>>B; //вводимо число B>0
S=0; //Перемінній s присвоюємо початкове значення 0
for(i=1;i<=N;i++) //Задаємо цикл для проходження значень
{ //параметра і від 0 до N кроком 1
S+=(pow(-1,i))*((sqrt(2)+i));//Знаходимо s за вказаною формулою
a=S; //Перемінній а присвоюємо значення перемінної s
if((a<=A)||(a>=B)) //Умова: якщо значення перемінної а < або =
{//значенню перемінної А, та > або = значенню перемінної В, виводимо
cout<<i<<" член послідовності= "<<a<<" не належить відрізку [A;B]"\n;
goto p; //Звертаємося до мітки р
}
else ;} //В іншому разі нічого не відбувається
p:; //Мітка р:
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n";//Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.21 Видалення пробілів з рядка
Програма Proga21.срр призначена для стискання рядка шляхом видалення пробілів з тексту
Вхідні дані: рядок символів S (тип char)
Вихідні дані: стиснутий рядок S (тип Char)
Блок-схема до програми Proga21.срр представлена на рисунку 2.6
#include<conio.h> //Підключаємо бібліотеки conio.h
#include<stdio.h> //та stdio.h
void main() //оголошуємо головну функцію main()
{
char S[80],i; //оголошуємо символьний масив з 80 елементів та
// символьну перемінну i
printf("Введіть ваш рядок. В кінці поставте @:\n");//Вводимо рядок,
gets(S); //який закінчується на @
i=0; //Задаємо початкове значення параметра i
while((S[i]!='@'))
{
if (S[i]==' ') //Задаємо умову знаходження пробіла в рядку
printf("%*",S[i+1]); //якщо пробіл знайдений, пропускаємо його
//та виводимо наступні елементи попорядку
else printf("%c",S[i]); //якщо пробіла немає, виводимо даний // елемент на свойому місці
i+=1; //Збільшуємо лічильник на одиницю
}
printf("\n"); //Переводимо курсор на новий рядок
getch(); //Затримуємо екран
} //Кінець функції main()
Ні Так
Рисунок 2.6 Блок-схема алгоритму до програми Proga21.срр
2.22 Знаходження кількості вказаних символів
Програма Proga22.срр призначена для знаходження кількості вказаних символів в заданому рядку
Вхідні дані: рядок символів STRING (тип char)
вказаний символ N (тип char)
Вихідні дані: кількість вказаних символів g(тип int)
#include<iostream.h> //Підключаємо бібліотеку iostream.h
char kol(char S[100],char a) //Оголошуємо функцию kol,яка по заданому
{ //рядку S та вказаному символу “а”
int h,result=0; // знаходить кількість символів “а” , які
//зустрічаються в рядку S
for (h=0;S[h]+='\0';h++)
{if (S[h]==a) result+=1;}
return result;
}
void main() //Оголошуємо головну функцію main()
{
int W,g; //Оголошуємо перемінні W,g цілого типу,
char STRING[100]={0}; //символьний масив зі 100 елементів та
char N; //перемінну N символьного типу
cout<<"Введіть ваш рядок без пробілів: \n";//Даємо запит
cin>>STRING; //Вводимо рядок елементів
cout<<"Введіть ваш символ: "; //Даємо запит
cin>>N; //Вводимо довільний символ
g=kol(STRING,N); //Перемінній g присвоюємо функцію kol, яка лічить
//скільки разів заданий символ зустрівся в нашому рядку
cout<<"Відповідь: "<<g<<"\n"; //Виводимо відповідь на екран
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.23 Змінення матриці певним чином
Програма Proga23.срр призначена для знаходження в матриці мінімального за модулем елемента та заміщення ним всіх елементів з непарними номерами
Вхідні дані: матриця В (тип int)
Вихідні дані: змінена матриця В (тип int)
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main() //Оголошуємо головну функцію main()
{
int W,k,j,min=9999; //Оголошуємо змінні W,k,j,min цілого типу
int B[100]; //та масив В зі 100 елементів цілого типу
cout<<"Скільки елементів буде в вашій матриці? ";//Даємо запит
cin>>k; //Вводимо кількість елементів матриці
cout<<"Введіть елементи вашої матриці:"<<"\n"; //Даємо запит
for(j=0;j<=k-1;j++) //За допомогою цикла for вводимо елементи
cin>>B[j]; //нашої матриці
cout<<"Змінена матриця:"<<"\n"; //Даємо запит
for(j=0;j<=k-1;j++) //Задаємо цикл
{
if (B[j]<0) B[j]*=(-1); //Умова: якщо j-тий елемент матриці
} //В – від’ємний, помножуємо його на -1
for (j=0;j<=k-1;j++) //Задаємо цикл
{
if (B[j]<min)//Умова: Якщо значення j-го елемента матриці В
min=B[j]; //< значення min, змінній min присвоюємо B[j]
}
for(j=0;j<=k-1;j++) //Задаємо цикл
{
if(j%2!=0) B[j]=min; //При непарному j елементу матриці
} //присвоюємо значення змінної min
for(j=0;j<=k-1;j++) //Задаємо цикл в якому
cout<<B[j]<<"\n"; //виводимо елементи матриці В
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.24 Знаходження суми j-того рядка
Програма Proga24.срр призначена для знаходження в прямокутній матриці суми елементів j-того рядка
Вхідні дані: матриця В (тип int)
Вихідні дані: сума j-того рядка sum (тип int)
#include<iostream.h> //Підключаємо бібліотеку iostream.h
int func(int A[100][100],int m, int n)//Оголошуємо функцію func,яка по
{ //заданій матриці А, та певного
int sum=0,j,i; //рядка знаходить суму елементів
for(j=0;j<n;j++) //цього рядка
sum+=A[m-1][j];
return(sum);
}
void main() //Оголошуємо головну функцію main()
{
int x,W,y,k,nomer,i;//Оголошуємо змінні x,W,y,k,nomer,i цілого типу
int B[100][100]; //та матрицю В цілого типу
cout<<"Скільки рядків буде у вашій матриці? "; //Даємо запит
cin>>x; //Вводимо кількість рядків нашої матриці
cout<<"Скільки стовпців буде у вашій матриці? "; //Даємо запит
cin>>y; //Вводимо кількість стовбців нашої матриці
cout<<"Введіть елементи вашої матриці: "<<"\n"; //Даємо запит
for(i=0;i<x;i++) //Задаємо цикл
{
for(k=0;k<y;k++) //Задаємо цикл
cin>>B[i][k]; //Вводимо елементи нашої матриці
}
cout<<"Суму якого рядка ви бажаєте знайти? "; //Даємо запит
cin>>nomer; //Вводимо номер рядка суму якого ми бажаємо знайти
cout<<"Відповідь="<<func(B,nomer,y)<<"\n"; //Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.25 Знаходження кількості цифр в числі та їх суми
Програма Proga25.срр призначена для знаходження кількості цифр в заданому числі та їх суми
Вхідні дані: число а (тип int)
Вихідні дані: кількість цифр К (тип int)
сума цифр S (тип double)
#include<iostream.h> //Підключаємо бібліотеки iostream.h
#include<stdlib.h> //та stdlib.h
void main() //Оголошуємо головну функцію main()
{
int *Z,G,i=0,K=0,j,b,a,c,*W; //Оголошуємо змінні G,i=0,K=0,j,b,a,c
double S=0;//цілого типу, покажчики *z, *W та змінну S типу double
cout<<"Введіть число (не > 9 цифр) \n"<<"\n"; //Даємо запит
cin>>a; //Вводимо число а
cout<<"\n"; //Переводимо курсор на новий рядок
c=a; //Змінній с присвоюємо значення змінної а
for(;a>0;) //Задаємо цикл
{
a=(a-a%10)/10; //Знаходимо цифри числа а
i++; //До значення змінної і додаємо 1
Z=(int*)calloc(i,sizeof(int)); //Виділяємо пам’ять для Z
}
for(b=0;b<i;b++) //Задаємо цикл
{
Z[b]=c%10;//Знаходимо залишок від числа “с” поділеного на 10
c=(c-c%10)/10; //Знаходимо цифри числа с
}
W=(int*)calloc(i,sizeof(int)); //Виділяємо пам’ять для W
for(j=0;j<i;j++) //Задаємо цикл
W[j]=Z[i-j-1]; //j-тий елемент матриці W=i-j-1
for(j=0;j<i;j++) //Задаємо цикл
cout<<W[j]<<" ";//Виводимо елементи матриці W
cout<<"\n"; //Переводимо курсор на новий рядок
for(j=0;j<i;j++) //Задаємо цикл
{
S+=W[j]; //Знаходимо в циклі суму елементів матриці W
K++; //Збільшуємо лічильник К на 1
}
cout<<"\n";//Переводимо курсор на новий рядок
cout<<"Кількість цифр в числі="<<K<<"\n\n";//Виводимо відповідь
cout<<"Сума="<<S<<"\n\n"; //Виводимо суму цифр числа “а”
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>G; //Вводимо зайву перемінну G для затримки екрану
} //Кінець функції main()
2.26 Знаходження номера селища
Програма Proga26.срр призначена для знаходження номера селища і, в якому зручніше розташувати лікарню, якщо мається k селищ і якщо в селищі і розташована лікарня, то подорож до селища j займе час a[i][j].
Вхідні дані: кількість селищ k (тип int)
Вихідні дані: номер селища і (тип int)
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<math.h> //math.h
#include<stdlib.h> //та stdlib.h
void main() //Оголошуємо головну функцію main()
{
int A[100][100]={{0},{0}};//Оголошуємо матрицю А,
int B[100]={0}; //матрицю В цілого типу та
int N,W,k,i,j,z,S,min=999;//перемінні N,W,k,i,j,z,S,min типу int
cout<<"Введіть кількість селищ: "; //Даємо запит
cin>>k; //Вводимо кількість селищ
for(i=0;i<k;i++) //Задаємо цикл
for(j=0;j<k;j++) //Задаємо цикл
A[i][j]=rand()%10+1;//Заповнюємо матрицю А випадковими числами
for(i=0;i<k;i++) //Задаємо цикл
for(j=0;j<k;j++) //Задаємо цикл
A[i][j]=A[j][i];//Переставляємо елементи матриці певним чином
for(z=0,j=0;z<k,j<k;z++,j++) //Задаємо цикл
{
for(i=0;i<k;i++) //Задаємо цикл
S=A[z][i];//Змінній S присвоюємо значення елемента матриці А
B[j]=S;//j-тому елементу матриці В присвоюємо значення змінної S
}
for(j=0;j<k;j++) //Задаємо цикл
if(B[j]<=min) //Умова: якщо елемент матриці В < або = змінній min,
{
min=B[j]; //Змінній min присвоюємо значення j-того елемента
N=j; //Змінній N присвоюємо значення параметра j
} //Виводимо відповідь
cout<<"В селищі номер "<<N+1<<" найкраще розташувати лікарню"<<"\n";
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.27 Перевід числа до різних систем счислення
Програма Proga27.срр призначена для переводу числа з десяткової системи счислення до війкової, вісімкової та шістнадцькової систем счислення
Вхідні дані: число N в десятковій системі счислення (тип int)
Вихідні дані: число N в двійковій системі счислення
число N у вісімковій системі счислення
число N в шістнадцьковій системі счислення
Блок-схема до програми Proga27.срр представлена на рисунку 2.7
Заголовний модуль stdafx.cpp
// stdafx.cpp : source file that includes just the standard includes
//Proga27_01.pch will be the pre-compiled header
//stdafx.obj will contain the pre-compiled type information
#include "stdafx.h" //Підключаємо заголовний модуль stdafx.h
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<stdlib.h> //та stdlib.h
void main() //Оголошуємо головну функцію main()
{
int N,i; //Оголошуємо змінні N,і цілого типу,
char str_2[100],str_8[100],str_16[100];//масиви str_2 str_8 str_16
char F; //та змінну F символьного типу
cout<<"Введіть число N: "; //Даємо запит
cin>>N; //Вводимо число в десятковій системі счислення
cout<<"Ваше число в двійковій системі счислення: "; //Повідомлення
itoa(N,str_2,2); //За допомогою функції itoa переводимо число N до
for(i=0;str_2[i]+='\0';i++) //двійкової системі счислення
{
F=str_2[i];
cout<<str_2[i]; //Виводимо число в двійковій системі счислення
}
cout<<"\n"; //Переводимо курсор на новий рядок
cout<<" Ваше число в вісімковій системі счислення: "; //Повідомлення
itoa(N,str_8,8); //За допомогою функції itoa переводимо число N до
for(i=0;str_8[i]+='\0';i++) //вісімкової системі счислення
cout<<str_8[i]; //Виводимо число в вісімковій системі счислення
cout<<"\n"; //Переводимо курсор на новий рядок
cout<<" Ваше число в шістнадцьковій системі счислення: ";
itoa(N,str_16,16); //За допомогою функції itoa переводимо число N до
for(i=0;str_16[i]+='\0';i++)//шістнадцькової системі счислення
cout<<str_16[i]; //Виводимо число в шістнадцьковій системі
cout<<"\n"; //Переводимо курсор на новий рядок
} //Кінець функції main()
Заголовний модуль stdafx.р
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
#if !defined(AFX_STDAFX_H_489A9441_BB1B_422E_BEEB_DC3DF70A8845__INCLUDED_)
#define AFX_STDAFX_H__489A9441_BB1B_422E_BEEB_DC3DF70A8845__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h>// MFC support for Internet Explorer 4
// Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>// MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations //immediately before the previous line.
#endif // !defined(AFX_STDAFX_H_489A9441_BB1B_422E_BEEB_DC3DF70A8845__INCLUDED_)
Заголовний модуль resource.h
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Proga27_01.rc
//
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_PROGA27_01_DIALOG 102
#define IDR_MAINFRAME 128
#define IDD_VVOD_10 1001
#define IDD_VVOD_2 1002
#define IDD_VVOD_8 1003
#define IDD_VVOD_16 1004
#define IDC_BUTTON1 1006
#define IDC_BUTTON2 1007
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1009
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Заголовний модуль Proga27_01Dlg.h
// Proga27_01Dlg.h : header file
#if !defined(AFX_PROGA27_01DLG_H__5D1551EB_3502_4EC1_A6BF_C06DBBB32D98__INCLUDED_)
#define AFX_PROGA27_01DLG_H__5D1551EB_3502_4EC1_A6BF_C06DBBB32D98__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//////////////////////////////////////////////////////////////////////
// CProga27_01Dlg dialog
class CProga27_01Dlg : public CDialog
{
// Construction
public:
CProga27_01Dlg(CWnd* pParent = NULL);// standard constructor
// Dialog Data
//{{AFX_DATA(CProga27_01Dlg)
enum { IDD = IDD_PROGA27_01_DIALOG };
CStringm_Vvod_16;
CStringm_Vvod_2;
CStringm_Vvod_8;
intm_Vvod_10;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CProga27_01Dlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CProga27_01Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
afx_msg void OnButton2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_PROGA27_01DLG_H__5D1551EB_3502_4EC1_A6BF_C06DBBB32D98__INCLUDED_)
Заголовний модуль Proga27_01Dlg.cpp
// Proga27_01Dlg.cpp : implementation file
//
програма число рядок матриця
#include "stdafx.h"
#include "Proga27_01.h"
#include "Proga27_01Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
// CProga27_01Dlg dialog
CProga27_01Dlg::CProga27_01Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CProga27_01Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CProga27_01Dlg)
m_Vvod_16 = _T("");
m_Vvod_2 = _T("");
m_Vvod_8 = _T("");
m_Vvod_10 = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a sub>sequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CProga27_01Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CProga27_01Dlg)
DDX_Text(pDX, IDD_VVOD_16, m_Vvod_16);
DDX_Text(pDX, IDD_VVOD_2, m_Vvod_2);
DDX_Text(pDX, IDD_VVOD_8, m_Vvod_8);
DDX_Text(pDX, IDD_VVOD_10, m_Vvod_10);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CProga27_01Dlg, CDialog)
//{{AFX_MSG_MAP(CProga27_01Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
// CProga27_01Dlg message handlers
BOOL CProga27_01Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);// Set big icon
SetIcon(m_hIcon, FALSE);// Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CProga27_01Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CProga27_01Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CProga27_01Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CProga27_01Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int N;
char str_2[50],str_8[50],str_16[50];
N=m_Vvod_10;
itoa(N,str_2,2);
m_Vvod_2=str_2;
itoa(N,str_8,8);
m_Vvod_8=str_8;
itoa(N,str_16,16);
m_Vvod_16=str_16;
UpdateData(FALSE);
}
void CProga27_01Dlg::OnButton2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
char o=0;
m_Vvod_10=0;
m_Vvod_2=o;
m_Vvod_8=o;
m_Vvod_16=o;
UpdateData(FALSE);
}
Заголовний модуль Proga27_01.h
// Proga27_01.h : main header file for the PROGA27_01 application
#if !defined(AFX_PROGA27_01_H__56B7EF51_81AC_4F93_9FF3_5017FF89C8DA__INCLUDED_)
#define AFX_PROGA27_01_H__56B7EF51_81AC_4F93_9FF3_5017FF89C8DA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h"// main symbols
//////////////////////////////////////////////////////////////////////
// CProga27_01App:
// See Proga27_01.cpp for the implementation of this class
class CProga27_01App : public CWinApp
{
public:
CProga27_01App();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CProga27_01App)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CProga27_01App)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_PROGA27_01_H__56B7EF51_81AC_4F93_9FF3_5017FF89C8DA__INCLUDED_)
Заголовний модуль Proga27_01.cpp
// Proga27_01.cpp : Defines the class behaviors for the application.
#include "stdafx.h"
#include "Proga27_01.h"
#include "Proga27_01Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////
// CProga27_01App
BEGIN_MESSAGE_MAP(CProga27_01App, CWinApp)
//{{AFX_MSG_MAP(CProga27_01App)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
// CProga27_01App construction
CProga27_01App::CProga27_01App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
//////////////////////////////////////////////////////////////////////
// The one and only CProga27_01App object
CProga27_01App theApp;
//////////////////////////////////////////////////////////////////////
// CProga27_01App initialization
BOOL CProga27_01App::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls();// Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic();// Call this when linking to MFC statically
#endif
CProga27_01Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
Рисунок 2.7 Блок-схема алгоритму до програми Proga27.срр
2.28 Знаходження раціональної кількості предметів
Програма Proga28.срр призначена для знаходження числа коробок, в’язок та пар шкарпеток, які бажає купити клієнт, щоб купівля обійшлася дешевше, якщо пара шкарпеток коштує 105р., в’язка (12 пар) – 1025р., а коробка (12 в’язок) – 11400р.
Вхідні дані: кількість селищ k (тип int)
Вихідні дані: номер селища і (тип int)
Блок-схема до програми Proga28.срр представлена на рисунку 2.8
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<math.h> //та math.h
//Оголошуємо константи:
#define PARA 105 // 1 пара - 105р.
#define SV 1025 // в’язка (12 пар) = 1025р.
#define KOR 11400 // коробка (12 в’язок = 144 пары) = 11400р.
void main() //Оголошуємо головну функцію main()
{ //Оголошуємо змінні:
int N,n1,n2,n3,p=1,s=12,k=144,a,b,c,a1,b1,c1,W;
cout<<"Скільки пар ви бажаєте купити? "; //Даємо запит
cin>>N; //Вводимо кількість пар шкарпеток
if(N==1) //Умова: якщо кількість =1, то виводимо повідомлення
{ cout<<"За однією парою не варто ходити до крамниці"<<"\n";
goto p; //Переходимо до мітки р:
}
a=N/k; //
a1=N%k; //
//
b=a1/s; //
b1=a1%s; //Робимо операції над змінними
//
c=b1/p; //
c1=b%p; //
n1=a; // К-ть коробок
n2=b; // К-ть в’язок
n3=c; // К-ть пар
if(n3>=6) //Умова: якщо кількість пар >6,
{ //виводимо повідомлення на екран
cout<<"Вам вигідніше купити "<<n1<<" коробок та "<<(n2+1)<<" в’язок";
cout<<"Вам це буде коштувати "<<(n1*11400+(n2+1)*1025)<<"p"<<"\n";
}
else //В іншому разі:
{
cout<<"Вам вигідніше купити "<<n1<<" коробок та "<<n2<<" в’язок";
cout<<"Вам це буде коштувати "<<(n1*11400+n2*1025)<<"p"<<"\n";
}
p:; //Мітка р:
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
Ні Так
Ні Так
Рисунок 2.8 Блок-схема алгоритму до програми Proga28.срр
2.29 Знаходження четвірок простих чисел
Програма Proga29.срр призначена для знаходження четвірок простих чисел не перевищуючих N, якщо задане N>19
Вхідні дані: Число N (тип int)
Вихідні дані: четвірки простих чисел
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<math.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
int N,i,kol; //Оголошуємо перемінні N,I,kol цілого типу
char str1[10],str2[10],str3[10],str4[10];//та символьні матриці
cout<<"Введіть число >19 "; //Даємо запит
cin>>N; //Вводимо число >19
kol=0; //змінній kol присвоюємо початкове значення 0
for(;N>0;) //Задаємо цикл
{
N=(N-N%10)/10; //Знаходимо цифри числа а
kol++; //Збільшуємо лічильник kol на одиницю
}
if (kol==2) //Умова: якщо кількість дорівнює 2, виводимо:
{
cout<<"2 3 5 7"<<"\n"<<"11 13 17 19"<<"\n";
goto p; //Перехід до мітки р:
}
else //інакше – виводимо:
{
cout<<"2 3 5 7"<<"\n"<<"11 13 17 19"<<"\n";
str1[0]=1; //
str2[0]=1; //Першим елементам матриць присвоюємо значення 1
str3[0]=1; //
str4[0]=1; //
str1[kol-1]=1; //
str2[kol-1]=3; //
str3[kol-1]=7; //Останнім елементам матриць присвоюємо відповідні
str4[kol-1]=9; // значення
for (i=1;i<=kol-2;i++) //Задаємо цикл
{
str1[i]=0; //
str2[i]=0; //Між першим та останнім елементами матриць всі елементи
str3[i]=0; //будуть дорівнювати 0
str4[i]=0; //
}
for (i=0;i<=3;i++) //Задаємо цикл
cout<<str1[i]; //Виводимо елементи матриці str1
cout<<" "; //Ставимо пробіл
for (i=0;i<=3;i++) //Задаємо цикл
cout<<str2[i]; //Виводимо елементи матриці str2
cout<<" "; //Ставимо пробіл
for (i=0;i<=3;i++) //Задаємо цикл
cout<<str3[i]; //Виводимо елементи матриці str3
cout<<" "; //Ставимо пробіл
for (i=0;i<=3;i++) //Задаємо цикл
cout<<str4[i]; //Виводимо елементи матриці str4
cout<<" "; //Ставимо пробіл
}
p:; //Мітка р:
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.30 Обчислення числа Фібоначі
Програма Proga30.срр призначена для обчислення числа Фібоначі з номером N
Вхідні дані: число n (тип int)
Вихідні дані: масиви чисел Фібоначі (тип double)
Блок-схема до програми Proga30.срр представлена на рисунку 2.9
#include<iostream.h> //Підключаємо бібліотеку iostream.h
void main() //Оголошуємо головну функцію main()
{
int i,n,W; //Оголошуємо перемінні I,n,W цілого типу
double a[50]; //та масив а типу (double)
cout<<"Числа Фібоначі:"<<"\n"; //Виводимо повідомлення
cout<<"Введіть n до 30"<<"\n "<<"k="; //Даємо запит
cin>>n; //Вводимо число n
a[1]=1; //Першому та другому елементам матриці а
a[2]=1; // присвоюємо значення 1
for(i=3;i<=n;i++) //Задаємо цикл
a[i]=a[i-1]+a[i-2]; // і-ий елемент матриці а дорівнює:
for(i=1;i<=n;i++) //Задаємо цикл
cout<<a[i]<<" "<<'\n'; //Виводимо елементи матриці а
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
Рисунок 2.9 Блок-схема алгоритму до програми Proga30.срр
2.31 Видалення з рядку певних символів
Програма Proga1_1.срр призначена для видалення з рядку S1 усіх символів, які зустрічаються в рядку S2
Вхідні дані: рядок str1 (тип char)
рядок str2 (тип char)
Вихідні дані: Змінений рядок str1 (тип char)
#include <iostream.h> //Підключаємо бібліотеки iostream.h,
#include <string.h> //та math.h
char func(char str3[10],char str4[10])//Оголошуємо функцію, яка по
{ //заданим рядкам S1 та S2,
for(int i=0;str3[i]+='\0';i++) //видаляє з рядка S1 всі символи
for(int j=0;str4[j]+='\0';j++) //які зустрічаються в рядку S2
{ //
if(str3[i]==str4[j]) //
cout<<str4[j+1]; //
else cout<<str3[i]; //
} //
return 0; //
} //
void main() //Оголошуємо головну функцію main()
{
int W; //Оголошуємо перемінну W цілого типа,
char str1[10]; //матриці str1 та str2 символьного типу
char str2[10];
cout<<"Введіть рядок 1: "; //Даємо запит
cin>>str1; //Вводимо перший рядок
cout<<"Введіть рядок 2: "; //Даємо запит
cin>>str2; //Вводимо другий рядок
func(str1,str2); //Викликаємо функцію func
cout<<"\n"; //Переводимо курсор на новий рядок
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.32 Сума двох рядків
Програма Proga2_2.срр призначена для формування рядка-суми двох рядків, якщо подані два символьних рядка, які складаються тільки з цифр.
Вхідні дані: рядок STRING1 (тип char)
рядок STRING2 (тип char)
Вихідні дані: рядок STRING3 (тип char)
#include<iostream.h> //Підключаємо бібліотеки iostream.h,
#include<stdlib.h> //та math.h
void main() //Оголошуємо головну функцію main()
{
char STRING1[50]={0};//Оголошуємо символьну матрицю STRING1,
char STRING2[50]={0};//матрицю STRING2,
int i,N1,N2; //та змінні I,N1,N2
cout<<"Скільки елементі вбуде в вашому рядку 1? "; //Вводимо запит
cin>>N1; //Вводимо кількість елементів першого рядка
cout<<"Введіть рядок 1: "; //Даємо запит
for(i=0;i<N1;i++) //Задаємо цикл
cin>>STRING1[i]; //Вводимо цифри першого рядка
cout<<" Скільки елементі вбуде в вашому рядку 2? "; //Вводимо запит
cin>>N2; //Вводимо кількість елементів другого рядка
cout<<" Введіть рядок 2: ";//Даємо запит
for(i=0;i<N2;i++) //Задаємо цикл
cin>>STRING2[i]; //Вводимо цифри другого рядка
double long l1=atol(STRING1); //Змінній l1 присвоюємо функцію atol
//яка обертає рядок STRING1 на одне число типу double long
double long l2=atol(STRING2); //Змінній l2 присвоюємо функцію atol
double long l3=l1+l2; //Змінній l3 присвоюємо суму l1 та l2
cout<<"l3="<<l3<<"\n";//Виводимо відповідь
cout<<"\n"<<"Для виходу введіть EXIT:"<<"\n"; //Даємо запит
cin>>W; //Вводимо зайву перемінну W для затримки екрану
} //Кінець функції main()
2.33 Редагування тексту
Програма Proga33.срр призначена для редагування тексту так, щоб між словами був рівно один пробіл, а між реченнями рівно два
Вхідні дані: рядок символів S (тип char)
Вихідні дані: відредагований рядок S (тип Char)
Блок-схема до програми Proga33.срр представлена на рисунку 2.10
#include<conio.h> //Підключаємо бібліотеки conio.h
#include<stdio.h> //та stdio.h
void main() //оголошуємо головну функцію main()
{
char S[80],i; //оголошуємо символьний масив з 80 елементів та
// символьну перемінну i
printf("Введіть ваш рядок. В кінці поставте @:\n"); //Вводимо рядок,
gets(S); //який закінчується на @
i=0; //Задаємо початкове значення параметра i
while((S[i]!='@'))
{
if (S[i]=='.') //Задаємо умову знаходження крапки в рядку
{ //якщо крапка знайдена,
printf(". "); //виводимо крапу з двома пробілами
}
else printf("%c",S[i]); //інакше виводимо елемент на своєму місці
i+=1; //Збільшуємо лічильник на одиницю
}
printf("\n"); //Переводимо курсор на новий рядок
getch(); //Затримуємо екран
} //Кінець функції main()
Gets();
Ні Так
i++
Рисунок 2.10 Блок-схема алгоритму до програми Proga33.срр
2.34 Копіювання одного рядка в інший
Програма Proga4_4.срр призначена копіювання одного тексту в інший так, щоб літери “новий рядок” та “табуляція” перетворювалися у видимі послідовності літер \n та \t
Вхідні дані: рядок символів Str1 (тип char)
рядок символів Str2 (тип char)
Вихідні дані: новий рядок str3 (тип Char)
#include<conio.h> //Підключаємо бібліотеки conio.h,
#include<stdio.h> //stdio.h
#include<string.h> //та string.h
char func(char str3[180],char str4[180]) //Оголошуємо функцію func,
{ //яка по заданим двом рядкам
int i; char str5[180]; //копіює другий рядок в кінець
//першого та перетворює літери
strncat(str3,str4,80); //”новий рядок” та “табуляція”
printf("\n"); //у видимі послідовності літер
//\n та \t
i=0;
while(str3[i]!=EOF)
{
if (str3[i]=='\n')
printf("\n");
else if (str3[i]=='\t')
printf("\t");
else printf("%c",str3[i]);
i+=1;
}
return 0;
}
void main() //Оголошуємо головну функцію main()
{
char str1[180],str2[180] //Оголошуємо дві символьних матриці
printf("Введіть ваш перший рядок:\n"); //Даємо запит
gets(str1); //Вводимо перший рядок символів
printf("Введіть ваш другий рядок:\n"); //Даємо запит
gets(str2); //Вводимо другий рядок символів
func(str1,str2); //Викликаємо функцію func
printf("\n"); //Переводимо курсор на новий рядок
getch(); //Затримуємо екран
} //Кінець функції main()
Перелік посилань
Глушаков С.В.,Коваль А.В.,Смирнов С.В. Язык программирования С++. – Харьков: «Фолио», Ростов-на-Дону: «Феникс», 2001.
Керниган Б. Ричи Д. Язык программирования Си – М. Финансы и статистика, 1992. – 272 с.
Хэфилд Ричард, Кирби Лоуренс и др. Искусство программирования на Си. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программистов «ДиаСофт». 2001. – 736 с.