Лабораторная работа №8(1)




Лабораторная работа №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>>3 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>>2 long int, int, short int

Примеры, как осуществлять ввод и вывод смотрите в "m:\Объектно-ориентированное программирование\2015-2016\Ввод-вывод\test.cpp"

Программа должна запрашивать у пользователя значения переменных 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. Определить, можно ли из них составить треугольник. Вывести сообщения типа “можно”, ”нельзя”, ”треугольник превращается в отрезок”.
  Дан одномерный массив чисел. Если его максимальный элемент >10, найти произведение элементов массива, <=10, но >=5 – найти сумму элементов, <5 – обнулить массив и вывести соответствующее сообщение.
  Дана точка (x;y) и круг радиуса R с центром в точке (0;0). Определить, где находится точка: внутри, на границе, или за пределами круга.
  Дана матрица [MxN]. Если число строк больше числа столбцов, удвоить все элементы матрицы. Если число строк меньше числа столбцов, утроить все элементы матрицы. Если матрица квадратная, обнулить все ее элементы.
  Напечатать значение 0<К<10 римскими цифрами.
  Для целого числа 14<К<26 написать фразу “мне К лет”, учитывая форму числительных (год, года).
  Вывести название месяца по его номеру.
  Напечатать словесное название числа 0<К<10
  Вывести название дня недели по его номеру.

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

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

№ варианта Постановка задачи
  Найти сумму тех значений массива, которые делятся на 3
  Увеличить элементы массива в два раза
  Уменьшить элементы массива в два раза
  Увеличить элементы массива на единицу
  Найти сумму тех значений массива, которые делятся на 5
  Заменить значения элементов массива на противоположные
  Уменьшить элементы массива на единицу
  Найти максимальное значение среди элементов массива
  Найти сумму тех значений массива, которые делятся на 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 и корректно освобождается в конце работы программы.

Реализовать два варианта выделения памяти для двумерного массива (можно в одной программе, можно в двух отдельных, если в задании два двумерных массива, можно память под один выделить одним способом, а под второй – другим, тогда достаточно одной программы):

1. Память выделяется одним блоком на размер всех данных массива. Номер строки и столбца переводятся в номер элемента в выделенном блоке памяти (см. Hint);

2. Память выделяется отдельно под одномерный массив указателей на строки массива данных. Затем динамически выделяется память под каждую строку массива данных.

В каждом варианте выделенная память в конце работы алгоритма должна быть корректно освобождена.

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.
  В словах гласные буквы (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;

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-05 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: