- •Функції стандартного введення-виведення
- •1.1.6. Логічні операції Арифметичні операції:
- •Операції відношення та логічні операції:
- •Операції присвоювання:
- •1.2.1. Умова завдання.
- •1.2.2. Опис методу рішення
- •1.2.3. Опис алгоритму програми
- •1.2.4. Тестування роботи програми
- •1.3.1. Умова завдання
- •1.3.2. Опис методу рішення
- •1.3.3. Опис алгоритму програми
- •1.3.4. Тестування роботи програми
- •1.4.1. Умова завдання
- •1.4.2. Опис методу рішення
- •1.4.3. Опис алгоритму програми
- •1.4.4. Тестування роботи програми
- •Висновки
- •Cписок викоростаних джерел
Висновки
Отже, розробка трьох програм допомогла отримати практичні навички в роботі з порозрядними логічними операціями та операціями зсуву; створення функції заміни у рядку символів та роботі з одномірними та двомірними масивами.
Розроблені програми можуть повноцінно використатись у створенні інших проектів.
В даний час індустрія виробництва комп'ютерів та програмного забезпечення є однією з найбільш важливих сфер економіки розвинених країн. Щорічно у світі продаються десятки мільйонів комп'ютерів. Тільки в США обсяг продажів комп'ютерів складає десятки мільйонів доларів і постійно продовжує рости. У чому ж причини такого стрімкого зростання індустрії персональних комп'ютерів та їх порівняльна вигідність для багатьох ділових застосувань? Простота використання, забезпечена за допомогою діалогового способу взаємодії з комп'ютером.
Відносно високі можливості з переробки інформації, наявність програмного забезпечення, а також потужних систем для розробки нового програмного забезпечення.
C + + - модульна статично універсальна мова програмування загального призначення. Підтримує різні парадигми програмування, але, в порівнянні з його попередником - мовою Сі, - найбільшу увагу приділено підтримці об'єктно-орієнтованого і узагальненого програмування. Назва
«C + +» походить від Сі (C), в якому унарний оператор ++ позначає інкремент змінної. У 1990-х роках стала однією з найбільш широко застосовуваних мов програмування загального призначення.
При створенні C ++ прагнули зберегти сумісність з мовою Сі. Більшість програм на С справно працюватимуть і з компілятором C + +.
Крім цього, С + + успішно використовується як у багатьох додатках, так і в потужних операційних системах.
Visual C++ 2010 надає потужне і гнучке середовище розробки, що дозволяє створювати застосування для Microsoft Windows і застосування, засновані на Microsoft .NET. Це середовище можна використовувати як інтегроване середовище розробки, так і в якості окремих засобів.
Cписок викоростаних джерел
Страуструп Б. “Язык программирования С++”.
2. Шилдт Г. “Искусство программирования на C++”.
3. wikipedia.com
4. msdn.microsoft.com
ДОДАТОК А: Алгоритм роботи побітових операцій
Int (main)
worker(int arg[]),
printer(int arg[])
signed int massive[] = {13, 41, -513, 53, -41, 12, -425, 52, 21},
worker(massive), printer(massive);
"Before: 13, 41, -513, 53, -41, 12, -425, 52, 21"
i=0; i<sizeof(arg), i++
if (arg[i]<0) arg[i]=arg[i] >> 2
elsearg[i]= arg[i]|=(0<<0)|(0<<4)
This is hex and dec values after conversion;
DEC value number %d is %d;
HEX value number %d is 0x%X
END
NO
YES
ДОДАТОК ДОДАТОК Б.1: Алгоритм функції заміни символів.
Int (main)
worker(int arg[]),
printer(int arg[])
Input text, press enter to parse
current=getchar())!='\n'
zam_number = zam((char*) ¤t)
putchar(current)
There was %d replacements
Return 0
NO
YES
ДОДАТОК Б.2: Алгоритм роботи функції заміни символів.
begin
space_detector, zam(char *s)
extern int space_detector, firstchar
count = 0,
int firstchar = 1
if (*s == ' '),
space_detector=1,
else if (space_detector== 1 || firstchar == 1)
NO
YES
*s = *s + ('A' - 'a')
space_detector = 0,
firstchar = 0,
count++
Return count
ДОДАТОК В.1: Алгоритм роботи з масивами.
begin
biggest_in_column
(float local_matrix[X_DIM][X_DIM], int column, int *cur_y)
i = 0,
current_biggest = 0.0f, i<Y_DIM, i++
if(current_biggest<local_matrix[column][i])
NO
YES
current_biggest=
local_matrix[column][i],
cur_y[column]=i
return current_biggest
ДОДАТОК В.2: Алгоритм роботи з масивами.
Int (main)
cur_y[X_DIM], matrix[X_DIM][Y_DIM], found_biggest[X_DIM],
i, t
summ = 0.0f
Enter matrix at %d on %d dimensions
i=0, i<Y_DIM, i++
t=0; t<X_DIM, t++
Number at [%d]x[%d]=,
t, i
"%f", &matrix[t][i]
i = 0; i<X_DIM; i++,
found_biggest[i]=
biggest_in_column
(matrix, i, cur_y)
"Biggest in column %d is %f at %d\n"
summ=summ+found_biggest[i]
Return 0
Summ is %f
Додаток Г: Лістинг програми роботи побітових операцій
#include <stdio.h>
void worker(int arg[]);///задання змінної worker
void printer(int arg[]);///задання змінної printer
int main() {
signed int massive[] = {13, 41, -513, 53, -41, 12, -425, 52, 21};///фіксований масив данних
printf("Before: 13, 41, -513, 53, -41, 12, -425, 52, 21");///вивід на екран числового масиву до дії перетворень
worker(massive);
printer(massive);
return 0;///повертання к нулю
}
void worker(int arg[]) {
int i; ///задання змінної///
for (i=0; i<sizeof(arg); i++) { ///умова для і, якщо вона менше довжини масиву, виконувати наступні дії///
if (arg[i]<0) { ///якщо аргумент і менше 0 роботи здвиг на два біти
arg[i]=arg[i] >> 2;
} else {
arg[i] = arg[i]|=(0<<0)|(0<<4); ///порозрядне зкидання 0 і 4 бітів
}
}
}
void printer(int arg[]) {
int i;
printf("This is hex and dec values after conversion\n"); ///вивід результатів на екран
for(i=0;i<sizeof(arg);i++){
printf("DEC value number %d is %d\n", i, arg[i]); ///вивід результатів на екран у десятковому форматі/// printf("HEX value number %d is 0x%X\n", i, arg[i]); ///вивід результатів на екран у шістнадцятирічному форматі///
}
}
Додаток Д: Лістинг програми функції заміни символів
#include <stdio.h>
#include "Second.h"
int main(){
/// оголошення змінних
char current;
int zam_number;
///запит на ввод тексту
printf("Input text, press enter to parse\n");
///умова пока змінна дорівнює кількості строкових символів, робити строкову заміну
while ((current=getchar())!='\n') {
zam_number = zam((char*) ¤t);
putchar(current);
}
putchar('\n');
///вивід на екран кількості зроблених замін
printf("There was %d replacements\n", zam_number);
return 0;
}
/*
* File: Second.h *
*/
/// проголошення змінної індикатора пробелів та лічильник у 0 із змінною першого символу у 1
int space_detector, count = 0;
int firstchar = 1;
///надання змінній параметра символьної заміни
int zam(char *s) {
///проголошення за допомогою зовнішнього модифікатора змінних детектора пробелів та першого символу
extern int space_detector, firstchar;
///умова, якшо символ заміни рівний пробелу, індикатор пробелів у стані 1
if (*s == ' ') {
space_detector = 1;
}
///якщо індикатор пробелів рівний 1 разом з змінною першого символа, робити заміну маленької букви на велику
else if (space_detector == 1 || firstchar == 1) {
*s = *s + ('A' - 'a');
///встановлення змінних у фазу 0
space_detector = 0;
firstchar = 0;
count++;
}
/// повертання до лічільника
return count;
}
Додаток Е: Лістинг програми роботи з масивами
////Вантажить стандартну бібліотеку введення-виводу
##include <stdio.h>
////Задає кількість рядків і стовпців в матриці
##define X_DIM 4
##define Y_DIM 4
////Інформує компілятор про функцію, яка буде використана за текстом раніше, ніж буде описана
float biggest_in_column(float local_matrix[X_DIM][Y_DIM], int column, int *cur_y);
main(){
////Створює масив завдовжки X_DIM, в який потім запишеться адреса найбільшого числа в стовпці
int cur_y[X_DIM];
////Створює двовимірний масив, з яким проводитимуться операції matrix[][] і масив для знайдених максимумів
float matrix[X_DIM][Y_DIM], found_biggest[X_DIM];
////Лічильники
int i, t = 0;
////Змінна для суми
float summ = 0.0f;
////Виводить запит на введення даних, натякаючи на розміри матриці в пристрій стандартного виводу
printf("Enter matrix at %d on %d dimensions\n", X_DIM, Y_DIM);
////Поки i менше Y_DIM перемикаються рядки
for(i=0; i<Y_DIM; i++){
////Поки t менше X_DIM перемикаються стовпці
for(t=0; t<X_DIM; t++){
////Друкує запит на введення даних за поточною адресою в матриці в пристрій стандартного виводу
printf("Number at [%d]x[%d]="t, i);
////Прочитує введення за поточною адресою в матриці.
scanf("%f", &matrix[t][i]);
}
}
////Поки i менше X_DIM (кількості стовпців) - перемикає стовпці від 0 до X_DIM
for (i = 0; i<X_DIM; i++){
////Призначає масиву для знайдених максимумів за адресою лічильника стовпців знайдений максимум в цьому стовпці
found_biggest[i]=biggest_in_column(matrix, i, cur_y);
////Друкує знайдений максимум в стовпці в пристрій стандартного виводу, вказуючи номер стовпця, само число і де в стовпці воно було знайдене
printf("Biggest in column %d is %0.2f at %d\n", i, found_biggest[i], cur_y[i]);
////Підсумовує поточний максимум з попереднім значенням (чи нулем, якщо це перший)
summ = summ + found_biggest[i];
}
////Під кінець програми виводить суму максимумів
printf("Summ is %0.2f", summ);
return 0;
}
////Сама функція пошуку максимуму в стовпці. Їй передається матриця, яка локально буде названа local_matrix
////а так само номер поточного стовпця і _покажчик_ на масив з адресами максимумів.
////float biggest_in_column(float local_matrix[X_DIM][Y_DIM], int column, int cur_y[Y_DIM])
float biggest_in_column(float local_matrix[X_DIM][Y_DIM], int column, int *cur_y){
////Лічильник
int i = 0;
////Задає поточний максимум як нуль, що б не було помилок
float current_biggest = 0.0f;
////Поки лічильник менше висоти стовпця
for (i=0; i<Y_DIM; i++){
////Порівнює чи більше поточне значення в цьому стовпці і в цьому рядку того, що зараз вважається максимумом і якщо так
if(current_biggest<local_matrix[column][i]){
////призначає максимуму поточне значення в цьому стовпці і в цьому рядку,
current_biggest=local_matrix[column][i];
////а так само записує в якому місці знаходиться це значення у цього стовпця
cur_y[column]=i;
}
}
////Повертає максимум в стовпці
return current_biggest;