HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.09.2009, 12:03
geforse
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме:
5365841

Репутация: 712


По умолчанию

Есть ли в Pascal'e функция для определения отрезка ?

Мне нужно проверить число, чтобы оно не входило в отрезок [0.5-2]
 
Ответить с цитированием

  #2  
Старый 12.09.2009, 12:14
kyoko
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме:
1063099

Репутация: 186
По умолчанию

Помогите пожалуйста! мне нужно выполнить лабораторку, она маленькая. и сдать через 2 часа. помогите пожалуйста!!!!! на с++

Задание:
Решением дифференциального уравнения является неизвестная функция x(t). Необходимо, используя численные методы решения ДУ, найти эту функцию. Полученное численное решение необходимо сопоставить с точным, чтобы исследовать зависимость величины локальной ошибки от величины шага интегрирования.

1.Написать программу решения ДУ с помощью прямой (явной) формулы Эйлера.
2.Написать программу решения ДУ с помощью обратной (неявной) формулы Эйлера.
3.Написать программу решения ДУ с помощью формулы трапеций.
4.Сопоставить результаты численного и точного решений ДУ на экране монитора.


Дифференциальное уравнение (ДУ) - x'(t)=x(t)+t2

Решение ДУ - x(t) =6exp(t-1)- t2-2t-2

Последний раз редактировалось kyoko; 12.09.2009 в 12:26..
 
Ответить с цитированием

  #3  
Старый 12.09.2009, 12:32
Dosia
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме:
1313455

Репутация: 249
По умолчанию

Цитата:
Есть ли в Pascal'e функция для определения отрезка ?

Мне нужно проверить число, чтобы оно не входило в отрезок [0.5-2]
Все очень просто If (твое число < 0.5) or (твое число > 2) then Пишеш тут что будет выполнятся если число не входит в данный отрезок.

По поводу ДУ, могу лишь предоставить код своей проги которая считала их методом:
1) Модифицированный метод Эйлера
2) Метод Рунге-Кутта

Описанные выше методы мне не знакомы, возможно это одно и тоже просто разными словами?

Код:
program TASK5;
uses graph;
var
   mas:array[1..2]of real;
   x0,y0,y1,y2,y3,h,t,y4,y5,x,y,xk,yk,ye,yr,ya,k1,k2,k3,k4,h1,k11,k21,k31,k41,ye1,yr1:real;
   i,gd,gm,j,n,z:integer;

function xm(x:real):integer;
         begin
              xm:=round(320+960*x);
         end;

function ym(y:real):integer;
         begin
         ym:=round(240-720*x);
         end;

function  f(a:real):real;
          begin
          f:=exp(a)+1;
          end;

procedure linovka;
var x,y:integer;
begin
setcolor(15);{color is white}
x:=5;y:=0;
setlinestyle(2,6,1);
repeat {draw vertical line}
line(x,0,x,GetMaxY);
x:=x+35;
until x>GetMaxX;
repeat {draw horizontal line}
line(0,y,GetMaxX,y);
y:=y+30;
until y>GetMaxY;
end;

procedure DrawAxisA;
begin
setcolor(15);{color is white}
setlinestyle(0,3,3);{line style,border widht,Thickness of line}
{draw axis of ordinate}
line(round(GetMaxX/2),0,round(GetMaxX/2),GetMaxY);
line(round(GetMaxX/2),0,round(GetMaxX/2-5),10);
line(round(GetMaxX/2),0,round(GetMaxX/2+5),10);
{draw axis of abscis}
line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2-5));
line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2+5));
line(0,round(GetMaxY/2),GetMaxX,round(GetMaxY/2));
end;

begin
     mas[1]:=0.01;
     mas[2]:=0.001;
     x0:=0;
     xk:=10;
     y0:=exp(1)+1;
     writeln ('                  x       1       2          a     ');
     for j:=1 to 2 do
         begin
              x:=x0;
              ye:=y0;
              yr:=y0;
              n:=round((xk-x0)/(mas[j]));
              for i:=1 to n do
                  begin
                       ye:=ye+mas[j]*f(x+mas[j]/2);
                       k1:=mas[j]*f(x);
                       k2:=mas[j]*f(x+mas[j]/2);
                       k3:=mas[j]*f(x+mas[j]/2);
                       k4:=mas[j]*f(x+mas[j]);
                       yr:=yr+(k1+2*k2+2*k3+k4)/6;
                       ya:=exp(x)+x;
                       x:=x+mas[j];
                       if (j=1) and (i mod 100 = 0) then
                       writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
                       if (j=2)and(i mod 1000= 0) then
                       writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
                  end;
              end;
         readln;
         gd:=detect;
         initgraph(gd,gm,'');
	linovka;
	DrawAxisA;
	setlinestyle(0,3,3);{line style,border widht,Thickness of line}
         x0:=0;
         xk:=10;
         y0:=exp(1)+1;
         x:=x0;
         ye:=y0;
         yr:=y0;
         ye1:=y0;
         yr1:=y0;
         for j:=1 to 5000 do
         begin
         t:=j/500;
                  x:=t/50;
                  h:=0.01;
                  h1:=0.001;
                  ye:=ye+h*f(x+h/2);
                  k1:=h*f(x);
                  k2:=h*f(x+h/2);
                  k3:=h*f(x+h/2);
                  k4:=h*f(x+h);
                  yr:=yr+(k1+2*k2+2*k3+k4)/6;
                  ya:=exp(x)+x;
                  x:=x+h;
                  ye1:=ye1+h1*f(x+h1/2);
                  k11:=h1*f(x);
                  k21:=h1*f(x+h1/2);
                  k31:=h1*f(x+h1/2);
                  k41:=h1*f(x+h1);
                  yr1:=yr1+(k11+2*k21+2*k31+k41)/6;
                  putpixel(xm(x),ym(ye),red);
                  putpixel(xm(x),ym(yr),green);
                  putpixel(xm(x),ym(ye1),yellow);
                  putpixel(xm(x),ym(yr1),blue);
                  putpixel(xm(x),ym(ya),brown);
             end;
         readln;
     end.

Последний раз редактировалось Dosia; 12.09.2009 в 13:52..
 
Ответить с цитированием

  #4  
Старый 12.09.2009, 12:53
kyoko
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме:
1063099

Репутация: 186
По умолчанию

Dosia мне на с++ (((
 
Ответить с цитированием

STL и C массивы
  #5  
Старый 13.09.2009, 13:22
Durman
Новичок
Регистрация: 05.12.2006
Сообщений: 2
Провел на форуме:
34889

Репутация: 0
Unhappy STL и C массивы

День добрый!
Столкнулся с одной проблемкой, никак не могу ее решить. Нужно одной строкой кода скопировать данные из встроенного С массива в vector. (без циклов и алгоритмов STL) Буду признателен за любую помощь.
 
Ответить с цитированием

  #6  
Старый 12.09.2009, 13:19
geforse
Постоянный
Регистрация: 02.03.2008
Сообщений: 893
Провел на форуме:
5365841

Репутация: 712


Question

Составить структурированнуб программу преобразования заданных вещественных хначений Х и Т по правилу:
  • если Х < 0, то X и Т заменить модулем
  • если X < 0 или T < 0, то Х и Т увеличить на 0.5
  • если Х > T и Т > 0 и ни одно из них не принадлежит отрезку [0.5-2], то Х и Т * 10
в противном случае Х и Т оставить без изменеий

Код:
program z1n17;
 uses crt;
 var
  x,t: real;
 begin
  clrscr;
  writeln ('Enter X,T');
  read(x,t);
  if (x < 0) and (t < 0) then { ШАГ 1 }
                           begin
                            x:=abs(x);
                            t:=abs(t);
                            clrscr;
                            writeln('Result:');
                            writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
                           end

                          else

                           if (x < 0) or (t < 0) then { ШАГ 2 }
                                                   begin
                                                    x:=x+0.5;
                                                    t:=t+0.5;
                                                    clrscr;
                                                    writeln('Result:');
                                                    writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
                                                   end

                                                  else

                                                   if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2) then { ШАГ 3 }
                                                                                                                    begin
                                                                                x:=x*10;
                                                                                t:=t*10;
                                                                                clrscr;
                                                                                writeln('Result:');
                                                                                writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
                                                                                                                     end

                                                                                                                  else

                                                                                                                    begin

                                                                                clrscr;
                                                                                writeln('Result:');
                                                                                writeln('X=', x:5:3, ' and T=', t:5:3);
                                                                                writeln;
                                                                                writeln('Without changes');
                                                                                                                    end;
  read(x);
 end.
Вот у меня проблема на шаге 3:

if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2)

Это условие ни в какую не хочет работать

P.S. После третьего условия у меня действия "смещены" влево, т.к. в паскале повидимому ограничение на количество символов в строке.
Это как-то можно обойти, чтобы код выглядил "красиво" ?) (но это не принципиально, главная проблема с условием)

P.S.S. первая прога на паскале)
 
Ответить с цитированием

  #7  
Старый 12.09.2009, 13:21
kyoko
Участник форума
Регистрация: 17.08.2008
Сообщений: 212
Провел на форуме:
1063099

Репутация: 186
По умолчанию

Помогите написать программу решения системы нелинейных уравнений методом Ньютона- Рафсона на с++
 
Ответить с цитированием

  #8  
Старый 13.09.2009, 13:03
Validol
Участник форума
Регистрация: 15.12.2006
Сообщений: 212
Провел на форуме:
587761

Репутация: 144
По умолчанию

Цитата:
Сообщение от kyoko  
Помогите написать программу решения системы нелинейных уравнений методом Ньютона- Рафсона на с++
Объясни мне сам метод, я тебе программу напишу.
http://ru.wikipedia.org/wiki/Метод_Ньютона
Можешь постучать в аську. Помогу.
9один46девять3


Господа, нужна помощь... C++
Вообще не понимаю тему "Динамические структуры данных"
Цитата:
В составе программы описать функцию, которая объединяет два упорядоченных по невозрастанию списка в один упорядоченный по невозрастанию список.
Цитата:
Сообщение от Validol  
Алгоритм программы я построил в принципе. По идее необходимо ввести с клавиатуры 1 строчку с вещественными числами. Затем вторую. Потом отсортировать первую строчку по убыванию. Затем вторую. Потом объединить их в одну и упорядочить по убыванию. Как объединять их в одну? Мне код на C++ нужен. А лучше пример программы, чтобы хоть как-то разобраться.

Код:
#include "SPIS.CPP" // Где начало программы? 
void main()
{Zveno *S1, *S2, *S3, *V1, *V2, *V3; // Что это такое?
 BT a; int i, n; // Что такое ВТ?
 clrscr(); // Я так понимаю, это очистка экрана. Зачем?
 randomize(); // Рандомайз чего?
 S1=NULL;
 // создаём первый элемент
 a=-100+random(201);
 S1=V_Nachalo(S1, a);
 n=1+random(20);
 // формируем список произвольной длины и выводим на печать
 V1=S1;
 for (i=2; i<=n; i++)
 {
    a=-100+random(201);
    V1=V_Spisok(V1, a);
 }
 Print(S1);
 V1 = S1;  S2 = NULL; S3 = NULL;
    while (V1)
	{if (V1->Inf > 0)
	      if (!S2)
		 {S2=V_Nachalo(S2, V1->Inf); V2 = S2;}
	      else {V_Spisok(V2, V1->Inf); V2 = V2->Next;};
	 if (V1->Inf < 0)
	     if (!S3)
		{S3=V_Nachalo(S3, V1->Inf); V3 = S3;}
	     else {V_Spisok(V3, V1->Inf); V3 = V3->Next;};
	 V1= V1->Next;}
  cout << "Результирующий список из положительных элементов: \n";
  Print(S2);
  cout << "Результирующий список из отрицательных элементов: \n";
  Print(S3);
  S1=Ochistka(S1); S2=Ochistka(S2); S3=Ochistka(S3);
}
Если я правильно понял - взят тупо кусок программы и выкинут на обозрение. Есть проггеры, которые более менее могут написать программу, которая указана на предыдущей странице и объяснить комментариями?

Проблема актуальна. Надеюсь на помощь

Последний раз редактировалось Validol; 13.09.2009 в 13:07..
 
Ответить с цитированием

  #9  
Старый 13.09.2009, 13:07
nitx
Участник форума
Регистрация: 04.01.2008
Сообщений: 186
Провел на форуме:
872350

Репутация: 72
По умолчанию

Цитата:
Сообщение от kyoko  
Помогите написать программу решения системы нелинейных уравнений методом Ньютона- Рафсона на с++
_http://www.machinelearning.ru/wiki/images/c/ca/Kasat.zip
(c) _http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0 %BA%D0%B0%D1%81%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%B D%D1%8B%D1%85_(%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%B D%D0%B0-%D0%A0%D0%B0%D1%84%D1%81%D0%BE%D0%BD%D0%B0)
в гугол полез смотреть что за метод, нашел исходники.
 
Ответить с цитированием

  #10  
Старый 12.09.2009, 13:33
Dosia
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме:
1313455

Репутация: 249
По умолчанию

Код:
program z1n17;
uses crt;
var
x,t: real;
begin
clrscr;
writeln ('Enter X,T');
read(x,t);

{ ШАГ 1 }
if (x < 0) and (t < 0) then
begin
x:=abs(x);
t:=abs(t);
clrscr;
writeln('Result:');
writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
readkey;
exit;
end;

{ ШАГ 2 }
if (x < 0) or (t < 0) then
begin
x:=x+0.5;
t:=t+0.5;
clrscr;
writeln('Result:');
writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
readkey;
exit;
end;

{ ШАГ 3 }
{Проверяем условия по порядку}
if (x>t) and (t>0) then
if ((x<0.5) or (x>2)) and ((t<0.5) or (t>2)) then
begin
x:=x*10;
t:=t*10;
clrscr;
writeln('Result:');
writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
readkey;
exit;
end;

clrscr;
writeln('Result:');
writeln('X=', x:5:3, ' and T=', t:5:3);
writeln;
writeln('Without changes');
                                                                              
readkey;
end.
мну ушел. Вроде все так, все должно работать.

если Х < 0, то X и Т заменить модулем. Если так то заменить первое условие на if (x < 0). Но тогда второе не будет выполнятся никогда. Так что ты скорее всего ошибся, когда написал нам условие, а в коде сделал все верно.

Последний раз редактировалось Dosia; 12.09.2009 в 13:51..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.