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

Подсчитать количество различных элементов в очереди и вывести их на экран - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ STL небольшие исправления http://www.cyberforum.ru/cpp-beginners/thread523492.html
Доброго времени суток. Помогите пожалуйста немного переделать программу. Вместо вектора мне нужна сделать очередь, ключом должен быть водитель (т.е "name"), вместо того чтобы выводить список различных маршрутов (nm), нужно выводить список всех водителей (name) работающих на одной марке автобуса (mark). Буду очень благодарен. #include "stdafx.h" #include <iostream> #include <fstream> #include...
C++ Создать класс Доброго времени суток. Нужна помощь. Завтра контрольная, а я вот как-то не могу написать программу.. Помогите пожалустааа.. \\Создать класс содержащий данные, реализовать методы ввода вывода и выборки по условию. Класс ФИРМА содержит следующие данные: идентификационный номер сотрудника,фамилия, имя, отчество, наименование отдела, должность, категория. Вывести список сотрудников определенной... http://www.cyberforum.ru/cpp-beginners/thread523490.html
C++ Создать АТД (структура)
1.Создать АТД (структура) - принтер, у которого есть фирма-производитель, тип(матричный,струйный,лазерный), разрешающая способность. Создать массив из принтеров и определить функцию для вывода лазерных принтеров в порядке возрастания разрешающей способности. Определить функцию, которая устанавливает по умолчанию тип струйный с разрешающей способностью 300х300. 2.Создать АТД (структура) -...
C++ E2251 Cannot find default constructor to initialize base class
Здравствуйте. Столкнулся с данной ошибкой: E2251 Cannot find default constructor to initialize base class class fCountry { public: fCoutry(void) fCountry(string _name, string _government, double _area) fCountry(fCountry const& N)
C++ Элементарные действия с классом http://www.cyberforum.ru/cpp-beginners/thread523446.html
Доброй ночи. Что следует прописать в int main() ,чтоб вызвать функцию coplex::trigon(float a, float b) использую переменные которые указаны в классе coplex. #include <iostream> #include <math.h> #include <string> using namespace std; class coplex {
C++ Составить программы по блок-схемам С++ 1. Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: а) умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы; б) прибавлением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй матрицы. 2. Даны натуральное число n, символы s1,...,sn. Известно, что... подробнее

Показать сообщение отдельно
Kidasov
77 / 77 / 12
Регистрация: 02.12.2011
Сообщений: 965
Записей в блоге: 3
23.03.2012, 03:32     Подсчитать количество различных элементов в очереди и вывести их на экран
1. Очередь
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
class Queue {
    int *a;
    int length;
public:
    Queue();
    ~Queue();
    void push(int number);
    int pop();
    void show();
};
 
//конструктор
Queue :: Queue() {
    length = 0;
    a = new int[length];
}
 
//деструктор
Queue :: ~Queue() {
    delete[] a;
}
 
//добавляем элемент в очередь
void Queue :: push(int number) {
    int *newQ = new int[length + 1];
    newQ[0] = number;
    for (int i = 1; i <= length; i++) {
            newQ[i] = a[i - 1];
    }
    delete[] a;
    a = newQ;
    length++;
}
 
//берем последний элемент из очереди
int Queue :: pop() {
    int lastElem = a[length - 1];
    int *newQ = new int[length - 1];
    for (int  i = 0; i < length - 1; i++) {
        newQ[i] = a[i];
    }
    delete[] a;
    a = newQ;
    length--;
    return lastElem;
}
 
//вывести очередь на экран
void Queue :: show() {
    cout << "Our queue:" << endl;
    for (int i = 0; i < length; i++) {
        cout << a[i] << " " ;
    }
    cout << endl;
    cout << "length = " << length << endl;
}
 
int main()
{
    Queue q;
    for (int i = 0; i < 5; i++) {
        q.push(i);
    }
    q.show();
    return 0;
}
Добавлено через 13 минут
2.Стек
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
 
using std::cout;
using std::endl;
using std::cin;
 
class Stack {
    int *a;
    int length;
public:
    Stack();
    ~Stack();
    void push(int number);
    int pop();
    void show();
};
 
//Конструктор
Stack :: Stack() {
    length = 0 ;
    a = new int[0];
}
 
//Деструктор
Stack :: ~Stack() {
    delete[] a;
}
 
//Добавить первый элемент
void Stack :: push(int number) {
    int *newS = new int[length + 1];
    newS[0] = number;
    for (int i = 1; i <= length; i++) {
            newS[i] = a[i - 1];
    }
    delete[] a;
    a = newS;
    length++;
}
 
//Вытащить первый элемент
int Stack :: pop() {
    int  firstElement = a[0];
    int *newStack = new int[--length];
    for (int i = 1; i < length + 1; i++) {
        newStack[i - 1] = a[i];
    }
    delete[] a;
    a = newStack;
    return firstElement;
}
 
//Вывод стека на экран
void Stack :: show() {
    int sumCr = 0;
    cout << "Our stack:" << endl;
    for (int i = 0; i < length; i++) {
        sumCr += a[i];
        cout << a[i] << " ";
    }
    cout << endl;
    cout << "Cr arifm " << sumCr << endl;
}
 
int main() {
    Stack s;
    for (int i = 0; i < 5; i++) {
        s.push(i);
    }
    s.show();
    return 0;
}
Добавлено через 1 час 47 минут
3.Палиндром
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <cstring>
 
using std::cout;
using std::endl;
using std::cin;
using std::getline;
 
class Stack {
public:
    char *a;
    int length;
    Stack();
    ~Stack();
    void push(char s);
    int pop();
    void show();
};
 
//Конструктор
Stack :: Stack() {
    length = 0 ;
    a = new char[0];
}
 
//Деструктор
Stack :: ~Stack() {
    delete[] a;
}
 
//Добавить первый элемент
void Stack :: push(char s) {
    char *newS = new char[length + 1];
    newS[0] = s;
    for (int i = 1; i <= length; i++) {
            newS[i] = a[i - 1];
    }
    delete[] a;
    a = newS;
    length++;
}
 
//Вытащить первый элемент
int Stack :: pop() {
    int  firstElement = a[0];
    char *newStack = new char[--length];
    for (int i = 1; i < length + 1; i++) {
        newStack[i - 1] = a[i];
    }
    delete[] a;
    a = newStack;
    return firstElement;
}
 
//Вывод стека на экран
void Stack :: show() {
    cout << "stack:" << endl;
    for (int i = 0; i < length; i++) {
       cout << a[i] << " ";
    }
    cout << endl;
}
 
//функция проверки на палиндром
bool palindromString(Stack *ob, Stack *ob2, char *str) {
    int strLen = static_cast<int>(strlen(str));
    int k = 0;
    if (strLen % 2) {  //если длина строки нечетное число то для одинакового количества символов в стеках увеличиваем k
       k += 1;
    }
    for (int i = 0; i < strLen/2 + k; i++) {
        ob->push(str[i]);    }
    for (int j = strLen/2; j < strLen; j++) {
        ob2->push(str[j]);
    }
    for(int i = 0, j = ob2->length - 1; i < ob->length, j >= 0 ; i++, j--) {
        if (ob->a[i] != ob2->a[j]) return false;
    }
    return true;
}
 
int main() {
    Stack s, s2;
    char a[20];
    cout <<"Input string until 20 elements" << endl;
    cin.getline(a, 20);
    cout << endl << "Your string " << a ;
    if (palindromString(&s, &s2, a)) cout << " is palindrom" << endl;
    else cout << " is not palindrom" << endl;
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru