PDA

Просмотр полной версии : лаб.работы на Pascal



nika|tin
15.09.2007, 20:35
Здравствуйте, помогите пожалуйста сделать лабораторные работы на Pascal. Всему буду рада, любому совету.

№1. (Все вычисления производить только посредством арифметических операций, процедур и функций для работы с целыми и вещественными типами данных.) Даны целые числа N и M. Найти на интервале <от меньшего из них до большего из них> все целые числа, модули которых являются кубами целых чисел.
№2. Даны две окружности одинакового радиуса R, заданные координатами их центров (X1,Y1),(X2,Y2) – целыми числами. Определить, пересекаются ли они, в этом случае вычислить координаты (вещественные числа) точек их пересечения.
№3. ( Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и выводит результат на дисплей в виде строки. Длина строки заранее не вводится, а определяется после окончания ввода с клавиатуры.
) Группы символов, состоящие только из латинских букв, если в них есть повторяющиеся буквы.
№4. (Ввести произвольную размерность квадратной матрицы в интервале 1..10.
Предложить ввод данных (чисел целого типа) двумя способами: 1. Через датчик случайных чисел на интервале -100..100. 2. С клавиатуры в виде «Х[i],[j]=», где i и j – числа, соответствующие номеру строки и столбца. После окончания ввода данных вывести на экран матрицу в отформатированном виде по строкам и столбцам) Найти среднее арифметическое из всех положительных элементов этой матрицы, если они кратны 3.
№5. (Ввести с клавиатуры произвольное имя текстового файла. Найти на жестком диске компьютера все файлы с заданным именем, поочередно вывести на экран их содержимое. Если ни одного файла не найдено, выдать сообщение. Выполнить обработку каждого найденного файла в соответствии с заданием в варианте. Создать текстовый файл с именем программы, в который записать результаты выполнения программы, т.е. продублировать вывод информации на экран и в текстовый файл. Этот файл перезаписывать при каждом запуске программы.) Подсчитать количество строк в файле.

somewhere
17.09.2007, 11:17
№1. (Все вычисления производить только посредством арифметических операций, процедур и функций для работы с целыми и вещественными типами данных.) Даны целые числа N и M. Найти на интервале <от меньшего из них до большего из них> все целые числа, модули которых являются кубами целых чисел.
Найти минимальное и максимальное. Из обоих извлекаем корень кубический, т.е. возводим в степень 1/3, получим два числа А и В. Меньшее округляем в большую сторону до целого числа, большее - наоборот. В цикле от А до В включительно перебираем числа и возводим их в куб. Они и будут являтся ответом.

Хыиуду
17.09.2007, 13:11
2. sqrt(sqr(x2-x1)+sqr(y2-y1))>2*R - если выполняется это условие, то пересекаются. В каких точках - надо копать в направлении матана и начал анализа, уравнений перпендикулярных прямых.
3. Разбиение строки на слова - см. раздел "Алгоритмы". Далее для каждого найденного слова s
for i:=1 to length(s):
if not ((s[i] in ['a'..'z']) or (s[i] in ['A'..'Z']))
then break; {Это слово состоит не только из латинских букв, она отбрасывается}
Дальше - непонятно, что подразумевается под повторяющимися буквами: две одинаковые буквы подряд или в пределах слова.

somewhere
17.09.2007, 13:36
№2. Даны две окружности одинакового радиуса R, заданные координатами их центров (X1,Y1),(X2,Y2) – целыми числами. Определить, пересекаются ли они, в этом случае вычислить координаты (вещественные числа) точек их пересечения.
Окружности пересекуццо, если расстояние D между центрами <=2R. Точки пересечения будут расположены на линии, перпендикулярной той, которая соединяет два центра. Более того, перпендикуляр будет делить соединяющий центры отрезок O1O2 пополам. Отсюда по теореме Пифагора считаем расстояние от центра отрезка до точек пересечения окружностей p = Sqrt(R^2 - (D^2)/4).
Координаты середины O1O2:
Xp = (X2-X1)/2
Yp = (Y2-Y1)/2
Далее считаем угол под каким O1O2 расположен к оси OX:
sin(a) = (X2 - X1)/D
поскольку имеем дело с перпендикуляром, то относительно середины O1O2
Xp1 = Xp + p * cos(a)
Yp1 = Yp + p * sin(a)
координаты второй точки
Xp2 = Xp - p * cos(a)
Yp2 = Yp - p * sin(a)
при D = 2R середина O1O2 совпадает с точкой пересечения, p = 0 по формуле, p1 и p2 совпадают.

somewhere
17.09.2007, 17:08
№3, №4, №5 - все можно найти в этом разделе

BBB
18.09.2007, 10:46
2. sqrt(sqr(x2-x1)+sqr(y2-y1))>2*R - если выполняется это условие, то пересекаются. В каких точках - надо копать в направлении матана и начал анализа, уравнений перпендикулярных прямых.Все-таки, равенство там будет в другую сторону :)

sqrt(sqr(x2-x1)+sqr(y2-y1))<=2*R - если выполняется это условие, то пересекаются



Окружности пересекуццо, если расстояние D между центрами <=2R. Точки пересечения будут расположены на линии, перпендикулярной той, которая соединяет два центра. Более того, перпендикуляр будет делить соединяющий центры отрезок O1O2 пополам. Отсюда по теореме Пифагора считаем расстояние от центра отрезка до точек пересечения окружностей p = Sqrt(R^2 - (D^2)/4).А если пойти другим путем? Собственно, точки (или одна точка, если окружности касаются) пересечения, это точки(а), принадлежащие(ая) обеим окружностям.
Зная координаты точек центра и радиусы (кстати, для общего случая можно и не считать их равными), можно составить уравнение окружностей:

sqr(x - X1) + sqr(y - Y1) = sqr(R1)
sqr(x - X2) + sqr(y - Y2) = sqr(R2)

То есть, задача нахождения нахождения точек пересечения сводится к решению системы двух уравнений второй степени.