Hip-Hop.Ru
Страница 7 из 68: 1234567891011121314172757 Последняя »

Hip-Hop.Ru (https://www.hip-hop.ru/forum/)
-   Компьютеры и Интернет (https://www.hip-hop.ru/forum/kompyutery-i-internet-f186)
-   -   Программисты / Компьютерные техники, которые НИКОГДА не спят! [Беседка] (https://www.hip-hop.ru/forum/programmisty-kompyuternye-tehniki-kotorye-nikogda-ne-spyat-besedka-252443/)

Hammer 27 декабря 2009 15:12

Цитата:

Цитата от Baddogg (Сообщение 1068800134)
Цитата:

Цитата от Hammer (Сообщение 1068797833)
Цитата:

Цитата от Baddogg (Сообщение 1068782610)
2) Используя функцию, составить программу определения чисел, являющихся степенями 2, в ряду a1, a2, ... ,aN. N - натуральное число.

Полным перебором решил.
Максимальное кол-во элеменентов взял за 10.
Код:

var
  i, j, x:  integer;
  mas: array[1..10] of integer;

function Degree(a,b,c:integer):longint;
var r:longint;
begin
    r:=1;
    while b>0 do begin
        r:=r*a;
        b:=b-1;
        if r > c then
          break;
    end;
    Degree:=r;
end;

begin
writeln('Введите числа (10 шт):');
for i:=1 to 10 do
    read(mas[i]);
for i:=1 to 10 do
    for j:=1 to maxint do
        begin
          x:= Degree(j, 2, mas[i]);
          if mas[i] = x then
            write(mas[i], ' ');
        end;
readln;
end.


все бы хорошо, да только N (макс кол-во эл-тов) с клавы нужно ввести. пробовал массив сделать от 1 до N пишет ошибку. чет не знаю в чем дело. и еще че значит break?)

Держи.
Код:

var
  i, j, n, x:  integer;
  mas: array[1..100] of integer;

function Degree(a,b,c:integer):longint;
var r:longint;
begin
    r:=1;
    while b>0 do begin
        r:=r*a;
        b:=b-1;
        if r > c then
          break;
    end;
    Degree:=r;
end;

begin
writeln('Ввелите кол-во элементов (максимум 100):');
readln(n);
writeln('Введите числа');
for i:=1 to n do
    read(mas[i]);
for i:=1 to n do
    for j:=1 to maxint do
        begin
          x:= Degree(j, 2, mas[i]);
          if mas[i] = x then
            write(mas[i], ' ');
        end;
readln;
end.

Проверяй, а то я не компилировал.
break - остановка цикла.

Baddogg 27 декабря 2009 16:12

Цитата:

Цитата от Hammer (Сообщение 1068800566)
Цитата:

Цитата от Baddogg (Сообщение 1068800134)
Цитата:

Цитата от Hammer (Сообщение 1068797833)

Полным перебором решил.
Максимальное кол-во элеменентов взял за 10.
Код:

var
  i, j, x:  integer;
  mas: array[1..10] of integer;

function Degree(a,b,c:integer):longint;
var r:longint;
begin
    r:=1;
    while b>0 do begin
        r:=r*a;
        b:=b-1;
        if r > c then
          break;
    end;
    Degree:=r;
end;

begin
writeln('Введите числа (10 шт):');
for i:=1 to 10 do
    read(mas[i]);
for i:=1 to 10 do
    for j:=1 to maxint do
        begin
          x:= Degree(j, 2, mas[i]);
          if mas[i] = x then
            write(mas[i], ' ');
        end;
readln;
end.


все бы хорошо, да только N (макс кол-во эл-тов) с клавы нужно ввести. пробовал массив сделать от 1 до N пишет ошибку. чет не знаю в чем дело. и еще че значит break?)

Держи.
Код:

var
  i, j, n, x:  integer;
  mas: array[1..100] of integer;

function Degree(a,b,c:integer):longint;
var r:longint;
begin
    r:=1;
    while b>0 do begin
        r:=r*a;
        b:=b-1;
        if r > c then
          break;
    end;
    Degree:=r;
end;

begin
writeln('Ввелите кол-во элементов (максимум 100):');
readln(n);
writeln('Введите числа');
for i:=1 to n do
    read(mas[i]);
for i:=1 to n do
    for j:=1 to maxint do
        begin
          x:= Degree(j, 2, mas[i]);
          if mas[i] = x then
            write(mas[i], ' ');
        end;
readln;
end.

Проверяй, а то я не компилировал.
break - остановка цикла.

во спс) все работает =)

onceup 28 декабря 2009 20:27

друзья, а не поможете?:rolleyes:
ебал мозги сегодня с этой программой на Паскале:
Удалить из предложения символы псевдографики, и подсчитать раз-ность между длиной исходного и сформированного предложения.
я уже нихрена не понимаю, но вот что-то вышло, помогите пожалуйста исправить недочеты
Код:

program pr11;
uses crt;
type masstr=array[1..255] of string;
procedure ms(s:string; var s1:string;var r:byte);
var l1,i,n: byte;
begin
l1:=length(s);
for i:=l1 downto 1 do begin
for n:=176 to 223 do
if ord (s[i])<>ord(n) then
s1:=s1+s[i];
end;
r:=length(s1)-l1;
writeln(s1,' Raznost',r);
end;
var a:string;
    n,i,k:byte;
    s:string;
begin
clrscr;
writeln('BBeguTe, cTpoky cogep)|(aLLlyIO nceBgoraqpuky');
{for i:=1 to n do}
readln(a);
n:=length(a);
writeln;
writeln('U3MeHeHHa9 cTpoka');
ms(a,s,k);
readln
end.


Миша NIF 28 декабря 2009 20:45

хуясе тут кодов накидали :) рад ...я в отпуске так что не сижу в теме как на работу так поддержу разговоры

onceup 28 декабря 2009 20:54

блин вообще думаю переводиться, программирование не мое наверное:(
люблю всякие вычисления по информе, там Шеннон-Фоно и т.д.
но ненавижу физику

есть ли какая золотая середина между моими предпочтениями?

сила в правде 28 декабря 2009 21:24

пропишусь ка я в теме.

с наступающим кстати, господа прогеры.

vadik_kot 28 декабря 2009 21:28

да, с наступающим, хакеры:cool:

Евгений Дмитриевич 28 декабря 2009 22:58

не понимаю почему всех так пугает БД) по-моему один из наиболее интересных и простых предметов)
кто-нибудь работал на ASP.NET под с#?

diskursmonger 29 декабря 2009 01:12

работал

FR3IMVU3R 29 декабря 2009 06:56

пиздец как тут всё запущено :rolleyes:

*SvEn* 29 декабря 2009 07:20

как то тоже с бд не ловил проблем=\

Dron48 15 января 2010 01:45

а java разработчики нас посещают?

sm0ke 15 января 2010 02:35

Цитата:

Цитата от Dron48 (Сообщение 1068973622)
а java разработчики нас посещают?

Да, в страшных снах )

Миша NIF 15 января 2010 07:19

Цитата:

Цитата от Dron48 (Сообщение 1068973622)
а java разработчики нас посещают?

тут есть пару :)

Dron48 18 января 2010 05:47

надо будет прибегнуть к вашей консультации.
но мне нужно ещё сформулировать задачу в
из мыслиформы в человеческие слова.

лжец 18 января 2010 09:00

Цитата:

Цитата от Dron48 (Сообщение 1068973622)
а java разработчики нас посещают?

со следущего месяца в колледже буду изучать яву,незнаю хорошо это или плохо:|

Dron48 18 января 2010 11:52

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

Disput 18 января 2010 12:54

Цитата:

Цитата от лжец (Сообщение 1069005031)
Цитата:

Цитата от Dron48 (Сообщение 1068973622)
а java разработчики нас посещают?

со следущего месяца в колледже буду изучать яву,незнаю хорошо это или плохо:|

Хорошо. Это интересно:horosho: Вообще веб технологии и веб программирование мне очень нравятся.

Dron48 18 января 2010 13:17

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

но тут не будет речи о программировании в java ee

Космонаут 18 января 2010 14:11

Кто на C# пишет посоветуйте книгу чтоб доступно обьяснялись основы и желательно с примерами:saint:

А так же у кого есть Герберт Шилдт C# в нормальном качестве, просьба маякнуть в ЛС:boyara:

diskursmonger 18 января 2010 16:02

Цитата:

Цитата от Disput (Сообщение 1069006525)
Цитата:

Цитата от лжец (Сообщение 1069005031)
Цитата:

Цитата от Dron48 (Сообщение 1068973622)
а java разработчики нас посещают?

со следущего месяца в колледже буду изучать яву,незнаю хорошо это или плохо:|

Хорошо. Это интересно:horosho: Вообще веб технологии и веб программирование мне очень нравятся.

мне кажется ты подумал о javascript...

Цитата:

Цитата от Dron48 (Сообщение 1069006731)
не, ну их в пизду эти веб технологии. ну там кравлера для поиска проксей набыдлокодить и потом накрутить голосовалки, это конечно прикольно. забацать себе тему для вордпресса тоже есть интерес гипотетический.

но тут не будет речи о программировании в java ee

почему? кроме ЕЕ, есть SE ещё.

иксуй! 18 января 2010 22:00

Код:

program task1;

  const

      eps=0.001;
      p=0.333;


  type TypeFunc = function (x:real):real;


  var  x,a,b,c,Fa,Fb,Fc,S,s1,s2,s3,xr1,xr2,xr3:real;
      n0:integer;


{$F+}

    {***f1***}
    function f1 (x:real):real; begin f1:=3*(0.5/(x+1)+1) end;


    {***f2***}
    function f2 (x:real):real; begin f2:=2.5*x-9.5      end;


    {***f3***}
    function f3 (x:real):real; begin f3:=5/x            end;

    {******}


    procedure root (f,g:TypeFunc; eps,a,b:real; var x:real);

    begin

      while b-a > eps do

      begin

        c:=0.5*(b+a);

        Fc:=f(c)-g(c);
        Fa:=Fc*(f(a)-g(a));
        Fb:=Fc*(f(b)-g(b));
        if Fa < 0 then b:=c
        else
            if Fb < 0 then a:=c
        else
            if Fc = 0 then begin
                    b:=c;a:=c;
                    break
                    end;
      end;

        x:=(b+a)*0.5;

    end;

    {******}

    {******FUNCTION INTEGRAL******}

    function integral(f:TypeFunc;a,b,eps:real):real;
      const p=3;
      var
      n,i:integer;
      s1,s2,h:real;
    begin
      n:=1;
      h:=(b-a)/n;
      s1:=h*0.5*(f(a)+f(a+h));
      n:=2*n;
      h:=(b-a)/n;
      s2:=h*(0.5*f(a)+f(a+h)+0.5*f(a+n*h));
      repeat
          h:=(b-a)/n;
          s1:=s2;
          s2:=0.5*h*(f(a+n*h)+f(a+2*n*h));
          for i:=n+1 to 2*n-1 do
          begin
            h:=(a-b)/i;
            s2:=s2+f(a+i*h);
          end;
          n:=2*n;
    until (abs(s1-s2)/p)<eps;
    integral:=s2;
    end;

{------------------------Ѓ‹ЋЉ-------------------------}

begin
writeln('ўўҐ¤ЁвҐ Є®®а¤Ё­ вл в®зҐЄ a Ё b ­ ®бЁ x');
readln(a,b);
root(f1,f2,eps,a,b,xr1);
root(f2,f3,eps,a,b,xr2);
root(f3,f1,eps,a,b,xr3);
writeln('в®зЄЁ ЇҐаҐбҐзҐ­Ёп:')
writeln('  x1=',xr1,'  x2=',xr2,'  x3=',xr3);
writeln();
Writeln('S=',integral(f1,xr3,xr2,eps)-integral(f3,xr3,xr2,eps)+integral(f1,xr2,xr1,eps)-integral(f2,xr2,xr1,eps));
readln(s)
end.

ребятааа кто шарит помогите сделать чтобы она заработала
вообщем программа должна находить площадь фигуры образованной графиками трёх функций
процедура root находит точки пересечения методом деления отрезка пополам, а функция integral вычисляет его по формуле трапеций, ну ф-ла в задании дана..
что надо чтобы она работала ? :confused:

Făt-Frumos 18 января 2010 23:19

:dovolen: сеня jQuery себе в двиг в свой внедрил):dovolen:

Hammer 19 января 2010 12:51

Цитата:

Цитата от иксуй! (Сообщение 1069012080)
Код:

writeln('в®зЄЁ ЇҐаҐбҐзҐ­Ёп:');
writeln;


Из-за этих ошибок не компилировалась. В программу не вникал, т.е. указал лишь на ошибки при компиляции.

Aspid 19 января 2010 17:06

Цитата:

Цитата от Космонаут (Сообщение 1069007215)
Кто на C# пишет посоветуйте книгу чтоб доступно обьяснялись основы и желательно с примерами:saint:

если английский знаешь, то лучше этого варианта не найдешь;):horosho:
http://all-ebooks.com/2010/01/05/86349-head-first-c.html

иксуй! 19 января 2010 17:09

Цитата:

Цитата от Hammer (Сообщение 1069015949)
Цитата:

Цитата от иксуй! (Сообщение 1069012080)
Код:

writeln('в®зЄЁ ЇҐаҐбҐзҐ­Ёп:');
writeln;


Из-за этих ошибок не компилировалась. В программу не вникал, т.е. указал лишь на ошибки при компиляции.

ошибки все поисправлял
компилятор молчит
Код:

program task1;
  const
      eps=0.0001;
      p=0.333;

  type TypeFunc = function (x:real):real;

  var  x,a,b,c,S,s1,s2,s3,xr1,xr2,xr3:real;
      n0:integer;

{$F+}
    {***f1***}
    function f1 (x:real):real; begin f1:=3*(0.5/(x+1)+1) end;

    {***f2***}
    function f2 (x:real):real; begin f2:=2.5*x-9.5      end;

    {***f3***}
    function f3 (x:real):real; begin f3:=5/x            end;
    {******}

    procedure root (f,g:TypeFunc; a,b:real; var x:real);
    var c,Fc,Fa,Fb:real;
    begin
      while b-a > eps do
      begin
        c:=0.5*(b+a);
        Fc:=f(c)-g(c);
        Fa:=Fc*(f(a)-g(a));
        Fb:=Fc*(f(b)-g(b));
        if Fa < 0 then b:=c
        else
            if Fb < 0 then a:=c
        else
            if Fc = 0 then begin
                    b:=c;a:=c;
                    break
                    end;
      end;
        x:=(b+a)*0.5;
    end;
    {******}
    {******FUNCTION INTEGRAL******}

{$F+}
    function integral(f:TypeFunc;a,b:real):real;
    var
      n,i:integer;
      s1,s2,h:real;
    begin
      n:=1;
      h:=(b-a)/n;
      s1:=h*0.5*(f(a)+f(a+h));
      n:=2*n;
      h:=(b-a)/n;
      s2:=h*(0.5*f(a)+f(a+h)+0.5*f(a+n*h));
      repeat
          h:=(b-a)/n;
          s1:=s2;
          s2:=0.5*h*(f(a+n*h)+f(a+2*n*h));
          for i:=n+1 to 2*n-1 do
          begin
            h:=(a-b)/i;
            s2:=s2+f(a+i*h);
          end;
          n:=2*n;
    until (abs(s1-s2)/p)<eps;
    integral:=s2;
    end;
{------------------------Ѓ‹ЋЉ-------------------------}
begin
writeln('ўўҐ¤ЁвҐ Є®®а¤Ё­ вл в®зҐЄ a Ё b ­  ®бЁ x');
readln(a,b);
root(@f1,@f2,a,b,xr1);
root(@f2,@f3,a,b,xr2);
root(@f3,@f1,a,b,xr3);
writeln('в®зЄЁ ЇҐаҐбҐзҐ­Ёп:');
writeln('  x1=',xr1,'  x2=',xr2,'  x3=',xr3);
s1:=integral(@f1,xr1,xr2);
s2:=integral(@f2,xr2,xr3);
s3:=integral(@f3,xr1,xr3);
S:=s1+s2+s3;
Writeln('S=',s);
readln(s)
end.

но работать не хочет:(

Саша Герасимов 22 января 2010 20:28

ребята выручайте!у меня практика!
мне надо сдать 5 программ,пока дали одну(
вот надо написать на ассемблере:
написать программу выделения из исходной строки подстрок,символов,заданной длины с указанием номера позиции
:miha:
помогите пожалуйста!

Добавлено через 5 минут 48 секунд
подкиньте пожалуйста саму прогу,чето поисковик даёт платную дрянь:(

diskursmonger 22 января 2010 21:22

думаю с низким уровнем тут туго

Илья Имлав 23 января 2010 06:42

Была подобная лаба, вот глянь.

Образовать строку, повторив фрагмент исходной строки с за¬данной позиции данной длины требуемое число раз.
Показать скрытый текст

.386
.MODEL FLAT, STDCALL

; прототипы внешних процедур описываются директивой EXTERN,
; после знака @ указывается общая длина передаваемых параметров,
; после двоеточия указывается дистанция «ближняя» – NEAR

EXTERN GetStdHandle@4:NEAR
EXTERN WriteConsoleA@20:NEAR
EXTERN CharToOemA@8:NEAR
EXTERN ReadConsoleA@20:NEAR
EXTERN ExitProcess@4:NEAR ; функция выхода из программы
EXTERN lstrlenA@4:NEAR ; функция определения длины строки

; includelib user32.lib
; includelib kernel32.lib

; сегмент данных
.DATA
H_OUT DD ? ; дескриптор вывода (директива DD резервирует память

; объемом 32 бита (4 байта))

H_IN DD ? ; дескриптор ввода
STRN1 DB "Введите строку: ",13,10,0 ; выводимая строка,
STRN2 DB "Введите начальную позицию: ",13,10,0 ; выводимая строка,
STRN3 DB "Введите длину сегмента: ",13,10,0 ; выводимая строка,
STRN4 DB "Введите количество повторений: ",13,10,0 ; выводимая строка,

; управляющие символы: 13 – возврат каретки, 10 – переход на новую
; строку, 0 – конец строки (с использованием директивы DB
; резервируется массив байтов)

LEN_BUF DW ?
LEN DW ?
IN_BUF DB 200 dup (?); буфер для вводимой строки
OUT_BUF DB 200 dup (?); буфер для выводимой строки
STR_TMP DB 20 dup (?); буфер для выводимой строки

POS DD ?
LENG DD ?
COUNT DD ?


; сегмент кода
.CODE
START:

; метка точки входа
; перекодируем строку

PUSH OFFSET STRN1 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN1
CALL CharToOemA@8

PUSH OFFSET STRN2 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN2
CALL CharToOemA@8

PUSH OFFSET STRN3 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN3
CALL CharToOemA@8

PUSH OFFSET STRN4 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN4
CALL CharToOemA@8


; получить дескриптор ввода

PUSH -10
CALL GetStdHandle@4
MOV H_IN, EAX

; получить дескриптор вывода

PUSH -11
CALL GetStdHandle@4
MOV H_OUT, EAX

; определение длины строки

PUSH OFFSET STRN1 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

; вызов функции WriteConsoleA для вывода строки STRN

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN1 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

; ввод строки

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN_BUF ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET IN_BUF ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

PUSH OFFSET STRN2 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN2 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset POS
push offset STR_TMP
call _StrToINT@8

PUSH OFFSET STRN3 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN3 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset LENG
push offset STR_TMP
call _StrToINT@8

PUSH OFFSET STRN4 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN4 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset COUNT
push offset STR_TMP
call _StrToINT@8

; проведение операций над строками

push COUNT ; 5й параметр количество повторений
push LENG ; 4й параметр длина сегмента
push POS ; 3й параметр позиция сегмента
push offset OUT_BUF ; 2й параметр указатель на примник
push offset IN_BUF ; 1й параметр указатель на источник
call _Ololo@20

; вывод полученной строки

PUSH OFFSET OUT_BUF ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

; вызов функции WriteConsoleA для вывода строки STRN

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET OUT_BUF ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

; небольшая задержка

MOV ECX,01FFFFFFFH
L1:
LOOP L1

; выход из программы

PUSH 0 ; параметр: код выхода
CALL ExitProcess@4

_StrToINT@8 proc ; перегонка строки в число
push ebp
mov ebp,esp
mov esi,[ebp+8]
mov edi,[ebp+12]

push esi
call lstrlenA@4 ; длина в EAX
mov ecx, eax
add esi, ecx
mov ebx, 1

@p1loop:
dec esi
mov al,[esi]
mov ah, 0
cmp al,10
je @p1next
cmp al,0
je @p1next
cmp al,13
je @p1next
sub al,30h
imul eax, ebx
add [edi], eax
imul ebx, 10
@p1next:
loop @p1loop

@p1end:
pop ebp
ret 8
_StrToINT@8 endp


; функция дублирования
; параметры
; указатель на строку от куда
; указатель на строку куда
; 4 байта позиция
; 4 байта длина
; 4 байта количество раз
; размер парметров 20байт

_Ololo@20 proc
push ebp
mov ebp,esp
mov esi,[ebp+8]
mov edi,[ebp+12]
mov eax,[ebp+16]
add esi, eax
dec esi
mov eax, esi
mov edx,[ebp+20]
mov ebx,[ebp+24]
; загрузили все параметры

@p0count_next:
cmp ebx, 0
je @p0end
dec ebx
mov ecx, edx
mov esi, eax
@p0next:
movsb
loop @p0next
jmp @p0count_next

@p0end:
pop ebp
ret 20
_Ololo@20 endp


END START


Onemix 23 января 2010 20:37

Нужен ОЧЕНЬ толковый программист для совместного ОЧЕНЬ интересного проекта хип-хоп тематики (будущая популярность проекта, окупаемость, уверен превзойдет все ожидания)

Саша Герасимов 23 января 2010 22:12

Цитата:

Цитата от Илья Имлав (Сообщение 1069054000)
Была подобная лаба, вот глянь.

Образовать строку, повторив фрагмент исходной строки с за¬данной позиции данной длины требуемое число раз.
Показать скрытый текст

.386
.MODEL FLAT, STDCALL

; прототипы внешних процедур описываются директивой EXTERN,
; после знака @ указывается общая длина передаваемых параметров,
; после двоеточия указывается дистанция «ближняя» – NEAR

EXTERN GetStdHandle@4:NEAR
EXTERN WriteConsoleA@20:NEAR
EXTERN CharToOemA@8:NEAR
EXTERN ReadConsoleA@20:NEAR
EXTERN ExitProcess@4:NEAR ; функция выхода из программы
EXTERN lstrlenA@4:NEAR ; функция определения длины строки

; includelib user32.lib
; includelib kernel32.lib

; сегмент данных
.DATA
H_OUT DD ? ; дескриптор вывода (директива DD резервирует память

; объемом 32 бита (4 байта))

H_IN DD ? ; дескриптор ввода
STRN1 DB "Введите строку: ",13,10,0 ; выводимая строка,
STRN2 DB "Введите начальную позицию: ",13,10,0 ; выводимая строка,
STRN3 DB "Введите длину сегмента: ",13,10,0 ; выводимая строка,
STRN4 DB "Введите количество повторений: ",13,10,0 ; выводимая строка,

; управляющие символы: 13 – возврат каретки, 10 – переход на новую
; строку, 0 – конец строки (с использованием директивы DB
; резервируется массив байтов)

LEN_BUF DW ?
LEN DW ?
IN_BUF DB 200 dup (?); буфер для вводимой строки
OUT_BUF DB 200 dup (?); буфер для выводимой строки
STR_TMP DB 20 dup (?); буфер для выводимой строки

POS DD ?
LENG DD ?
COUNT DD ?


; сегмент кода
.CODE
START:

; метка точки входа
; перекодируем строку

PUSH OFFSET STRN1 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN1
CALL CharToOemA@8

PUSH OFFSET STRN2 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN2
CALL CharToOemA@8

PUSH OFFSET STRN3 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN3
CALL CharToOemA@8

PUSH OFFSET STRN4 ; OFFSET – операция, возвращающая смещение
PUSH OFFSET STRN4
CALL CharToOemA@8


; получить дескриптор ввода

PUSH -10
CALL GetStdHandle@4
MOV H_IN, EAX

; получить дескриптор вывода

PUSH -11
CALL GetStdHandle@4
MOV H_OUT, EAX

; определение длины строки

PUSH OFFSET STRN1 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

; вызов функции WriteConsoleA для вывода строки STRN

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN1 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

; ввод строки

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN_BUF ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET IN_BUF ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

PUSH OFFSET STRN2 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN2 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset POS
push offset STR_TMP
call _StrToINT@8

PUSH OFFSET STRN3 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN3 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset LENG
push offset STR_TMP
call _StrToINT@8

PUSH OFFSET STRN4 ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET STRN4 ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH 200 ; 3-й параметр
PUSH OFFSET STR_TMP ; 2-й параметр
PUSH H_IN ; 1-й параметр
CALL ReadConsoleA@20

push offset COUNT
push offset STR_TMP
call _StrToINT@8

; проведение операций над строками

push COUNT ; 5й параметр количество повторений
push LENG ; 4й параметр длина сегмента
push POS ; 3й параметр позиция сегмента
push offset OUT_BUF ; 2й параметр указатель на примник
push offset IN_BUF ; 1й параметр указатель на источник
call _Ololo@20

; вывод полученной строки

PUSH OFFSET OUT_BUF ; в стек помещается указатель на строку
CALL lstrlenA@4 ; длина в EAX

; вызов функции WriteConsoleA для вывода строки STRN

PUSH 0 ; в стек помещается 5-й параметр
PUSH OFFSET LEN ; 4-й параметр
PUSH EAX ; 3-й параметр
PUSH OFFSET OUT_BUF ; 2-й параметр
PUSH H_OUT ; 1-й параметр
CALL WriteConsoleA@20

; небольшая задержка

MOV ECX,01FFFFFFFH
L1:
LOOP L1

; выход из программы

PUSH 0 ; параметр: код выхода
CALL ExitProcess@4

_StrToINT@8 proc ; перегонка строки в число
push ebp
mov ebp,esp
mov esi,[ebp+8]
mov edi,[ebp+12]

push esi
call lstrlenA@4 ; длина в EAX
mov ecx, eax
add esi, ecx
mov ebx, 1

@p1loop:
dec esi
mov al,[esi]
mov ah, 0
cmp al,10
je @p1next
cmp al,0
je @p1next
cmp al,13
je @p1next
sub al,30h
imul eax, ebx
add [edi], eax
imul ebx, 10
@p1next:
loop @p1loop

@p1end:
pop ebp
ret 8
_StrToINT@8 endp


; функция дублирования
; параметры
; указатель на строку от куда
; указатель на строку куда
; 4 байта позиция
; 4 байта длина
; 4 байта количество раз
; размер парметров 20байт

_Ololo@20 proc
push ebp
mov ebp,esp
mov esi,[ebp+8]
mov edi,[ebp+12]
mov eax,[ebp+16]
add esi, eax
dec esi
mov eax, esi
mov edx,[ebp+20]
mov ebx,[ebp+24]
; загрузили все параметры

@p0count_next:
cmp ebx, 0
je @p0end
dec ebx
mov ecx, edx
mov esi, eax
@p0next:
movsb
loop @p0next
jmp @p0count_next

@p0end:
pop ebp
ret 20
_Ololo@20 endp


END START


спасибо конечно,но она не компится,я в ассемблере не одной команды не знаю
писать заставляют в этом говне

a.su.s 25 января 2010 15:29

Цитата:

Цитата от Emporio (Сообщение 1069060172)
Нужен ОЧЕНЬ толковый программист для совместного ОЧЕНЬ интересного проекта хип-хоп тематики (будущая популярность проекта, окупаемость, уверен превзойдет все ожидания)

Работать забесплатно, угадал?)

B_R 25 января 2010 17:23

Программеры паскаля, нужна помощь
Короче на учебе задали такую хню

"Создать программу для тестирования по следующему сценарию:

для каждого вопроса:

-выволится вопрос
-принимается ответ
-выводится сообщение о правильности ответа

В конце подсчет баллов"

Плиз, очень надо
вчера бошку встрес, туплю ппц

Саша Герасимов 28 января 2010 15:16

Завтра надо сдать уже:написать на asm или flat assembler
1)дана матрица.найти максимальный элемент св указанном столбце
2)даны 2 массива.Сформировать третий массив,в него занести все чётные числа из первого массива и все нечётные из второго.
3)Дан четырёхм значный номер года.определить номер года и столетия,например 1492
4)дан массив байтов,подсчитать колличество элементов равных трём
КАРАУЛ!!!!очень надо,вы себе не представляете как!

Добавлено через 3 дня 18 часов 15 минут
:miha:я в шоке:(

Добавлено через 4 дня 10 часов 25 минут
ну будьте людьми:o

Добавлено через 4 дня 12 часов 45 минут
пожааалуйста:saint:

Добавлено через 5 дней 20 часов 47 минут
:mitchust:

иксуй! 10 февраля 2010 23:00

ребят, кто шарит помогите, тут дела на 3 минуты
нужна функция на паскале, сравнивающая две даты

дата представлена типом запись
и хранятся в виде массива
напишите код функции, если не впадлу, тут дела на пять минут, я просто путаюсь в переменных с типом запись, не знаю что куда:(
Код:

type date=record
          day:1..31;
          month:1..12
          year:integer
      end;


Hammer 11 февраля 2010 08:10

Цитата:

Цитата от иксуй! (Сообщение 1069236097)
ребят, кто шарит помогите, тут дела на 3 минуты
нужна функция на паскале, сравнивающая две даты

дата представлена типом запись
и хранятся в виде массива
напишите код функции, если не впадлу, тут дела на пять минут, я просто путаюсь в переменных с типом запись, не знаю что куда:(
Код:

type date=record
          day:1..31;
          month:1..12
          year:integer
      end;



Код:

type date=record
          day:1..31;
          month:1..12;
          year:integer
      end;

function Comp(a, b: date): integer; {0 - равны, 1 - первая дата больше, 2 - вторая дата больше}
var result: integer;
begin
  { Сравниваем года }
  if a.year > b.year then result:=1;
  if a.year < b.year then result:=2;
  if a.year = b.year then result:=0;
  { Сравниваем месяца }
  if result = 0 then
    begin
      if a.month > b.month then result:=1;
      if a.month < b.month then result:=2;
      if a.month = b.month then result:=0;
    end;

  { Сравниваем дни }
  if result = 0 then
    begin
      if a.day > b.day then result:=1;
      if a.day < b.day then result:=2;
      if a.day = b.day then result:=0;
    end;
  Comp:= result;
end;
var a, b: date;
begin
  { Описываем переменные }
  a.day:=11; a.month:=2; a.year:=2010;
  b.day:=10; b.month:=2; b.year:=2010;
  { End }
 
  writeln(Comp(a, b));
  readln;
end.


лжец 11 февраля 2010 10:53

Вложений: 1
есть кто шарит в юкозе?дали в колледже задание сделать сайт на юкозе!как сделать чтобы названия меню переносилось на след строку?
смотрите скрин
видите стоит многоточие,а мне нужно чтобы было полное название с переносом на след строку

иксуй! 11 февраля 2010 20:54

Цитата:

Цитата от Hammer (Сообщение 1069237412)
Цитата:

Цитата от иксуй! (Сообщение 1069236097)
Показать скрытый текст
ребят, кто шарит помогите, тут дела на 3 минуты
нужна функция на паскале, сравнивающая две даты

дата представлена типом запись
и хранятся в виде массива
напишите код функции, если не впадлу, тут дела на пять минут, я просто путаюсь в переменных с типом запись, не знаю что куда:(
Код:

type date=record
          day:1..31;
          month:1..12
          year:integer
      end;


Показать скрытый текст



Код:

type date=record
          day:1..31;
          month:1..12;
          year:integer
      end;

function Comp(a, b: date): integer; {0 - равны, 1 - первая дата больше, 2 - вторая дата больше}
var result: integer;
begin
  { Сравниваем года }
  if a.year > b.year then result:=1;
  if a.year < b.year then result:=2;
  if a.year = b.year then result:=0;
  { Сравниваем месяца }
  if result = 0 then
    begin
      if a.month > b.month then result:=1;
      if a.month < b.month then result:=2;
      if a.month = b.month then result:=0;
    end;

  { Сравниваем дни }
  if result = 0 then
    begin
      if a.day > b.day then result:=1;
      if a.day < b.day then result:=2;
      if a.day = b.day then result:=0;
    end;
  Comp:= result;
end;
var a, b: date;
begin
  { Описываем переменные }
  a.day:=11; a.month:=2; a.year:=2010;
  b.day:=10; b.month:=2; b.year:=2010;
  { End }
 
  writeln(Comp(a, b));
  readln;
end.


спасибо:)
так просто всё:(

Космонаут 12 февраля 2010 10:40

пацаны кто в Си# разбирется, обьясните как между формами передавать значения.
Чтобы если я менял значение переменной в одной форме, менялось и в другой:|

diskursmonger 12 февраля 2010 13:00

Цитата:

Цитата от Космонаут (Сообщение 1069248460)
пацаны кто в Си# разбирется, обьясните как между формами передавать значения.
Чтобы если я менял значение переменной в одной форме, менялось и в другой:|

если две формы используют одни и те же свойства, целесообразно эти свойства поместить в отдельный класс например
хотя для разных задач используются разные методы
очень удобно использовать датамодели
опиши задачу свою

Hammer 12 февраля 2010 14:21

Как мне помнится, в С# нет глобальных переменных..:|

diskursmonger 12 февраля 2010 18:46

Что ты понимаеш под глобальными?
Глобальными считаются любые свойства(переменные определённые вне методов) класса
относитльно класса конечно

Космонаут 12 февраля 2010 18:54

Цитата:

Цитата от frolkin (Сообщение 1069249600)
Цитата:

Цитата от Космонаут (Сообщение 1069248460)
пацаны кто в Си# разбирется, обьясните как между формами передавать значения.
Чтобы если я менял значение переменной в одной форме, менялось и в другой:|

если две формы используют одни и те же свойства, целесообразно эти свойства поместить в отдельный класс например
хотя для разных задач используются разные методы
очень удобно использовать датамодели
опиши задачу свою

Да задачи как таковой нет. Я сам изучаю язык по книжкам.

Надо к примеру в Form1 в листбоксе выбрать значение и установить его для переменной i в Form2.

diskursmonger 12 февраля 2010 22:55

ну по разному можно
самый простой способ передать ссылку на переменную static i в Form2

в Form1 создай метод:
public static int geti()
{
return i;
}

в Form2 объяви переменную:
static int i = Form1.geti();

и из Form2 ты сможеш выполнять операции над переменной в обеих формах

Космонаут 13 февраля 2010 08:52

Цитата:

Цитата от frolkin (Сообщение 1069256444)
ну по разному можно
самый простой способ передать ссылку на переменную static i в Form2

в Form1 создай метод:
public static int geti()
{
return i;
}

в Form2 объяви переменную:
static int i = Form1.geti();

и из Form2 ты сможеш выполнять операции над переменной в обеих формах

Йоу, попробуем. Спасибо:horosho:

Таяпантабули 26 марта 2010 09:04

ассемблером балуется кто?:)

Cutthroat 26 марта 2010 09:08

уже добаловались!:D

Таяпантабули 26 марта 2010 09:14

а мне снова курсач надо по нему писать:)и экзамен снова сдавать:)

Cutthroat 26 марта 2010 09:19

Цитата:

Цитата от CARBO (Сообщение 1069652557)
а мне снова курсач надо по нему писать:)и экзамен снова сдавать:)

а вот ето те не повезло!

Таяпантабули 26 марта 2010 09:21

Цитата:

Цитата от Cutthroat (Сообщение 1069652580)
Цитата:

Цитата от CARBO (Сообщение 1069652557)
а мне снова курсач надо по нему писать:)и экзамен снова сдавать:)

а вот ето те не повезло!

конечно не повезло:)
снова все осваивать:)


Часовой пояс GMT +3, время: 17:07.
Страница 7 из 68: 1234567891011121314172757 Последняя »

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.

vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.