С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
миклух
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 13
#1

поиск по стеку - C++

09.05.2012, 19:42. Просмотров 326. Ответов 0
Метки нет (Все метки)

надеюсь на вашу помощь. написал программу, стек формируется, но вот выполнить поиск по стеку у меня никак не выходит, объясните в чем я не прав, если не трудно поправьте, буду благодарен:


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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
struct people{
    char F[10];
    char I[10];
    char znak[10]; 
    int date[3];
};
//----------------------------------
struct node{
    people d;
    node *p;
};
//----------------------------------
//печать стека
void print_people(people p)
{
    cout<<endl<<"Фамилия: "<<p.F<<" Имя: "<<p.I<<" Зодиак: "<<p.znak<<" Дата рожд.: "<<p.date[0]<<" Месяц рожд.: "<<p.date[1]<<" Год рожд.: "<<p.date[2];
}
//----------------------------------
node *head;
node *first(people d);
void push(node **top, people d);
people pop(node **top);
node *find (node * const top, people x);
//----------------------------------
int main(){
 
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
    people a;
    node *q;
    char ch;
    cout<<"\n информация о людях: ";
    for (int i=0;i<1;i++)
    {
        cout<<"\n Фамилия: "; cin>>a.F;
        cout<<"\n Имя: "; cin>>a.I;
        cout<<"\n Знак зодиака: "; cin>>a.znak;
        cout<<"\n Дата рождения: "; cin>>a.date[0];
        cout<<"\n Месяц рождения: "; cin>>a.date[1];
        cout<<"\n Год рождения: "; cin>>a.date[2];  
    }
 
    node *top = first(a);
    
    do{
        cout<<"\n Фамилия: "; cin>>a.F;
        cout<<"\n Имя: "; cin>>a.I;
        cout<<"\n Знак зодиака: "; cin>>a.znak;
        cout<<"\n Дата рождения: "; cin>>a.date[0];
        cout<<"\n Месяц рождения: "; cin>>a.date[1];
        cout<<"\n Год рождения: "; cin>>a.date[2];
        push (&top, a);
        cout<<"\n Ввод окончен?  y/n  "; cin>>ch;
        cout<<"\n";    
    }
    while (ch != 'y');
 
    cout<<"\n вывод стека: ";
 
    while(top){
    print_people(pop(&top));
    }
    
  cout<<"\nВведите день: "; cin>>a.date[0];
  cout<<"\nВведите месяц: "; cin>>a.date[1];
  cout<<"\nВведите год: "; cin>>a.date[2];
  q=find(top,a);
  
  
 
    if(q!=0)
        {
        cout << q->d.date[0];
        }
        
    else 
        {
        cout << "Таких нет!!\n";
        }
  
    _getch();
    return 0;
}
//----------------------------------
//начальное формирование стека
node * first(people d){
    node *pv = new node;
    pv->d = d;
    pv->p = 0;
    return pv;
}
//----------------------------------
//занесение в стек
void push(node **top, people d){
    node *pv = new node;
    pv->d = d;
    pv->p = *top;
    *top = pv;
}
//---------------------------------
//выборка из стека
people pop(node **top){ 
  people temp = (*top)->d;
  node * pv = *top; 
  *top = (*top)->p; 
  delete pv;
  return temp;
}
//---------------------------------
//поиск из стека
node *find (node * const top, people x){
    node *temp = top;
        while (temp)
    {
      if ((temp->d.date[0]==x.date[0])&&(temp->d.date[1]==x.date[1])&&(temp->d.date[2]==x.date[2]))
          break;
      temp=temp->p;
    }
    
    return temp;    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос поиск по стеку (C++):

задача по односвязному списку (стеку) поиск фри-лансера - C++
необходимо написать функцию insert, добавляющую элемент в упорядоченный односвязный список. например список 1 3 7 добавляем 5: 1 3 5 7 ...

Функция поиска по стеку - C++
Здравствуйте, помогите написать функцию, которая будет искать, заданный с клавиатуры, элемент стека. Вот сам код с парой стандартных...

Ошибка доступа к стеку - C++
Привет Вот такая есть задача Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. ...

Написать функцию присоединения стека S2 к стеку S1 - C++
Написать функцию присоединения стека S2 к стеку S1.

Написал прогу по стеку, но при выводе содержимого - выводит только последний добавленный - C++
Вот собственно сам код, подскажите если что не так. Заранее спасибо! #include &lt;iostream&gt; #include &lt;stack&gt; using namespace std; ...

Вопросы по стеку - C++ Linux
1) Зачем он, почему нельзя было всё делать в куче? 2) Почему его размер фиксирован, почему он не высчитывается динамически взависимости...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 19:42
Привет! Вот еще темы с ответами:

Обращение к стеку - Assembler
Люди помогите разобрать код: CSEG Segment org 100h assume CS:CSEG Code: mov sp,offset lab ;Заносим в стек адрес метки lab ...

Добавить в элемент по Стеку - PascalABC.NET
И снова здравствуйте! Я недавно выкладывал тему про удаления стэков,так вот не учёл одного что при добавлении по стэку,элемент идёт...

Подгон очереди к стеку - C++ WinAPI
Доброго времени суток форумчане. Есть код написанный под C++ Builder 6, формирующий каркас приложения, с дополнительными немодальными...

Проход по стеку несколько раз - C (СИ)
Всем привет! У меня следующая проблема, есть код: #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.