Конвертор текста из кодировки MS Windows в кодировку MS- DOS



МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ТАГАНРОГСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ТЕОРЕТИЧЕСКИХ ОСНОВ РАДИОТЕХНИКИ

 

 

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

К ЛАБОРАТОРНЫМ РАБОТАМ

ПО КУРСУ

ИНФОРМАТИКИ

(Часть 1)

 

Для студентов радиотехнических специальностей

Всех форм обучения

 

РТФ                                                        ТАГАНРОГ 2017


 

УДК 681.3 ´5(07.07)

 

Составитель: М.Н. Максимов

 

Методические указания к лабораторным работам по курсу

“Информатика” (Часть 1). Таганрог: Изд-во ТРТУ,

2000. 30 с.

 

 Приведены методические указания к лабораторным работам

 1-11 по курсу “Информатика”.

Методические указания предназначены для студентов радиотехнических специальностей всех форм обучения.

 

Библиогр.: 8 назв.

 

Рецензент А.Л. Черниховский, канд. техн. наук, доцент кафедры ТОР ТРТУ.

 

 

Максимов Михаил Николаевич


Введение

Настоящее руководство предназначено для студентов радиотехнических специальностей безотрывных форм обучения. Руководство содержит описание лабораторных работ 1-11.

Основные теоретические положения, необходимые для выполнения лабораторных работ, приведены в работах 1-11.

Общие требования к содержанию отчетов по лабораторным работам

1. Титульный лист отчета должен содержать название, цель лабораторной работы, группу и фамилию студента, выполнившую её, и фамилию преподавателя, проверившего отчет.

2. Выполненное домашнее задание.

3. Содержание этого пункта отчета определяется требованиями, приведенными в пункте "Содержание отчета" выполняемой лабораторной работы.

4. Ответы на контрольные вопросы.

 

Лабораторная работа №1

Операции над основными типами данных языка С++

1. Цель работы: Изучение операций над основными типами данных в языке С++.

 

Домашнее задание

2.1 Привести в отчете диапазон значений целых и вещественных констант и соответствующих им типов данных.

2.2 Нарисовать в отчете схему подготовки исполняемой программы.

2.3 Привести в отчете таблицу приоритетов операций.

 

Лабораторное задание.

3.1 Набрать программу №1, приведенную ниже.

//Программа №1

#include "stdafx.h"

#include <iostream>

using namespace std;

void _tmain(int argc, _TCHAR* argv[])

{

cout<<"\nsizeof(int) = " << sizeof(int);

cout<<"\nsizeof(short) = " << sizeof(short);

cout<<"\nsizeof(long) = " << sizeof(long);

cout<<"\nsizeof(float) = " << sizeof(float);

cout<<"\nsizeof(double) = " << sizeof(double);

cout<<"\nsizeof(char) = " << sizeof(char);

cout<<"\nsizeof('a') = " << sizeof('a');

cout<<"\nsizeof(1) = " << sizeof(1);

cout<<"\nsizeof(1L) = " << sizeof(1L);

cout<<"\nsizeof(1U) = " << sizeof(1U);

cout<<"\nsizeof(1.) = " << sizeof(1.);

cout<<"\nsizeof(1.F) = " << sizeof(1.F);

cout<<"\nsizeof(1.L) = " << sizeof(1.L);

cout<< "\n (4<<2) = " <<(4<<2);

cout<<"\n (5>>1) = " << (5>>1);

cout<<"\n (6&5) = " << (6&5);

cout<<"\n (6|5) = " << (6|5);

cout<<"\n (3<5) = " << (3<5);

cout<<"\n (3>5) = " << (3>5);

cout<<"\n (3==5) = " << (3==5);

cout<<"\n (3!=5) = " << (3!=5);

cout<<"\n Press key to continue";

getchar();

 

 

cout<<"\n (3!=5 || 3==5) = " << (3!=5 || 3==5);

cout<<"\n (3+4>5 && 3+5 > 4 && 4+5>3) =" << (3+4>5 && 3+5 > 4 && 4+5>3);

 

int k;

cout<<"\n (k=35/4) = " << (k=135/4);              // Тест

cout<<"\n (k/=1+2+2) = " << (k/=1+2+2);

cout<<"\n (k*=5-2) = " << (k*=5-2);

cout<<"\n (k%=3+2) = " << (k%=3+2);

cout<<"\n (k+=21/3) = " << (k+=21/3);

cout<<"\n (k-=6-6/2) = " << (k-=6-6/2);

cout<<"\n (k<<=2) = " << (k<<=2);

cout<<"\n (k>>=6-5) = " << (k>>=6-5);

cout<<"\n (k&=9+4) = " << (k&=9+4);

cout<<"\n (k|=8-2) = " << (k|=8-2);

getchar();

}

3.2 Отладить программу №1.

3.3 Проанализировать результаты работы программы.

3.4 Ответить на контрольные вопросы.

3.5 Написать отчет.

 

Содержание отчета.

4.1 Титульный лист. Домашнее задание

4.2 Текст программы №1 и результаты её выполнения.

4.3 Краткое пояснение против результатов выполнения каждой операции.

 

Контрольные вопросы.

5.1 Какие типы данных вы знаете, сколько байт занимает каждый тип данных, в каких диапазонах могут изменяются значения этих типов данных?

5.2 Поясните, что такое вещественная, целая, символьная и строковая константа. Какое максимальное целая константа может использоваться в программе на языке С++. Приведите примеры констант различного типа.

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

5.4 Расскажите об этапы подготовки исполняемой программы.

5.5 Идентификатор, правило записи идентификаторов в языке С++?

5.6 Операции, типы операций. Привести примеры операций определенных над множеством только целых типов данных.

5.7 Чем отличаются друг от друга операции & от &&, а также | от ||.

5.8 Раскройте смысл операции %, *=, +=, /=.

5.9 В этом выражении 8 операций (3+4>5 && 3+5 > 4 && 4+5>3) . Помете цифрами, в какой последовательности будут выполнятся эти 8 операций. Найдите вручную чему равно значение выражения (3+4>(5 && 3)+5 > 4 && 4+5>3). Объясните почему.

5.10 Что такое приоритеты и ассоциативность операций.

5.11 В строке программы, напротив которой написан комментарий //Тест, вместо константы 35 подставьте константу заданную вам преподавателем, и рассчитайте в ручную значение всех выражений определенных ниже.

 

Лабораторная работа №2

Явное и неявное преобразование типов в языке С++

Определение, описание и вызов функций в языке С++.

 

1. Цель работы: Изучение операции преобразования типа в языке С++, а также определения, описания и вызова функции пользователем.

 

Домашнее задание

2.1 Сформулировать и записать правила преобразования типов при выполнении арифметических операций и операции присваивания. Привести примеры.

2.2 Сформулировать и записать правило передачи данных в функцию по значению через аппарат фактических и формальных параметров. Привести пример.

 

Лабораторное задание.

3.1 Набрать программы №1 и №2.

// Программа №1 Преобразование типов.

#include "stdafx.h"

#include <iostream>

#include <math.h>

using namespace std;

 

void main (){

long k = 123456789;

float g = (float)k;

cout<<"\n\n k = "<<k;

cout<<"\n g= "<<g;

k = (long)g;  

cout<<"\n k = "<<k;          //Объяснить результат

g = (float) 2.222222e+2;

int m = int(g);

cout<<"\n\n g = " <<g;

cout<<"\n m = "<<m;

g = (float)m;

cout<<"\n g = "<<g;

int a=1, b = 2;

double c = 1;

c = a/b*c+ a*c/b;

cout<<"\n c = "<<c;                //Объяснить результат

cout<<"\n 1/2*exp(1) = "<<1/2*exp(1.); //Объяснить результат

getchar();

}

 

// Программа №2 Функции, определенные пользователем

#include "stdafx.h"

#include <iostream>

using namespace std;

 

extern double k;                              //Описание переменной k

void main (){

double a = 2, b = 3;//Описание, определение и инициализация переменных a и b.

k = 1.3*k/((a+b)*(a-b));

cout<< "\n k = "<<k;

getchar();

}

double k=1; //Определение переменной k

3.2 Отладить программы №1 и №2.

3.3 Модифицировать программу №2 определив функции, реализующие арифметические операции сложения (+), вычитания (-), умножения (*), деления (/). Имена функциям придумать самостоятельно. Вставить в строку программы k = 1.3*k/((a+b)*(a-b)); вместо операции и её операндов соответствующий вызов функции.       

//Пример определения и вызова функции, реализующей операцию сложения +:

#include "stdafx.h"

#include <iostream>

using namespace std;

 

double sum(double a, double b);         //Описание функции sum( )

extern double k;

void main (){

k = 1;

double a = 2, b = 3;

k = 1.3*k/(sum(a,b)*(a-b)); //Строка программы содержит вызов функции sum( )

cout<< "\n k = "<<k;

getchar();

}

double sum(double a, double b){          //Определение функции sum( )

return a+b;

}                                               

double k;

3.4 Проанализировать результаты работы программ.

3.5 Написать программу №3, вычисляющую значение функции при t = 0, 0.1 и 0.4.

3.6 Ответить на контрольные вопросы.

3.7 Написать отчет.

 

Содержание отчета

4.1 Титульный лист. Домашнее задание.

4.2 Текст и результаты работы программы №1.

4.3 Текст модифицированной программы №2, с функциями, реализующими операции - , *, /.

4.4 Текст программы №3.

 

Контрольные вопросы

5.1 Что такое описание, определение и вызов функции (пояснить на примере функций определенных вами в лабораторном задании)? Для чего необходимо описание функции, можно ли его опустить?

5.2 Что такое формальные и фактические параметры? Поясните способ передачи данных в функцию через параметры и через глобальную переменную?

5.3 Поясните, с помощью какого оператора функция возвращает значение в точку вызова. Какой тип этого значения?

5.4 Что такое описание и определение переменной? Приведите примеры описания и определения переменных? В чем их принципиальная разница?

5.5 Что такое инициализация переменной? Чем инициализация переменной отличается от присваивания переменной значения.

5.6 Свойства переменных различного типа: объем занимаемый в памяти, диапазон значений, количество значащих цифр, множество операций, определенных над ними, область видимости и область существования.

5.7 Какие переменные называются локальными, глобальными, статическими? Приведите примеры. Может ли локальная переменная быть статической?

5.8 Приведите примеры явного и неявного преобразования типов при выполнении арифметических операций и операции присваивания. Объясните результаты работы программы №1.

5.9 Как использовать библиотечные функции? Что такое заголовочный файл, и что он содержит. Где содержится определение и описание библиотечных функций, использованных в лабораторной работе?

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

 

 

Лабораторная работа №3

Операторы языка С++. Библиотечные функций языка С++

1. Цель работы: Получение навыков работы с операторами языка С++. Изучение одного из алгоритмов сортировки данных – пузырьковая сортировка.

 

Домашнее задание

2.1 Изучить операторы языка С++ и их изображение на блок схеме [2].

2.2 Нарисовать блок схему алгоритма программ №1

2.3 Нарисуйте блок схему алгоритма, реализующего пузырьковую сортировку.

 

Лабораторное задание

3.1 Набрать и отладить программу №1, которая вычисляет площадь фигуры, изображённой на рис. 1

Рис. 1 Исследуемая фигура

//Программа №1

#include "stdafx.h"

#include <iostream>

using namespace std;

 

void main (){

int N;

cout<<"\n Input N = ";

cin>>N;

double a = 1, b = 6 ;

double h = (b-a)/N, t = a, S1 = 0,S2 = 0, y=0;

//Находим площадь фигуры методом прямоугольников

for(int i = 0; i < N; i++, t+=h){

       if(t>=a && t<=3) {y = 1.5*t-1.5; S1 += h*y; }

       if(t>=3 && t<=b) y = -1*t+6, S1 += h*y;

}

double y_last = 0;

t = a, y=0;

// Находим площадь фигуры методом трапеций

for(int i = 0; i < N+1; i++, t+=h){

       if(t>=a && t<=3) y = 1.5*t-1.5, S2 += h*(y+y_last)/2;

       if(t>3 && t<=b) y = -1*t+6, S2 += h*(y+y_last)/2;

       y_last = y;

}

cout<<"\n S1= "<<S1;

cout<<"\n S2= "<<S2;

getchar();

getchar();

}

 

3.2 Рассчитать площадь нарисованной преподавателем для Вас фигуры методом прямоугольников и трапеций.

3.3 Набрать и отладить программу №2

 

//Программа №2 (пузырьковая сортировка)

#include "stdafx.h"

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

using namespace std;

 

const int size = 100;

float fData[size];

void BubbleSort(float fArrayToSort[],int iNumberOfElements);

void main()

{

srand(1); // Инициализация генератора случайных чисел

int index;

// Заполняем исходный массив набором случайных чисел

for (index = 0; index < size; ++index)

       fData[index] = rand() % 100;

BubbleSort(fData, size);

for (index = 0; index < size; index++)

       cout<<"\n fData["<<index<< "] = "<<fData[index];

printf("\n");

getchar();

}

//

//-------------------------------------------------

void BubbleSort(float fArrayToSort[],float iNumberOfElements)//синтаксическая ошибка

{

int i,j;

float fTemp;

for ( i = 0; 1 < iNumberOfElements - 1; i++) // Логическая ошибка

for (j = iNumberOfElements - 1; j > i; j--){

       if (fArrayToSort[j] < fArrayToSort[j-1]){

             // Меняем местами fArrayToSort[j] и fArrayToSort[j-1];

                   fTemp = fArrayToSort[j];

                   fArrayToSort[j] = fArrayToSort[j-1];

                   fArrayToSort[j-1] = fTemp;

             }

       }

}

 

 

3.4 Используя Help, выписать описание всех стандартных функций, используемых в программах №1 и №2.

3.5 Найти и исправить в программе две ошибки. Модифицируйте программу №2 так, чтобы она находила и выводила на экран минимальное, максимальное и среднеарифметическое значение массива сортируемых чисел.

3.6 Написать отчет.

 

Содержание отчета

4.1 Титульный лист.  Домашнее задание.

4.2 Текст модифицированной программы №1 и №2.

4.3 Описания всех стандартных функций, которые были использованы в программе №1, а также краткое пояснение их назначения.

 

Контрольные вопросы

5.1 Напишите программу, вычисляющую такое значение n, при котором значение предела   вычислялось бы с точностью до 3 знака после запятой.

5.2 Напишите программу сортирующую в алфавитном порядке десять произвольных букв, введенных с клавиатуры.

5.3 Напишите программу, сортирующую по возрастанию пять действительных чисел, введенных с клавиатуры.

5.4 Напишите программу, вычисляющую факториал числа.

5.5 Напишите программу вычисляющую корни квадратного уравнения a0x2+a1x+a2=0 (коэффициенты a0, a1, a2 задаются пользователем с клавиатуры).

5.6 Напишите программу вычисляющую значение функции y(x) = a0x2+a1x+a2 (коэффициенты a0, a1, a2 задаются пользователем с клавиатуры).

5.7 Напишите программу вычисляющую значение функции f(t) = 4psin(2pt)+ 4p/3sin(6pt) +4p/5sin(10pt).

5.8 Используя описание библиотечных функций, объясните какие типы параметров они принимают и какое значение возвращают.

5.9 Объясните, что такое пустой и составной операторы. Приведите примеры.

5.10Поясните как работают операторы цикла. Приведите примеры.

5.11Поясните как работают условные операторы. Приведите примеры.

5.12Какие операторы передачи управления вы знаете. Приведите примеры.

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

 

 

Лабораторная работа №4

Конвертор текста из кодировки MS Windows в кодировку MS- DOS

 

1. Цель работы: Приобретение навыка работы со статическими массивами и указателями, а также освоение стандартных функций создания, открытия, закрытия, записи и чтения из файла.

 

Домашнее задание

1. Запишите последовательность кодов, которым представлена строка "Здравствуй мир!" в MS-DOS и MS Windows кодировках.

2. Для перекодировки символа 'А' русского алфавита из кодировки MS-DOS в кодировку MS Windows необходимо выполнить следующие операторы (unsigned char p = 'A'; p= p+64;), что нужно сделать, чтобы перекодировать символ 'Ё'?

 

Лабораторное задание

3.1 Набрать программу №1 и программу №2

//Программа №1

//В свойствах проекта в опциях по С/С++->Препроцессор->Определения препроцессора; добавить _CRT_SECURE_NO_WARNINGS

#include "stdafx.h"

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <fcntl.h>

#include <sys\stat.h>

#include <io.h>

using namespace std;

int main(void){

  setlocale(LC_ALL, "rus");

  int handle;

  char msg[] = "Hello world";

  if ((handle = _open("C:\\RXX\\TEST.txt", O_CREAT | O_TEXT| O_RDWR, S_IWRITE | S_IREAD)) == -1) {

         perror("Error:");

         getchar();

         return 1;

  }

  _write(handle, msg, strlen(msg)); //msg == &msg[0]

  _close(handle);

  cout<<"\n Hello world - write to file";

  getchar();

  return 0;

}

//Программа №2

#include "stdafx.h"

#include <stdio.h>

#include <io.h>

#include <malloc.h>

#include <fcntl.h>

#include <process.h>

#include <sys\stat.h>

#include <iostream>

using namespace std;

int main(void){

 

int handle, bytes;

if ((handle =_open("C:\\RXX\\TEST.txt", O_RDWR | O_BINARY, S_IWRITE | S_IREAD)) == -1){

printf("Error Opening File\n");

  getchar();

  exit(1);

}

long longFile = _lseek(handle,0,SEEK_END);

_lseek(handle,0,SEEK_SET);

unsigned char* buf = (unsigned char*)malloc(longFile+1);

if ((bytes = _read(handle, buf, longFile)) == -1) {

printf("Read Failed.\n");

  free(buf);

  getchar();

exit(1);

}

else {

printf("Read: %d bytes read.\n", bytes);

//   buf[longFile]='\0';

cout<<buf;

}

 free(buf);

getchar();

_close(handle);

return 0;

}

3.2 Отладить программы №1и №2. (Программа №1 является примером создания нового файла Test.txt и записи в него текстовой строки "Hello world". Программа № 2 является примером чтения данных из файла Test.txt в буфер.)

3.3 Модифицировать программу №2 так, чтобы она читала данные из файла и записывала их в этот же файл в обратном порядке, т.е. если в файле содержится строка "Hello world", то после выполнения Вашей программы в этом файле должна содержатся строка "dlrow olleH"

3.4 Написать программу, которая бы перекодировала текстовый файл из кодировки MS-DOS в кодировку MS Windows. (Таблица кодов приведена в [1] на стр. 488-493).

3.5 Ответить устно на контрольные вопросы.

3.6 Написать отчет.

 

Содержание отчета

4.1 Титульный лист. Домашнее задание.

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

 

Контрольные вопросы

5.1 Как определить указатель? Какое множество операций определено над указателями? Приведите примеры операций с указателями.

5.2 Чем является переменна s, определенная как int b; int& s = b;? Какие операции определены над s.

5.3 Запишите описание функции lseek() и кратко поясните её назначение.

5.4 Для массива определенного как double Ar[3][4][5], чем является переменная Ar, Ar[2], Ar[1][3], ***Ar, *(*(*(Ar+1)+2)+1).

5.5 Поясните значение операций разыменования * и получения адреса &. Приведите примеры использования этих операций.

5.6 Напишите функцию, конвертирующую содержимое строки, состоящей из прописных букв в строчные и наоборот.

5.7 Напишите функцию, которая подсчитывает количество гласных и согласных в строке.

5.8 Напишите функцию, которая подсчитывает количество букв и цифр в строке.

5.9 Напишите функцию, которая подсчитывает число прописных и строчных букв в строке.

5.10 Напишите функцию, которая сравнивает две строки, и если они совпадают, то возвращает единицу (истину) в противном случае ноль (ложь).

5.11Напишите функцию, которая сортирует строку по алфавиту.

5.12Напишите функцию, которая шифрует текстовый файл путем замены значения символа с помощью выражения sym = F(sym), где F( ) - функция (например, значение символа С заменяется на С=С^0xFF).

 

Лабораторная работа №5

Способы передачи данных в функции языка С++

 

1. Цель работы: Изучение способов передачи параметров в функцию. Рекурсивные функции.

 

Домашнее задание

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

#include <iostream.h>

int f1(int b) {b=b+1; return b;}// int b = a;

int& f2(int& b) {b=b+1; return b;} // int& b = a;

int* f3(int* b) { *b=*b+1;return b;} // int* b = &a;

void main(){

int a =1; cout<<"\n a = "<<a;

cout<<"\n f1(a) = "<<f1(a); cout<<"\t a = "<<a; // f1(a) =  2  a = 1;

cout<<"\n f2(a) = "<<f2(a); cout<<"\t a = "<<a;// f2(a) =  2  a = 2;  

cout<<"\n *f3(&a) = "<<*f3(&a); cout<<"\t a = "<<a; // *f3(&a) =  3  a = 3;

}

 

2.2 Переделайте следующую функцию, вычисляющую факториал с помощью цикла на рекурсивный вариант:

double factorial(unsigned value)

{

unsigned i = 1;

double result = 1;

for (; i <= value; i++) result *= i;

return result;

}

2.3. Согласно номеру вашего варианта рассчитайте значение интеграла от:

1. F(x) = sin(x)+4*cos(2*x)              oт 0 до π/4

2. F(x) = 7*x2+5*x+3                        от 3 до 6

3. F(x) = -7*x3+3*cos(3*x) –x         от 0 до π/2

4. F(x) = 5*cos(3*x)-12*sin(3*x)  от π/4 до π

5. F(x) = 0.01*(1-x2)                          от 0.01 до 0.5

6. F(x) = 1/(1-x)                               от 2 до 5

7. F(x) = sin(x)+(x2+4)                       от - π/4 до π/4

8. F(x) = 7*x3-5*x+7                         от 1 до 2

9. F(x) = sin(x)+cos(4x)                    от 0 до π

10. F(x) = 0.1*x2(1-x3)                       от -3 до 3

 

Лабораторное задание

3.1 Наберите программу, использующую рекурсивный алгоритм Хаара, для сортировки массива случайных чисел.

#include "stdafx.h"

# include <stdio.h>

# include <stdlib.h>

#include <time.h>

# define DIMENSION 5000

void QuickSort(int* array, int First, int Last)

{

int Temp, LowerBoundary, UpperBoundary, Separator;

LowerBoundary = First;

UpperBoundary = Last;

Separator = array[(First + Last) / 2];

do

{

while (array[LowerBoundary] < Separator) LowerBoundary++;

  while (array[UpperBoundary] > Separator) UpperBoundary--;

if (LowerBoundary <= UpperBoundary)

{

    Temp = array[LowerBoundary];

    array[LowerBoundary++] = array[UpperBoundary];

    array[UpperBoundary--] = Temp;

}

} while (LowerBoundary <= UpperBoundary);

if (First < UpperBoundary) QuickSort(array, First, UpperBoundary);

if (LowerBoundary < Last) QuickSort(array, LowerBoundary, Last);

}

void main()

{

time_t ftime, stime;

int i = 0;

int* ar = (int*) malloc(sizeof(int)*DIMENSION);

for (; i < DIMENSION; ar[i++] = rand()%1000) ;

time(&ftime); // время начала сортировки

QuickSort(ar, 0, DIMENSION -1);

time(&stime); //время окончания сортировки

printf("\n\n");

// for (i = 0; i < DIMENSION; printf("\n%d", ar[i++])) ;

printf("\n stime - ftime = %d", stime - ftime);

getchar();

free(ar);

}

3.2 Оцените время сортировки массивов из 5000, 50000, 500000 элементов алгоритмом Хаара и методом пузырьковой сортировки. Данные измерений занесите в таблицу. Сделайте выводы.

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

3.4 Нарисуйте блок схему, алгоритма сортировки Хаара.

3.5 Наберите программу, рисующую на экране геометрические фигуры.

 

// В свойствах проекта в опциях по C/С++ ->Библиотека времени выполнения; установить /MTd

//В свойствах проекта Компоновщик->Ввод->Дополнительные зависимости; поставить на первое место uafxcwd.lib

 

 

#include "stdafx.h"

#include "afxwin.h"

#include "iostream"

using namespace std ;

void main(){

HWND hwnd;

hwnd=FindWindow(_T("ConsoleWindowClass"),_T("C:\\Windows\\system32\\cmd.exe"));

if (hwnd!=NULL){

  HDC hdc;

  hdc=GetWindowDC(hwnd);

  POINT pt[3];

  CPoint pt1(100,100), pt2(200,200);

  pt[0].x = 0;

pt[0].y=0;

pt[1].x = 100;

pt[1].y=100;

pt[2].x = 50;

pt[2].y=100;

  if (hdc!=0){

         CPen pen(PS_SOLID,4,RGB(255,0,0));

         SelectObject(hdc,pen);

         Ellipse(hdc,90,100,120,150);// рисуем эллипс

         Arc(hdc,pt1.x,pt1.y,pt2.x,pt2.y,100,200,100,100);//рисуем круг

         Polyline(hdc,pt,3 ); //рисуем ломаную

         getchar();

         for(int i=0; i < 100; i++){ // перемещение по экрану

                CPen pen1(PS_SOLID,4,RGB(0,255,0));

                SelectObject(hdc,pen1);

           Arc(hdc,pt1.x,pt1.y,pt2.x,pt2.y,100,200,100,200);//рисуем круг

                Sleep(24);//задержка на 24мс

                CPen pen2(PS_SOLID,4,RGB(0,0,0));

                SelectObject(hdc,pen2);

                Arc(hdc,pt1.x,pt1.y,pt2.x,pt2.y,100,200,100,200);//стираем круг

                pt1.x+=1; pt1.y+=1;pt2.x+=1;pt2.y+=1; //Меняем координаты круга

         }

         ReleaseDC(hwnd, hdc);

  }

  else cout << "Error DC Window" << endl;

}

  else cout << "Error Find Window" << endl;

}

3.6. Наберите программу, рисующую на экране геометрические фигуры.

3.7. Получите рисунок у преподавателя и напишите программу рисующую  его на экране.

3.8. Ответьте устно на контрольные вопросы.

3.9. Напишите отчет.

 

Содержание отчета

4.1 Титульный лист. Домашнее задание..

4.2 Результаты выполнения пунктов 3.2, 3.3, 3.4 и 3.7.

 

Контрольные вопросы

5.1 Чем отличается передача параметров в функцию по значению и по ссылке?

5.2 Каким образом программа может получать данные из командной строки?

5.3 Как можно из функции main получить доступ к переменным окружения?

5.4 Может ли функция возвращать массив? Принимать массив по значению?

5.5 Может ли аргументом функции быть другая функция? Указатель на другую функцию?

5.6 Приведите примеры использования указателя на функцию.

5.7 Как объявляется функция с переменным числом параметров? Приведите примеры.

5.8 Каким образом можно определить, сколько параметров ввел пользователь в командной строке?

5.9 Разработайте рекурсивный алгоритм расчета определителя квадратной матрицы.

5.10 Объясните алгоритм быстрой сортировки, используемый программой из пункта 2.2. лабораторного задания.

5.11 Почему при работе с рекурсивными функциями часто переполняется стек?

5.12. Покажите действие алгоритма быстрой сортировки на примере следующего массива:

{6,2,1,3,4,5,8,7,0}.

5.13. Всегда можно ли итерационный алгоритм заменить рекурсивным? Рекурсивный итерационным?

 

Лабораторная работа №6


Дата добавления: 2021-04-05; просмотров: 120; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!