Реализация алгоритмов линейной конструкции на С++

Ввод-вывод данных с использованием библиотеки потокового ввода вывода. Директивы препроцессора. Включение файлов в компилируемый файл, определение символических констант и макросов, компиляция кода программы и условное выполнение директив препроцессора.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 23.11.2018
Размер файла 86,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ЛАБОРАТОРНАЯ РАБОТА

Тема: Реализация алгоритмов линейной конструкции на С++

ОТЧЕТ ДОЛЖЕН СОДЕРЖАТЬ

1. Тему, цель работы.

2. Условие задач, исходные данные, результат, формулы расчета, алгоритм решения, листинги программ, фотографии экрана выполнения программ с заданными исходными данными.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1. Ввод-вывод данных с использованием библиотеки потокового ввода вывода

1.1. Ввод и вывод в стиле Си:

Для функций ввода-вывода используется библиотека stdio.h

ЗАМЕЧАНИЕ: если в проект включен файл stdafx.h, то библиотеку подключать не надо.

Также можно подключить библиотеку stdlib.h для использования локализации в стиле С и т.д.

Ввод

scanf(“вводимый параметр”,адрес переменной);//или scanf_s

Таблица 1

Формат

Тип вводимой / выводимой информации (параметра)

%d

десятичное целое число

%c

один символ

%s

строка символов

%e

число с плавающей точкой, экспоненциальная запись

%f

число с плавающей точкой, десятичная запись

%g

число с плавающей точкой в формате %e или %f

%u

десятичное целое число без знака

%o

восьмеричное целое число без знака

%x

шестнадцатеричное целое число без знака

%p

указатель в формате xxxx: yyyy, где xxxx - сегмент, yyyy - смещение, а x и y шестнадцатеричные цифры

Пример: scanf(“%f”, &a); - записать числовое значение по адресу переменной а (прим. предварительно в программе переменная д. б. описана: к примеру так float a;)

Если ввод нескольких переменных: scanf(“%f%f%f”,&a&b&c);

Функция scanf () должна содержать строку форматирования, которая определяет, в каком порядке будут вводиться внешние данные и как они будут интерпретироваться программой. Заключенный в кавычки параметр %f указывает, что вводимые данные будут приведены к типу float.

Обратите внимание, что в рассмотренном выше примере переменной a в функции scanf () предшествует символ амперсанда (&). Это оператор взятия адреса. Всюду, где имени переменной предшествует этот оператор, компилятор будет использовать вместо значения переменной ее адрес. Особенность функции scanf () заключается в том, что она ожидает именно адрес переменной, которой будет присвоено новое значение.

Вывод

printf(“выводимый параметр”, имена выводимых переменных);

Пример:

Допустим, мы знаем радиус круга, выведем для него и его диаметр

int radius=10;

printf(“для круга с радиусом %d его диаметр равен %d\n”, radius, radius*2);

Принцип вывода заключается в использовании строк форматирования, которые применяются всегда, когда функция printf () выводит не только литералы (наборы символов, заключенные в двойные кавычки), но и значения переменных. В строках форматирования определяется тип данных выводимых переменных, а также способ их представления на экране.

ЗАМЕЧАНИЕ:

Для локализации в стиле С: подключить библиотеку stdlib.h и записать оператор:

system("chcp 1251"); // локализация

Обязательно задать в свойствах окна запуска приложения на выполнения шрифт Lusida Console.

Для запуска проекта на выполнение с отладкой можно прописать:

getchar(); // задержка результата выполнения на экране

getchar();

1.2. Ввод и вывод в стиле С++

Используется библиотека iostream.h

Ввод

cin>>имя переменной;

Пример:

char z;

cin>>z;

Вывод

cout <<выводимые значения;

Пример:

float s=2.5;

cout << ”Расстояние между улицами ” << s <<” километров”;

2. Управляющие последовательности (эскейп-последовательности) потока ввода-вывода

В языке С/С++ широко используются так называемые, управляющие последовательности, т. е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр (табл. 2).

Таблица 2

Управляющая последовательность

Наименование

Шестнадцатиричная замена

\a

Звонок

007

\b

Возврат на шаг

008

\t

Горизонтальная табуляция

009

\n

Переход на новую строку

00A

\v

Вертикальная табуляция

00B

\r

Возврат каретки

00C

\f

Перевод формата

00D

\"

Кавычки

022

\'

Апостроф

027

\0

Ноль-символ

000

\\

Обратная дробная черта

05C

\ddd

Символ набора кодов ПЭВМ в восьмеричном представлении

\xddd

Символ набора кодов ПЭВМ в шестнадцатеричном представлении

Последовательности вида \ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПК как последовательность восьмеричных или шестнадцатеричных цифр соответственно.

3. Манипуляторы и форматирование ввода-вывода

Манипуляторы - это объекты особых типов, которые управляют тем, как обрабатывают последующие аргументы. Основные манипуляторы представлены в таблице 3:

Таблица 3. Манипуляторы потокового ввода-вывода

Манипулятор

Назначение

endl

при выводе перейти на новую строку;

ends

вывести нулевой байт (признак конца строки);

flush

вывести и очистить все промежуточные буферы;

dec

выводить числа в десятичной системе (по умолчанию);

oct

выводить числа в восьмеричной системе;

hex

выводить числа в шестнадцатеричной системе счисления;

setw (int n)

установить ширину поля вывода в n символов (n - целое число);

setfll(int n)

установить символ-заполнитель, которым выводимое значение будет дополняться до необходимой ширины;

setprecision(int n)

установить количество цифр после запятой при выводе вещественных чисел;

setbase(int n)

установить систему счисления для вывода чисел; n может принимать значения 0, 2, 8, 10, 16, причем 0 означает систему счисления по умолчанию, т.е. 10.

Использовать манипуляторы просто - их надо вывести в выходной поток. Например, выведем одно и то же число в разных системах счисления:

int x=67;

cout <<"Десятичный вид: " << dec << x << endl

<<"Восьмиричный вид: " << oct << x << endl

<<"Шестнадцатиричный вид: " << hex << x << endl;

Аналогично используются манипуляторы с параметрами. Вывод числа с разным количеством цифр после запятой:

double x;

// Вывести число в поле общей шириной 6 символов:

// 3 цифры до запятой, десятичная точка и

// 2 цифры после запятой

cout << setw(6) << setprecision(2) << x << endl;

ЗАМЕЧАНИЕ: необходимо подключить библиотеку iomanip

Те же манипуляторы (за исключением endl и ends) могут использоваться и при вводе. В этом случае они описывают представление вводимых чисел.

4. Директивы препроцессора

Препроцессор выполняет обработку программы до ее компиляции. Его функции: включение файлов в компилируемый файл, определение символических констант и макросов, условная компиляция кода программы и условное выполнение директив препроцессора.

#include - создает копию указанного файла, которая включается в программу вместо директивы. Используется для подключения стандартных библиотек или включения в проект нескольких файлов программ, компилируемых вместе.

#define создает символические константы, представленные символами и макросы - операции, определенные как символы

Формат:

#define идентификатор заменяющий текст

Макросы можно определять с аргументами, например:

#define circle(x) (М_PI *(x)*(x))

Символические константы можно отменить, используя директиву #undef.

#define имеет 3 назначения:

1. Указывает, что такое имя есть. Например:

#define FOR_DEBUG_ONLY

и далее в тексте

#if defined( FOR_DEBUG_ONLY )

printf( "x = %d\n", x );

#endif

теперь если закомментировать строку с определением FOR_DEBUG_ONLY, то вышеприведённый код работать не будет (даже не будет компилироваться)

2. Обычная замена одного символа - другим (примерно также, как происходит замена в редакторе Edit/Replace ). Например:

#define M_PI 3.1415926537

for ( int i = 0; i < N; i++ )

y[ i ] = cos( i / (double)N * 2 * M_PI );

У данного применения есть один момент: препроцессор заменяет одно другим, поэтому, если описать такое

#define FOUR 2 + 2

int y = FOUR * 3;

то получится: y = 2 + 2 * 3; т.е. 8, а не 12. Чтобы избежать этого выражения в define берут в скобки

#define FOUR ( 2 + 2 )

3. Макрос. Это почти то же самое, что п. 2, только с параметрами. Например:

#define SQR( x ) ( x * x )

int y = SQR( 5 ); // 25

или так

#define MY_ALLOC( n ) malloc( n )

int * p = MY_ALLOC( 1024 );

Математические функции в С++

В С++ определены в заголовочном файле <cmath> (или math.h) функции выполняющие некоторые часто используемые математические задачи. Например, нахождение корня, возведение в степень, sin(), cos() и многие другие. В таблице 1 показаны основные математические функций, прототипы которых содержатся в заголовочном файле <cmath>.

Таблица 4 -- Математические функции в С++

Функция

Описание

Пример

abs( a )

модуль или абсолютное значение от а

abs(-3.0)= 3.0abs(5.0)= 5.0

sqrt(a)

корень квадратный из а, причём а не отрицательно

sqrt(9.0)=3.0

pow(a, b)

возведение а в степень b

pow(2,3)=8

ceil( a )

округление а до наименьшего целого, но не меньше чем а

ceil(2.3)=3.0ceil(-2.3)=-2.0

floor(a)

округление а до наибольшего целого, но не больше чем а

floor(12.4)=12floor(-2.9)=-3

fmod(a, b)

вычисление остатка от a/b

fmod(4.4, 7.5) = 4.4fmod( 7.5, 4.4) = 3.1

exp(a)

вычисление экспоненты еа

exp(0)=1

sin(a)

a задаётся в радианах

cos(a)

a задаётся в радианах

log(a)

натуральный логарифм a (основанием является экспонента)

log(1.0)=0.0

log10(a)

десятичный логарифм а

Log10(10)=1

asin(a)

арксинус a, где -1.0 < а < 1.0

asin(1)=1.5708

Необходимо запомнить то, что операнды данных функций всегда должны быть вещественными, то есть a и b числа с плавающей точкой. Это связано с тем, что существует несколько экземпляров перегруженных функций, соответствующих списку аргументов. Тему перегруженные функции рассмотрим немного позже, а пока надо запомнить, что a и b числа с плавающей точкой. Разработаем программу, которая будет использовать математические функции.

5. Пример программы

Работа в стиле С++

Напишем двумя способами программу, которая запрашивает у пользователя радиус круга и выводит расчетное значение площади. В первом способе будем использовать стандартные способы ввода-вывода С++, а во втором - переопределим функции ввода-вывода с помощью макросов.

1 способ:

#include <iostream> //библиотека для работы с

// функциями ввода-вывода

using namespace std; //включает в программу определения

const float Pi = 3.14;

int r;//описываем целочисленную переменную

// для хранения радиуса

//double s; объявить в случае, если результат будет

//помещаться в переменную

void main()//заголовок главной функции

{//начало тела главной функции

setlocale(0,”rus”); // локализация

cout<<"Введите радиус\n";//запрашиваем у

// пользователя радиус

cin>>r;//запоминаем его в переменную r

//выводим на экран расчетное значение площади

cout<<"Площадь равна " << Pi*r*r << `\n';

// или s = Pi*r*r; //запоминаем результат в переменную s

// cout<<" Площадь равна " << s << `\n';

}//конец тела главной функции

2 способ

#include <iostream> //библиотека для работы с

// функциями ввода-вывода

using namespace std; //включает в программу определения

#define vyvod(x)cout<<(x)// макрос с параметрами для

// вывода текста на экран

#definevvod(x)cin>>(x)// аналогично для ввода

#define PI3.14//константа для хранения числа Пи

int r;

void main()//заголовок функции

{

setlocale(0,”rus”); // локализация

vyvod("Введите радиус\n");//с помощью макроса выводим

// запрос

vvod(r);//запоминаем в переменную r

vyvod("Площадь равна");

vyvod(PI*r*r);//выводим на экран площадь

vyvod(endl);

}

препроцессор файл макрос программа

Пример алгоритма

ПОРЯДОК ВЫПОЛНЕНИЯ

Задание 1

1. Создать в папке группы (или на личном диске) папку для сохранения программ на С++ по данной дисциплине, если такой папки нет.

2. Создать в Visual Studio групповой проект Lab2 и сохранить его в папке Lab2, создать в групповом проекте (решении) консольный проект Win32 под именем Lab2_1.

3. Согласно варианта индивидуальных заданий написать программу для решения Задачи 1, способ 1. Текст должен содержать комментарии.

4. Протестировать программу, запустив на выполнение с исходными данными.

ЗАМЕЧАНИЕ: Сохранить в буфере обмена окно выполнения для отчета по работе (Alt+PrintScreen) и вставить в файл отчета.

5. Сохранить изменения в проекте.

Задание 2

6. Создать в групповом решении Lab2 еще один проект Lab2_2.

7. Согласно варианта индивидуальных заданий написать программу для решения Задачи 1, способ 2. Текст должен содержать комментарии.

8. Протестировать программу, запустив на выполнение с исходными данными, если необходимо, исправить ошибки в программе.

ЗАМЕЧАНИЕ: сохранить в буфере обмена окно выполнения для отчета по работе (Alt+PrintScreen) и вставить в файл отчета.

9. Сохранить изменения в проекте.

Задание 3

10. Создать в данном групповом решении Lab2 еще один проект Lab2_3.

11. Согласно варианта индивидуальных заданий написать программу для решения Задачи 2. Текст должен содержать комментарии.

12. Протестировать созданную программу, запустив на выполнение с исходными данными, если необходимо, исправить ошибки в программе.

ЗАМЕЧАНИЕ: сохранить в буфере обмена окно выполнения для отчета по работе (Alt+PrintScreen) и вставить в файл отчета.

13. Сохранить изменения в проекте, закрыть решение.

Таблица 5. Варианты индивидуальных заданий

Задача 1

Задача2

Двумя способами написать программу для вычисления количества дней до конца месяца. Текущий день месяца запрашивается у пользователя. Во втором способе запрос текущего числа описать через макрос. Количество дней месяца описать константой.

Любым способом реализовать программу вашего варианта в стиле С.

Двумя способами написать программу, которая вычисляет размер свободной памяти на диске. Размер файлов, записанных на нем, запрашиваются у пользователя. Во втором способе объем диска описать через константу, вывод свободного места осуществить с помощью макроса.

Двумя способами написать программу для вычисления координат вектора. Координаты его концов запрашиваются у пользователя. Во втором способе вычисление координат вектора описать через макрос, ортогональные координаты описать константой, равной 1

Двумя способами написать программу для вычисления длины вектора. Его координаты запрашиваются у пользователя. Во втором способе вывод результата описать через макрос.

Двумя способами написать программу для определения гипотенузы прямоугольного треугольника. Катеты запрашиваются у пользователя. Во втором способе катеты задавать константой, вывод результата описать через макрос

Двумя способами написать программу для вычисления потенциальной энергии тела массой 1 килограмм. Высоту, на которую поднято тело, запросить у пользователя. Во втором способе массу задать через константу, вычисление результата описать через макрос

Двумя способами написать программу для вычисления периметра параллелограмма. Стороны запрашиваются у пользователя. Во втором способе расчет и ввод данных представить в виде макроса.

Двумя способами написать программу для определения площади кольца. Внешний и внутренний радиусы запрашиваются у пользователя. Во втором способе ввод и расчет площади представить в виде макроса

Двумя способами написать программу для вычисления кинетической энергии тела массой 1 килограмм. Скорость тела запрашивается у пользователя. Во втором способе ввод и вывод данных описать через макрос

Двумя способами написать программу для подсчета дней, оставшихся до нового года. Текущий месяц и число запрашиваются у пользователя. Количество дней в каждом месяце считать 30. Во втором способе количество дней в году и в месяце описать через константу, расчет представить через макрос

Двумя способами написать программу, которая вычисляет объем куба. Ребро куба запрашивается у пользователя. Во втором способе ввод и вывод данных описать через макрос

Двумя способами написать программу для вычисления х: а*(2*х-5*с)=3. Числа а и с запрашиваются у пользователя. Расчет х представить в виде макроса

Двумя способами написать программу для определения площади прямоугольника. Стороны прямоугольника запрашиваются у пользователя. Во втором способе ввод и вывод данных описать через макрос

Двумя способами написать программу для вычисления катета прямоугольного треугольника. Второй катет и гипотенуза запрашиваются у пользователя. Во втором способе запрос на ввод описать макросом, гипотенузу описать константой.

Двумя способами написать программу для нахождения х:а\х=5\с. Числа а и запрашиваются у пользователя. Во втором способе вычисления проводить с помощью макроса

Двумя способами написать программу для количества дней до выходных. Текущий день недели задается пользователем. Во втором способе количество дней недели задать через константу, вывод данных описать через макрос

Двумя способами написать программу для вычисления плотности вещества. Масса тела и его объем запрашиваются у пользователя. Во втором способе ввод данных описать через макрос, объем тела считать константой и равным 1

Двумя способами написать программу для определения процентной успеваемости группы количеством 20 человек. Число студентов, сдавших сессию без двоек, запрашивается у пользователя. Во втором способе вычисления представить в виде макроса, количество человек в группе описать константой.

Двумя способами написать программу для определения размера 5-процентной скидки в супермаркете. Сумма товара запрашивается у пользователя. Во втором способе вывод данных описать через макрос, размер скидки представить в виде константы

Двумя способами написать программу для количества часов, отработанных служащим в течение рабочей недели в 8часовой рабочий день. Количество часов-отгулов запрашиваются у пользователя. Во втором способе расчет представить в виде макроса, количество дней в рабочей неделе и часов в дне описать константой

Двумя способами написать программу для вычисления среднего балла 3 судей соревнования. Оценка каждого судьи запрашивается у пользователя. Во втором способе ввод и вывод данных описать через макрос

Двумя способами написать программу для вычисления веса тела. Масса запрашивается у пользователя. Во втором способе вывод данных описать через макрос, коэффициент g задать константой

Двумя способами написать программу для вычисления синуса числа. (Функция sin(), библиотека math.h). Во втором способе функцию синуса представить в виде макроса.

Размещено на Allbest.ru

...

Подобные документы

  • Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.

    реферат [14,5 K], добавлен 06.12.2011

  • Файловый ввод/вывод с использованием разных классов. Вызовы операционной системы. Использование вызовов операционной системы. Основные способы открытия файла. Замена файла, связанного со стандартными устройствами ввода/вывода. Операции чтения файла.

    курсовая работа [1,1 M], добавлен 09.12.2016

  • Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Организация и назначение консольного ввода-вывода, необходимые для этого функции и их применение. Библиотеки, организующие функционирование потокового ввода-вывода, выполняемые операции. Арифметические операции и математические функции в среде С++.

    лабораторная работа [33,8 K], добавлен 15.07.2009

  • Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.

    лабораторная работа [40,4 K], добавлен 06.07.2009

  • Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц.

    курсовая работа [5,8 M], добавлен 24.05.2014

  • Основы проверки и расчета входных данных и вывода выходных данных программы, их блок-схемы. Реализация функции считывания числовых данных из файла, управление (создание, уничтожение и редактирование) визуальными компонентами во время выполнения программы.

    контрольная работа [1,3 M], добавлен 12.06.2009

  • Разработка программы, проверяющей уровень знаний по разделу стереометрии и позволяющей выбор один из нескольких вариантов и ввод ответа. Характеристика библиотеки MFC, тела, классов и файлов приложения, цикла сообщений и текстовых запусков программы.

    курсовая работа [1,5 M], добавлен 28.06.2011

  • В стандарте языка Си отсутствуют средства ввода-вывода. Операции реализуются с помощью функций, находящихся в библиотеке языка Си, поставляемой в составе системы программирования Си. Потоковый, форматный ввод-вывод. Форматный ввод из входного потока.

    реферат [98,9 K], добавлен 24.06.2008

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.

    курсовая работа [36,8 K], добавлен 18.09.2010

  • Разработка ввода с клавиатуры и вывода на экран монитора данных с помощью стандартных функций printf и scanf. Ввод количества материальных точек. Работа с линейным списком. Хранение содержимого списка в блоке ячеек памяти с последовательными адресами.

    курсовая работа [176,8 K], добавлен 18.01.2016

  • Программа как совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств. Этапы создания программ: каскад, инкремент, эволюция. Порядок написания исходного кода и его компиляция. Сборка статической библиотеки.

    презентация [119,4 K], добавлен 05.01.2014

  • Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.

    курсовая работа [27,4 K], добавлен 07.08.2007

  • Исследование проблемы сравнения звуковых файлов и определение степени их схожести. Сравнение файлов с использованием метода нечеткого поиска, основанного на метрике (расстоянии) Левенштейна. Сравнение MIDI-файлов и реализация алгоритмов считывания.

    курсовая работа [2,0 M], добавлен 14.07.2012

  • Основная цель этого блока, ввод данных для работы программы. Дополнительная цель, вывод информации. Два условия проверки вводимых данных. Первое условие проверки на количество точек. Второе, на правильность ввода координат точек. Созданные подпрограммы.

    лабораторная работа [154,3 K], добавлен 13.02.2009

  • Функциональные характеристики программы форматирования текстовых файлов, требования к ее интерфейсу и данным. Схема взаимодействия компонентов системы, выбор среды исполнения и программная реализация алгоритмов. Тестирование и оценка качества программы.

    курсовая работа [61,1 K], добавлен 25.07.2012

  • Создание и компиляция программ на ассемблере. Структура программ, использование специальных директив резервирования и инициализации данных. Организация ввода-вывода на ассемблере и организация вычислений. Команды передачи управления и обработки строк.

    методичка [104,8 K], добавлен 02.12.2009

  • Основные этапы решения задач на ЭВМ. Элементы управления и пользовательская форма VBA. Ввод и вывод информации. Открытие и закрытие файла. Операторы цикла и подпрограммы. Реализация разветвляющихся алгоритмов в VBA. Типы данных, переменные и константы.

    учебное пособие [1,4 M], добавлен 21.05.2009

  • Программные модули основной BIOS (базовой системы ввода-вывода). Программа тестирования при включении питания компьютера. Реализация системы BIOS в виде одной микросхемы, установленной на материнской плате компьютера. Типы, версии и функции системы BIOS.

    реферат [190,6 K], добавлен 19.08.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.