Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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

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

icq: 5438392
По умолчанию

Условие для выборки не особо понятно, однако предположу, что гистограмма строится для числа, прошедшего критерий отбора. Сама гистограмма представляет из себя набор из нескольких элементов (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
Репутация: 10
По умолчанию

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

icq: 418555183
По умолчанию

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

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

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

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

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

а дальше путем проведения оператора лайнес прогонка по массивам и построение графиков. всё очень просто
arrowsf1 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

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


21:39.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.