русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Решения задач


Дата добавления: 2014-11-28; просмотров: 909; Нарушение авторских прав


Задача 1.1

Для решения этой задачи необходимо знать, что 1 мегабайт=1024 килобайт, поэтому 6 мегабайт=6x1024=6144 килобайт. Обозначим t - время звучания композиции в секундах, v - объём файла композиции в килобайтах, тогда:
t=60*m+n, v=16*t.
Программа на Паскале будет иметь вид:

var m,n,t,v:integer;begin writeln('Введите m и n'); readln(m,n); t:=60*m+n; v:=16*t; if v<=6144 then writeln('Композиция поместится') else writeln('Не хватает ',v-6144,' килобайт');end.

Задача 1.2

Рассмотрим, как ходят фигуры: ферзь бьёт те поля (с координатами x, y ), которые находятся с ним на одной вертикали (x=x1), на одной горизонтали (y=y1), или на любой из диагоналей (|x - x1| = (|y - y1|). Конь за один ход переходит на два поля по одной координате и на одно поле по другой координате, то есть поля, которые он бьёт, определяются по правилу: либо |x - x2| = 2 и |y - y2|=1, либо |x - x2| = 1 и |y - y2| = 2. При решении нужно учитывать, что фигуры не могут угрожать друг другу одновременно, и может быть ситуация, когда фигуры вообще не угрожают друг другу.
Основная часть программы для данной задачи будет иметь следующий вид:

if (x1=x2)or(y1=y2)or(abs(x1-x2)=abs(y1-y2)) thenwriteln('Ферзь бьёт коня')else if (abs(x1-x2)=2)and(abs(y1-y2)=1)or (abs(x1-x2)=1)and(abs(y1-y2)=2) then writeln('Конь бьёт ферзя') else writeln('Фигуры не угрожают друг другу');

Задача 1.3

При решении учтите, что число рыбок должно быть целым числом. Например, в аквариуме объёмом 20,5 литров может жить 6 рыбок (а не 6,83333...). Функция выделения целой части числа x в Паскале - trunc(x).

Задача 1.4

При решении учтите, что если полторы курицы за полтора дня сносят полтора яйца, то одна курица за тот же срок (полтора дня) снесет одно яйцо. Например: 6 кур за 6 дней снесут 24 яйца.

Задача 1.5

Для решения этой задачи можно разделить число нацело N на 3 и рассмотреть остаток от деления. Существует три варианта: если остаток 0, то сумма выплачивается трехкопеечными монетами; если остаток 1 (наименьшее такое число 10), то необходимо убрать 3 монеты по 3 копейки и добавить 2 монеты по 5 копеек; если остаток от деления 2, то необходимо убрать 1 трёхкопеечную монету и добавить 1 монету достоинством 5 копеек. В Паскале операция деления нацело - div, операция вычисления остатка при делении целых чисел - mod.



Задача 1.10

При решении этой задачи необходимо воспользоваться тем условием, что a и b - числовые переменные, тогда поменять их местами можно, например, следующим образом:
a:=a+b;
b:=a-b;
a:=a-b;

Задача 2.1

Разделим N нацело на 5 и получим k - максимальное значение для y (т.е. 0<=y<=k). Организуем цикл по переменной y , и будем рассматривать значения разности N-5y. Если это число делится нацело на 3, то полученное частное и есть соответствующее значение x.
Соответствующая программа будет иметь вид:

var x,y,n,k:integer;begin writeln('Введите N'); readln(n); k:=n div 5; for y:=0 to k do if (N-5*y) mod 3=0 then begin x:=(N-5*y) div 3; writeln('x=',x,' y=',y); end;end.

Задача 2.3

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

var n,i:integer; p: real;begin readln(n); p:=1; for i:=1 to n do p:=p*i; writeln(n,'!=',p:1:0);

end.

Значение факториала накапливается в этой программе в переменной p. Особенность оператора цикла for i:=1 to n do … в том, что если n меньше начального значения i (в данном случае 1), то тело цикла не выполнится ни разу. Поэтому проверять условие, что n>0 не имеет смысла, так как значение p в этом случае останется равным 1. Для переменной p выбран вещественный тип real, так как функция факториал очень быстро растет (формат печати :1:0 означает, что будет печататься только целая часть числа). На основе этой программы легко написать программу, вычисляющую . Вычисление факториала удобно при этом офрмить в виде подпрограммы.

Задача 2.4

При решении учтите, что число 0 не относится ни к отрицательным, ни к положительным числам.

Задача 2.8

Обозначим: k - номер рейса судна, i - номер очередного груза, s - масса груза на судне в k-том рейсе. Решать задачу будем так: если на судно в k-том рейсе можно поместить ещё один груз, то мы грузим его и берём следующий, если груз не может быть размещен, то перевозим его следующим рейсом (увеличиваем k).
Основная часть соответствующей программы будет иметь вид:

k:=1; i:=1; s:=0;repeat if s+m[i]<=50 then begin s:=s+m[i]; i:=i+1; end else begin k:=k+1; s:=0; end;until i>15;writeln('Всего потребовалось', k,' рейсов');

Задача 2.10

Вычисление непрерывных радикалов производится в цикле, начиная от внутреннего радикала. В данной задаче начальное значение . Каждое следующее значение радикала будет вычисляться через предыдущее значение радикала по формуле , число изменяется от начального значения 5 до конечного значения 98 с шагом 3.
Программа для вычисления R будет иметь вид:

var r,a:real;begin r:=sqrt(2); a:=5; while a<=98 do begin r:=sqrt(a+r); a:=a+3; end; writeln('R=',r);end.

Вычисленное по данной программе значение .

Задача 2.11

Вычисление непрерывных дробей производится снизу вверх, начиная от последней. Значение Q 0.69777.

Задача 2.13

На каждом шаге данного алгоритма приходится разбивать целое число на отдельные цифры (причем количество цифр в числе неизвестно). Это можно выполнить, используя операции целочисленной арифметики (деления нацело - div и остатка от деления - mod). Процесс вычисления очередного члена последовательности p через предыдущий в рассматриваемой задаче будет иметь следующий вид (s и p1 - рабочие переменные, t - очередная цифра числа):

s:=0; p1:=p;while p1<>0 dobegin t:=p1 mod 10; p1:=p1 div 10; s:=s+t*t*t;end;p:=s;

Задача 2.18

Любое целое четырехзначное число можно представить в виде:
(a, b, c, d - цифры числа, причем a 0).
Например: 1742=1*1000+7*100+4*10+2.
То, что цифры числа не должны совпадать, можно записать на Паскале в виде условия:
(a<>b)and(a<>c)and(a<>d)and(b<>c)and(b<>d)and(c<>d).
Условие на разность чисел, составленных из цифр числа:
a*10+b-(c*10+d)=a+b+c+d.
Тогда выполняемая часть программы будет иметь вид:

for a:=1 to 9 dofor b:=0 to 9 dofor c:=0 to 9 dofor d:=0 to 9 doif (a<>b)and(a<>c)and(a<>d)and(b<>c)and(b<>d)and(c<>d)and(a*10+b-(c*10+d)=a+b+c+d)then writeln(a*1000+b*100+c*10+d);

Задача 2.20

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

Пусть n - число вершин, X(n), Y(n) - массивы, содержащие координаты вершин, тогда основная часть программы для вычисления площади многоугольника будет иметь вид:

s:=0;for i:=3 to n dos:=s+0.5*abs((x[i-1]-x[1])*(y[i]-y[1])- (x[i]-x[1])*(y[i-1]-y[1]));writeln('Площадь многоугольника s=',s);

Задача 2.21

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


Задача 2.22

Для решения задачи можно создать массив D(12), каждый элемент которого - число дней в соответствующем месяце.

Задача 2.24

Пусть i - номер дня в октябре месяце. Так как 1 октября среда, то 4 и 5 октября будут соответственно суббота и воскресенье. Соответственно, субботами и воскресеньями будут все те дни, которые отличаются от 4 и 5 на целое число недель. Субботами будут дни с такими номерами i, что остаток от деления на 7 равен 4 (i mod 7 = 4), воскресеньями - дни с номерами i, для которых i mod 7 =5.



<== предыдущая лекция | следующая лекция ==>
Числа и числовые последовательности. | Задачи с использованием строкового типа данных.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.