лаб.работы на Pascal

Ответить
Аватара пользователя
nika|tin
Сообщения: 1
Зарегистрирован: 15 сен 2007, 20:06

15 сен 2007, 20:35

Здравствуйте, помогите пожалуйста сделать лабораторные работы на Pascal. Всему буду рада, любому совету.

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

17 сен 2007, 11:17

&quot писал(а):№1. (Все вычисления производить только посредством арифметических операций, процедур и функций для работы с целыми и вещественными типами данных.) Даны целые числа N и M. Найти на интервале <от меньшего из них до большего из них> все целые числа, модули которых являются кубами целых чисел.
Найти минимальное и максимальное. Из обоих извлекаем корень кубический, т.е. возводим в степень 1/3, получим два числа А и В. Меньшее округляем в большую сторону до целого числа, большее - наоборот. В цикле от А до В включительно перебираем числа и возводим их в куб. Они и будут являтся ответом.
It's a long way to the top if you wanna rock'n'roll
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

17 сен 2007, 13:11

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

17 сен 2007, 13:36

&quot писал(а):№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 совпадают.
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

17 сен 2007, 17:08

№3, №4, №5 - все можно найти в этом разделе
It's a long way to the top if you wanna rock'n'roll
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

18 сен 2007, 10:46

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

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

somewhere писал(а):Окружности пересекуццо, если расстояние 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)

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