Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
Member
Статус: Не в сети Регистрация: 18.05.2005 Откуда: Kiev, Ukraine
в техникуме начали учить Turbo Pascal, и задали лабу на дом, но поскольку тему эту очень плохо обьяснили и не дали примеров решения задач, то прошу у вас помощи разобратся в элементариной задачке и составить алгоритм:
Решить выражение:
y=1/(cos3x+sin2x)+sin(pi+x), где x=a*a+b, при a=0.42 и b=0.87,
вывести на экран у. общее поле 8 символов, после запятой 6.
Вот что у меня вышло:
Код:
program lab16; var a,b,x:real; begin a:=0.42; b:=0.87; x:=sqr(a)+b; write('x=',x:8:6); end
Member
Статус: Не в сети Регистрация: 18.05.2005 Откуда: Kiev, Ukraine
Lord_of_Darkness да до этого я и сам могу додуматся, а вот как и где это все прописать - вот этого я не знаю...
Вот что получилось, но оно не работает:
Код:
program lab16; var a,b,x,y:real; begin a:=0.42; b:=0.87; x:=sqr(a)+b; write('x=',x:8:6); begin const pi:=3.14; y:=1/cos(3*x)+sin(pi+x); write('y=',y:8:6); end.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Jak
Код:
program lab16; var a,b,x,y:real; begin a:=0.42; b:=0.87; x:=sqr(a)+b; write('x=',x:8:6); y:=1/cos(3*x)+sin(pi+x); write('y=',y:8:6); end.
pi - предопределенная константа, уже имеющаяся в паскале, поэтому переопределить ее не получится.
ЗЫ если уж хочется использовать свою константу, то определяй ее до основного блока программы, а еще лучше до определения переменных (var), так будет правильнее. И имя ей другое дай, к примеру my_pi.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Помогите решить задачу плиз
Заданы массивы x={x1 x2 x3}y={y1 y2 y3}z={z1 z2 z3} p={p1 p2 p3 p4} Вычислить скалярное произведение s2 массивов z и p. Переменной а присвоить значение по формуле а=1 если s1>s2 а=0 если s1=s2 а=-1 если s1<s2 Вычисление скалярного произведения оформить в виде подпрограммы типа Function
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
coyc сдается мне ты пропустил кусок задания и там надо еще вычислить s1 - скалярное произведение х и у.
и массив p должен состоять из 3х элементов, иначе придется писать две функции, считающие скалярное произведение.
Код:
uses crt;
function Scalar(a,b: array [1..3] of real): real; var i: integer; tmp: real; begin tmp:=0; for i:=1 to 3 do tmp:=tmp+a[i]*b[i]; Scalar:=tmp; end;
var x, y, z, p: array [1..3] of real; s1, s2: real; a, i: integer;
begin for i:=1 to 3 do begin write('x[',i,']= '); readln(x[i]); write('y[',i,']= '); readln(y[i]); write('y[',i,']= '); readln(y[i]); write('z[',i,']= '); readln(z[i]); write('p[',i,']= '); readln(p[i]); end;
s1:=Scalar(x,y); s2:=Scalar(z,p); if s1>s2 then a:=1 else if s1=s2 then a:=0 else a:=-1;
Member
Статус: Не в сети Регистрация: 13.04.2004 Откуда: Томск
народ, что делать*
Код:
type seria = file of integer; var f:seria; function max(f:seria):integer;
компилятор выдает ошибку
Цитата:
126 Files must be var parameters - Файлы должны быть var-параметрами (Вы пытаетесь объявить параметр файлового типа. Параметры файлого типа должны быть переменными (var) параметрами)
Так она вроде и так переменная...
_________________ Аннигиляция уничтожит всех. За капитуляцией последует падение власти.
Member
Статус: Не в сети Регистрация: 02.05.2006 Откуда: Раковка
Хто нибудь поможет решить пару задачек:
1) Дана матрица A(n,m). Определить k - количество "особых" элементов массива А, считая элемент особым, если в его строке слева от него находиться элементы меньше его, а справа - больше.
2) В одномерном массиве A(n) все элементы не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы - в конец массива (новый массив не задавать).
for i:=1 to n do for j:=1 to m do begin write('A[',i,',',j,'] = '); readln(A[i,j]); end;
{ A[i,j] := random(10);}
for i:=1 to n do begin for j:=1 to m do begin { A[i,j] := random(10);} write(A[i,j],' '); end; writeln; end;
k := 0;
for i:=1 to n do for j:=2 to m-1 do begin MinFlag := false; MaxFlag := false; for l:=1 to m do begin if l<j then if A[i,l]<A[i,j] then MinFlag := true else begin MinFlag := false; break; end; if l>j then if A[i,l]>A[i,j] then MaxFlag := true else begin MaxFlag := false; break; end; end;
if MinFlag and MaxFlag then inc(k);
end;
writeln; write('k = ',k);
readln; end.
№2
Код:
uses crt; var length, i, tmp, k : integer; A: array [1..100] of integer; flag : boolean; begin clrscr; write('Array length = '); readln(length); for i:=1 to length do begin write('A[',i,'] = '); readln(A[i]); end;
for i:=1 to length do begin write(A[i]); end;
i:=1; k:=0; flag := false; repeat if (A[i] = 0) and (A[i+1] <> 0) then begin tmp := A[i]; A[i] := A[i+1]; A[i+1] := tmp; inc(k); end; inc(i); if i >= (length-1) then begin i:=1; if k=0 then flag := true; k := 0; end; until flag;
writeln; writeln('result : ');
for i:=1 to length do begin write(A[i]); end;
readln; end.
Nicl так ты траекторию считаешь не правильно. У тебя скорость постоянная, а, как я понял, надо нарисовать дугу, т.е. снаряд вылетает из пушки с определенной скоростью, с течением времени его вертикальная проекция скорости уменьшается, потом на какой то момент становится нулевой, а после становится отрицательной (он падает). Так?
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Последний раз редактировалось Lord_of_Darkness 03.05.2006 14:30, всего редактировалось 1 раз.
Member
Статус: Не в сети Регистрация: 19.08.2005 Откуда: СПб
Вот возникла проблемка с программой.
Суть:
1) 2 пересекающиеся линии, при нажатии кнопок "Вверх" "Вниз "Влево" "Вправо" на клавиатуре они перемещаются.
2)При нажатии L на перекрестье линий рисуется круг.
3)Внизу рисуются круги разных цветов(ака лампочки).
4)На экране случайно возникают окружности, в них нужно попасть кругом(L), после чего они исчезнают.
5)После уничтожения 5 окружностей появляется надпись "Вы победили"
6)Возможен выход при нажатии 0(нуль)
Проблема: все действия происходят только после нажатия клавиши. К сожалению, идей по переделке нет.
Исходник(6 кб): http://cp.people.overclockers.ru/cgi-bi ... e=prog.txt
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения