ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

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

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

  #1061  
Старый 25.01.2009, 22:36
ASM16d
Новичок
Регистрация: 01.09.2008
Сообщений: 24
Провел на форуме:
100147

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

Цитата:
Сообщение от Moldman  
Вот моя простая версия на 3 задачу
Код:
Program task3;
var 
	a,b,c:byte;
begin
	write('N=');
	readln(c);
		for a:=0 to c do
			for b:=0 to c do
				if 3*a+5*b = c then
				begin
					if a <> 0 then Write(a,' Troek, ');
					if b <> 0 then Write(b,' Pyaterok, ');
					Writeln(' = ',c)
				end;
end.
Хы, а сложность то какая? Квадратичная! Это полный перебор называется.
у меня то линейная =)
 
Ответить с цитированием

  #1062  
Старый 25.01.2009, 23:19
Moldman
Участник форума
Регистрация: 12.06.2007
Сообщений: 153
Провел на форуме:
1990548

Репутация: 58
Отправить сообщение для Moldman с помощью ICQ Отправить сообщение для Moldman с помощью AIM Отправить сообщение для Moldman с помощью MSN Отправить сообщение для Moldman с помощью Yahoo
По умолчанию

ASM16d


P.S. + завтра поставлю а то лимит закончился
 
Ответить с цитированием

  #1063  
Старый 26.01.2009, 02:21
blednii
Участник форума
Регистрация: 12.06.2007
Сообщений: 160
Провел на форуме:
357904

Репутация: 44
Отправить сообщение для blednii с помощью ICQ Отправить сообщение для blednii с помощью Yahoo
По умолчанию

Помогите срочно, на завтра надо сдать лабу по ассемблеру, вот задание.


Вводятся два числа в двоичной системе исчисления. Найти их произведение и вывести на экран в двоичной системе исчисления.

Тому кто напишет максимум плюсиков.
 
Ответить с цитированием

  #1064  
Старый 28.01.2009, 01:20
NaX[no]rT
Members of Antichat
Регистрация: 03.09.2005
Сообщений: 594
Провел на форуме:
3606217

Репутация: 685


Отправить сообщение для NaX[no]rT с помощью ICQ
По умолчанию

Задача собственно такая. С меня много +
Написать макрос, который выводит все возможные перестановки указанных
элементов:
Вот что написал препод, как результат выполнения:
DSL N,'a','b','c'
db 'a', 'b', 'c'
db 'a', 'c', 'b'
db 'c', 'a', 'b'
... и тд
Использовать можно только макроопределения, команды асма в макросе использовать нельзя.
 
Ответить с цитированием

  #1065  
Старый 29.01.2009, 17:00
pupkin77
Новичок
Регистрация: 08.12.2007
Сообщений: 1
Провел на форуме:
32152

Репутация: 0
Unhappy

HELP ME PLEASE!!!

в Общем дело 5 минут.

Есть программа *.pas там вводятся данные (цифры) и они обрабатываются и выдается ответ.

В общем нужно сделать чтобы "Дается Исходник Программы. Там Вводятся Данные. Нужно Чтобы 'Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае. Пример. 000011. Программа Выдает 0."

Код:
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var st,st_p:string;
          i:integer;
begin
  st:=Edit1.text;
  i:=1;
  st_p:=st;
  for i:=1 to Length(St_p) do
   if (st_p[i]='0') and (st_p[i+1]='0') then
    st_p[i+1]:='1';
  memo1.Lines.Add('введено   :  '+st);
  memo1.lines.Add('получаем :  '+st_p);
  Edit1.Text:=''
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 edit1.Text:='';
 Memo1.Text:='Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае.';
 end;

end.
 
Ответить с цитированием

  #1066  
Старый 29.01.2009, 17:31
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

если вводится тока 0 или 1 то можно пойти вот таким способом
Код:
procedure TForm1.Button1Click(Sender: TObject);
var 
 x,y:integer;
 st:string;
begin
 st:=Edit1.text;
 y:=0;
 for x:=1 to length(st) do
   if st[x]='0' then inc(y);
 if y>(length(st) div 2) then y:=0 else y:=1;
 memo1.Lines.Add('введено   :  '+st);
 memo1.lines.Add('получаем :  '+intostr(y));
 Edit1.Text:=''
end;
 
Ответить с цитированием

  #1067  
Старый 30.01.2009, 22:11
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

Код:
function Trace(txt:string):string;
Begin
  form1.Memo1.Lines.Add(txt);
End;


procedure TForm1.Button1Click(Sender: TObject);
var
  i           : integer;
  st_0, st_1  : integer;
  TxtLine     : string;
begin
  st_0 := 0;
  st_1 := 0;
  Memo1.Text := '';
  Trace('Исходная строка: '+Edit1.Text);
  TxtLine := Edit1.Text;
  For i := 1 to Length(Edit1.Text) Do
    Begin
      If StrToInt(TxtLine[i]) = 0 then st_0 := st_0 + 1;//inc(st_0)
      If StrToInt(TxtLine[i]) = 1 then st_1 := st_1 + 1;
      if (StrToInt(TxtLine[i]) <> 1) and (StrToInt(TxtLine[i]) <> 0) then
        Begin
          ShowMessage('Введено другое число, пожалуйста введите правильно!');
          Edit1.Text := '';
          Memo1.Text := '';
          Exit;
        End;
    End;
  If st_0 = st_1 then Trace('Нулей и единиц поровну [ 0 = 1]')
    Else
      If st_0 > st_1 then Trace('Нулей больше чем единиц [0 > 1] : 0')
        Else
          Trace('Нулей меньше, чем единиц [0 < 1] : 1');

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  edit1.Text:='';
  Memo1.Text:='';
end;

end.
 
Ответить с цитированием

  #1068  
Старый 01.02.2009, 17:56
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

может кому пригодитса
Цитата:
Решить систему нел. уравнений модифицированным методом Ньютона, выбирая за начальные приближения . Итерации проводить к совпадению двух последовательных приближений с погрешностью . Производные вычислять методом конечных разниц, вращения матрицы, проводить классическим методом Гауса.
C#
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace ZI_22_KMDI_5
{
    class Lab
    {
        const int n = 2;
        double E = 0.00001;
        double[] X1 = { 0, 0 };
        double[] X2 = new double[n];

        double[,] MatrixJakobi(double[] X)
        {
            double[,] J = new double[n, n]; 
            double y, h = 0.000000001;
            for (int i = 0; i < n; i++)
            {
                y = Funkcia(X, i);
                for(int k = 0; k < n; k++)
                {
                    X[k] = X[k] + h;
                    J[i,k] = (Funkcia(X,i) - y)/h;
                    X[k] = X[k] - h;
                }
            }
            return (J);
        }

        double Funkcia(double[] X, int f)
        {
            double fx = 0;
            if (f == 0)
                fx = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1;
            if (f == 1)
                fx = -X[1] + 2 * X[0] * X[1] - 0.1;
            return (fx);
        }

        double[] Funkcii(double[] X)
        {
            double[] F = new double[n];
            F[0] = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1;
            F[1] = -X[1] + 2 * X[0] * X[1] - 0.1;
            return (F);
        }
        
        bool Pohubka(double[] mX1, double[] mX2)
        {
            double a, b;
            a = (mX2[0] - mX1[0]) / mX1[0]; a = Math.Abs(a);
            b = (mX2[1] - mX1[1]) / mX1[1]; b = Math.Abs(b);
            Console.WriteLine(Math.Max(a,b));
            if (Math.Max(a,b) <= E)
                return (true);
            else
                return (false);
        }

        double[,] Obertanna(double[,] A)
        {
            double[] b = new double[n];
            double[,] X = new double[n, n];
            double[] dX = new double[n];
            for (int k = 0; k < n; k++)
            {
                for (int i = 0; i < n; i++)
                {
                    if (k == i)
                        b[i] = 1;
                    else
                        b[i] = 0;
                }
                dX = Gaus(A, b);
                for (int i = 0; i < n; i++)
                    X[i, k] = dX[i];
            }
            return (X);
        }

        double[] Gaus(double[,] A, double[] b)
        {
            double[,] GausA = new double[n, (n + 1)];
            double[] X = new double[n];
            for(int i = 0; i < n; i++)
                for (int j = 0; j < (n + 1); j++)
                {
                    if (j != n)
                        GausA[i, j] = A[i, j];
                    else
                        GausA[i, j] = -b[i];
                }
            for (int l = 0; l < n - 1; l++)
            {
                double c = GausA[l, l];
                for (int k = l + 1; k < (n+1); k++)
                {
                    GausA[l, k] = -GausA[l, k] / c;
                    for (int i = l + 1; i < n; i++)
                        GausA[i, k] = GausA[i, k] + GausA[i, l] * GausA[l, k];
                }
            }
            X[n - 1] = -GausA[n - 1, n] / GausA[n - 1, n - 1];
            for (int i = n - 2; i >= 0; i--)
            {
                double s = GausA[i, n];
                for (int k = i + 1; k < n; k++)
                    s = s + GausA[i, k] * X[k];
                X[i] = s;
            }
            return (X);
        }

        double[] Mnogenna(double[,] A, double[] B)
        {
            double[] C = new double[n];
            C[0] = A[0, 0] * B[0] + A[0, 1] * B[1];
            C[1] = A[1, 0] * B[0] + A[1, 1] * B[1];
            return (C);
        }
        
        public void Calculate()
        {
            double[,] A = new double[n, n];
            double[] fX = new double[n];
            double[] Mn = new double[n];
            int d = 0;

            A = MatrixJakobi(X1);
            A = Obertanna(A);
            fX = Funkcii(X1);
            Mn = Mnogenna(A, fX);
            X2[0] = X1[0] - Mn[0];
            X2[1] = X1[1] - Mn[1];
            d++; 
            while (Pohubka(X1, X2) != true)
            {
                if (d > 5)
                {
                    A = MatrixJakobi(X1);
                    A = Obertanna(A);
                }
                X1[0] = X2[0];
                X1[1] = X2[1];
                fX = Funkcii(X1);
                Mn = Mnogenna(A, fX);
                X2[0] = X1[0] - Mn[0];
                X2[1] = X1[1] - Mn[1];
                d++;

                Console.WriteLine("x(1) = " + X2[0]);
                Console.WriteLine("x(2) = " + X2[1]);
            }
            Console.WriteLine("------");
            Console.WriteLine("Результат");
            Console.WriteLine("x(1) = " + X2[0]);
            Console.WriteLine("x(2) = " + X2[1]);
            Console.WriteLine("------");
            Console.WriteLine("Перевiрка 1");
            Console.WriteLine(-X2[0] + X2[0] * X2[0] - X2[1] * X2[1] + 0.1);
            Console.WriteLine(-X2[1] + 2 * X2[0] * X2[1] - 0.1);
            Console.WriteLine("Перевiрка 2");
            Console.WriteLine(X2[0] + " = " + (X2[0] * X2[0] - X2[1] * X2[1] + 0.1));
            Console.WriteLine(X2[1] + " = " + (2 * X2[0] * X2[1] - 0.1));
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Lab lab5 = new Lab();
            lab5.Calculate();
            Console.Read();
        }
    }
}
 
Ответить с цитированием

  #1069  
Старый 01.02.2009, 17:57
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

метод Рунге-Кутта 4 порядка:

Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace ZI_22_KMDI_6
{
    class RyngeRytta4
    {
        const int n = 2; // Порядок системи
        const double h = 0.1; // Крок
        double x, a = 0, b = 1; // Проміжок
        global double[] y = new double[n]; //если небольшой масив
        global double[] f = new double[n]; //тогда можна без global

        void dy() // Праві частини рівнянь
        {
            f[0] = y[1];
            f[1] = (8 * y[1] - 5 * y[0] - 4 * Math.Exp(x) * Math.Sin(x / 2)) / 4;
        }
        public void Calculate()
        {
            double[] K1 = new double[n];
            double[] K2 = new double[n];
            double[] K3 = new double[n];
            double[] K4 = new double[n];
            double[] z = new double[n];

            // Початкові значення
            y[0] = 1; y[1] = 1;
            x = a;

            do
            {
                dy();
                for (int i = 0; i < n; i++)
                {
                    K1[i] = f[i];
                    z[i] = y[i];
                    y[i] = z[i] + 0.5 * h * K1[i];
                }
                x = x + 0.5 * h;
                dy();
                for (int i = 0; i < n; i++)
                {
                    K2[i] = f[i];
                    y[i] = z[i] + 0.5 * h * K2[i];
                }
                dy();
                for (int i = 0; i < n; i++)
                {
                    K3[i] = f[i];
                    y[i] = z[i] + 0.5 * h * K3[i];
                }
                x = x + 0.5 * h;
                dy();
                for (int i = 0; i < n; i++)
                {
                    K4[i] = f[i];
                    y[i] = z[i] + h * (K1[i] + K4[i] + 2 * (K2[i] + K3[i])) / 6;
                }
                Console.WriteLine("x = " + x + "; y = " + y[0] + "; y' = " + y[1]);
            }
            while (x < b);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            RyngeRytta4 Lab6 = new RyngeRytta4();
            Lab6.Calculate();
            Console.Read();
        }
    }
}

Последний раз редактировалось eLWAux; 01.02.2009 в 18:33..
 
Ответить с цитированием

  #1070  
Старый 01.02.2009, 17:59
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

опять задача из екзамена:
Цитата:
Решить систему уравнений стандартным методом Ньютона без вращения матрицы Якоби(систему линейных уравнений алгебраизма развязать методом Гаусса с формой столбца расписания без выбора главного элемента; якобиан обч. разностным методом), выбирая за начальные приближения
С:
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 2
void main(void)
{
clrscr();
int i, j, L, k, m;
const double E=1e-5;
double x[n], Xprev[n], F[n], J[n][n], a[n][n+1], deltaX[n];
double f(int i,double x[n]);
double Jacobi(int i,int j,double x[n]);
double max(double x[n],double Xprev[n]);

x[0]=0.00000001;     //pochatkove
x[1]=0.00000001;     //nablyzhennya
m=0;

do
{
  for(i=0;i<=n-1;i++)
    Xprev[i]=x[i];
  //----------FORMUYEMO F TA J------------------------
  for(i=0;i<=n-1;i++)
  {
   F[i]=f(i,x);
   for(j=0;j<=n-1;j++)
    J[i][j]=Jacobi(i,j,x);
  }
  //--------------------------------------------------
  for(i=0;i<=n-1;i++)
   for(j=0;j<=n-1;j++)
    a[i][j]=J[i][j];
  a[0][n]=F[0];
  a[1][n]=F[1];

   //------------- GAUSS PO STOVPTSYAH----------------------
  for(L=0;L<=n-2;L++)
  {
    for(k=L+1;k<=n;k++)
    {
      a[L][k]=-a[L][k]/a[L][L];
      for(i=L+1;i<=n-1;i++)
        a[i][k]=a[i][k]+a[i][L]*a[L][k];
    }
  }

    // ------ZVOROTNIY HID-------
  deltaX[n-1]=-a[n-1][n]/a[n-1][n-1];
  for(i=n-2;i>=0;i--)
  {
    deltaX[i]=a[i][n];
    for(k=i+1;k<=n-1;k++)
      deltaX[i]+=a[i][k]*deltaX[k];
  }

  for(i=0;i<=n-1;i++)
    x[i]+=deltaX[i];    //--UTOCHNENE ZNACHENNYA x[i]--
  m++;
}
while(max(x,Xprev)>E);

printf("\t ---ROZVYAZOK SYSTEMY---\n\t|   (ZA %d ITERATSII):   |\n",m);
for(i=0;i<=n-1;i++)
  printf("\t|    x[%d]= %lf    |\n",i,x[i]);
printf("\t -----------------------");
printf("\nPEREVIRKA_1!!!  %lf\n",-x[0]+x[0]*x[0]-x[1]*x[1]-0.1);
printf("PEREVIRKA_2!!!  %lf\n",-x[1]+2*x[0]*x[1]-0.1);

getch();
}

double f(int i,double x[n])
{
 if(i==0)
  return -x[0]+x[0]*x[0]-x[1]*x[1]-0.1;
 else
  return -x[1]+2*x[0]*x[1]-0.1;
}
double Jacobi(int i,int j,double x[n])
{
 const double h=1e-9;
 double prev=f(i,x);
 x[j]+=h;
 return (f(i,x)-prev)/h;
}
double max(double x[n],double Xprev[n])
{
int i;
double z,q;
z=fabs((x[0]-Xprev[0])/Xprev[0]);
for(i=1;i<=n-1;i++)
{
 q=fabs((x[i]-Xprev[i])/Xprev[i]);
 if(q>z)
  z=q;
}
return z;
}
 
Ответить с цитированием
Ответ



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



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


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




ANTICHAT.XYZ