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

стек и очередь - C++

Восстановить пароль Регистрация
 
Nika12
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 67
21.02.2013, 22:29     стек и очередь #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
#include <iostream>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
struct  Person //структура
{ 
    
    char name[30]; //имя
    int tel; //телефон
    int birthday; //год рождения
};
 
int main()
{
   setlocale(LC_ALL,"Russian");
    int n=2; //кол-во человек
Person *persons = new Person[n]; //выделяем память под массив структур
for (int i=0; i<n; i++) //вводим инфо о человеке
{
   cout<<"\nИнформация о "<<i+1<<" человеке: ";
   cout<<"\nВведите фамилию: ";
   cin>>persons[i].name; 
   cout<<"\nВведите номер телефона: ";
   cin>>persons[i].tel;
   cout<<"\nВведите год рождения: ";
   cin>>persons[i].birthday;  
}
//вывод информации
for (int i=0; i<n; i++)
{
   cout<<"\n\nИнформация о "<<i+1<<" человеке: ";
   cout<<"\nФамилия: "<<persons[i].name;
   cout<<"\nТелефон: "<<persons[i].tel;
   cout<<"\nГод рождения: "<<persons[i].birthday; 
 
}
 int number; //искомый номер
 int count=0; //счетчик найденных совпадений номеров
 cout<<"\nВведите искомый номер телефона: ";
 cin>>number;
 for (int i=0; i<n; i++)
 {
     if (persons[i].tel==number) //если номера совпали
     {
         cout<<persons[i].name;  //выводим фамилию
         count++;  //увеличиваем счетчик                         
     }
         
 }
 if (count==0) //если счетчик не изменился, значит такого номера нет
 {
     cout<<"Человека с таким номером телефона нет";         
 }
 delete[] persons; //освобождаем память
getch();
return(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 22:29     стек и очередь
Посмотрите здесь:

C++ СТЕК,ОЧЕРЕДЬ
C++ Стек и очередь
стек и очередь C++
C++ Стек и очередь
C++ Список, стек и очередь.
C++ Стек и очередь
C++ Стек и очередь
C++ Очередь и стек

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
22.02.2013, 01:26     стек и очередь #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
#include <iostream>
#include <cstddef>
#include <string>
 
class Person
{
    public:
        Person(): surname_(), number_(), year_() {}
        Person(const std::string &surname, const std::string &number, const
            std::size_t year): surname_(surname), number_(number), year_(year){}
        void print() const
        {
            std::cout << "Surname: "<< surname_<< std::endl
                      << "Number:  " << number_ << std::endl
                      << "Year:    " << year_ << std::endl << std::endl;
        }
 
    protected:
        std::string surname_, number_;
        std::size_t year_;
};
 
 
class MyStack
{
    public:
        MyStack(): counter(0) {}
        void push(const Person &el)
        {
            if (counter < N) t[counter++] = el;
        }
        void pop()
        {
            if (counter > 0) counter--;
        }
        std::size_t size() const { return counter; }
        bool empty() { return counter == 0; }
        const Person& top() const
        {
            if (counter > 0) return t[counter - 1];
        }
    private:
        enum {N = 2 };
        Person t[N];
        std::size_t counter;
};
 
int main()
{
    MyStack s;
    s.push (Person ("Petrov", "89168008080", 1989));
    s.push (Person ("Voronov", "89161111111", 1987));
    while (!s.empty())
    {
        s.top().print();
        s.pop();
    }
}
Yandex
Объявления
22.02.2013, 01:26     стек и очередь
Ответ Создать тему
Опции темы

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