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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2008, 20:36   #1
Freer
Пользователь
 
Аватар для Freer
 
Регистрация: 20.10.2008
Сообщений: 64
Стрелка Задача на очередь

Дан набор из 10 чисел. Создать две очереди: первая должна содержать числа из исходного набора с нечетными номерами (1, 3, ..., 9), а вторая — с четными (2, 4, ..., 10); порядок чисел в каждой очереди должен совпадать с порядком чисел в исходном наборе. Вывести указатели на начало и конец каждой из полученных очередей.

Если кто поможет ,буду рад
FreeR
Freer вне форума Ответить с цитированием
Старый 02.11.2008, 20:37   #2
Freer
Пользователь
 
Аватар для Freer
 
Регистрация: 20.10.2008
Сообщений: 64
По умолчанию

вот мой вариант кода,но работает не так как хочется(
Код:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

struct number                                                                         //Определение структурных типов данных
{
  int value;
  number *next;
  number *prev;
};

void del(number **p1, number **p2, number *pc)              //Описание функции
{
  number *pp, *nn;

  if(pc==NULL) return;
  if((pc!=*p1) && (pc!=*p2))
  {
   pp=pc->prev;
   nn=pc->next;
   pp->next=nn;
   nn->prev=pp;
  }
   else if(pc==*p1)
   {
   *p1=(*p1)->next;
   (*p1)->prev=NULL;                                                           //Указатель на начало списка
   }
    else if(pc==*p2)
    {
     *p2=(*p2)->prev;
     (*p2)->next=NULL;                                                         //Указатель на конец списка
    }
  free(pc);

}

void printlist(number *p1)                                                     //Описание функции
{
  while (p1!=NULL)
  {
    cout << p1->value << " ";
    p1 = p1->next;
  }
  cout << '\n';
}


int main (void)
 {
  number *p1, *p2, *p, *pp;
clrscr();                                                                                    //Очистка экрана
  p1=new number;
  p1->value=1;
  p1->prev=NULL;
  p1->next=new number;
  p=p1->next;
  pp=p1;
  for(int i=2;i<5;i++)
  {
   p->value=i;
   p->prev=pp;
   p->next=new number;
   pp=p;
   p=p->next;
  }
  p->value=i;
  p->prev=pp;
  p->next = NULL;
  p2=p;

  printlist(p1);                                                                                   //Вывод списка

  p=p1->next->next;                                                                         //Переход на третий элемент
  del(&p1, &p2, p);                                                                          //Удаление третьего элемента

  printlist(p1);                                                                                   //Вывод нового списка 

  return 0;
 }
FreeR
Freer вне форума Ответить с цитированием
Старый 02.11.2008, 21:50   #3
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

задается массив чисел array[10].
задается две переменные типа int: n=-1 и p=-1
создаешь два массива типа int: arrayn, arrayp, в каждом до 10 чисел (или 5 если числа не повторяющиеся).
цикл for:
проверяешь значение элементов (if((array[i]%2)==0))
если число положительное (==0):
заносишь его в массив arrayp
инкрементируешь p
иначе:
заносишь его в массив arrayn
инкрементируешь n
~~~~~~~~~~~~
вывод указателя первого элемента массива четных чисел: int *pfirst; pfirst=&arrayp[0]; последнего элемента int *plast; plast=&array[p];
для нечетных аналогично.
если препод в вузе будет ругаться по поводу что типа надо указатели юзать, то работай с массивами как с указателями:
array[2]==*(array+2) //сдесь * - операция разыменования(!)
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 03.11.2008, 00:17   #4
Freer
Пользователь
 
Аватар для Freer
 
Регистрация: 20.10.2008
Сообщений: 64
По умолчанию

О! Спасибо!
Я уж думал нет добрых людей)
Тока это не преподу и надо именно очередь)
FreeR

Последний раз редактировалось Freer; 03.11.2008 в 00:19.
Freer вне форума Ответить с цитированием
Старый 03.11.2008, 09:50   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А почему бы не использовать queue из библиотеки STL?
pu4koff вне форума Ответить с цитированием
Старый 03.11.2008, 10:34   #6
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от Freer Посмотреть сообщение
О! Спасибо!
Я уж думал нет добрых людей)
Тока это не преподу и надо именно очередь)
незачто, массив по сути своей это упорядоченая очередь указателей, а следовательно есть очередь.
если делать очередь на основе структуры (как у вас) алгоритм работы с ней я думаю вы сообразите быстро.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 03.11.2008, 10:48   #7
Freer
Пользователь
 
Аватар для Freer
 
Регистрация: 20.10.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А почему бы не использовать queue из библиотеки STL?
версия не позволяет(
Borland 3.1
FreeR
Freer вне форума Ответить с цитированием
Старый 03.11.2008, 13:25   #8
Freer
Пользователь
 
Аватар для Freer
 
Регистрация: 20.10.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от alexinspir Посмотреть сообщение
незачто, массив по сути своей это упорядоченая очередь указателей, а следовательно есть очередь.
если делать очередь на основе структуры (как у вас) алгоритм работы с ней я думаю вы сообразите быстро.
уже сообразил)
FreeR
Freer вне форума Ответить с цитированием
Старый 04.11.2008, 01:37   #9
Destiny_2008
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 11
По умолчанию

Приветик всем!!! Я новенькая в С++. Помогите решить 2 задачи!
Вывести на екран монитора таблицу!! Это все должно быть в рамке
Деякі види антилоп
Назва Група Місце знаходження Чисельність популяції
Джейран A Азия 30000
Гну B Африка 560000
Бейза H Африка 2500
Групи: А - дійсні антилопи, B - коров'ячі антилопи, H - другі антилопи
Destiny_2008 вне форума Ответить с цитированием
Старый 04.11.2008, 10:12   #10
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
Сообщение

Цитата:
Сообщение от Destiny_2008 Посмотреть сообщение
Приветик всем!!! Я новенькая в С++. Помогите решить 2 задачи!
Вывести на екран монитора таблицу!! Это все должно быть в рамке
Деякі види антилоп
Назва Група Місце знаходження Чисельність популяції
Джейран A Азия 30000
Гну B Африка 560000
Бейза H Африка 2500
Групи: А - дійсні антилопи, B - коров'ячі антилопи, H - другі антилопи
Код:
+----------------------------------------------------------+
|                  |              |                      |                |
|                  |              |                      |                |
|                  |              |                      |                |
|                  |              |                      |                |
|                  |              |                      |                |
+----------------------------------------------------------+
а как сделать такое, думаю сообразите.
зы, на хохлятском ниче не понял
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек и очередь. (Delphi) Olgasato Помощь студентам 8 02.04.2010 08:08
очередь odi_noki Общие вопросы Delphi 3 24.10.2008 12:09
Создать очередь из n целых чисел вычисляющая по формуле А=х*х+1; evrey Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2008 20:44
процессы выполнялись сразу, не ставясь в очередь Var17 Win Api 3 03.05.2008 12:57
Очередь, нид хэлп Roman-S Общие вопросы C/C++ 1 15.03.2008 23:40