Заказать лабораторную работу на Си, C++ (Си++)
Лабораторная работа №1
Согласно варианта задания реализовать программу, вычисляющую целочисленное выражение
- a*=b>>3|c++-c unsigned char, int, short int
- a^=b++==3?--c:b---c unsigned int, int, short int
- a&=b << 3+~++c unsigned int, short int, int Наш сайт
- a|=--b%c++ unsigned int, int, short int
- a%=b+++--c%b int, int, short int
- a/=++b*--c>>
- int, int, short int
- a>>=b++%--c unsigned char, int, short int
- a << =~b*--c unsigned char, int, short int
- a-=((b++>>2!=c)+1)|++c int, int, unsigned char
- a+=b+=c*=b>>
- long int, int, short int
Примеры, как осуществлять ввод и вывод смотрите в "http://student.gomel.by"
Программа должна запрашивать у пользователя значения переменных a,b и c. Вычислять указанное выражение и снова выводить на экран значения переменных a,b и c.
Лабораторная работа №2
Использование циклов. Согласно варианта задания реализовать программу.
- Найти сумму целых чисел от m до n.
- Найти произведение целых чисел от m до n.
- Найти сумму чисел от m до n, кратных к.
- В банк положили N у. е. под P процентов в год. Сколько денег будет в банке через L лет?
- Найти факториал числа n, n<=16
- Найти произведение целых чисел от m до n, кратных к. Наш сайт
- В банк положили N у. е. под P процентов в год. Через сколько лет в банке будет S у. е. ?
- На сколько дней студенту хватит стипендии S, если он тратит N р. в день и его расходы каждый день увеличиваются на X р. ?
- Найти сумму четных чисел от m до n.
- На сколько дней студенту хватит стипендии S, если он тратит N р. в день и его расходы каждый день увеличиваются в X раз?
Алгоритм из таблицы реализовать в программе двумя способами. С помощью цикла for и с помощью цикла while(или do while). Выбор цикла while или do while зависит от алгоритма, должен быть применён тот цикл, который позволяет получить оптимальный код.
Лабораторная работа №3
Реализовать программу согласно варианта задания. Где возможно, использовать условный оператор switch.
- Дан одномерный массив чисел. Умножить на 3 его положительные элементы, отрицательные разделить на 2, а равные нулю – заменить числом 5.
- Даны отрезки a, b, c. Определить, можно ли из них составить треугольник. Вывести сообщения типа “можно”, ”нельзя”, ”треугольник превращается в отрезок” http://student.gomel.by.
- В лабораторной работе дан одномерный массив чисел. Если его максимальный элемент >10, найти произведение элементов массива, <=10, но >=5 – найти сумму элементов, <5 – обнулить массив и вывести соответствующее сообщение.
- Дана точка (x;y) и круг радиуса R с центром в точке (0;0). Определить, где находится точка: внутри, на границе, или за пределами круга.
- Дана матрица [MxN]. Если число строк больше числа столбцов, удвоить все элементы матрицы. Если число строк меньше числа столбцов, утроить все элементы матрицы. Если матрица квадратная, обнулить все ее элементы.
- Напечатать значение 0<К< 10 римскими цифрами.
- Для целого числа 14<К<26 написать фразу “мне К лет”, учитывая форму числительных (год, года).
- Вывести название месяца по его номеру.
- Напечатать словесное название числа 0<К<10
- Вывести название дня недели по его номеру. Наш сайт
Лабораторная работа №4
Реализовать программу, работающую с одномерным массивом целых чисел (int). Обращение к элементам массива в программе для ввода, обработки и вывода должно быть реализовано с использованием указателей.
- Найти сумму тех значений массива, которые делятся на 3
- Увеличить элементы массива в два раза
- Уменьшить элементы массива в два раза
- Увеличить элементы массива на единицу
- Найти сумму тех значений массива, которые делятся на 5
- Заменить значения элементов массива на противоположные
- Уменьшить элементы массива на единицу http://student.gomel.by
- Найти максимальное значение среди элементов массива
- Найти сумму тех значений массива, которые делятся на 2
- Найти минимальное значение среди элементов массива
Все алгоритмы не должны использовать индексы элементов! В программе не должно быть конструкций вида
a[i]= или a[0] и. т.п.
Пример правильного ввода и вывода массива:
int *p,a[10],i;
p=a;
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
for(i=0;i<10;i++)
printf("%4d",*p++);
Лабораторная работа №5
Научиться работать с двумерными массивами и вложенными операторами цикла. Реализовать программу согласно варианта задания.
- Составить одномерный массив из максимальных элементов строк матрицы [MxN].
- Определить число элементов матрицы [MxN] кратных A.
- Перемножить 2 матрицы [MxN] и [NxK].
- Вывести все элементы двумерного массива [MxN] кратные A. Наш сайт
- Найти сумму элементов матрицы [MxN] в лабораторной работе, расположенных ниже побочной диагонали.
- Найти число отрицательных элементов матрицы [MxN], расположенных в столбцах с номером, кратным A.
- Найти произведение элементов матрицы [MxN], расположенных выше главной диагонали.
- Поменять местами элементы j и k столбцов матрицы [MxN].
- Определить количество элементов матрицы [MxN] больших A и расположенных в четных строках и столбцах.
- Найти минимальный элемент главной диагонали матрицы [MxN].
Лабораторная работа №6
Выполнить задание лабораторной работы №5 для случаев, когда память для двумерного массива выделяется динамически в зависимости от введённых M,N,K и корректно освобождается в конце работы программы.
Реализовать два варианта выделения памяти для двумерного массива (можно в одной программе, можно в двух отдельных, если в задании два двумерных массива, можно память под один выделить одним способом, а под второй – другим, тогда достаточно одной программы):
- Память выделяется одним блоком на размер всех данных массива. Номер строки и столбца переводятся в номер элемента в выделенном блоке памяти (см. Hint); http://student.gomel.by
- Память выделяется отдельно под одномерный массив указателей на строки массива данных. Затем динамически выделяется память под каждую строку массива данных.
В каждом варианте выделенная память в конце работы алгоритма должна быть корректно освобождена.
Hint: при первом способе выделения памяти обращение к i,j элементу массива MxN будет выполняться так: A[i * N + j] = … или *(A + i*N + j) = … . Во втором случае – A[i][j] = … или *(*(A + i) + j) = … .
Лабораторная работа №7
C использованием комбинированного типа данных (Struct) реализовать программу для работы с данными согласно варианта задания.
- Ввести информацию о ценах в лабораторной работе на процессоры в массив записей и вывести ее в виде таблицы.
- Ввести имена и телефоны сотрудников организации в массив записей и вывести их в виде таблицы.
- Ввести информацию о ценах на мониторы в массив записей и вывести ее в виде таблицы. Наш сайт
- Ввести фамилии и адреса сотрудников организации в массив записей и вывести их в виде таблицы.
- Ввести характеристики монитора (разрешение, частота вертикальной развертки) в массив записей и вывести их в виде таблицы.
- Ввести информацию о количестве продукции на складе в массив записей и вывести ее в виде таблицы.
- Ввести информацию о ценах на жесткие диски в массив записей и вывести ее в виде таблицы.
- Ввести информацию о ценах на компьютеры в массив записей и вывести ее в виде таблицы.
- Ввести информацию о ценах на автомобили в массив записей и вывести ее в виде таблицы.
- Ввести информацию о специальностях сотрудников организации в массив записей и вывести ее в виде таблицы.
Ввод строковых значений реализовать так, чтобы была возможность вводить текст, содержащий пробелы.
Лабораторная работа №8(1)
Реализовать согласно варианта задания (последняя цифра номера студента в журнале) программу обработки введённого текста (предложения). Обработка русских букв не обязательна, достаточно, чтобы программа корректно обрабатывала текст, состоящий из букв английского алфавита, знаков препинания, цифр (символы с кодами до 0x80).
- Все числовые значение в тексте уменьшить в два раза (нацело) I have 10 dollars and 3 apples.
I have 5 dollars and 1 apples
- Все числовые значение в тексте уменьшить на один I have 10 dollars and 3 apples.
I have 9 dollars and 3 apples
- Перевернуть все слова в тексте в обратную сторону I have 10 dollars, 3 apples.
I evah 01 srallod, 3 selppa.
- Продублировать гласные буквы (aeiouy) I have 10 dollars, 3 apples.
II haavee 10 doollaars, 3 aapplees.
- Продублировать согласные буквы (bcdfgjklmnpqrstvwxz) I have 10 dollars, 3 apples.
I hhavve 10 ddollllarrss, 3 apppplless. http://student.gomel.by
- В словах гласные буквы (aeiouy) вынести в начало слова, сохранив порядок I have 10 dollars, 3 apples.
I aehv 10 oadllrs, 3 aeppls.
- В словах гласные буквы (aeiouy) вынести в конец слова, сохранив порядок I have 10 dollars, 3 apples.
I hvae 10 dllrsoa, 3 pplsae.
- После каждой запятой в тексте поставить в квадратных скобках её порядковый номер. I have 10 dollars, 3 apples, 5 oranges.
I have 10 dollars,[1] 3 apples,[2] 5 oranges.
- Заменить все числа в тексте на их шестнадцатеричное представление. I have 10 dollars, 13 apples, 255 oranges.
I have А dollars, D apples, FF oranges.
- Заменить все числа в тексте на их двоичное представление. I have 10 dollars, 13 apples, 5 oranges.
I have 1010 dollars, 1101 apples, 101 oranges.
Вывод результата в лабораторной работе должен быть осуществлён одной командой (например, puts(result);). То есть нужно сначала сформировать строку с ответом, а потом уже её выводить. Не допускается вывод результата по частям.
Наш сайт
Пример правильного алгоритм решения (меняет в тексте попарно символы местами):
int main()
{
char src[1000], res[1000]; //строки для исходного текста и результата
puts("Enter text:");
gets(src); //ввод исходного текста
char *s = src, *d = res;
while (*s) {
if (s[1]) { //если есть парный символ, то менять местами в результате
*(d + 1) = *s++; //копируем текущий символ на след. место
*d = *s++;//копируем след. символ на текущее место
d += 2; //перемещаемся вперёд на два символа в строке-результате
}
else *d++ = *s++; //последний копируется «как есть»
}
*d = 0; //заносим в результат символ \0 – признак конца строки
puts("Result:");
puts(res); //вывод результата
return 0;
}
Лабораторная работа №9(2)
Алгоритм решения лабораторной работы №8(1) оформить в виде статического метода класса. Также объявить в классе статические поля для исходного текста и результата обработки. Пример объявления класса:
class Lab9{
static char src[100], res[100];
public:
static void DoTask();
…
};
При необходимости в классе можно объявить дополнительные статические методы и поля. В основном коде программы (в функции main()), вызвать статический метод решения задачи без создания объекта.
Наш сайт
Лабораторная работа №10(3)
Разработать класс, описывающий некоторую предметную область согласно варианта задания. В классе должно быть минимум три поля (строковое char[] или char*, два других зависят от варианта). Можно по желанию в лабораторной работе добавить собственные дополнительные поля.
Поля должны быть закрыты от внешнего использования, для доступа к ним в классе описать необходимые методы.
- Cтудент ФИО Год рождения, int Пол, char
- Автомобиль Марка Мощность, int Разгон до 100км/ч, сек, double
- Страна Название Площадь, int Континент, char
- Город Название Население, double Тип (столица, областной, районный центр, …), char
- Компьютерная мышь Модель Разрешение, int Тип (шарик, светодиод, лазер, гироскоп…), char
- Компьютерный монитор Модель Разрешение по ширине, int Разрешение по высоте, int
- Смартфон Модель Число ядер процессора, int Операционная система,(iOs, Android, Windows, other),char
- Процессор Модель Макс. тактовая частота, MГц, int Тепловой пакет, Вт,int
- ВУЗ Название Число факультетов, int Cтатус (республиканский, ведущий, региональный и т.п.),char
- Район страны Название Центр (город), текстовый Площадь, double
- Компьютерный класс Название аудитории Число рабочих мест, int Признак наличия Wi-Fi, char
- Ноутбук Модель Емкость жесткого диска, int Время работы от батареи, (часов), double
- Здание Адрес Этажность, int Площадь территории, double
- Маршрут транспорта Название Протяжённость км, double Тип (Автобус, Троллейбус, Маршрутка,…), char
- Сетевой коммутатор Модель Кол-во портов, int Макс. скорость, int http://student.gomel.by
- Часы Марка Вес, double Тип (механические, электронные, прочие), char
- Грузовой автомобиль Модель Грузоподьёмность, кг, int Объём груза, м3, double
- Пассажирский автобус Модель Длина, м, double Вместимость, чел, int
- Жесткий диск Модель Ёмкость, int Тип (обычный, гибрид, SSD,…), char
- Оптический диск Производитель Ёмкость, int Тип (DVD, CD, Blu-ray,…), char
- Принтер Модель Скорость печати, страниц/мин, int Тип (струйный, лазерный, термо….), char
- Web-камера Модель Разрешение, MPix, double Наличие микрофона, char
- Клавиатура Модель Число клавиш, int Тип интерфейса (Usb, PS/2) char
- Карта памяти Производитель Ёмкость, int Класс скорости, int
- Телевизор Модель Диагональ, int Тип матрицы (IPS, TN, TN+F,…) char
- Cетевой удлинитель Модель Число розеток, int Ток срабатывания защиты, А, double
- Озеро Название Площадь, double Глубина, м, int
- Наушники Модель Вес, double Оснащение, (с микрофоном, с регулятором,…) char Наш сайт
- Корпус компьютера Модель Форм-фактор (µATX, Tower, Mini-ITX,…) char Мощность блока питания, Вт, int
- Поезд Сообщение Номер поезда, текстовый Число вагонов, int
- Сетевой адаптер Модель Выходное напряжение, Вольт, double Род выходного напряжения (AC, DC) char
- Заведение общепита Название Количество мест, int Тип (кафе, ресторан, …) char
- Улица города Название Кол-во домов, int Протяжённость, км, double
Поля char, хранящие тип, должны содержать символы, которые соответствуют типам (например, S – столица, O – областной центр, R – район). При выводе нужно выводить тип в виде текста, а не хранящегося символа). У класса должны быть реализованы следующие конструкторы:
- конструктор без параметров (по умолчанию);
- конструктор со всеми параметрами, нужными для создания объекта в лабораторной работе;
- конструктор с одним параметром-строкой, которая содержит значения переменных объекта, разделённых некоторым символом (например, точкой с запятой);
- конструктор копирования.
В программе нужно продемонстрировать работу всех конструкторов. Bывести получившиеся объекты на консоль.
Лабораторная работа №11(4)
Изучить возможности множественного наследования. Самостоятельно разработать два класса, в качестве одного можно взять свой класс из предыдущей лабораторной работы. Если у двух студентов будут два одинаковых варианта классов и полей в них, работа засчитана будет только первому сдавшему. В каждом классе объявить минимум одно поле, методы для работы с ним, конструкторы. С помощью множественного наследования разработать производный класс, наследованный от первых двух. В программе описать три функции, выполняющие какую-либо обработку каждого из классов (с выводом на консоль). Последовательно передать объект производного класса в функции для демонстрации возможностей использования порождённого класса вместо любого из базовых. Пример (обратите внимание в лабораторной работе на использование, где нужно, оператора разрешения видимости):
class Shape //первый базовый класс
{
char* name;
public:
Shape(char* name){this->name = name;}
char* getName(){return name;}
};
class Style //второй базовый класс
{
char* color;
public:
Style(char* color){this->color = color;}
char* getColor(){return color;}
};
class Subject:public Shape,public Style //производный класс
{
char* name;
public:
Subject(char* names,char* name,char* color): Shape(name),Style(color){this->name = names;}
char* getName(){return name;}
};
//функции
void printShape(Shape& s)
{
cout << s.getName() << endl;
}
void printStyle(Style& s)
{
cout << s.getColor() << endl;
}
void printSubject(Subject& s)
{
cout << s.getName() << ' ' << s.getColor() << ' ' << s.Shape::getName() << endl;
}
//основной код
int main()
{
Subject s("Table","Rectangle","Black");
cout << "Shape: ";
printShape(s);
cout << "Style: ";
printStyle(s);
cout << "Subject: ";
printSubject(s);
return 0;
}
Лабораторная работа №12(5)
Для класса, разработанного в лабораторной работе 10(3), переопределить операторы сдвига для его ввода/вывода через потоки ввода/вывода cin и cout. Также для своего класса переопределить ещё один произвольный оператор (на свой выбор). В функции main() продемонстрировать работу перегруженных операторов (ввода, вывода и своего).
Наш сайт
Пример кода перегрузки операторов сдвига для ввода/вывода:
#include "stdafx.h"
#include
#include
using namespace std;
class Man
{
private:
char fio[100]; //фио
int age; //возраст
friend ostream& operator << (ostream&, Man&);
friend istream& operator>>(istream&, Man&);
public:
Man(char*,int);
};
ostream& operator << (ostream& o,Man& m)
{
o << m.fio << " " << m.age;
return o;
}
istream& operator>>(istream& i,Man& m)
{
i >> m.fio;
i >> m.age;
return i;
}
Man::Man(char* s,int a)
{
strcpy_s(fio,s); //вместо strcpy
age=a;
}
int _tmain(int argc, _TCHAR* argv[])
{
Man M("mr. Gray",35);
cout << M << endl;
cout << "Enter new FIO and AGE" << endl;
cin >> M;
cout << M << endl;
return 0;
}
Лабораторная работа №13(6)
С использованием класса из лабораторной работы №10(3) разработать программу, позволяющую работать со списком объектов своего класса. Требуемые характеристики программы:
- при закрытии программы текущий список объектов должен сохраняться в файле в текстовом формате;
- при открытии программы сохраненный список объектов должен загружаться из файла (для лабораторной работы);
- в программе должна быть возможность добавления, удаления и редактирования объектов (их полей). http://student.gomel.by
В программе для хранения объектов использовать массив указателей. При удалении объектов следует корректно освобождать выделенную память (удалять объекты). Данные в файл должны записываться в текстовом формате. Работу с файлом реализовать с использованием типа FILE и соответствующий функций (fopen(), fclose(), fscanf(), fprintf() и др). Нужные методы для записи/чтения добавить в свой класс и объявить виртуальными. Структура программы должна быть такова, чтобы можно было создать производный класс от используемого, в нём переопределить нужные методы, и, не меняя основной код, программа смогла бы работать и с объектами производного класса (использовать, где нужно, виртуальные методы).
Лабораторная работа №14(7)
Переработать прорамму из лабораторной работы №13(6), отличие заключается в изменении алогритмов сохранения и загрузки данных в/из файла.
Данные в файл должны записываться в бинарном формате. Работу с файлом реализовать с использованием классов потоков (ifstream, ofstream и/или fstream). Нужные методы для записи/чтения добавить в свой класс и объявить виртуальными.
Наш сайт
При вводе данных пользователем (номер редактируемого объекта, атрибуты объектов) проверять корректность введённых значений и использовать механизм обработки исключительных ситуаций для обработки неверных значений. В программе должен присутствовать как минимум один блок try-catch.
При сохранении текстовых данных, в файл сохранять только полезную информацию. Пример сохранения текстового поля:
ofstream f("d:\\data.bin");
char s[1000]="Hello"; //поле для сохранения
int l=strlen(s); //получаем длину
f.write((char*)&l,sizeof(int)); //записываем длину
f.write(s,l); //записываем сам текст, а не все 1000 символов
f.close(); //закрыть файл, необязательно, если будет удаление объекта f
ifstream f2("d:\\data.bin");
f2.read((char*)&l,sizeof(int)); //считать длину
f2.read(s,l); // считать сам текст, зная длину
s[l]=0; //занести символ \0 в конец
cout << s << endl; //вывод для проверки, в реальном коде не понадобится