Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

aleksHL



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

#pragma hdrstop  
#include <iostream.h>  
#include <conio.h>  
#include <string.h>  
#include <stdlib.h>  
 
string rus(char s[])  
// перевод кодировки Windows в Dos  
 {  
    string t;  
    int i=0;  
    t=s;  
 
    while (t[i]!=0)  
     {  
        if(t[i]>='а'&& t[i]<='п' ) t[i]-=64;  
        if(t[i]>='р'&& t[i]<='я' ) t[i]-=16;  
        i++;  
     }  
    return t;  
 }  
 
#pragma argsused  
 
struct book  
 {  
    char avtor[20];  
    char name[20];  
    int year;  
 };  
 
struct element  
 {  
    book info;  
    element* next;  
    element* prev;  
 };  
 
void add (element*& begin, element*& end, book t);  
void del (element*& begin, element*& end, book t);  
void copy (element* begin, element* end);  
void print_right_element (element* begin, element* end);  
void print (element* begin);  
 
int main(int argc, char* argv[])  
 {  
    element* begin = NULL; //начало  
    element* end = NULL; //конец  
    int p;//выбор пункта меню  
    char avtor[20];  
    char name[20];  
    int year;  
    book t;  
 
    do  
     {  
        clrscr();  
        cout<<rus("1. добавление в конец")<<endl;  
        cout<<rus("2. удаление первого")<<endl;  
        cout<<rus("3. копирование дека в обратном порядке")<<endl;  
        cout<<rus("4. получение значения правого элемента")<<endl;  
        cout<<rus("5. вывод дека")<<endl;  
        cout<<endl<<rus("6. выход")<<endl;  
        cout<<endl<<endl;  
        cout<<rus("укажите пункт меню: ");  
        cin>>p;  
        cout<<endl;  
 
        switch (p)  
         {  
 
            case 1: cout<<rus("автор: ");  
                    cin.getline(t.avtor,20);  
                    cin.getline(t.avtor,20);  
                    cout<<rus("название: ");  
                    cin.getline(t.name,20);  
                    cout<<rus("год: ");  
                    cin>>t.year;  
                    add(begin,end,t);  
                    break;  
 
            case 2: del(begin,end,t);  
                    break;  
 
            case 3: copy(begin,end);  
                    getch();  
                    break;  
 
            case 4: print_right_element(begin, end);  
                    getch();  
                    break;  
 
            case 5: print(begin);  
                    getch();  
                    break;  
 
            case 6: return 0;  
         }  
     }  
    while(true);  
 }  
 
 
void add (element*& begin, element*& end, book t)  
 {  
    element* p = new element;  
    p->info = t;  
 
    //если дек пуст, то...  
    if (end == NULL)  
     {  
        begin = p;  
        p->next = p->prev = NULL;  
        end = p;  
     }  
 
    else  
     {  
        p->next = NULL;  
        p->prev = end;  
        end->next = p;  
        end = p;  
     }  
 }  
 
 
void del (element*& begin, element*& end, book t)  
 {  
    if (begin->next != NULL)  
     {  
        element* p = begin;  
        p->info = t;  
        begin = begin->next;  
        begin->prev = NULL;  
        delete p;  
     }  
 
    //если в деке один элемент  
    else  
     {  
        element* p = begin;  
        p->info = t;  
        begin = end = NULL;  
        delete p;  
        cout<<rus("дек пуст");  
        getch();  
     }  
 }  
 
//----------------------------------------------------------------------------------------------------------  
void copy (element&* begin, element&* end)  
 {  
    element* p = begin;  
   
    while(p != 0)  
     {  
        element *prev = p->prev;  
        element *next = p->next;  
        p->prev = next;  
        p->next = prev;  
        p = next;  
     }  
     p = begin;  
     begin = end;  
     end = p;  
 }  
//----------------------------------------------------------------------------------------------------------  
 
void print_right_element (element* begin, element* end)  
 {  
    element* p = end;  
    cout<<p->info.avtor<<" "<<p->info.name<<" "<<p->info.year<<" "<<endl;  
 }  
 
 
void print (element* begin)  
 {  
    element* p = begin;  
    while (p!=0)  
     {  
        cout<<p->info.avtor<<" "<<p->info.name<<" "<<p->info.year<<" "<<endl;  
        p=p->next;  
     }  
        if (begin==0)  
        cout<<rus("дек пуст");  
 }  

Всего записей: 17 | Зарегистр. 06-03-2006 | Отправлено: 21:37 04-12-2006 | Исправлено: aleksHL, 21:38 04-12-2006
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru