Народ, помогите пожалуйста решить задачи по QBASIK!!!!( помогите составить программу) - вопрос №27765

1) Первая задача.

Тема Массивы!

/>/>/>

<span -x-system-font:="" font-size-adjust:="" font-size:="" font-stretch:="" font-style:="" font-variant:="" font-weight:="" line-height:="" new="" roman="" style="" times="">     

Проверить, что точки A(a1,......,an),B(b1,......,bn),C(c1,.....,cn), D(d1,.....dn)  являются вершинами параллелограмма, трапеции или ромба.

/>/>/>2)Вторая задача    ( тема ряды)

arcsin(x)= x + ((1/2) * (x^3/3)) + (((1*3)/((2^2)*2!)) * ((x^5)/5)) + (((1*3*5)/((2^3)*3!))*((x^7)/7)) + ...................

/an/ < E   ( A n-ное меньше Е)
 /x/ < 1

/>(взяв х=1/2, можно подсчитать ПИ)

3) Третья задача

/>Найти минимальный среди положительных элементов матрицы 6х5, лежащих слева от четвертого столбца, и произведениенеотрицательных элементов в остальной части матрицы

 

Кто может помогите....!!!!!

                               

Ответы

'Задача 1
REM Проверить что точки A(a1,a2,...,an),B(b1,b2,...,bn),C(c1,c2,...,cn),D(d1,d2,...,dn),
REM являются вершинами параллелограмма, трапеции либо ромба
REM Будем доказывать исходя из параллельности сторон,
REM если две из сторон параллельны значит это одна из указанных фигур
REM Параллельность проверяем исходя из представления в виде векторов
REM Впоследствии вычисляя углы характеризуем фигуру более точно

REM Точность, с фиксированной запятой, очень точно не считается это не FORTRAN
REM Надо быть внимательным возможны ошибки связанные с округлением и приведением типов
E = 10000

INPUT "Введите n: ", n

IF n < 2 THEN
PRINT "n должно быть не меньше 2"
END
END IF


REM Координаты точек
DIM a(1 TO n)
DIM B(1 TO n)
DIM C(1 TO n)
DIM D(1 TO n)

REM Вектора
DIM VBA(1 TO n)
DIM VAB(1 TO n)
DIM VCA(1 TO n)
DIM VAC(1 TO n)
DIM VDA(1 TO n)
DIM VAD(1 TO n)
DIM VDC(1 TO n)
DIM VDB(1 TO n)
DIM VCB(1 TO n)

REM Длины векторов
MODVBA = 0
MODVCA = 0
MODVDA = 0
MODVDC = 0
MODVDB = 0
MODVCB = 0

FOR I = 1 TO n
PRINT "Введите координату"; I; "точки A:";
INPUT " ", a(I)
NEXT

FOR I = 1 TO n
PRINT "Введите координату"; I; "точки B:";
INPUT " ", B(I)
VBA(I) = B(I) — a(I)
VAB(I) = a(I) — B(I)
MODVBA = MODVBA + VBA(I) ^ 2
NEXT
MODVBA = SQR(MODVBA)

FOR I = 1 TO n
PRINT "Введите координату"; I; "точки C:";
INPUT " ", C(I)
VCB(I) = C(I) — B(I)
MODVCB = MODVCB + VCB(I) ^ 2
VCA(I) = C(I) — a(I)
VAC(I) = a(I) — C(I)
MODVCA = MODVCA + VCA(I) ^ 2
NEXT
MODVCB = SQR(MODVCB)
MODVCA = SQR(MODVCA)

FOR I = 1 TO n
PRINT "Введите координату"; I; "точки D:";
INPUT " ", D(I)
VDC(I) = D(I) — C(I)
MODVDC = MODVDC + VDC(I) ^ 2
VDB(I) = D(I) — B(I)
MODVDB = MODVDB + VDB(I) ^ 2
VDA(I) = D(I) — a(I)
VAD(I) = a(I) — D(I)
MODVDA = MODVDA + VDA(I) ^ 2
NEXT
MODVDC = SQR(MODVDC)
MODVDB = SQR(MODVDB)
MODVDA = SQR(MODVDA)

REM Флаги
FBADC = 0
FCADB = 0
FDACB = 0
FBACA = 0
FBADA = 0
FCADA = 0

PRINT

FOR I = 1 TO n

REM Проверим стороны AB и CD
FVBA = VBA(I) / MODVBA
FVAB = VAB(I) / MODVBA
FVDC = VDC(I) / MODVDC
IF FIX(FVBA * E) <> FIX(FVDC * E) THEN FBADC = 1
IF FIX(FVAB * E) <> FIX(FVDC * E) THEN FABDC = 1

REM Проверим стороны AC и BD
FVCA = VCA(I) / MODVCA
FVAC = VAC(I) / MODVCA
FVDB = VDB(I) / MODVDB
IF FIX(FVCA * E) <> FIX(FVDB * E) THEN FCADB = 1
IF FIX(FVAC * E) <> FIX(FVDB * E) THEN FACDB = 1

REM Проверим стороны AD и BC
FVDA = VDA(I) / MODVDA
FVAD = VAD(I) / MODVDA
FVCB = VCB(I) / MODVCB
IF FIX(FVDA * E) <> FIX(FVCB * E) THEN FDACB = 1
IF FIX(FVAD * E) <> FIX(FVCB * E) THEN FADCB = 1
NEXT


F = (FBADC AND FABDC) + (FCADB AND FACDB) + (FDACB AND FADCB)

SELECT CASE F
CASE 1:
IF (FBADC AND FABDC) = 1 THEN
MTA = MODVCA
MTB = MODVDA
MTC = MODVDC
ELSE
IF (FCADB AND FACDB) = 1 THEN
MTA = MODVBA
MTB = MODVDA
MTC = MODVDB
ELSE
IF (FDACB AND FADCB) = 1 THEN
MTA = MODVBA
MTB = MODVCA
MTC = MODVCB
END IF
END IF
END IF

FSQ = 0
FEQ = 0

SQ = SQR(MTA ^ 2 + MTB ^ 2)

IF FIX(SQ * E) = FIX(MTC * E) THEN FSQ = 1
IF MTA = MTB THEN FEQ = 1

IF FEQ = 1 AND FSQ = 1 THEN
PRINT "Квадрат"
ELSE
IF FEQ = 1 AND FSQ = 0 THEN
PRINT "Ромб"
ELSE
IF FEQ = 0 AND FSQ = 1 THEN
PRINT "Прямоугольник"
ELSE
PRINT "Параллелограмм"
END IF
END IF
END IF

CASE 2: PRINT "Трапеция"
CASE ELSE: PRINT "Ни одна из фигур"
END SELECT

'Задача 2
REM Решить уравнение вида arcsin(x)
REM в разложении ряда Тейлора x + ((1/2) * (x^3/3)) + (((1*3)/((2^2)*2!)) * ((x^5)/5)) + (((1*3*5)/((2^3)*3!))*((x^7)/7)) + ...
REM Последний член в ряде должен быть меньше заданного числа E, при |x|<1

INPUT "Введите x,E ", x, E

IF x > -1 AND x < 1 THEN

ARCSIN = x

I = 1
DO

f1 = 1
FOR j = 1 TO I
f1 = f1 * j
NEXT

p1 = 1

FOR j = 1 TO I — 1
p1 = p1 * (j * 2 + 1)
NEXT

s1 = 2 ^ I
p2 = I * 2 + 1
s2 = x ^ p2


a = (p1 / (s1 * f1)) * (s2 / p2)

ARCSIN = ARCSIN + a

I = I + 1
LOOP WHILE a >= E

PRINT "Арксинус"; x; "="; ARCSIN

ELSE

PRINT "Неверные начальные условия"

END IF


'Задача 3
REM Найти минимальный среди положительных элементов матрицы 6x5,
REM лежащих слева от четвёртого столбца, и произведение неотрицательных
REM элементов в остальной части матрицы

n = 6
m = 5

DIM A(1 TO n, 1 TO m)

MUL = -1

FOR I = 1 TO n
FOR J = 1 TO m
PRINT "Элемент в строке"; I;
PRINT "и в столбце"; J; "-";
INPUT " ", A(I, J)
IF J > 3 AND A(I, J) >= 0 THEN
MUL = MUL * A(I, J)
IF MUL < 0 THEN MUL = MUL * -1
END IF
NEXT
NEXT

PRINT "Исходная матрица:"

MIN = A(1, 1)

FOR I = 1 TO n
FOR J = 1 TO m
PRINT A(I, J);
IF J < 4 AND A(I, J) > 0 THEN
IF MIN > A(I, J) OR MIN <= 0 THEN MIN = A(I, J)
END IF

NEXT
PRINT
NEXT

PRINT "Минимальный элемент среди положительных в левой части матрицы:";
IF MIN > 0 THEN PRINT MIN ELSE PRINT "нет"
PRINT "Произведение неотрицательных элементов в правой части матрицы:";
IF MUL >= 0 THEN PRINT MUL ELSE PRINT "нет"

24.10.10

Еva

Читать ответы

Юлия

Читать ответы

Татьяна

Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store