Форум программистов, компьютерный форум CyberForum.ru

Добавление элемента, введенного с клавиатуры, в конец очереди - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 22:02     Добавление элемента, введенного с клавиатуры, в конец очереди #1
Помогите, пожалуйста, написать программу, которая создает очередь из элементов массива(массив читается из файла) и добавляет в конец очереди элемент, введенный с клавиатуры.
Заранее благодарен!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
08.12.2012, 22:22     Добавление элемента, введенного с клавиатуры, в конец очереди #2
массив каких элементов int, char ...?

Добавлено через 5 минут
в общем, используй для хранения массива std::vector и его метод push_back() для добавления элемента в конец
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 22:25  [ТС]     Добавление элемента, введенного с клавиатуры, в конец очереди #3
массив целочисленный - int.
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
08.12.2012, 22:34     Добавление элемента, введенного с клавиатуры, в конец очереди #4
если я правильно понял, тебе сперва необходимо в очередь загрузить элементы из массива(который хранится в файле). Потом ввести элемент с клавиатуры и добавить его в конец очереди и соответственно первый элемент очереди вытеснить? или просто добавить в конец очереди элемент не вытесняя первого?
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 22:55  [ТС]     Добавление элемента, введенного с клавиатуры, в конец очереди #5
нет, вытеснять не надо, просто в конец приписать новый элемент. только вот как?я не силен в С++, первый год изучаю..
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
08.12.2012, 22:56     Добавление элемента, введенного с клавиатуры, в конец очереди #6
вариант если: добавить в конец очереди и первый элемент вытеснить
C++
1
2
3
4
std::list<int> data;
......
data.pop_front();
data.push_back(элемент введенный с клавиатуры)
вариант если: добавить в конец очереди и не вытеснять первый элемент
C++
1
2
3
std::list<int> data;
......
data.push_back(элемент введенный с клавиатуры)
-------
аааа, так у тебя вообще ничего нет? я думал код загрузки элементов уже есть
напиши тогда пример, как элементы хранятся в файле - я напишу полностью программу
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 23:07  [ТС]     Добавление элемента, введенного с клавиатуры, в конец очереди #7
можно даже знаешь как сделать, не из файла считывать, а из массива, заданного в программе, например:вотмассив int mas[10] = {1,3,4,5,6,8,9,6,5,33}, из него очередь составить, и потом добавить новый элемент...

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
 
 
// структура, которая описывает один узел:
struct Node
{
    int data;    //элемент данных
    Node*  next;   // указатель на следующий узел
};     
 
int main()
{
 
      //Указатели на первый, текущий и предыдущий узел: 
Node  *firstPt=NULL, *token=NULL, *prev=NULL; 
int mas[10] = {1,3,4,5,6,8,9,6,5,33};
int ch, 
char Flag=1; // создаем очередь: 
do
{
    for (int i = 1; i < 10; i++)
    {
    mas[i]  >> ch;
    token = new Node; // выделяем место под текущий узел
    token->data = ch; // записываем элемент данных
    token->next = NULL; // указатель на следующий элемент равен 0
    if (Flag) // если создан первый узел
    {
    firstPt = token ;
    Flag = 0;
    }
     else prev -> next = token; // противном случае запоминаем в ранее созданном узле адрес нового узла
    prev = token;// текущий узел становится предидущим
    
}
    cout << endl; // вывод
    cout << "Очередь:\i";
token = firstPt; // адрес первого узла
while (token)  // пока указатель на текущий узел не равен О\
{
    cout << token -> data; //выводим элемент данных
    token = token -> next; //переходим к следующему узлу
}
cout << endl;


я тут с методичкой посидел, что-то написал....не знаю правильно или нет...
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
08.12.2012, 23:10     Добавление элемента, введенного с клавиатуры, в конец очереди #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <vector>
 
using std::cout;
using std::cin;
using std::endl;
 
int main(){
  const int elements = 10;
  int mas[elements] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  std::vector<int> v;
  int data = 0;
  // копируем данные из массива в вектор
  for(int i = 0; i < elements; ++i)
    v.push_back(mas[i]);
  
  // добавляем элемент в конец вектора
  cin >> data;
  v.push_back(data);
 
  // выводим содержимое вектора
  std::vector<int>::iterator i;
  for(i = v.begin(); i != v.end(); ++i)
    cout << *i << " ";
  cout << endl;
 
return 0;
}
в зависимости от твоих дальнейших нужд выбираешь необходимую для тебя структуру хранения данных:
vector (#include <vector>)
list (#include <list>)
deque ( (#include <deque>))
и меняешь в коде соответственно vector на list или deque
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 23:19  [ТС]     Добавление элемента, введенного с клавиатуры, в конец очереди #9
спасибо_)
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
08.12.2012, 23:34     Добавление элемента, введенного с клавиатуры, в конец очереди #10
Цитата Сообщение от X_Duke_Nuken_X Посмотреть сообщение
а ,собственно,где будет храниться очередь, и как вывести промежуточный результат на экран?
очередь хранится в std::vector<int> v (вектор выбрал просто для примера)
что-бы вывести определенный участок (от 2 до 5 элемента) необходимо сделать:
C++
1
2
3
4
std::vector<int>::iterator i;
  for(i = v.begin() + 1; i != v.begin() + 4; ++i)
    cout << *i << " ";
  cout << endl;
std::vector<int>::iterator i; - это просто указатель;
i = v.begin() - указатель на начало вектора (списка, очереди и т.д.)
итераторы позволяют применять к ним действия типа ++, --, +, -
вообще, почитай книгу по STL (к примеру Л.Аммерааль - STL для программистов на C++) - кратко описаны возможности STL - читается легко и доступным языком написана
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2012, 23:48     Добавление элемента, введенного с клавиатуры, в конец очереди
Еще ссылки по теме:

Добавление элемента в конец списка C++
Проверка сортировки введенного с клавиатуры массива C++
Добавление элемента в конец списка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
08.12.2012, 23:48  [ТС]     Добавление элемента, введенного с клавиатуры, в конец очереди #11
спасибо за разъяснение))
Yandex
Объявления
08.12.2012, 23:48     Добавление элемента, введенного с клавиатуры, в конец очереди
Ответ Создать тему
Опции темы

Текущее время: 00:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru