Практика по программированию — 2018

Презентации по курсу Linux

Лекции по курсу "системное администрирование Suse Linux" в формате OpenOffice (в PowerPoint могут "поплыть" шрифты про открытии)



1 часть.Введение. Установка системы. Разбивка разделов. Адресация в сети. Авторские права. Разделы системы.

Рабочие тетради по курсу

Четыре варианта будущего для студента


Как стать хорошим специалистом и где взять время на учебу?

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

Зачем нужны олимпиады

Среди студентов часто можно услышать вопрос "Зачем вообще нужны олимпиады?". Многие считают это "обязаловкой" и очень неохотно участвуют в подобных мероприятиях. Но, что в действительности дает олимпиада и что может получить от нее рядовой студент или школьник? Давайте попробуем разобраться в этом

Напутствие первокурсникам

Немного советов из собственного опыта студента и преподавателя как максимально использовать студенческие годы, чтобы стать хорошим ИТ-специалистом (и не только ИТ-специалистом) и получить знания, которые можно будет использовать на первой работе

Банкомат v1

package bankomat;

public class Term {

private int count5000=0;
private int count1000=0;
private int count500=0;
private int count100=0;
private final int MAX_MONEY=200000;

public void setMoney(int money5000,int money1000,int money500,int money100)
{
count5000=money5000;
count1000=money1000;
count500=money500;
count100=money100;
}

Term(int money5000,int money1000,int money500,int money100)
{
count5000=money5000;
count1000=money1000;
count500=money500;
count100=money100;
}

private long allMoney()
{
    return 5000*count5000+1000*count1000+500*count500+100*count100;
}

private boolean haveMoney(int userWantMoney)
{
boolean res=true;

if (userWantMoney>MAX_MONEY) 
{
res=false;    
System.out.print("Выдача ограничена суммой "+MAX_MONEY);
}
    
if (userWantMoney>allMoney()) 
{
res=false;    
System.out.print("Закончились деньги в терминале");
}
return res;
}

public void getMoney(int userSum)
{
    
int tempSum=userSum;

if (userSum%100!=0)
{
    System.out.println("Могу выдать сумму только кратную 100");
}

if (haveMoney(userSum) && (userSum%100==0))
{
    
while (tempSum>=5000)        
    
{
tempSum-=5000;
System.out.println("5000");
}

while (tempSum>=1000)        
    
{
tempSum-=1000;
System.out.println("1000");
}

while (tempSum>=500)        
    
{
tempSum-=500;
System.out.println("500");
}

while (tempSum>=100)        
    
{
tempSum-=100;
System.out.println("100");
}}}}    


Вызов

Term t1=new Term(34,23,1,2);
t1.getMoney(12700);
   

Задачи для первокурсников

Арифметические выражения, функции, условия, циклы 

1)    Дано натуральное число n > 1. Определить длину  периода десятичной записи дроби 1/n.

2) Дано  целое  число а и натуральное (целое неотрицательное) число n. Вычислить а в степени n. Другими словами,  необходимо  составить  программу,  при исполнении которой значения переменных а и n не меняются, а значение некоторой другой  переменной  (например, b) становится равным а в степени n. (При этом разрешается использовать и другие переменные.)

3) Имеется текст. Определить, имеются ли в нем идущие друг за другом символы "abcd". (Другими словами, требуется выяснить, есть ли в слове  подслово "abcd".)

4) Составить программу вычисления конечной суммы денежного вклада в рублях при открытии валютного счета в банке через несколько месяцев при ежемесячной процентной ставке 4% и росте курса валютной единицы по отношению к рублю 0,3 % в месяц. Программа запрашивает ввод начальной суммы, срока вклада и выводит на экран конечную сумму в рублях.

5) Два натуральных числа называют дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300.

6) Дано натуральное число n. Получить все простые делители этого числа.

7) Определить, есть ли среди первых трех цифр дробной части заданного положительного вещественного числа цифра 0.

8) Даны случайные натуральные числа от 20 до 50.Напечатать те из них, которые делятся на 3, но не делятся на 5.

9) Даны натуральные числа от 35 до 87. Найти и напечатать те из них, которые при делении на 7 дают остаток 1, 2 или 5.

10) Составьте программу, которая вычисляет сумму квадратов чисел от 1 до введенного вами целого числа N.

11) Написать программу, которая по заданным значениям чисел a и b находит a в степени b. В запросе укажите допустимые значения этих переменных( Например если а - дробное, то b не может быть отрицательным).


12) Пользователь вводит три числа. Увеличьте первое число в два раза, второе числа уменьшите на 3, третье число возведите в квадрат и затем найдите сумму новых трех чисел.

13) Даны катеты прямоугольного треугольника. Найдите площадь, периметр и гипотенузу треугольника.

14) Дано значение температуры в градусах Цельсия. Вывести температуру  в градусах Фаренгейта.

15)  Дано действительное число Х. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить:  1 - 2Х + 3Х2 - 4Х3 и 1 + 2Х + 3Х2 + 4Х3. Разрешается использовать не более восьми операций.

16)  Определить, есть ли среди первых трех цифр дробной части заданного положительного вещественного числа цифра 0.

17)   Определить, верно ли, что при делении неотрицательного целого числа a на положительное целое число b получается остаток, равный одному из двух заданных чисел r или s. Установить контроль ввода данных.

18)  Дано натуральное число n (n <= 9999). Является ли это число палиндромом (перевертышем) с учетом четырех цифр, как, например, числа 2222, 6116, 0440 и т.д.?

19)  Вывести на экран числа от 1000 до 9999 такие, что среди цифр есть цифра 3.

20)  Найдите трехзначные числа, равные сумме кубов своих цифр.

21)  Сколько существует четырехзначных чисел, которые в 600 раз больше суммы своих цифр?

22) Найдите хотя одно натуральное число, которое делится на 11, а при делении на 2, 3, 4, ..., 10 дает в остатке 1

23) Вывести на экран n единиц, затем 2n двоек, затем 3n троек. Число n вводит пользователь.

24) Вывести ряд чисел: десять десяток, девять девяток, восемь восьмерок, ... , одну единицу. Найти сумму всех этих чисел.

24) Вывести на экран:
AAAAAAAAAAAAAAAA
ABBBBBBBBBBBBBBA
ABBBBBBBBBBBBBBA
ABBBBBBBBBBBBBBA
AAAAAAAAAAAAAAAA
(количество строк вводит пользователь, ширина прямоугольника в два раза больше высоты)

25) Дано число k. Определите, существует ли такое число n, что 1+2+3+...+n=k.

Задачи на логику (тип Boolean)

 

26) Петя решил поступить в ВУЗ и послал домой три сообщения:

1) Если я сдам математику, то физику я сдам только при условии, что не 

     завалю сочинение.

2) Не может быть, чтобы я завалил и сочинение и математику.

3) Физику я по любому завалю если получу двойку по сочинению.

 

После сдачи экзаменов оказалось, что из трех сообщений Пети только одно было ложным. Как Петя сдал экзамены?

 

Ответ для самопроверки: ни сдал ни один предмет. Все предметы «завалил»

 

27) Совершено убийство. Подозреваемые: Браун, Джон, Смит. Один из них 

      брат убитого, другой – сосед, а третий случайный знакомый. Каждый из

      них сказал:

Браун: Если не я, ни Джон невиновны, то и Смит тоже невиновен

Смит: Чтобы обвинить меня и Брауна, достаточно признать Джона невиновным. Но Джон виновен! Значит нельзя считать, что ни я, ни Браун невиновны;

Джон: Если меня сочтут виновным, то Смиту удаться оправдаться только тогда, когда оправдается Браун. Но виновен либо Смит, либо Браун. А я невиновен.

Следователь сказал, что правду сказал только брат убитого, а остальные солгали. Кто убийца?

Ответ для самоконтроля: Джон

Работа со строками

26)  Дан текст. Преобразовать первую букву каждого слова в предложении в заглавную.

27)  Оставить в данном слове из каждого набора одинаковых букв, идущих подряд, только одну букву.

28)  Проверить, является ли одно из двух слов частью другого.

29)  Определить возможность составления одного данного слова из букв другого данного слова.

30)  Подсчитать количество слов в предложении, учитывая, что между словами может быть несколько пробелов. Слова могут разделяться точками, запятыми, тире.

31)  Из заданной строки получить новую, удалив все звездочки ("*") и удвоив каждый символ, отличный от звездочки.

32)   В тексте все слова разделены пробелами. Напечатать слова, отличные от слова "hello".

33)  Составить программу шифровки введенной с клавиатуры строки путем замены символов на символы с кодом, большим на три единицы.  Провести дешифровку.

34)  Среди 5 предложений найти то, которое содержит наибольшее количество разных букв.

35) Вывести англ. алфавит по 5 букв в строке.

36) Вывести квадрат 7 на 7 из случайных букв.

37) Дана строка. Вставить после каждого символа два случайных символа.

38) Строка состоит из слов, разделенных одним или несколькими пробелами. Поменяйте местами наибольшее по длине слово и наименьшее.

39) Даны два предложения. Для каждого слова первого предложения определите количество его вхождений во второе предложение.

40) Строка состоит из слов, разделенных одним или несколькими пробелами. Переставьте слова в алфавитном порядке.

41) Строка состоит из слов, разделенных одним или несколькими пробелами. Переставьте слова по убыванию их длин.

42) Написать программу, которая осуществляет сравнение двух строк.

43) Даны три предложения. Определить самое длинное из слов

Массивы

44)  Определить массив кубов первых ста натуральных чисел и распечатать его в виде матрицы 10х10.  Элементы главной диагонали матрицы выводить красным цветом.

45)  Определить массив  Y=sin(X2 ) – cosX , где X=0, 0.2, 0.4, ...60.  Распечатать в 10 колонок с заголовками сначала номера отрицательных элементов массива,  а затем положительных. После таблицы вывести значения  Y_min  и  Y_max.

46)  Вывести на экран таблицу значений  х  и у  в три пары колонок, а также наибольшее и наименьшее значения функции  у=sin(x)+x3  и соответствующие им значения  х.

47)  Дана непустая последовательность различных натуральных чисел, за которой следует 0. Определить порядковый номер наименьшего из них.

48)  Даны целое n > 0 и последовательность из n вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности.

49)  Дано n вещественных чисел. Вычислить разность между максимальным и минимальным из них.

50)  Определить, является ли данный массив упорядоченным по убыванию, по убыванию или не упорядоченным совсем.

51)  Исключить из массива все положительные числа путем сдвига элементов влево.

52)  Вычислить произведение элементов массива до первого отрицательного (при наличии отрицательного элемента).

53)  Определить второй по величине элемент массива.

54)  Определить количество разных элементов массива А[n].

55)  Создать вектор из случайных чисел. Рассчитать сколько элементов больше и сколько меньше числа введенного с клавиатуры.

56)  Дано n целых чисел. Определить, сколько из них принимает значение больше m, где m - вводится с клавиатуры.

57)  Исключить все нули со сдвигом элементов таблицы.

58)  Дан двумерный массив. Найти номер строки, где больше всего нулей.

59) В двухмерном массиве из случайных чисел размера M на М. Заменять
       столбец n на столбец m, где n, m вводятся с клавиатуры.

60) В квадратной матрице из случайных чисел размера M на N и повернуть полученную матрицу на 90 градусов по часовой стрелке.

61) Переставить элементы массива в обратном порядке.

62) Даны n целых чисел. Расставить между ними знаки «+» и «-» так, чтобы значение получившегося выражения было равно заданному целому s.

63) Вывести элементы числового массива, которые меньше, чем элементы, стоящие перед ними

Файлы

64) Дан текстовый файл, содержащий целые числа. Удалить из него все четные числа.

65) В данном текстовом файле удалить все слова, которые содержат хотя бы одну цифру.

66) Дан текстовый файл. Создать новый файл, каждая строка которого получается из соответствующей строки исходного файла перестановкой слов в обратном порядке.

67) Дан текстовый файл. Создать новый файл, состоящий из тех строк исходного файла, из чисел которых можно составить арифметическую прогрессию.

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

69) Создать и заполнить файл случайными целыми значениями. Выполнить сортировку содержимого файла по возрастанию.

70) Cоздать типизированный файл записей со сведениями о телефонах абонентов; каждая запись имеет поля: фамилия абонента, год установки телефона, номер телефона. По заданной фамилии абонента выдать номера его телефонов. Определить количество установленных телефонов с N-го года.

71) В текстовый файл занесены пары чисел, разделенных пробелом (каждая пара чисел – в новой строке). Рассматривая каждую пару как координаты точек на плоскости, найти наибольшее и наименьшее расстояния между этими точками.

72) Имеется файл с текстом. Осуществить шифрование данного текста в новый файл путем записи текста в матрицу символов по строкам, а затем чтение символов из этой матрицы по столбцам. Осуществить расшифровку полученного текста.

73) Создать программу, переписывающую в текстовый файл g содержимое файла f, исключая пустые строки, а остальные дополнить справа пробелами или ограничить до n символов.

74) В файле, содержащем фамилии студентов и их оценки, изменить на прописные буквы фамилии тех студентов, которые имеют средний балл за национальной шкалой более «4».

75) Из текстового файла удалить все слова, содержащие от трех до пяти символов, но при этом из каждой строки должно быть удалено только четное количество таких слов.

76) Получить файл g, состоящий из строк файла f, содержащих заданную строку S. Предусмотреть случай, когда строка размещается в двух строках файла «с переносом».

77) Получить файл g, в котором текст выровнен по правому краю путем равномерного добавления пробелов.

78) Из текста программы выбрать все числа (целые и вещественные) и записать их в файл g в виде: число 1 – номер строки, число 2 – номер строки и так далее.

79) Определить, симметричен ли заданный во входном файле текст.

80) Текстовый файл содержит записи о телефонах и их владельцах. Переписать в другой файл телефоны тех владельцев, фамилии которых начинаются с букв К и С.

81) Текстовый файл содержит квадратную матрицу, которая записана по принципу: одна строка файла – одна строка матрицы. Необходимо построить двухмерный массив и вывести на экран исходную матрицу и результат ее транспонирования.

82) Текстовый файл содержит квадратную матрицу, которая записана по принципу: одна строка – один элемент матрицы. Необходимо определить размерность матрицы и построить двухмерный массив. Вывести на экран исходную матрицу и результат ее поворота на 90º по часовой стрелке.

83) Данные о планшетном сканеры состоят из наименования модели, цены, оптического разрешения, числа градаций серого, горизонтальный и вертикальный размеры области сканирования. Написать функцию, которая записывает в бинарный файл данные о сканере из приведенной структуры. Структура файла: в первых двух байтах размещается значение типа int, определяющее количество сделанных в файл записей; далее без пропусков размещаются записи о сканерах. Написать функцию, которая извлекает из этого файла данные о сканере в структуру типа scaninfo. Обязательный параметр — номер требуемой записи. Функция должна возвращать нулевое значение, если чтение прошло успешно, и -1 в противном случае.

84) Дан текстовый файл со статистикой посещения сайта за неделю. Каждая строка содержит ip адрес, время и название дня недели (например, 139.18.150.126 23:12:44 sunday). Создайте новый текстовый файл, который бы содержал список ip без повторений из первого файла. Для каждого ip укажите количество посещений в неделю, наиболее популярный день недели, наиболее популярный отрезок времени длиной в один час. Последней строкой в файле добавьте наиболее популярный отрезок времени в сутках длиной один час в целом для сайта.

85) В текстовом файле записан текст, сбалансированный по круглым скобкам. Требуется для каждой пары соответствующих открывающей и закрывающей скобок вывести номера позиций в тексте, упорядочив пары номеров в порядке возрастания номеров позиций открывающих скобок.

86) В файле содержится совокупность текстовых строк. Изменить первую букву каждого слова на заглавную.

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

88) Даны дан файл с текстом и слово. Внедрить слово в файл так, чтобы не был заметен сам факт внедрения (после самостоятельных попыток решения ищите материал по теме "стеганография" и реализуйте классические алгоритмы).

89) В файле содержится текстовая строка. Определить частоту повторяемости каждой буквы в тексте и вывести ее.

90) База данных heap.dat. Структура записей:  номер изделия, наименование изделия, количество изделий, цена 1 изделия, стоимость. Обработка следующих запросов: - по номеру изделия выдать справку о наличии его на складе; - выдать общую стоимость всех изделий, хранящихся на складе -  выдать список всех изделий c номерами  в заданном интервале; - найти изделие с самой большой ценой. - выдать список изделий на складе, наименование которых начинается с заданной буквы.

91) В базе bus.dat хранятся записи, содержащие: номер маршрута, начало маршрута, конец маршрута, тип автобуса, количество автобусов на линии, номер автобазы. Обеспечить выдачу следующих справок: -  определить общее число городских автобусов; -  по номеру автобуса определить его маршрут; -  выдать список номеров автобусов, маршруты которых проходят через заданный пункт; -  выдать список маршрутов, которые обслуживает автобаза с указанным номером.