ПМ-21 &quot

advertisement
В НАЧАЛЕ ПРОГРАММЫ ДОЛЖЕН БЫТЬ КОММЕНТАРИЙ
С УСЛОВИЕМ ЗАДАЧИ, НОМЕРОМ ВАРИАНТА И ФИО СТУДЕНТА.
ВО ВСЕХ ЛАБОРАТОРНЫХ РАБОТАХ ПРИ ВВОДЕ С КЛАВИАТУРЫ И
ПРИ ВЫВОДЕ НА ЭКРАН ДОЛЖЕН БЫТЬ ПОЯСНЯЮЩИЙ ТЕКСТ.
Лабораторная работа № 1
Указатели в языке Си
Лабораторная работа № 1.1
Разработать программу на языке Си. Все переменные в программе должны быть переменными-указателями. Простые переменные (например, int i) использовать нельзя. Для
динамического выделения памяти использовать оператор new. Все числа в выражениях
вещественные, если не указано иное. Массивы использовать нельзя.
Найти объем прямоугольного параллелепипеда по сторонам.
Вычислить значение выражения x=sin(x)*y/2+a.
Найти периметр прямоугольника по сторонам (целые числа).
Найти длину гипотенузы прямоугольного треугольника по катетам.
Найти максимальное отрицательное число среди трех чисел. Если среди чисел нет
отрицательных, то выдать соответствующее сообщение.
6. Вычислить значение выражения x=(y2+a/10)*b-a (a, b – целые числа).
7. Найти расстояние между двумя точками на плоскости.
8. Найти модуль среднего арифметического двух целых чисел.
9. Вычислить значение выражения x=10*(z-a+b)+7 (z – целое число).
10. Найти квадрат суммы наибольшего и наименьшего из трех чисел.
11. Для трех чисел найти наименьшее целое число, которое больше всех этих чисел.
12. Вычислить значение выражения x=(a-b)/(a+b), если a+b>0, и x=(a+b)*2 в остальных
случаях.
13. Найти периметр треугольника на плоскости, если заданы координаты всех его вершин (координаты – целые числа).
14. Для трех чисел найти квадрат суммы всех отрицательных чисел.
15. Для двух целых чисел найти их разность, если числа имеют один знак, или модуль
их суммы в противном случае.
16. Найти максимальное число из двух вещественных чисел.
17. Найти среднее арифметическое трех целых чисел.
18. Вычислить значение выражения z=n! для 0<n<11 (n – целое число).
19. Для двух целых чисел a и b найти сумму a+b, если их произведение a*b положительное, и разность a-b в противном случае.
20. Найти квадрат суммы трех целых чисел.
21. Определить, на сколько квадрат суммы двух чисел больше модуля их разности.
22. Найти длину окружности по радиусу.
23. Вычислить значение выражения x=a-5/c+a*b (если c=0, то выдать сообщение об
ошибке).
24. Найти площадь треугольника по формуле Герона.
25. Вычислить значение выражения x=5+cos(y)*a/b для b<0 или x=b-a в остальных случаях.
26. Найти сумму двух целых чисел и, если она положительная, удвоить ее.
27. Найти координата середины отрезка на прямой.
28. Вычислить значение выражения x=d*z-a/3 для d>0 или x=d*3 в остальных случаях (d
– целое число).
1.
2.
3.
4.
5.
29. Найти долю в процентах одного целого положительного числа от второго целого
положительного числа.
30. Найти расстояние между двумя точками с целыми координатами в пространстве.
Лабораторная работа № 1.2
Разработать программу на языке Си. Допускается использование переменных. Все
массивы должны быть размещены динамически с помощью оператора new. Доступ к элементам массива должен осуществляться с помощью указателей.
1. Дана целая матрица A[n][m]. Определить среднее арифметическое всех элементов
матрицы А.
2. Дан массив из N целых чисел. Определить, сколько раз в нем встречается
минимальный элемент.
3. Дана целая матрица A[n][n]. Транспонировать матрицу А.
4. Дана целая матрица A[n][m]. Определить, есть ли в матрице столбец, все элементы
которого одинаковые.
5. Дан массив из N вещественных чисел. Определить номер последнего
неотрицательного элемента массива.
6. Дан массив из N целых чисел. Найти минимальное число среди чисел, больших 10.
7. Дана вещественная матрица A[n][n]. Сформировать вектор В из элементов главной и
побочной диагоналей матрицы.
8. Даны целая матрица A[n][m] и целый вектор В[n]. Определить, является ли вектор В
столбцом матрицы А.
9. Дана целая матрица А[n][n]. Отсортировать заданную строку матрицы по
возрастанию.
10. Дан массив из N вещественных чисел. Найти сумму элементов массива без двух
наибольших элементов массива.
11. Дана вещественная матрица A[n][n]. Получить вектор В[n], каждый элемент
которого равен сумме элементов из соответствующей строки матрицы А.
12. Дан массив из N целых чисел. Подсчитать количество тех элементов массива, чей
знак не совпадает со знаком предыдущего элемента (число 0 считать положительным).
13. Дана вещественная матрица A[n][n]. Определить количество строк, в которых
содержатся отрицательные элементы.
14. Дан массив из N целых чисел. Переместить все нулевые элементы в конец массива
не меняя порядок следования других элементов.
15. Дана целая матрица A[n][m]. Сформировать вектор В из элементов строк матрицы
А, в которых содержится максимальный элемент матрицы А.
16. Дана целая матрица А[n][n]. Найти суммы четных и нечетных чисел матрицы.
17. Дана целая матрица A[n][m]. Определить количество положительных, отрицательных и нулевых элементов в матрице.
18. Дан массив из N вещественных чисел. Определить, являются ли элементы массива
неубывающей последовательностью.
19. Даны целая матрица A[n][n]. Поменять местами главную и побочную диагонали
матрицы А.
20. Дан массив из N целых чисел. Найти сумму всех элементов массива с четными
индексами.
21. Дана целая матрица А[n][n]. Заменить все элементы матрицы на противоположные
по знаку, а затем поменять местами первый и последний столбец матрицы.
22. Дан массив из N вещественных чисел. Найти разность между наибольшим и
наименьшим элементами масcива.
23. Дана вещественная матрица A[n][m]. Определить, есть ли в матрице ровно две
строки только с отрицательными элементами.
24. Дан массив из N вещественных чисел. Переписать все его элементы в обратном
порядке.
25. Дана целая матрица A[n][m]. В заданной строке каждый элемент кроме первого
заменить суммой всех предыдущих.
26. Дан массив из N целых чисел. Определить наибольшее четное число в массиве.
27. Дана целая матрица A[n][m]. Найти общее количество строк и стоблцов в матрице,
на которых есть нулевые элементы.
28. Дана целая матрица A[n][m]. Поменять местами две заданные строки матрицы А,
предварительно переставив элементы в этих строках в обратном порядке.
29. Дана целая матрица А[n][n]. Определить, совпадают ли в матрице главная и
побочная диагонали.
30. Дан массив из N вещественных чисел. Поменять попарно элементы массива
местами.
Лабораторная работа № 1.3
Разработать программу на языке Си. Допускается использование переменных. Все
строки должны быть размещены динамически с помощью оператора new. Разделителем
слов в предложении считать только пробел. Все остальные символы считать частью слов
предложения. Посимвольный доступ к элементам строки должен осуществляться с помощью указателей. Функции для работы со строками использовать можно.
1. Дано слово. Если первый символ слова совпадает с последним символом, то удалить
из слова первый и последний символы (для слова “abccda” получаем “bccd”).
2. Дан массив слов. Во всех словах массива, если в слове первый и последний символы
на совпадают, то удалить из слова первый символ, а последний – заменить на
символ ‘!’.
3. Дано слово. Удалить из слова все символы, совпадающие с последним символом.
4. Дано слово. Вставить между одинаковыми символами символ ‘=’, а между разными
– символ ‘*’.
5. Дан массив слов. Во всех словах массива удалить все символы, кроме маленьких латинских букв ‘a’, ‘b’ и ‘c’ (для слова “ktadbcccd” получаем “abccc”).
6. Дан массив слов. Сформировать предложение из слов массива, которые состоят из
одних цифр.
7. Дано слово. Удалить из слова все символы ‘?’, перед которыми стоит не цифра (для
слова “?a?bc7??cda?” получаем “abc7?cda”).
8. Дано слово и подстрока. Определить номер позиции, с которой подстрока входит в
строку. Если подстрока не содержится в строке, то выдать -1.
9. Дано слово. Дописать к слову все его символы в обратном порядке (для слова “abc”
получаем “abccba”).
10. Дан массив слов. Для всех слов массива, если первый символ слова цифра, то
вставить ее после каждого знака ‘+’ в слове (для слова “7b+cdf+e+” получаем
“7b+7cdf+7e+7”).
11. Дано предложение с произвольным числом пробелов до, после и между словами.
Найти количество слов в предложении.
12. Дано предложение без лидирующих и завершающих пробелов, слова в котором
разделены произвольным количеством пробелов. Сформировать массив слов из слов
предложения.
13. Дано слово. Записать все символы слова в обратном порядке, добавив в начало и конец слова символ ‘?’ (для слова “abcd” получаем “?dcba?”).
14. Дан массив слов и подстрока. Сформировать предложение из слов, не содержащих
заданную подстроку.
15. Дано слова. Удалить каждый третий символ слова, добавив между всеми оставшимися символами символ ‘*’ (для слова “abcdefg” получаем “a*b*d*e*g”).
16. Дано слово. Добавить в начало слова столько последних символов слова, сколько
всего есть таких символов в слове (для слова “dadfaedsa” получаем
“aaadadfaedsa”).
17. Дано слово. Повторяющиеся подряд символы удалить, оставив лишь один из них
(для слова “abbcccdee” получаем “abcde”).
18. Дан массив слов. Заменить во всех словах в массиве все цифры кроме 0 на символ
‘?’, а цифру 0 удалить. Подсчитать общее количество сделанных замен.
19. Дано слово. Определить общее количество маленьких латинских букв ‘a’ и ‘b’ в
слове. Если это количество четное, удалить из слова все буквы ‘a’, в противном
случае – удалить все буквы ‘b’.
20. Дан массив слов. Составить предложение из слов, которые начинаются на заданный
символ, предварительно удалив из слова все такие символы кроме первого.
21. Дано слово. Удалить из него все цифры.
22. Дан массив слов и подстрока. Для всех слов массива, если слово не содержит заданную подстроку, то добавить подстроку в начало этого слова.
23. Дано слово. Определить, состоит ли оно из различных неповторяющихся символов.
24. Дан массив слов. Во всех словах вставить между одинаковыми символами символ
‘=’. Подсчитать количество слов, которые в результате изменились.
25. Дано слово. Удалить из слова все символы ‘?’, добавив в конец слова символ ‘!’
(для слова “?ab?bc?” получаем “abbc!”).
26. Дан массив слов и подстрока. Если слово начинается с символа ‘a’, то дописать к
нему в начало подстроку, а если слово заканчивается на символ ‘b’, то дописать к
нему в конец подстроку.
27. Дано слово. Если слово не заканчивается на символ ‘!’, то вставить в слове после
каждой цифры символ ‘?’ (для слова “a7bc5” получаем “a7?bc5?”).
28. Дано слово. Вставить между цифрами символ ‘+’, а между большими латинскими
буквами символ ‘-’ (для слова “aAD98fe6AA” получаем “aA-D9+8fe6A-A”).
29. Дано слово. Удвоить буквы на нечетных позициях в слове (для слова “abcdef”
получаем “abbcddeff”).
30. Дан массив слов. Определить количество слов массива, которые не являются
«перевертышем».
Лабораторная работа № 2
Функции в языке Си
Лабораторная работа № 2.1
Переработать программу из лабораторной работы №1.1 так, чтобы она состояла из
функции main(), выполняющей ввод исходных данных и вывод результата, и функции, реализующей заданные действия и вызываемой из функции main().
Лабораторная работа № 2.2
Переработать программу из лабораторной работы №1.2 так, чтобы она состояла из
функции main(), выполняющей ввод исходных данных и вывод результата, и функции, реализующей заданные действия и вызываемой из функции main().
Лабораторная работа № 2.3
Переработать программу из лабораторной работы №1.3 так, чтобы она состояла из
функции main(), выполняющей ввод исходных данных и вывод результата, и функции, реализующей заданные действия и вызываемой из функции main().
Download