Часовой пояс: UTC + 3 часа




Куратор(ы):   Lord_of_Darkness   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 15 из 50<  1 ... 12  13  14  15  16  17  18 ... 50  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Убедительная просьба ко всем, кто выкладывает исходники:
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


Но как делать дальше я без понятия


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Jak
Код:
y:=1/cos(3*x)+sin(pi+x);
write('y= ',y:8:6);

:)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

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;
 
  writeln('s1 = ',s1);
  writeln('s2 = ',s2);
  writeln('a = ',a);
end.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

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) параметрами)

Так она вроде и так переменная...

_________________
Аннигиляция уничтожит всех. За капитуляцией последует падение власти.


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Gandjybas напиши вместо
Код:
function max(f:seria):integer;

Код:
function max(var f:seria):integer;

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Gandjybas так ты читай лучше, нужна ему передача по ссылке - сделай по ссылке :)
Код:
function max(var f:seria):integer;

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 02.05.2006
Откуда: Раковка
Хто нибудь поможет решить пару задачек:

1) Дана матрица A(n,m). Определить k - количество "особых" элементов массива А, считая элемент особым, если в его строке слева от него находиться элементы меньше его, а справа - больше.

2) В одномерном массиве A(n) все элементы не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы - в конец массива (новый массив не задавать).

Заранее благодарен.


 

Member
Статус: Не в сети
Регистрация: 19.08.2005
Откуда: СПб
Задача: Задается угол наклона ствола и скорость полета снаряда. Вроде написал, но что-то не так с треекторией полета...
Вот код.
Код:
USES CRT,Graph;
Var d,m,x,v,a,s1,h1:integer;
Var t,s,h:real;
Begin
clrscr;
D:=0;
M:=0;
directvideo:=false;
initgraph(d,m,'c:/tp71/bgi');
{gorizont}
line(0,350,800,350);
{pus}
circle(20,340,10);
line(7,340,40,330);
{pir}
line(300,350,350,300);
line(350,300,400,350);
{thel}
randomize;
x:=random(100)+410;
rectangle(x,350,x+20,330);
{vistre}
write('Введите скорость снаряда и угол наклона ствола: ');
readln(v,a);
repeat
T:=t+1;
s:=s+1;
h:=h+1;
S:=abs(v*t*cos(a));
H:=abs(350-(v*t*sin(a)-10*t*t/2);
s1:=round(s);
h1:=round(h);
setcolor(white);
putpixel(s1,h1,white);
delay(15000);
setcolor(black);
putpixel(s1,h1,white);
until h1>350;
setcolor(white);
putpixel(s1,h1,white);
readln;
end.

Спасибо.

_________________
=nVidia OverGuru= || -=AMD OverClub=- || HardwareTech_TSC!_Team || ПС - People.overclockers.ru/Nicl || www.hwtech.ru


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
mr.Pirat
№1
Код:
uses crt;
var
  A : array [1..100,1..100] of integer;
  i, j, l, k, n, m : integer;
  MinFlag, MaxFlag : boolean;
begin
  clrscr;

  write('n = ');
  readln(n);
  write('n = ');
  readln(m);

  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
Статус: Не в сети
Регистрация: 02.05.2006
Откуда: Раковка
Lord_of_Darkness
Спаибо тебе огромное
Отредактировано куратором: Lord_of_Darkness. Дата: 24.09.2006 0:59


 

Member
Статус: Не в сети
Регистрация: 19.08.2005
Откуда: СПб
Lord_of_Darkness
Спасибо, разобрался.

_________________
=nVidia OverGuru= || -=AMD OverClub=- || HardwareTech_TSC!_Team || ПС - People.overclockers.ru/Nicl || www.hwtech.ru


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Nicl прекрасно. И еще, если хочешь задавать углы в программе в градусах - пиши не
Код:
sin(a)
а
Код:
sin(a*pi/180)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 19.08.2005
Откуда: СПб
Код:
write('Введите скорость снаряда и угол наклона ствола: ');
readln(v,a);
repeat
T:=t+1;
s:=s+1;
h:=h+1;
v:=v-1;
S:=v*t*cos(a);
H:=abs(350-(v*t*sin(a*pi/180)-10*t*t/2));
s1:=round(s);
h1:=round(h);
setcolor(white);
putpixel(s1,h1,white);
delay(15000);
setcolor(black);
putpixel(s1,h1,white);
until h1>350;

Опять запарка с формулами. При a<30 всевозможные глюки, чаще вообще не стартует. При больших a - все ОК.

_________________
=nVidia OverGuru= || -=AMD OverClub=- || HardwareTech_TSC!_Team || ПС - People.overclockers.ru/Nicl || www.hwtech.ru


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Nicl под косинусом тоже *pi/180 допиши ;)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 19.08.2005
Откуда: СПб
Lord_of_Darkness
Спасибо огромное! Все ОК!

_________________
=nVidia OverGuru= || -=AMD OverClub=- || HardwareTech_TSC!_Team || ПС - People.overclockers.ru/Nicl || www.hwtech.ru


 

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

Заранее спасибо!

_________________
=nVidia OverGuru= || -=AMD OverClub=- || HardwareTech_TSC!_Team || ПС - People.overclockers.ru/Nicl || www.hwtech.ru


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Nicl нужно использовать такой код
Код:
if keypressed then
   key:=readkey;

и отрабатывать нажатия клавиш в этом условном операторе, а отрисовку делать независимо.

еще нужно при отрисовке использовать
Код:
delay(20000);

иначе все будет в прямом смысле летать :)

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Последний раз редактировалось Lord_of_Darkness 08.05.2006 13:02, всего редактировалось 1 раз.

Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 15 из 50<  1 ... 12  13  14  15  16  17  18 ... 50  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan