Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2012, 10:12   #1
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
Сообщение 2 задачки по паскалю

Здраствуйте, помогите разобраться в задачах

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

2. Сформировать стек из n элементов произвольного содержания. Удалить все элементы стека, равные последнему. Развернуть стек, т.е. дно стека сделать вершиной, а вершину – дном. Вставить символ ‘` в середину нового стека, если в нем четное число элементов, а если нечетное, то после среднего элемента.

во второй желательно решение полностью, а то со стеком вообше не лажу(((
Tol-333 вне форума Ответить с цитированием
Старый 19.01.2012, 07:48   #2
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
По умолчанию

сновная загвоздка в первой задачке это как выполнить "Построить гистограмму, показывающую число единиц и нулей в двоичном числе в зависимости от его порядкового номера"
Tol-333 вне форума Ответить с цитированием
Старый 19.01.2012, 08:02   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Условие для выборки не особо понятно, однако предположу, что гистограмма строится для числа, прошедшего критерий отбора. Сама гистограмма представляет из себя набор из нескольких элементов (1 число = 1 элементу). Каждый элемент - 2 столбца, высота столбцов - количество 0 и 1 соответственно. Рисуются с помощью graph`а.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)

Последний раз редактировалось Vanta11a; 19.01.2012 в 08:07.
Vanta11a вне форума Ответить с цитированием
Старый 21.01.2012, 16:57   #4
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
По умолчанию

Подскажите как во второй задаче осуществить Вставить символ ‘` в середину нового стека, если в нем четное число элементов, а если нечетное, то после среднего элемента
Tol-333 вне форума Ответить с цитированием
Старый 21.01.2012, 21:36   #5
cyber_NINJA
Пользователь
 
Аватар для cyber_NINJA
 
Регистрация: 19.05.2010
Сообщений: 40
По умолчанию

Создать переменную, например counter в структуре стека или как глобальную в коде и подсчитывать, сколько элементов в стеке после добавления. Чтобы добраться до середины стека1, используй дополнительный стек2 для временного хранилища элементов стека1. Когда вставил символ ‘` в стек1, тогда все что было во втором стеке, перебрасывай в первый.
Windows обнаружила изменение координат положения курсора мыши, чтобы изменения вступили в силу требуется перезагрузка системы
cyber_NINJA вне форума Ответить с цитированием
Старый 22.01.2012, 16:48   #6
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
По умолчанию

по второй задачке набрасал код, но при запуске выскакивают много ошибок, помогите их поисправлять или отредактировать сам алгоритм рограммы.
Может можно как то упрастить эту программу, чем проще тем лучше))
Код:
program Steck;
Type
  Stack=^TStack;
  TStack=record;
  Elem:integer;
  NextElem:Stack;
end;
    procedure addStack (var PStack:Stack; NewElem:integer);
    var x:Stack;
    begin
    new(x);
    x^.Elem:=NewElem;
    x^.NextElem:=PStack;
    PStack:=x;
    end;
        procedure izvlStack (var PStack:Stack);
        var x:Stack;
            N:integer;
        begin
        N:=PStack^.Elem;
        x:=PStack;
        PStack:=PStack^.NextElem;
        Dispose(x);
        end;
var
   sh1, sh2:Stack;
   y:char;
   i,j,k,n,Elem,posl:integer;
begin
Writeln('Введите количество элементов с стеке');
readln(n);
   for i:=1 to n do
   begin
   Writeln('Введите ',i,' элемент стека');
   readln(Elem);
   addStack(sh1,Elem);
      if i=1
         then
         begin
         posl:=Elem;
         end;
   i:=i+1;
   end;
    for j:=1 to n do
    begin
    y:=izvlStack(sh1);
        if posl=y
          then
            begin
            dellite(y);
            end;
          else
            begin
               if (n mod 2=0)
                 then
                  begin
                   Z:=n mod 2;
                   z:=z+1;
                      if z=j
                        begin
                        addStack(sh2,*);
                        j:=j+1;
                        end;
                  end;
                 else
                  begin
                  addStack(sh2,y);
                  j:=j+1;
                  end;
               if (n mod 2<>0)
                 then
                  begin
                   s:=n div 2;
                   s:=s+1;
                       if s=j
                        then
                         begin
                          addStack(sh2,*);
                           j:=j+1;
                         end;
                  end;
                 else
                  begin
                  addStack(sh2,y);
                  j:=j+1;
                  end;
            end;
    end;
  for k:=1 to n do
   begin
    y:=izvlStack(sh2);
    Writeln(k,' элемент стека = ',y);
    k:=k+1;
   end;
end.
Tol-333 вне форума Ответить с цитированием
Старый 22.01.2012, 17:21   #7
arrowsf1
Пользователь
 
Аватар для arrowsf1
 
Регистрация: 22.01.2012
Сообщений: 97
По умолчанию

Stack=^TStack;
TStack=record;
Elem:integer;
NextElem:Stack;

а там точно точка с запятой
и последовательность,разве не запись надо первой создавать
Модераторам: не баньте, у мя такие полезные советы, они стоющие
arrowsf1 вне форума Ответить с цитированием
Старый 22.01.2012, 17:26   #8
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
По умолчанию

в этой часте все работает нормально
Код:
Type
  Stack=^TStack;
  TStack=record; { Элемент стека }
  Elem:integer;  { Значение элемента }
  NextElem:Stack; { указатель на следующий }
end;
Tol-333 вне форума Ответить с цитированием
Старый 22.01.2012, 17:35   #9
Tol-333
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 10
По умолчанию

вот задача №1 но без реализации гистограммы
Код:
program zadacha;
var b:array[1..255] of integer;
    n,x,z,s,l,i,c,d: integer;
begin
z:=0;
s:=0;
repeat
writeln('‚ўҐ¤ЁвҐ 1 ¤«п ўў®¤* зЁб«* 2 ¤«п ®Є®*з**Ёп ўў®¤* зЁбҐ«');
readln(l);
if l=1
then
begin
writeln('‚ўҐ¤ЁвҐ 楫®Ґ зЁб«®');
readln(n);
i:=0;
c:=0;
d:=0;
x:=n;
     while n>=1 do
     repeat
     begin
     i:=i+1;
     b[i]:=n mod 2;
     n:=n div 2;
          if (b[i]=0) then c:=c+1
                      else d:=d+1;
     end;
     until (n=0) or (n=1);
           if c=d then
           begin
           z:=z+1;
           s:=s+x;
           end;
end;
until l=2;
Writeln('Љ®«ЁзҐбвў® 楫ле зЁбҐ« ў 2-®¬ ЇаҐ¤бв*ў«Ґ*ЁЁ Ј¤Ґ 1 Ё 0 а*ў*®Ґ Є®««ЁзҐбвў® = ',z);
Writeln('‘㬬* в*ЄЁе зЁбҐ« = ',s);
readln;
end.
Tol-333 вне форума Ответить с цитированием
Старый 22.01.2012, 21:50   #10
arrowsf1
Пользователь
 
Аватар для arrowsf1
 
Регистрация: 22.01.2012
Сообщений: 97
По умолчанию

В первой проге должын быть массивы которые соберут количество нулей и единиц в каждом числе при его аналее путём деления на 2

полный алгоритм наверху

а дальше путем проведения оператора лайнес прогонка по массивам и построение графиков. всё очень просто
Модераторам: не баньте, у мя такие полезные советы, они стоющие
arrowsf1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачки по паскалю jackiy Помощь студентам 2 26.12.2010 16:37
Задачки по паскалю ))) КоварнаяНяка Помощь студентам 2 17.12.2010 20:20
Задачки по Паскалю!!! Алиночка Паскаль, Turbo Pascal, PascalABC.NET 3 05.06.2009 00:46
Решите пожалуйста задачки по паскалю darika Помощь студентам 7 28.03.2009 16:51