/
Міністерство освіти і науки України
Черкаський художньо-технічний коледж
Циклова комісія «Комп'ютерні науки та ВПС»
КУРСОВА РОБОТА
з дисципліни алгоритмізація та програмування
на тему: мова програмування с++
Студента II курсу МС - 22 групи
Спеціальності 5.05010101 Обслуговування
програмних систем та комплексів
Ємелянов С.А. Керівник
Викладач Захарчун Д. М.
м. Черкаси - 2014 рік
Анотація
Записка 33 с., 1ч., 18 рис., 14 джерел,
ФУНКЦІЯ, РОЗГАЛУЖЕННЯ, ЦИКЛ,. СТРУКТУРИ, МАСИВ, ДВОЗВ'ЯЗНИЙ СПИСОК, ЗМІННА
Об'єктом розробки є програми з використання різних алгоритмічних структур
Мета роботи - розробка консольних програм мовою с++, що включає різні алгоритмічні структури:
- Лінійні алгоритми;
- Розгалуження
- Циклічні алгоритми
- Функції та процедури
- Структури
- Динамічні структури даних
В результаті розробки було спроектовано і реалізовано 10 додатків з використанням різних алгоритмічних структур.
Зміст
ЗАВДАННЯ 1. Розробка та виконання простих програм
ЗАВДАННЯ 2. Розробка та виконання програм з розгалуженням
ЗАВДАННЯ 3. Розробка та виконання програм з використанням функцій
ЗАВДАННЯ 4. Розробка та виконання програм з використанням масивів
ЗАВДАННЯ 5. Розробка та виконання програм з використанням рядків
ЗАВДАННЯ 6. Розробка та виконання програм з використанням функцій
ЗАВДАННЯ 7. Розробка та виконання програм з використанням структур
ЗАВДАННЯ 7. Динамічні структури даних
Висновок
Список використаної літератури
ЗАВДАННЯ 1. Розробка та виконання простих програм
Постановка задачі. Написати програму обчислення вартості поїздки на автомобілі на дачу (туди і назад). Початковими даними є: відстань до дачі (км); кількість бензину, яка споживає автомобіль на 100 км пробігу; ціна одного літра бензину. Нижче приведений вид екрану під час виконання програми, що рекомендується (дані, які вводяться користувачем, виділені напівжирним шрифтом).
Обчислення вартості поїздки на дачу і назад.
Введіть початкові дані: Відстань до дачі (км) > 67
Витрата бензину (літрів на 100 км пробігу) > 8.5
Ціна літра бензину (грн.) > 6.5
Поїздка на дачу і назад обійдеться в 74.04 грн.
Блок-схема:
Програма на мові С++
// t1z1.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
float S,L,C,Sum;
cout<<'Введiть початковi данin';
cout<<'Вiдстань до дачi (км)n';
cin>>S;
cout<<'nВитрата бензину (лiтрiв на 100 км пробiгу)n';
cin>>L;
cout<<'nЦiна лiтра бензину (грн.)n ';
cin>>C;
Sum=(S*L/100)*C*2;
cout<<'nПоїздка на дачу i назад обiйдеться в '<<Sum<<' грн';
system('pause');
return 0;
}
Результат роботи програми
Постановка задачі. Написати програму обчислення струму, по відомих значеннях напруги і опору електричного ланцюга.
програма масив рядок функція
Блок-схема:
Програма на С++
// t1z2.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
float U,R,I;
cout<<'Введiть початковi данin';
cout<<'Напруга (В)n';
cin>>U;
cout<<'nОпiр (Ом)n';
cin>>R;
I=(U/R);
cout<<'nСила струму '<<I<<' Аn';
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 2. Розробка та виконання програм з розгалуженням
Постановка задачі. Написати програму, яка виводить приклад множення двох однозначних чисел, запрошує відповідь користувача, перевіряє його і виводить повідомлення 'Правильно' або 'Ви помилилися' і правильний результат
Блок-схема:
Програма на мові С++
// t2z1.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
float a,b,C,Sum;
cout<<'Введiть число аn';
cin>>a;
cout<<'Введiть число bn';
cin>>b;
cout<<'nВаша вiдповiдь?n';
cin>>C;
Sum=a*b;
if (Sum==C)
{
cout<<'nПравильно! a*b='<<Sum<<'n';
}
else
{
cout<<'nВи помилились! a*b='<<Sum<<'n';
}
system('pause');
return 0;
}
Результат роботи програми
програма масив рядок функція
Постановка задачі. Розробіть програму, яка виконає наступні обчислення. Якщо ознака mm=2, вона обчислить значення функції f 5ln( x) sin( x) при х=3. Якщо ознака mm=3, вона обчислить значення функції при х=2. У решті випадків (при інших значеннях mm) видасть на екран монітора фразу: «Повторіть розрахунки».
Блок-схема:
Програма на мові С++
// t2z2.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<math.h>
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
double mm,F;
cout<<'Введiть mmn';
cin>>mm;
if (mm==2)
{
F=5*log(3.0)-sin(3.0);
cout<<'значення функцiї: F='<<F<<'n';
}
else if(mm==3)
{
F=5*log(2.0)-sin(2.0);
cout<<'значення функцiї: F='<<F<<'n';
}
else
{
cout<<'nПовторiть розрахункиn';
}
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 3. Розробка та виконання програм з використанням функцій
Постановка задачі. Написати функцію, що розраховує відсотки за вкладом в залежності від виду та розміру вкладу
Блок-схема:
Програма на мові С++
// t3.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
double mm;
double ser=0;
for (int i=1;i<6;i++)
{
cout<<'Введiть число №'<<i<<'n';
cin>>mm;
ser+=mm;
mm=0;
}
ser=ser/5;
cout<<'nCереднє арифметичне - '<<ser<<'n';
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 4. Розробка та виконання програм з використанням масивів
Постановка задачі. Написати програму, яка об'єднує два впорядкованих за збільшенням масиву в один, також упорядкує масив
Блок-схема:
Програма на мові С++
// t4.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include <clocale>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n,m,x,s;
setlocale(LC_ALL,'Russian');
cout << 'Розмiр першого масивуn';
cin >> n;
int *a = new int[n];
cout << 'Введiть перший масивn';
for (int i=0; i<n; i++)
{
cin >> a[i];
}
cout << 'Розмiр другого масивуn';
cin >> m;
int *b = new int[m];
cout << 'Введiть другий масивn';
for (int i=0; i<m; i++)
{
cin >> b[i];
}
x = n + m;
int *c = new int[x];
for (int i=0; i<n; i++)
{
c[i] = a[i];
}
for (int i=n; i<x; i++)
{
c[i] = b[i - n];
}
for (int i=0; i<x; i++)
{
for (int j=0;j<x-1;j++)
{
if (c[j]>c[j+1])
{
s=c[j];
c[j]=c[j+1];
c[j+1]=s;
}
}
}
for (int i=0; i<x; i++)
{
cout << c[i] << ' ';
}
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 5. Розробка та виконання програм з використанням рядків
Постановка задачі. Сформувати масив, елементи якого містять кількість голосних літер у словах речення
Блок-схема:
Програма на мові С++
// t5.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include <clocale>
#include <string>
#include <iostream>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL,'Russian');
int n=0,j=0;
string s;
cout << 'Введiть реченняn';
getline(cin, s);
for (int i=0; i<s.length()-1; i++)
{
if (s[i]==' ')
{
n++;
}
}
int *a = new int[n+1];
for (int i=0;i<n+1;i++)
{
a[i]=0;
};
for (int i=0; i<s.length(); i++)
{
if (s[i] == ' ')
{
j++;
}
else{
if ((s[i]=='а') || (s[i]=='е') || (s[i]=='и') || (s[i]=='і') || (s[i]=='о') || (s[i]=='у') )
{
a[j]++;
}
}
};
for (int i=0;i<n+1;i++)
{
cout << a[i]<<'t';
}
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 6. Розробка та виконання програм з використанням функцій
Постановка задачі. Написати функцію, що розраховує відсотки за вкладом в залежності від виду та розміру вкладу
Блок-схема:
Програма на мові С++
// t6.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
using namespace std;
void vklad(int n, double sum)
{
double Vkl;
switch (n)
{
case 1: Vkl=sum*0.137; break;
case 2: Vkl=sum*0.1375; break;
case 3: Vkl=sum*0.14; break;
}
cout<<'Вiдсоток становитиме: '<<Vkl<<' грнn';
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
double sum;
setlocale(LC_ALL,'Russian');
cout<<'Види вкладiвn';
cout<<'1. Унiверсальний (1 рiк) 13,7%n';
cout<<'2. Ощадний (1 рiк) 13,75%n';
cout<<'2. Бонус (1 рiк) 14%n ';
cout<<'n Ваш вибiр?n ';
cin>>n;
cout<<'n Введiть сумуn ';
cin>>sum;
vklad(n,sum);
system('pause');
return 0;
}
Результат роботи програми
ЗАВДАННЯ 7. Розробка та виконання програм з використанням структур
Постановка задачі. У звіті зберігається інформація: назва підприємства, прибуток підприємства за місяць, нарахування на зарплатню. Відсортувати цей звіт у порядку зменшення прибутку і вивести на екран інформацію з трьох найбільш прибуткових підприємств
Блок-схема
Програма на мові С++
// t7.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include<stdio.h>
#include<iostream>
#include <clocale>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,'Russian');
struct Pidpr {
string name;
double zarobitok;
double zp;
};
Pidpr pidpr[5];
double zrp,zp1;
string names;
//введення початкової інформації
for(int i=0;i<5;i++)
{cout<<'nВведiть назву пiдприємства: ';
cin>>pidpr[i].name;
cout<<'n Введiть прибуток пiдприємства: ';
cin>>pidpr[i].zarobitok;
cout<<'n Введiть нарахування на зарплатню: ';
cin>>pidpr[i].zp;
}
for(int i=0;i<4;i++) //сортування
{
if (pidpr[i].zarobitok<pidpr[i+1].zarobitok)
{
zrp=pidpr[i].zarobitok;
pidpr[i].zarobitok=pidpr[i+1].zarobitok;
pidpr[i+1].zarobitok=zrp;
names=pidpr[i].name;
pidpr[i].name=pidpr[i+1].name;
pidpr[i+1].name=names;
zp1=pidpr[i].zp;
pidpr[i].zp=pidpr[i+1].zp;
pidpr[i+1].zp=zp1;
}
}
for(int i=0;i<3;i++) // виведення 3-ьох найприбутковіших підприємств
{
cout<<pidpr[i].name<<'t'<<pidpr[i].zarobitok<<'t'<<pidpr[i].zp<<'n';
}
system('pause');
}
Результат роботи програми
ЗАВДАННЯ 7. Динамічні структури даних
Постановка задачі. Реалізувати двозв'язний список з розгалуженнями для зберігання і операцій з даними виду: Ім'я Послідовність чисел Забезпечити виконання операцій: додавання елементів в список; пошук і роздрукування елементу в списку; видалення елементу із списку; підрахунок елементів в списку.
Блок-схема:
Програма на мові С++
// t8.cpp: определяет точку входа для консольного приложения.
//
#include 'stdafx.h'
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string>
#include <clocale>
using namespace std;
struct city
{
string name;
struct city *next;
struct city *previous;
};
city *head=NULL;
city *last=NULL;
city *current=NULL;
city *temp=NULL;
city *newList=NULL;
/* Процедура дадання елемента */
void add_name(string s)
{
if(head!=NULL)
{
newList=new city;
newList->name=s;
newList->next=NULL;
newList->previous=current;
current->next=newList;
last=newList;
current=newList;
}
else
{
newList=new city;
newList->name=s;
head=newList;
newList->next=NULL;
newList->previous=NULL;
current=newList;
last=head;
}
}
/* Пошуку елемента */
void search_unit(string name)
{
newList=head;
while(newList!=last->next)
{
if(newList->name==name)
{
cout<<'елемент знайденоn';
}
newList=newList->next;
}
}
/* Процедура видалення */
void delete_unit(string name)
{
newList=head;
while(newList){
if(newList->name==name)
{
if(newList==head){
head=head->next;
if(head)
head->previous=NULL;
else
last=NULL;
if(current==newList)
current=head;
delete newList;
break;
}
if (newList==last){
last=last->previous;
if(last)
last->next=NULL;
if(current==newList)
current=last;
delete newList;
break;
}
newList->previous->next=newList->next;
newList->next->previous=newList->previous;
current=newList->previous;
delete newList;
break;
}
newList=newList->next;
}
}
/* Процедура виводу списка зліва направо */
void show_list(void)
{
struct city *info;
info = head;
while(info)
{
cout<<info->name<<' ';
info = info->next;
}
cout<<'n';
}
/* Процедура виводу списка справа наліво */
void show_list_1(void)
{
struct city *info;
info = last;
while(info)
{
cout<<info->name<<' ';
info = info->previous;
}
cout<<'n';
}
/* Основна програма */
int main(void)
{
setlocale(LC_ALL,'Russian');
string enter_name;
int key=-1;
while(key)
{
cout<<'1. Ввести iмяn';
cout<<'2. Видалити iмяn';
cout<<'3. Показати списокn';
cout<<'4. Показати список з кiнцяn';
cout<<'5. Пошукn';
cout<<'0. Вихiдn';
cin>>key;
switch (key)
{
case 1:
{
cout<<'Введiть iмя або натиснiть ENTER для виходу n';
cin>>enter_name;
add_name(enter_name);
break;
}
case 2:
{
cout<<'Введiть iмя для видаленняn';
cin>>enter_name;
delete_unit(enter_name);
getch();
break;
}
case 3:
{
cout<<'Cписок злiва направо:n';
show_list();
break;
}
case 4:
{
cout<<'Список зправа налiвоn';
show_list_1();
break;
}
case 5:
{
cout<<'Введiть iмя для пошуку ';
string search_name;
cin>>search_name;
search_unit(search_name);
getch();
break;
}
case 0:
{
cout<<'Вихiдn';
getch();
break;
}
default:
{
cout<<'Помилкаn';
getch();
break;
}
if (key==0) break;
}
}
return 0;
}
Результат роботи програми
Висновок
В ході виконання курсової роботи з дисципліни «Алгоритмізація та програмування» було розроблено 10 програми мовою С++ в середовищі visual studio 2010. Під час проектування і розробки було розглянуто і вивчено основні алгоритмічні структури даної мови, а також застосовано на практиці отримані знання з курсу «Алгоритмізація та програмування»
Список використаної літератури
1. Ахо Альфред В., Хопкрофт Джон Ульман, Джеффри, Д. Структуры данных и алгоритмы : Пер. с англ. : Уч. пос. - М. : Издательский дом 'Вильяме', 2000. - 384 с.
2. Ван Тассел Д. Стиль, разработка, отладка и испытание программ. М.: Мир,1985.
3. Глушаков С В. и др. Язык программирования С++. Харьков: Фолио. 2002. 500 с.
4. Дейтел Х.М., Дейтел П-Дж. Как программировать на С++. М.:ЗАО «Издательство ВИНОМ», 2000 г. 1024 с.
5. Жешке Р. Толковый словарь стандарта языка Си С.-Петербург: Пи-гер,1994. 221с.
6. Керниган Б., Ритчи Д. Язык программирования Си: Пер. .с англ. М.: Финансы и статистика, 1992. 272 с.
7. Ковалюк Т.В. Основи програмування. - К.: Видавнича група BHV, 2005.
8. Матьяш В.А., Путилов В.А., Фильчаков В.В. , Щёкин С.В. Структуры и алгоритмы обработки данных - Апатиты, КФ ПетрГУ, 2000. - 80 с.
9. Подбельский В.В. Язык Си++: Учеб. пособие. М.: БИНОМ, 1995. 400с.
10.Проценко В.С. Техніка програмування мовою С: Навчальний посібник. -- К.:Либідь, 1993. 224 с.
11.Страуструп Б. Язык программирования С++. Часть 1. Киев: 'Диа-Софт', 1993. 264с.
12.Страуструп Б. Язык программирования С++. Часть 2. Киев: 'Диа-Софт', 1993. 296с.
13.Шилд Г., Программярование на языке C++ - М.: Высшая школа, 2002. - 584 с.
14.Шпак З.Я. Програмування мовою С. - Львів: Оріяна-Нова, 2006.