Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стек 
:(
    Опции темы
Гость_Андреи
Дата 2.6.2005, 03:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Условие такое:
Программа должна выполнять:
стандартеую операцию добавления в стек;
стандартную операцию извлечения из стека;
работа с переменными стека;
ошибка переполнения.
Реализацию осуществить в отдельных функциях, сохранять информацию в файл.

Вот то что я пока сделал (не работает):
Код

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;

struct man{
    char F[15],I[15],O[15],DR[10];
};
struct STACK{
    struct man M;
    struct STACK *next;
};

//___________________________
void add(struct STACK **head);
void iden(struct STACK head, struct man w);
void input(struct man *w);
void display(struct STACK *wk);
struct STACK *print(struct STACK *h);
void del(struct STACK **head);

//___________________________
void main(void)
{struct STACK *head=NULL;
while(1)
{
    cout <<"Vuberite deistvie:"<<endl;
    cout <<"a-Dobavit element"<<endl;
    cout <<"p-Vuvod soderchimogo stacka"<<endl;
    cout <<"d-Ydalenie elementa"<<endl;
    cout <<"q-Exit"<<endl; fflush(stdin);
    switch(getch())
    {
    case 'a': case 'A':add(&head); break;
    case 'p': case 'P':display(head); break;
    case 'd': case 'D':del(&head); break;
    case 'q': case 'Q':return;
    default : cout << "ERROR.." << endl;
    cout << "Povtorite vvod" <<endl;
    }
    cout << "press any key" <<endl;
    getch();
}
}
//___________________________
void add(struct STACK **head)
{    
    struct STACK *tmp; struct man W;
    input(&W);
    if(iden(*head,&W)==0)
    {    tmp=new STACK;
        if(tmp==NULL)
        {cout << "Svobodnoi pamati net";return;}
        else
        {    tmp->M=W;
            tmp->next=(*head);
            (*head)=tmp;
        }
    }
    else cout << "Takoi element est"<<endl;
    return;
}

//____________________________

int iden(struct STACK *head,struct man * w)
{while(head)
{if (strcmp(head->M.F,w->F)==0 && strcmp(head->M.I,w->I)==0 &&
    strcmp(head->M.O,w->O)==0 &&
    strcmp(head->M.DR,w->DR)==0)
    return 1;
    head=head->next;
}
return 0;
}
//____________________________
void input(struct man *w)
{
    cout << "Vvedite Fmili Ime Otchestvo Daty" << endl;
    fflush(stdin);    cin >> w->F >> w->I >> w->O >> w->DR;
}
//____________________________
void display(struct man *h)
{
    cout << "Information" <<endl;
    if(!h) {cout << "Stack pust"<<endl;return;}
    do
    {print(h);h=h->next;
    }while(h);
    cout <<""<<endl; return;
}
//___________________________
struct STACK *print(struct STACK *wk)
{
    cout << wk->M.F << wk->M.I << wk->M.O << wk->M.DR << endl;
    return wk;
}
//__________________________
void del(struct STACK **head)
{struct STACK *cur,*pr; struct man w;
cur=*head;
if(!cur){cout << "Stack pust" << endl;return;}
cout << "Kakoi element nado ydalit" << endl;
input(&w);
while(cur)
{
    if(strcmp(cur->M.F,w.F)==0 && strcmp(cur->M.I,w.I)==0 &&
        strcmp(cur->M.O,w.O)==0 && strcmp(cur->M.DR,w.DR)==0)
    {if(cur==*head)
    {    (*head)=(*head)->next;
        delete cur; cout << "Element ydalen" << endl;return;
    }
    pr->next=cur->next;
    delete cur;
    cout << "Element ydalen" << endl;return;
    }
    pr=cur; cur=cur->next;
}
cout << "Net takogo elementa" <<endl;
}
//___________________________________

  Вверх
Coder
Дата 2.6.2005, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



может инструкциями Ассеблера?


PM MAIL   Вверх
versus
Дата 2.6.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.3.2005
Где: Переславль-Залесс кий

Репутация: нет
Всего: 3



> может инструкциями Ассеблера?
ыыы
сделай враппер вокруг std::stack smile

Это сообщение отредактировал(а) versus - 2.6.2005, 14:15
PM MAIL WWW   Вверх
Nuzur
Дата 6.6.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



А чем не подходит стандартный ?


--------------------
Never again...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.