![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Анка |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 21 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата 1. Даны две последовательности a1 ≤ a2 ≤ ... ≤ аn и b1 ≤ b2 ≤ ... ≤ bn. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей (дополнительный массив не использовать). 2. Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-ой строки (1 ≤ k ≤ М). 3. Реализовать набор подпрограмм для выполнения следующих операций над векторами: а) сложение; б) вычитание; в) скалярное умножение векторов; г) умножение вектора на число; д) нахождение длины вектора. 1) Дан массив A – массив векторов. Отсортировать его в порядке убывания длин векторов. 2) С помощью датчика случайных чисел сгенерировать 2N целых чисел. N пар этих чисел задают N точек координатной плоскости. Вывести номера тройки точек, которые являются координатами вершин треугольника с наибольшим углом. 4. Дана строка, содержащая произвольный текст. Выяснить чего в нем больше: русских букв или цифр. Мало того, что мне нужно решить все эти задачи, но мне еще нужно объединить их одним меню (хотя это я сделала). Причек все это надо реализовать с выбором способа ввода - с клавы, из файла или случайная генерация. Из-за практики появилось много вопросов. Может кто-нибудь поможет? 1. Не могу решить 1 задачу... что-то не получается... ввести ввожу, а вот дальше... тоже самое обстоит со второй... 2. не понимаю, как можно реализовать 2 пункт в 3 задаче...... просто даже толком не понятно, что нужно... ну пока вроде всё... ![]() -------------------- девушка - программистка..... правда я еще только учусь.... :-))
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Насчет операций с векторами -
Код Type TVector = Record X, Y: Real; End; Procedure VAdd(Var a: TVector; b, c: TVector); Begin a.X := b.X + c.X; a.Y := b.Y + c.Y; End; Procedure VSub(Var a: TVector; b, c: TVector); Begin a.X := b.X - c.X; a.Y := b.Y - c.Y; End; Procedure VScale(Var a: TVector; b: TVector; k: Real); Begin a.X := b.X * k; a.Y := b.Y * k; End; { Это - скалярное произведение векторов } Function VDot(a, b: TVector): Real; Begin VDot := a.X * b.X + a.Y * b.Y; End; { Длина вектора } Function VLength(a: TVector): Real; Begin VLength := Sqrt(sqr(a.X) + sqr(a.Y)); End; Можно немного оптимизировать (для большего количества элементов вектора, чтобы не считать все вручную)... Если нужно - говори, я покажу как... Добавлено: Вот пример сортировки массива векторов... Код Type TVector = Record X, Y: Real; End; Function VLength(a: TVector): Real; Begin VLength := Sqrt(sqr(a.X) + sqr(a.Y)); End; const size = 10; type arrType = Array[1 .. size] Of TVector; Procedure Bubble(Var ar: arrType; n: integer); Var i, j: Integer; T: TVector; Begin For i := 1 To n Do For j := n DownTo i+1 Do If VLength(ar[Pred(j)]) > VLength(ar[j]) Then Begin { < } T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T End End; Procedure GetVector(Var v: TVector); Begin With v Do Begin Write('X='); ReadLn(X); Write('Y='); ReadLn(Y); End; End; Procedure PrintVector(v: TVector); Begin With v Do WriteLn('X:',X:10:5,' Y:',Y:10:5) End; Var A: arrType; i: Integer; begin For i := 1 To size Do GetVector(A[i]); { Вводим все вектора } { Сортируем } Bubble(A, size); For i := 1 To size Do PrintVector(A[i]); { Печатаем массив векторов } end. |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 0:16 |