Напишите комментарии к коду

Castiel12

Программа не моя , а друга. Просил помочь, а я прошу Вас знатоков С++, помочь в нелегком деле, нужно описать каждую функцию(сделать подпись) Спасибо заранее огромное всем кто поможет!!!
#include<stdio.h>
#include<locale.h>
#include<conio.h>
#include <stdlib.h>
 
const int STACK_RESET_SIZE = 4;
const int STACKS_STORED = 20;
const int STACKS_STORE_SIZE = STACK_RESET_SIZE * STACKS_STORED;
 
const int START_INDEX = STACKS_STORE_SIZE / 2 - STACK_RESET_SIZE / 2;
const int   END_INDEX = STACKS_STORE_SIZE / 2 + STACK_RESET_SIZE / 2;
 
int storedArray[STACKS_STORE_SIZE] = {0};
int arrayStartIndex = STACKS_STORE_SIZE / 2;
 
class stackelem //создается 1класс
{
public: //открытые функции и переменные класса
    int data;
    stackelem *next;
};
 
class stack //создается второй класс
{
public: //открытые функции и переменные 2 класса/стек
    stackelem *last;
    stackelem *cursor;
    stack();
    ~stack();
 
    void put(int d);
    void puut(int d);
    int get();
    int getcursor();
    bool isempty();
    void print();
    int see();
    void left();
    void right();
    void bput(int d);
 
    bool relocate();
    int size();
};
 
void stack::right() //перемещение вправо
{
    if (last == 0) return;
    if(cursor->next==0)
        cursor=cursor;
    else
        cursor=cursor->next;
}
 
void stack::left() //перемещение влево
{
    if (last == 0) return;
    stackelem *f=last;
    if(cursor!=last) {
        while(f->next!=cursor)
            f=f->next;
        cursor=f;
    }
}
 
stack::stack()
{ 
    last=0;
}
 
bool stack::isempty()
{
    return !last;
}
 
int stack::see()
{
    return isempty() ? 0 : last->data;
}
 
void stack::put(int d)// описание функции put
{
    stackelem *newel;
    newel=new stackelem;
    newel->data=d;
    if (last==0)
    {
        last=newel;
        cursor = last;
        last->next=0;
    }
    else
    {
        newel->next=last;
        last=newel;
        cursor = last;
    }
}
 
void stack::puut(int d)// описание функции puut
{
    stackelem *newel;
    newel=new stackelem;
    newel->data=d;
    if(last ==0)
        put(d);
    else
    {
        newel->next=cursor->next;
        cursor->next=newel;
    }
}
 
void stack::bput(int d) // описание функции bput
{
    stackelem *newel;
    stackelem *p=last;
    newel=new stackelem;
    newel->data=d;
    if(last ==0)
        put(d);
    else
    {
        if(cursor==last)
        {
            put(d); cursor=cursor->next;
        }
        else
        {
            while(p->next!=cursor)
                p=p->next;
            newel->next=p->next;
            p->next=newel;
        }
    }
}
 
int stack::get()
{
    if (last==0)
        return 0;
    stackelem *del=last;
    int d=last->data;
    last=last->next;
    delete del;
    return d; 
}
 
int stack::getcursor()
{
    while(last!=0)
    {
        stackelem *del=last;
        int d=cursor->data;
 
        if(cursor==last)
        {
            del=cursor;
            last=cursor->next;
            cursor=last;
            delete del;
        }
        else
        { 
            while(del->next!=cursor)
                del=del->next;
            cursor=del;
            del=cursor->next;
            cursor->next=cursor->next->next;
            delete del;
        }   
        return d;  
    }
    return 0;
}
 
stack::~stack()
{
    while (last!=0)
        get();
}
 
void stack::print() // описание функции print
{
    if (last==0)
    {
        printf("Список пуст\n");
        return;
    }
    stackelem *pr=last;
    while(pr!=0)
    { 
        if(pr==cursor)
            printf("(%i)  ",pr->data);
        else
            printf("%i  ", pr->data);
        pr=pr->next;
    }     
    printf("\n");
}
 
bool stack::relocate() {
    if (arrayStartIndex == 0) return false;
    arrayStartIndex -= STACK_RESET_SIZE / 2;
    for (int i = arrayStartIndex; i < START_INDEX; i++)
        storedArray[i] = storedArray[i + STACK_RESET_SIZE / 2];
    for (int i = END_INDEX; i < STACKS_STORE_SIZE - arrayStartIndex; i++)
        storedArray[i] = storedArray[i - STACK_RESET_SIZE / 2];
    for (int i = START_INDEX; i < END_INDEX; i++)
        storedArray[i] = get();
    return true;
}
 
int stack::size() {
    if (!last) return 0;
    int result = 1;
    stackelem* ptr = last;
    while (ptr = ptr->next)
        result++;
    return result;
}
 
void watchArray() { // описание функции watchArray
    printf("Массив:\n");
    for (int i = arrayStartIndex; i < STACKS_STORE_SIZE - arrayStartIndex; i++)
        printf("%i ", storedArray[i]);
    printf("\n");
    system("pause");
}
 
int main() // описаание основной программы
{
    setlocale(LC_ALL, "RUS");
    stack s;
    int z;
 
    for(;;)
    {
        system("cls"); 
        s.print();
        printf("Добро пожаловать\n1)Вправо\n2)Влево\n3)Добавить после выделенного элемента\n4)Добавить перед выделенным элементом\n5)Удалить\n6)посмотреть массив\n7)Выход\n");
 
        scanf("%i", &z);
 
        if(z==1)
            s.right();
        if(z==2)
            s.left();
        if ((z == 3 || z == 4) && s.size() == STACK_RESET_SIZE) {
            printf(s.relocate() ? "Стек успешно перемещён\n" : "Не удалось переместить стек\n");
        }
        if(z==3)
        {
            int d;
            printf("Введите элемент: ");
            scanf("%i", &d);
            s.puut(d);
        }
        if(z==4)
        {
            int d;
            printf("Введите элемент: ");
            scanf("%i", &d);
            s.bput(d);
        }
        if(z==5)
            s.getcursor();
        if (z==6)
            watchArray();
        if(z==7)
            exit(1);    
    }     
}
1 ответ

Castiel12

В общем случае, для оформления кода, выделите код и нажмите на кнопку соответствующего языка (см. изображение)