Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2014, 18:15   #1
Ferodot
Новичок
Джуниор
 
Регистрация: 20.04.2014
Сообщений: 2
Сообщение Стеки, очереди (C++)

Помогите пожалуйста с задачами:

1. Построить стек, элементами которого являются слова текста,которые считываются из текстового файла. Слова отделяются друг от друга запятыми, пробелами и другими разделительными знаками. Создать новый стек, в котором содержатся слова заданной длины, что выбранные с первого стека. Вывести содержимое первого и второго стеков.

2. Идет посадка в 100-местный самолет. В очеpедь выстpоились 100 пассажиpов. Пеpвой стоит сyмасшедшая стаpyшка. Зайдя в салон, она садится на любое слyчайно выбpанное место. Остальные пассажиpы - ноpмальные люди: каждый из них, зайдя в салон, садится на свое (обозначенное в билете) место, если оно свободно, и на любое из свободных - в пpотивном слyчае. Какова веpоятность, что последний в очеpеди пассажиp сядет на свое место?

В первой задаче я реализовал считывание с текстового файла, розбития текста на лексемы, записал это в стек. Помогите с созданием нового стека, в котором содержатся слова заданной длины, что выбранные с первого стека.

Код:
#include <iostream>

using namespace std;

 struct item{
    char data[256];
    item * next;
};
item * head, *current;
 FILE* in;
 
void push(char *value)
{
    current = new (item);
    strcpy(current -> data,value);
    current -> next = head;
    head = current;
}
 
void pop(char *value)
{
    current = head;
    strcpy(value,head->data);
    head = current ->next;
    delete current;
}
 
void lenghtWord(char str[])
{
    char * temp, * del = " ,.?!:;-\/\n";
    temp = strtok(str,del);
    while(temp !=NULL){
        push(temp);
        temp=strtok(NULL,del);       
    } 
}
 
void readFile (char str[])
{
    in = fopen("1.txt","r");
    if (in != NULL)
    {
        while (!feof(in) )
        {
            fgets(str,256,in);
            lenghtWord(str);
        }
        fclose(in);
    }
    else cout << "File not found "; 
}
 
int main()
{   
    char str[256];
    head = NULL;
    char key;
    do{
        cout<<"\n Choose the option"<<endl;
        cout<<"1.Print first stack"<<endl;
        cout<<"2.Exit"<<endl;
        cin>>key;
        switch(key){
        case '1':{
		    readFile(str);
		    cout<<"First stack: "<<endl;
                    while(head!=NULL)
                    {
                        pop(str);
                        cout<<str<<" ";
                    }
		    cout<<endl;
                    cout<<"stack empty"<<endl;
		    break;
                 }
        }
    }while(key!='2');
    system("pause");
}
А вот со второй задачей я вообще не могу никак разобраться.
Ferodot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стеки, очереди Fischer Помощь студентам 0 14.04.2012 04:53
Стеки.Очереди Hylim1991 Общие вопросы Delphi 0 19.03.2012 22:50
Стеки.Очереди Hylim1991 Паскаль, Turbo Pascal, PascalABC.NET 0 19.03.2012 13:22
Стеки и очереди Елена93 Паскаль, Turbo Pascal, PascalABC.NET 1 12.03.2012 08:43
Стеки и очереди Romario92 Общие вопросы C/C++ 4 12.12.2010 15:22