Пару задачек на C++
#1
Posted 03 June 2012 - 00:49
Ну, и в долгу не останусь
1. Работа с битами.
Ввести последовательность из 8 символов. Если символ есть + – * / % , то заменить в нем четыре младших бита единицами, иначе – заменить 5-й бит нулем. Вывести исходную и преобразованную последовательности в символьной и восьмеричной формах.
2. Рекуррентные последовательности.
Напечатать значения очередных пар последовательностей и Произведение.
2.png 9.69KB 0 downloads
3. Одномерные массивы.
Даны целые числа a1, …, a30. Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением max(a1,…, a30), домножить на max(a1, …, a30).
4. Двумерные массивы.
Задана матрица Z(5,6). Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в массив, затем каждый отрицательный элемент умножить на номер столбца. Вывести исходную и преобразованную матрицы, полученный массив.
5. Динамическое распределение памяти.
Получить квадратную матрицу порядка n:
8.png 4.43KB 0 downloads
Матрица размещается в памяти динамически с помощью операции new, значение n вводится по запросу с клавиатуры. В конце работы программы освободить выделенную память. Вывести полученную матрицу.
6. Работа с символьными данными.
Прочитать из файла строку символов. Заменить в этой строке все целые числа соответствующим повторением следующего за ними символа (например "abc5xacb15y" – "abcxxxxxacbyyyyyyyyyyyyyyy"). Новую строку не создавать. Вывести исходную и преобразованную строки.
7. Классы. Протокол класса. Конструкторы и деструкторы.
Создать класс матрица Данный класс содержит указатель на long, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i, j) и адрес этого элемента. Определить функцию печати. Определить функции сложения и вычитания (матрицы с матрицей), умножение матрицы на матрицу. Определить умножение матрицы на число. Проверить работу этого класса. В случае нехватки памяти, несоответствия размерностей, выхода за пределы устанавливать код ошибки.
8. Преобразование типов. Дружественные функции. Конструктор копирования.
Создать два класса вектор (double *) и матрица (double **). Определить конструкторы по умолчанию, с параметром, для класса матрица с двумя параметрами, копирования, деструкторы. Определить функцию умножения матрицу на вектор как дружественную.
9. Перегрузка операторов.
Создать объект – связный двунаправленный список, с перегруженными унарными операциями ++, --, как движение по списку. (Как постфиксными так префиксными).
10. Наследование. Иерархия и контейнерные классы.
Используя иерархию и композицию классов, создать бинарное дерево. У бинарного дерева есть корневой узел. Мы можем вставлять узел. Мы можем обходить в ширину и обратный обход. Узел может быть помещен в дерево двоичного поиска только в качестве концевого узла. Если дерево является пустым, то создается новый экземпляр класса узел дерева и узел помещается в дерево. Если дерево не является пустым, то программа сравнивает вставляемое в дерево значение со значением в корневом узле и если меньше, то помещает в левые поддеревья, а если больше, то в правые. Если значения равны, то выводится сообщение, что повтор и не вставляется.
11. Виртуальные функции.
Создать класс – данные – абстрактный базовый класс. Создать производные классы – данные типа сигнал, данные типа результат обработки и вспомогательные данные. Все данные имеют функции отображения, сохранения и обработки.
12. Применение основ программирования на языке высокого уровня в области химической технологии.
Создать класс «Скорость химической реакции».
Создать процедуру ввода параметров химической реакции:
- стехиометрические коэффициенты αi;
- число исходных реагентов m;
- константа скорости химической реакции k;
- концентрации исходных реагентов во времени Сi(t).
Создать функцию расчёта скорости химической реакции. Для вывода уравнения скорости химической реакции используется закон действия масс (основной постулат химической кинетики).
Если в реагирующей системе протекает реакция в соответствии со следующим стехиометрическим уравнением: α1А1 + α2А2 + … + αmАmk αm+1А m+1 + α m+2А m+2 + … + αnАn, то в соответствии с законом действия масс скорость элементарной химической реакции пропорциональна концентрациям реагирующих
веществ в степенях, равных их стехиометрическим коэффициентам:
6-3.png 1.84KB 0 downloads
где k – константа скорости реакции (размерность зависит от порядка реакции); m – число реагентов в реакции; Сi – концентрация i-го компонента, моль/м3; αi – стехиометрический коэффициент i-го компонента.
Создать функцию вывода результатов расчёта скорости реакции в каждый момент времени.
4A = 4B + 2C + D
#2
Posted 03 June 2012 - 01:32
это называется не "помогите решить", а "решите за меня"
[/зануда_mode]
#3
Posted 03 June 2012 - 01:36
Отправлено с моего GT-I9100 через Tapatalk
#4
Posted 03 June 2012 - 01:37
Она самаяТехноложка чтоль?
Отправлено с моего GT-I9100 через Tapatalk
#5
Posted 03 June 2012 - 02:49
#6
Posted 03 June 2012 - 03:38
Отправлено с моего GT-I9100 через Tapatalk
#7
Posted 03 June 2012 - 03:44
Отправлено с моего GT-I9500 через Tapatalk
#8
Posted 03 June 2012 - 08:02
Смотрел уже, не было)На кафедре на сервере все контрольные эти есть уже решенные - поищи
Отправлено с моего GT-I9100 через Tapatalk
Предложите сами?цены-то не видно.
#9
Posted 04 June 2012 - 13:31
Задачи примитивные ведь.
И кстати, мне это не пригодится (с)
Мне это не нужно (с)
Мне некогда (с)
У меня другая специальность (с)
Это не причина, чтобы не уметь программировать
#11
Posted 05 June 2012 - 04:44
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace Task_1 { class Program { static void Main() { String[] symbol = new String[8]; String[] symbolMod = new String[8]; String[] binaryValue = new String[8]; String[] binaryValueMod = new String[8]; String[] byteValue = new String[8]; String[] byteValueMod = new String[8]; Char[] charValue = new Char[8]; Byte[] bytes = new Byte[8]; int[] bitArray = new int[8]; bool[] booleanArray = { false, false, false, false, false, false, false, false }; Console.WriteLine("Enter Symbol"); for (int i = 0; i < 8; i++) { Console.Write("Symbol {0} : ", i.ToString()); symbol[i] = Console.ReadLine(); charValue[i] = Convert.ToChar(symbol[i]); bytes[i] = Convert.ToByte(charValue[i]); byteValue[i] = Convert.ToString(bytes[i]); binaryValue[i] = Convert.ToString(Convert.ToInt32(byteValue[i], 10), 2); bitArray = binaryValue[i].Select(letter => int.Parse(letter.ToString())).ToArray(); if (charValue[i] == '+' ^ charValue[i] == '-' ^ charValue[i] == '*' ^ charValue[i] == '/' ^ charValue[i] == '%') { for (int j = bitArray.Length - 4; j < bitArray.Length; j++) { bitArray[j] = 1; } } else { bitArray[bitArray.Length - 5] = 0; } for (int k = 0; k < 8; k++) { booleanArray[k] = false; } for (int k = 0; k < bitArray.Length; k++) { bool booleanValue = Convert.ToBoolean(bitArray[k]); booleanArray[k + 8 - bitArray.Length] = booleanValue; } bool[] bools = booleanArray; Array.Reverse(bools); BitArray booleanArray2 = new BitArray(bools); Byte[] byteMod = new Byte[booleanArray2.Length / 8]; booleanArray2.CopyTo(byteMod, 0); Array.Reverse(byteMod); byteValueMod[i] = Convert.ToString(byteMod[0]); binaryValueMod[i] = Convert.ToString(Convert.ToInt32(byteValueMod[i], 10), 2); symbolMod[i] = System.Text.Encoding.GetEncoding("utf-8").GetString(byteMod); } for (int i = 0; i < 8; i++) { Console.Write("\n"); Console.Write("{0} --> {1} --> {2} --> {3} --> {4} --> {5}", symbol[i], byteValue[i], binaryValue[i], binaryValueMod[i], byteValueMod[i], symbolMod[i]); } Console.ReadKey(); } } }
вторую тоже написал, но может чушь тоже чушь)) в doc файле всё иначе как-то.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace task_2 { class Program { static void Main(string[] args) { Double x1 = 1, x2 = 1.5, y1 = -1, y2 = -0.6; Double x_old_1, x_old_2, y_old_1, y_old_2, x_new, y_new; Double P = y1 * y2; int i = 3; y_old_1 = y1; y_old_2 = y2; x_old_1 = x1; x_old_2 = x2; do { x_new = 5 * Math.Sin(y_old_2) + Math.Floor(y_old_1); y_new = 2 * x_old_2 + 3 * x_old_1 + 5 * y_old_2; P = P * y_new; x_old_1 = x_old_2; x_old_2 = x_new; y_old_1 = y_old_2; y_old_2 = y_new; i++; } while (i <= 100); Console.WriteLine("P = {0} ", P); Console.ReadKey(); } } }
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users