Списки в с++
Это моя попытка реализации(она не полная) просьба доделать и добавить комментарии, чтобы я в этом смог разобраться, тем более препод по каждой строчке спрашивает...
#include <conio.h>
struct cherg
{char a;
cherg *next;
};
cherg *ch, *elem;
void stvorch(cherg *ch);
void delch(cherg *ch);
void vivedch(cherg *ch);
void vvodch(cherg *ch);
void main()
{
int x;
clrscr();
ch=NULL;
stvorch(ch);
cout<<"Chto vy hotite sdelat so STEKom? \n";
cout<<"1.Udalit posledniy element\n";
cout<<"2.Dobavit noviy element v nachalo\n";
cin>>x;
switch(x)
{
case 1:delch(ch);
case 2:vvodch(ch);
break;
}
vivedch(ch);
getch();
return;
}
void stvorch(cherg *ch)
{ char b;
int c;
c=-1;
do
{
cout<<"enter the symbol: ";
cin>>b;
c++;
elem=new(cherg);
elem->next=ch;
ch=elem;
elem->a=b;
}
while(b!= '.');
cout<<"Kilkist: "<<c<<"\n";
}
void vivedch(cherg *ch)
{
cout<<"Nasha cherga: ";
do
{
ch=elem->next;
elem=ch;
cout<<" "<<ch->a;
}
while(ch->next!=NULL);
}
void delch(cherg *ch)
{
ch=elem->next;
elem=ch;
cout<<"vy vybrali element: "<<ch->a<<"\n";
}
угадал все буквы, а слово прочитать не смог
могу прокомментировать примерно так
Вот тебе примерчик очереди, быть может не то что надо, но зато как стильно.
#include <conio.h>
using namespace std;
class CQueue
{
int * queue; // указатель на массив эл. очереди
int size; // переменная размера очереди
void Init() // инициалицация массива
{
for(int n = 0; n < size; n++)
{
queue[n] = 0; // все элементы массива, по умолчанию равны 0
}
}
public:
CQueue(int size) // конструскор с параметрами
{
this->size = size; // инициализация переменной класса
queue = new int[size]; // соднание массива класса
Init(); // вызов метода
}
~CQueue() { delete [] queue; }; // деструктор, удаление массива класса
void Add(int number) // метод добавления в очередь
{
for(int n = 1; n < size; n++)
{
queue[n - 1] = queue[n]; // замена предшествующего эл., на текущий
}
queue[size - 1] = number; // добавляемый эл. - последний
}
void Print() // метод отображения очереди
{
cout << "queue:\t";
for(int n = 0; n < size; n++)
{
cout << queue[n] << ", ";
}
cout << "\b\b." << endl;
}
};
void main()
{
CQueue queue = CQueue(5); // создание экземпляра класса CQueue
int tmp; // временная переменная
while((tmp = _getch() - 48) != -21) // в лом описывать далее...
{
if (tmp < 0 || tmp > 9)
{
cout << "Inputs Only Numbers, For Quit - ESC." << endl;
continue;
}
queue.Add(tmp);
queue.Print();
}
}
А за это пару баллов откинет. Мало того, что "магические числа", так ещё и функция на в духе C++. Вполне хватило бы того, что есть в iostream.
#include <conio.h>
struct cherg \\создаем структуру для очереди
{char a;
cherg *next;
};
cherg *ch, *elem;
void stvorch(cherg *ch); \\процедура для создания очереди
void delch(cherg *ch); \\процедура для удаления элемента очереди
void vivedch(cherg *ch); \\процедура для вывода на экран очереди
void vvodch(cherg *ch); \\процедура для ввода нового элемента очереди
void main()
{
int x;
clrscr();
ch=NULL;
stvorch(ch);
cout<<"Chto vy hotite sdelat so OCHEREDyu? \n"; \\выбор действия с очередью
cout<<"1.Udalit posledniy element\n";
cout<<"2.Dobavit noviy element v nachalo\n";
cin>>x;
switch(x)
{
case 1:delch(ch);
case 2:vvodch(ch);
break;
}
vivedch(ch);
getch();
return;
}
void stvorch(cherg *ch) \\процедура создания очереди
{ char b;
int c;
c=-1;
do
{
cout<<"enter the symbol: ";
cin>>b;
c++;
elem=new(cherg);
elem->next=ch;
ch=elem;
elem->a=b;
}
while(b!= '.');
cout<<"Kilkist: "<<c<<"\n";
}
void vivedch(cherg *ch) \\процедура вывода на экран очереди
{
cout<<"Nasha cherga: ";
do
{
ch=elem->next;
elem=ch;
cout<<" "<<ch->a;
}
while(ch->next!=NULL);
}
void delch(cherg *ch) \\удаление элемента очереди
{
ch=elem->next;
elem=ch;
cout<<"vy vybrali element: "<<ch->a<<"\n";
}
Осталось написать процедуру ввода нового элемента очереди и сделать так чтобы все правильно работало..
Еще две задачки:
Конечно откинет, подразумевалась читабельность кода, а ни как его содержимое.
Еще две задачки:
да вы, молодой человек, обнаглели, однако!0_о
А взять учебник, потратить пол часа и прочесть четыре страницы, прижать попу к стулу, посидеть два часа и написать самому не судьба?
Конечно дело хозяйское, но дальше задания будут больше и сложнее, и решать их будет находится все меньше и меньше желающих, бо люди любят малые по объему и интересные задания, мозг размять, на самый крайний случай маленькие и нудные, оказать посильную помощь новичку, но ни как не наоборот, подумай над этим.
Ну так "магические числа" и понижают читаемость. И сишные функции её не прибавляют. В остальном красиво, но эта деталь всё портит.
AVT, слеши не в ту сторону.
Соотвественно, тот кто ему помогал :) согласно правил раздела получает половину.
Обращаю внимание, что в подобных темах надо жать на кнопку "Сообщить модератору". Спасибо за внимание. Тема закрыта.