Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 18.09.2011, 12:19   #421   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Вряд ли это будет что-то стоить. Но вам придется ответить на два вопроса:
1. позволяет ли это лицензия словаря?
2. нахрена вообще?
  Ответить с цитированием
Старый 18.09.2011, 15:46   #422   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Катя Трубникова Посмотреть сообщение
нужна таблица , можно использовать словарь кит-рус abby lingua электронный, разместить по колонкам: иероглиф, транскрипция, перевод и значения. Кто может с этим помочь? и сколько это будет стоить? и какие сроки?
Поподробнее, пожалуйста.
Что на входе
Что на выходе
Как это должно выглядеть
Какие кнопки должны быть
и т.д. и т.п.
телепатов тут немае, то бишь нет.
  Ответить с цитированием
Старый 22.09.2011, 18:15   #423   
Форумец
 
Сообщений: 39
Регистрация: 18.04.2008
Возраст: 33

Max 2008 вне форума Не в сети
Нужна помощь в решении задачи по Методам Вычислениям. 2курса факультета ПММ в ВГУ. http://bvf.ru/forum/attachment.php?a...5&d=1316703788 http://bvf.ru/forum/attachment.php?a...4&d=1316703788
  Ответить с цитированием
Старый 18.10.2011, 10:56   #424   
como estas?
 
Сообщений: 131
Регистрация: 23.06.2007
Возраст: 36

Luko_Brazi вне форума Не в сети
Есть здесь люди, которые занимаются разработкой под android?
  Ответить с цитированием
Старый 24.10.2011, 09:42   #425   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
UPDATE не надо просить писать в ЛС или по телефону, или хотя бы отписывайтесь в теме что человек найден. Тема создана для флуда (в меру). Если будете здесь обсуждать условия "сотрудничества" - это нормально. И остальные будут видеть, нашли ли вы счастье или нет.
  Ответить с цитированием
Старый 29.10.2011, 00:15   #426   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от black13666 Посмотреть сообщение
Ребят,нужна помощь в программе Visual Basic,работасразу скажу не сложная,нужно просто выполнить порядка 20 заданий по книжке для первого курса института.Естественно оплачиваемо,всем тем кто может оказать помощь,прошу писать в лс или 8 951 877 07 07.СРОЧНО ИЩЕТСЯ ПРОГРАММИСТ!!!
Ужасть)))
Я вот тебе лично советую выложить всё в теме, что требуется. Быстрее найдешь. И не истери, все студентами были))) Прорвешься.

UPDATE: ССЫЛКОЙ НА ЗАДАНИЕ! простыни выкладывать - не стоит.
  Ответить с цитированием
Старый 29.10.2011, 23:21   #427   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
Вопрос?

Цитата:
Сообщение от manifest Посмотреть сообщение
Вооружился дизассемблером и профайлером

osx 10.6 x64
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)

Код:
struct A {
	A() :val_(0) {
	}

    int byValue() const {
        return val_;
    }
    
    const int &byReference() const {
        return val_;
    }

    const int *const byPointer() const {
        return &val_;
    }
    
    void setByValue(int val) {
        val_ = val;
    }
    
    void setByReference(const int &val) {
        val_ = val;
    }
    
    void setByPointer(const int *const val) {
        val_ = *val;
    }

    int val_;
};

int main() {
 	int x = 1;
 	A a;

    int val = a.byValue();
    const int &ref = a.byReference();
    const int *const ptr = a.byPointer();

    a.setByValue(x);
    a.setByReference(x);
    a.setByPointer(&x);
}

/// main
0x0000000100000a28  <+0000>  push   %rbp
0x0000000100000a29  <+0001>  mov    %rsp,%rbp
0x0000000100000a2c  <+0004>  sub    $0x30,%rsp
0x0000000100000a30  <+0008>  movl   $0x1fffffff,-0x4(%rbp)
0x0000000100000a37  <+0015>  movl   $0x1,-0x8(%rbp)
0x0000000100000a3e  <+0022>  lea    -0x10(%rbp),%rdi
0x0000000100000a42  <+0026>  callq  0x100000bc2 <_ZNK1A7byValueEv>
0x0000000100000a47  <+0031>  mov    %eax,-0x14(%rbp)
0x0000000100000a4a  <+0034>  lea    -0x10(%rbp),%rdi
0x0000000100000a4e  <+0038>  callq  0x100000bd2 <_ZNK1A11byReferenceEv>
0x0000000100000a53  <+0043>  mov    %rax,-0x20(%rbp)
0x0000000100000a57  <+0047>  lea    -0x10(%rbp),%rdi
0x0000000100000a5b  <+0051>  callq  0x100000be0 <_ZNK1A9byPointerEv>
0x0000000100000a60  <+0056>  mov    %rax,-0x28(%rbp)
0x0000000100000a64  <+0060>  mov    -0x8(%rbp),%esi
0x0000000100000a67  <+0063>  lea    -0x10(%rbp),%rdi
0x0000000100000a6b  <+0067>  callq  0x100000bee <_ZN1A10setByValueEi>
0x0000000100000a70  <+0072>  lea    -0x8(%rbp),%rsi
0x0000000100000a74  <+0076>  lea    -0x10(%rbp),%rdi
0x0000000100000a78  <+0080>  callq  0x100000c04 <_ZN1A14setByReferenceERKi>
0x0000000100000a7d  <+0085>  lea    -0x8(%rbp),%rsi
0x0000000100000a81  <+0089>  lea    -0x10(%rbp),%rdi
0x0000000100000a85  <+0093>  callq  0x100000c1e <_ZN1A12setByPointerEPi>
0x0000000100000a8a  <+0098>  mov    $0x0,%eax
0x0000000100000a8f  <+0103>  leaveq 
0x0000000100000a90  <+0104>  retq


//byValue
0x0000000100000bc2  <+0000>  push   %rbp
0x0000000100000bc3  <+0001>  mov    %rsp,%rbp
0x0000000100000bc6  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000bca  <+0008>  mov    -0x8(%rbp),%rax
0x0000000100000bce  <+0012>  mov    (%rax),%eax
0x0000000100000bd0  <+0014>  leaveq 
0x0000000100000bd1  <+0015>  retq

//byReference
0x0000000100000bd2  <+0000>  push   %rbp
0x0000000100000bd3  <+0001>  mov    %rsp,%rbp
0x0000000100000bd6  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000bda  <+0008>  mov    -0x8(%rbp),%rax
0x0000000100000bde  <+0012>  leaveq 
0x0000000100000bdf  <+0013>  retq

//byPointer
0x0000000100000be0  <+0000>  push   %rbp
0x0000000100000be1  <+0001>  mov    %rsp,%rbp
0x0000000100000be4  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000be8  <+0008>  mov    -0x8(%rbp),%rax
0x0000000100000bec  <+0012>  leaveq 
0x0000000100000bed  <+0013>  retq

//setByValue
0x0000000100000bee  <+0000>  push   %rbp
0x0000000100000bef  <+0001>  mov    %rsp,%rbp
0x0000000100000bf2  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000bf6  <+0008>  mov    %esi,-0xc(%rbp)
0x0000000100000bf9  <+0011>  mov    -0x8(%rbp),%rdx
0x0000000100000bfd  <+0015>  mov    -0xc(%rbp),%eax
0x0000000100000c00  <+0018>  mov    %eax,(%rdx)
0x0000000100000c02  <+0020>  leaveq 
0x0000000100000c03  <+0021>  retq

//setByReference
0x0000000100000c04  <+0000>  push   %rbp
0x0000000100000c05  <+0001>  mov    %rsp,%rbp
0x0000000100000c08  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000c0c  <+0008>  mov    %rsi,-0x10(%rbp)
0x0000000100000c10  <+0012>  mov    -0x10(%rbp),%rax
0x0000000100000c14  <+0016>  mov    (%rax),%edx
0x0000000100000c16  <+0018>  mov    -0x8(%rbp),%rax
0x0000000100000c1a  <+0022>  mov    %edx,(%rax)
0x0000000100000c1c  <+0024>  leaveq 
0x0000000100000c1d  <+0025>  retq

//setByPointer
0x0000000100000c1e  <+0000>  push   %rbp
0x0000000100000c1f  <+0001>  mov    %rsp,%rbp
0x0000000100000c22  <+0004>  mov    %rdi,-0x8(%rbp)
0x0000000100000c26  <+0008>  mov    %rsi,-0x10(%rbp)
0x0000000100000c2a  <+0012>  mov    -0x10(%rbp),%rax
0x0000000100000c2e  <+0016>  mov    (%rax),%edx
0x0000000100000c30  <+0018>  mov    -0x8(%rbp),%rax
0x0000000100000c34  <+0022>  mov    %edx,(%rax)
0x0000000100000c36  <+0024>  leaveq 
0x0000000100000c37  <+0025>  retq

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

Код:
//// by reference
int main() {
    A a;
    
    a.setByReference(3);
    const int &ref = a.byReference();

    std::cout<<ref<<std::endl;
}

//// by value
int main() {
    A a;
    
    a.setByValue(3);
    int val = a.byValue();
    
    std::cout<<val<<std::endl;
}

0x0000000100000d91  <+0000>  push   %rbp
0x0000000100000d92  <+0001>  mov    %rsp,%rbp
0x0000000100000d95  <+0004>  mov    $0x3,%esi
0x0000000100000d9a  <+0009>  mov    0x297(%rip),%rdi        # 0x100001038
0x0000000100000da1  <+0016>  callq  0x100000dfa <dyld_stub__ZNSolsEi>
0x0000000100000da6  <+0021>  mov    %rax,%rdi
0x0000000100000da9  <+0000>  callq  0x100000e0c <dyld_stub__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_>
0x0000000100000dae  <+0029>  xor    %eax,%eax
0x0000000100000db0  <+0031>  leaveq 
0x0000000100000db1  <+0032>  retq
Выводы по результатам для приведенного примера без оптимизации, следующие:
1) для указателей и ссылок компилятор сформировал аналогичный код
2) при возврате переменной из ф-ции, по значению сформирована дополнительная иструкция, по ссылке (указателю) - нет
3) при передаче переменной в ф-цию, по ссылке (указателю) сформирована дополнительная иструкция, по значению - нет
4) по результатам профилирования, время выполнения ф-ции setByValue() во всех проведенных тестах меньше времени выполнения setByReference() и setByPointer()
5) по результатам профилирования, время выполнения ф-ций byValue(), byReference() и byPointer() от теста к тесту изменялось, по всем тестам среднее значение одинаково для каждой из ф-ций

Вывод: эффективность кода с передачей переменной встроеного типа по значению и по ссылке одинакова (для оптимизированного компилятором кода, который и будет используется в реальных приложениях), поэтому для повышения читаемости правильнее использовать передачу по значению. К тому же, даже в случае не оптимизированнного кода выигрыш в одну инстукцию для "get" ф-ции byReference() по результатам профилирования не сокращает её время выполнения, в то время как "set" ф-ция setByReference() проигрывает по времени setByValue().




Какая тут проблема???
  Ответить с цитированием
Старый 30.10.2011, 00:33   #428   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Спартак21 Посмотреть сообщение
Какая тут проблема???
Проблема тут в том что ты не понимаешь что такое call)))
  Ответить с цитированием
Старый 30.10.2011, 13:38   #429   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
И еще один момент - захреном ты сравниваешь РАЗНЫЙ код с РАЗНЫМИ настройками?
Если хочешь разобраться в генерируемом асмовском коде, надо менять ЛИБО код, ЛИБО настройки. и сравнивать полученное.
Аккуратно, скрупулезно и вдумчиво.
  Ответить с цитированием
Старый 30.10.2011, 22:53   #430   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
Пардон

Цитата:
Сообщение от Spectator Посмотреть сообщение
Проблема тут в том что ты не понимаешь что такое call)))
Что такое "Калл" я прекрасно знаю, т.к. начинал изучать программирование с АСМа(родной язык))))
  Ответить с цитированием
Старый 30.10.2011, 22:58   #431   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
Братух!
Дам один дельный совет: нарой описание мнемоник АСМа, в которых указано время( в тактах) на выполнение каждой операции, т.к. компилятор делает по своему алгоритму.
Это называется низкоуровневая оптимизаци( во многих книжках прописано).
И, как сказал Спектатор:"вдумчиво и кропотливо!".
Если хочешь, то в личке отпиши адрес, а я тебе старющий пакет МАСМа в.9 или 8.2 скину, в котором есть описания мнемоник с указанием тактов на выполнение.
Ну, а при желании ещё одну книженцию с описанием прерываний(долго искал, но оно того стоит).
  Ответить с цитированием
Старый 30.10.2011, 23:44   #432   
бибизьян
 
Аватар для aerin
 
Сообщений: 3,026
Регистрация: 17.02.2004

aerin вне форума Не в сети
<offtop>только обычно такая доморощенная оптимизация по древним книжкам ведет к кеш-промахам, сводящим на нет всю оптимизацию</offtop>
  Ответить с цитированием
Старый 31.10.2011, 01:27   #433   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Спартак21 Посмотреть сообщение
Братух!
По кочкам прыгаешь.
Покури Криса Касперского, поймешь.
А моё личное путешествие в мир ассемблера началось с Z80 (ищи в Вики)
  Ответить с цитированием
Старый 31.10.2011, 11:25   #434   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
батенька, с чего бы вдруг и по кочкам прыгаю? Я недопетрил
  Ответить с цитированием
Старый 31.10.2011, 11:28   #435   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
аэрин!твое ответ,как выйти?
  Ответить с цитированием
Старый 31.10.2011, 13:02   #436   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Спартак21 Посмотреть сообщение
батенька, с чего бы вдруг и по кочкам прыгаю? Я недопетрил
Всё не так просто в современном мире. У процессоров разных поколений и разных фирм разная скорость выполнения разных операций)))
Сейчас, если ты хочешь оптимизировать на ассемблере, необходимо ориентироваться на конкретный процессор. Т.е. это будет как минимум две версии - для Intel и для AMD, а как максимум - х.з. сколько.
Так что ассемблер имеет смысл знать только на чтение - чтобы понять в чем проблема, когда у тебя алгоритм слишком долго работает.
  Ответить с цитированием
Старый 01.11.2011, 22:39   #437   
Registered User
 
Аватар для Спартак21
 
Сообщений: 402
Регистрация: 14.11.2007
Возраст: 38

Спартак21 вне форума Не в сети
вообще-то мы об этом тоже знаем
Сначала я не понял, что ты хотел сказать...
Перефразирую.
...Парню надо знать ТТХ своего "камня"
  Ответить с цитированием
Старый 02.11.2011, 05:59   #438   
Модератор
 
Аватар для black13666
 
Сообщений: 1,458
Регистрация: 04.06.2007

black13666 вне форума Не в сети
Ребят,нужна помощь в программе Visual Basic,работасразу скажу не сложная,нужно просто выполнить порядка 20 заданий по книжке для первого курса института.Естественно оплачиваемо,всем тем кто может оказать помощь,прошу писать в лс или 8 951 877 07 07.СРОЧНО ИЩЕТСЯ ПРОГРАММИСТ!!!
Вложения
Тип файла: pdf feb06036.pdf (624.8 Кб, 18 просмотров)
  Ответить с цитированием
Старый 13.11.2011, 18:46   #439   
Форумец
 
Сообщений: 41
Регистрация: 13.07.2010
Возраст: 38

Goldcoding вне форума Не в сети
Оказываю помощь в программировании, примеры можно посмотреть тут.
  Ответить с цитированием
Старый 13.11.2011, 19:31   #440   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от Goldcoding Посмотреть сообщение
Оказываю помощь в программировании, примеры можно посмотреть тут.
Не то чтобы я собирался что-то заказывать, но здесь только скриншоты.
  Ответить с цитированием
Старый 23.11.2011, 20:55   #441   
385565
 
Сообщений: 323
Регистрация: 26.08.2008

симпай вне форума Не в сети
Нужно написать задачку, тема написана что стеки. Я вроде написал, но программа не хочет работать. Взгляние одним глазком, подскажите что не так.
Условие прикрепил в картинке, номер 28. Заранее спасибо!
Код:
program Project3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const n=2;
Type chislo=packed array [1..n] of 0..9;
  stack=^Node;
  Node=Record
    info:chislo;
    next:stack
  End;
var top,L:stack; ch:chislo;
Procedure InStack(L:stack; x:chislo);
var q:stack;
begin {InStack}
  new(q);
  q^.info:=x;
  q^.next:=top;
  top:=q
end; {InStack}
Procedure PopStack(var L:stack; var ch:chislo);
var q:stack;
begin {PopStack}
  ch:=top^.info;
  q:=top;
  top:=top^.next;
  dispose(q)
end; {PopStack}
Procedure InitStack(var L:stack);
begin
  top:=nil
end;
procedure Print(stek1:stack);
var i:integer;
begin
  while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
  begin   {а это произойдёт как только он перейдёт по ссылке последнего элемента}
    for i:=1 to n do
    Write(stek1^.info[i]); {выводить данне}
    write('  ');
    stek1:=stek1^.next  {и переносить указатель вглубь по стеку}
  end;
end;
Function EmptyStack(L:stack):boolean;
begin
  EmptyStack:=top=nil;
end;
Procedure upor(var L:stack);
var i,j,k:integer; ch:chislo;
  a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,L1:stack;
begin {upor}
  InitStack(L);
  writeln('skolko chisel?');
  readln(k);
  writeln('vvedite po cifre vse chisla');
  for i := 1 to k do
    begin
      for  j:=1 to n do
      begin
        read(ch[j]);
        InStack(L,ch)
      end;
    end;
  Print(L);
  InitStack(a0);
  InitStack(a1);
  InitStack(a2);
  InitStack(a3);
  InitStack(a4);
  InitStack(a5);
  InitStack(a6);
  InitStack(a7);
  InitStack(a8);
  InitStack(a9);
  InitStack(L1);
  while not EmptyStack(L) do
  begin
    PopStack(L,ch);
    for i := n downto 1  do
      case ch[i] of
      0:begin
          InStack(a0,ch);
          a0^.next:=a1;
        end;
      1:begin
          InStack(a1,ch);
          a1^.next:=a2;
        end;
      2:begin
          InStack(a2,ch);
          a2^.next:=a3;
        end;
      3:begin
          InStack(a3,ch);
          a3^.next:=a4;
        end;
      4:begin
          InStack(a4,ch);
          a4^.next:=a5;
        end;
      5:begin
          InStack(a5,ch);
          a5^.next:=a6;
        end;
      6:begin
          InStack(a6,ch);
          a6^.next:=a7;
        end;
      7:begin
          InStack(a7,ch);
          a7^.next:=a8;
        end;
      8:begin
          InStack(a8,ch);
          a8^.next:=a9;
        end;
      9:InStack(a9,ch);
      end;
       L^.next:=a0;
  end;
  Print(L)
end;  {upor}
begin
Upor(L);
readln
end.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 12
Размер:	370.8 Кб
ID:	1603642   Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 13
Размер:	258.0 Кб
ID:	1603643  

  Ответить с цитированием
Старый 23.11.2011, 21:07   #442   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от симпай Посмотреть сообщение
Нужно написать задачку, тема написана что стеки. Я вроде написал, но программа не хочет работать. Взгляние одним глазком, подскажите что не так.
Одним глазком взглянул. На вид адекватно. Это надо ставить паскаль и отлаживаться, а на это за бесплатно мало кто пойдет, если только другой страждущий студент)))
  Ответить с цитированием
Старый 23.11.2011, 21:18   #443   
385565
 
Сообщений: 323
Регистрация: 26.08.2008

симпай вне форума Не в сети
Копмилируется, ввожу числа и тут прога вырубается. Не пойму почему. Я уже готов заплатить, т.к. больше недели мучаюсь с ней, но только не слишком много ибо студент )))
  Ответить с цитированием
Старый 23.11.2011, 21:48   #444   
старый хрыч
 
Аватар для X0R
 
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37

X0R вне форума Не в сети
симпай, а в отладчике погонять? Ставишь бряк на следующую за вводом цифр инструкцию и F7-F8...
  Ответить с цитированием
Старый 23.11.2011, 21:55   #445   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Какой прекрасный алгоритм сортировки в книжке описан…

По сабжу:
Цитата:
Function EmptyStack(L:stack):boolean;
begin
EmptyStack:=top=nil;
end;
Это что вообще такое?

Прочитал еще раз: InStack, PopStack, InitStack, EmptyStack передается аргумент L :stack, который в них не используется. Также, я советую вам почитать про связные списки и внести соответствующие изменения в объявление типа Node. Весь код придется переписать.

Последний раз редактировалось silly; 23.11.2011 в 22:44.
  Ответить с цитированием
Старый 24.11.2011, 12:30   #446   
385565
 
Сообщений: 323
Регистрация: 26.08.2008

симпай вне форума Не в сети
silly, Это функция проверки на пустоту )) Спасибо за подсказки ))
Исправил ошибки некоторые, но программа просто выводит числа в обратном порядке, а не по возрастанию
Код:
program Project3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const n=2;
Type chislo=packed array [1..n] of 0..9;
  stack=^Node;
  Node=Record
    info:chislo;
    next:stack
  End;
var top,L:stack; ch:chislo; x:integer;
Procedure InStack(var L:stack; var x:chislo);
var q:stack;
begin {InStack}
  new(q);
  q^.info:=x;
  q^.next:=L;
  L:=q
end; {InStack}
Procedure PopStack(var L:stack; var ch:chislo);
var q:stack;
begin {PopStack}
  ch:=top^.info;
  q:=L;
  L:=q^.next;
  dispose(q)
end; {PopStack}
Procedure InitStack(var L:stack);
begin
  top:=nil
end;
procedure Print(var stek1:stack);
var i:integer;
begin
  while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
  begin   {а это произойдёт как только он перейдёт по ссылке последнего элемента}
    for i:=1 to n do
    Write(stek1^.info[i]); {выводить данне}
    write('  ');
    stek1:=stek1^.next  {и переносить указатель вглубь по стеку}
  end;
end;
Function EmptyStack(L:stack):boolean;
begin
  EmptyStack:=top=nil;
end;
Procedure upor(var L:stack);
var i,j,k:integer; ch:chislo;
  a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:stack;
begin {upor}
  InitStack(L);
  writeln('skolko chisel?');
  readln(k);
  writeln('vvedite po cifre vse chisla');
  for i := 1 to k do
  begin
    for  j:=1 to n do
        read(ch[j]);
    InStack(L,ch);
  end;
  InitStack(a0);
  InitStack(a1);
  InitStack(a2);
  InitStack(a3);
  InitStack(a4);
  InitStack(a5);
  InitStack(a6);
  InitStack(a7);
  InitStack(a8);
  InitStack(a9);
  while not EmptyStack(L) do
  begin
    PopStack(L,ch);
    for i := n downto 1  do
      case ch[i] of
      0:begin
          InStack(a0,ch);
          a0^.next:=a1;
        end;
      1:begin
          InStack(a1,ch);
          a1^.next:=a2;
        end;
      2:begin
          InStack(a2,ch);
          a2^.next:=a3;
        end;
      3:begin
          InStack(a3,ch);
          a3^.next:=a4;
        end;
      4:begin
          InStack(a4,ch);
          a4^.next:=a5;
        end;
      5:begin
          InStack(a5,ch);
          a5^.next:=a6;
        end;
      6:begin
          InStack(a6,ch);
          a6^.next:=a7;
        end;
      7:begin
          InStack(a7,ch);
          a7^.next:=a8;
        end;
      8:begin
          InStack(a8,ch);
          a8^.next:=a9;
        end;
      9:InStack(a9,ch);
    end;
    L:=a0;
  end;
  Print(L)
end;  {upor}
begin
  Upor(L);
  print(L);
  readln;
  readln(x)
end.
  Ответить с цитированием
Старый 25.11.2011, 21:31   #447   
highly mean
 
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35

silly вне форума Не в сети
Цитата:
Сообщение от silly Посмотреть сообщение
Прочитал еще раз: InStack, PopStack, InitStack, EmptyStack передается аргумент L :stack, который в них не используется. Также, я советую вам почитать про связные списки и внести соответствующие изменения в объявление типа Node. Весь код придется переписать.
Поправлю себя сам.

Цитата:
stack=^Node;
Node=Record
info:chislo;
next:stack
End;
Здесь «стеком» обозван элемент связного списка, что сильно сбивает с толку. (И вообще нехорошо.)
  Ответить с цитированием
Старый 12.12.2011, 15:14   #448   
бибизьян
 
Аватар для aerin
 
Сообщений: 3,026
Регистрация: 17.02.2004

aerin вне форума Не в сети
Spectator, а что действительно нужно такое жесткое модерирование в разделе? Тут все и так на ладан дышит, и, если уж на то пошло, как раз вы первый и начали размахивать сабелькой и трясти первичными половыми признаками в этом топике.
  Ответить с цитированием
Старый 12.12.2011, 16:00   #449   
Форумец
 
Аватар для Spectator
 
Сообщений: 41,140
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от aerin Посмотреть сообщение
Spectator, а что действительно нужно такое жесткое модерирование в разделе? Тут все и так на ладан дышит, и, если уж на то пошло, как раз вы первый и начали размахивать сабелькой и трясти первичными половыми признаками в этом топике.
Нужно. Либо такое, либо будет тот же тихий ужос что был в разделе раньше. Если будешь отвечать - делай это сразу в флудилке, и это и твое сообщение через некоторое время будут там. Я никого не наказывал, почему ты возмущаешься? Даже тему специально для флуда сделал - пожалуйста, только без мата, перехода на личности и хотя бы близко к тематике раздела.
И - на ладан ничего не дышит, количество информативных тем и сообщений не изменилось.
  Ответить с цитированием
Старый 12.12.2011, 22:47   #450   
Форумец
 
Аватар для The_God
 
Сообщений: 1,109
Регистрация: 19.12.2004
Возраст: 42

The_God вне форума Не в сети
смею предположить по количеству постов в темах что задачки для студентов это есть уровень компетенции всех кто остался в ветке про программирование
  Ответить с цитированием
Поиск в теме: 



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

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind