код есть на С++, а мне нужно его переделать в С. Помогите пожалуйста, буду очень благодарна.
код:
Код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
//односвязный список
struct elem {
char name[40]; //исполнитель
char style[40]; //стиль
int albums; //общее количество альбомов
int cd_of_year; //количество дисков проданных за последний год
elem *next; //указатель на следующий элемент
};
typedef elem *pelem; //тип-указатель
pelem HEAD = NULL; //"голова" списка
int NN=0; //текущее количество элементов
int N_MAX = 10; //максимум списка
pelem ad ()//добавление элемента
{
pelem neo = new elem;
//добавление элемента в начало
if (HEAD == NULL) {HEAD = neo;
neo->next = NULL;}
else {
neo->next = HEAD;
HEAD = neo;
}
NN++;
return neo;
}
void ed (pelem p)//редактирование элемента
{
//ввод данных
elem dan;
cout<<"Artist: "; cin>>dan.name;
cout<<"Style: " ; cin>>dan.style;
cout<<"Albums: "; cin>>dan.albums;
cout<<"CD za posledniy god: "; cin>>dan.cd_of_year;
//передача данных в элемент
dan.next = p->next;
*p = dan;
system("cls");
}
void rd (pelem p) //чтение элемента
{
if (p)
{
for(int i=0;i<80;i++) cout<<"_";
cout<<"Object: "<< p->name<<endl;
cout<<"Style: "<< p->style<<endl;
cout<<"Albums: "<< p->albums<<endl;
cout<<"CD za posledniy god:: "<< p->cd_of_year<<endl;
for(int i=0;i<80;i++) cout<<"_";
}
}
pelem find (char obj_name[]) //поиск элемента
{
pelem p = HEAD;
do
{
if (!strcmp(p->name, obj_name)) return p;
p=p->next;
} while (p) ;
cout<<"Ne naydenu"<<endl;
return p;
}
void del (char obj_name[])
{
if (HEAD)
{
pelem p = find(obj_name);
if (p)
{
if (p==HEAD) //если голова - и есть искомый объект
{
if (NN>1) HEAD=HEAD->next;
else HEAD = NULL;
}
else
{
pelem father = HEAD;
while (father->next!=p)
father = father->next;
father->next = p->next;
}
delete p;
NN--;
cout<<"Udaleno: "<<obj_name<<endl;
return;
}
}
}
void sort () //сортировка
{
for (int j=0; j<NN; j++)
{
pelem p = HEAD;
pelem son = p->next;
if (p->albums < son->albums)
{
p->next = son->next;
HEAD = son;
son->next = p;
}
p = HEAD;
while((p->next)->next)
{
pelem father = p;
p = p->next;
pelem son = p->next;
if (p->albums < son->albums)
{
father->next = son;
p->next = son->next;
son->next = p;
}
p=father->next;
}
}
}
int main ()
{
int i;
char c;
do {
cout<<"Menu"<<endl;
cout<<"Count:"<< NN<<"/"<<N_MAX <<endl;
cout<<"[1] add "<<endl;
cout<<"[2] list "<<endl;
cout<<"[3] edit "<<endl;
cout<<"[4] delete "<<endl;
cout<<"[5] search "<<endl;
cout<<"[6] best-seller "<<endl;
cout<<"[7] sort "<<endl;
cout<<"[0] exit " <<endl;
cout<<">>";
c = getch();
system("cls");
if (c=='1') //добавление элемента
{
if (NN<N_MAX) {
pelem p = ad();
ed(p);
}
else cout<<"List is full"<<endl;
}
if (c=='2') //просмотр списка
{
pelem p = HEAD;
if (p==NULL) cout<<"List is empty"<<endl; else
while(p!=NULL)
{
rd(p);
p=p->next;
}
}
if (c=='3') {
char obj[40];
cout<<"Edit object : ";
cin>>obj;
if (HEAD)
{
pelem p =find(obj);
if (p) ed(p);
}
else cout<<"List is empty"<<endl;
}
if (c=='4') {
char obj[40];
cout<<"Delete item : ";
cin>>obj;
if (HEAD) del(obj); else cout<<"List is empty"<<endl;
}
if (c=='5') {
char c_2;
do {
cout<<"Poisk"<<endl;
cout<<"[1] by name "<<endl;
cout<<"[2] by genre "<<endl;
cout<<"[0] <<back "<<endl;
cout<<">>";
c_2 = getch();
system("cls");
if (c_2=='1') {
char obj[40];
cout<<"Name : ";
cin>>obj;
if (HEAD) rd(find(obj));
else cout<<"List is empty"<<endl;
}
if (c_2=='2') {
char obj[40];
cout<<"Genre : ";
cin>>obj;
pelem p=HEAD;
if (HEAD)
while (p)
{
if (!strcmp(p->style, obj)) rd(p);
p = p->next;
}
else cout<<"List is empty"<<endl;
}
} while(c_2!='0');
}
if (c=='6') {
if (HEAD)
{
pelem p = HEAD;
pelem p_with_max = p;
while(p)
{ if (p->cd_of_year > p_with_max->cd_of_year) p_with_max = p;
p = p->next;
}
rd(p_with_max);
}
else cout<<"List is empty"<<endl;
}
if (c=='7') {
sort();
pelem p = HEAD;
if (p==NULL) cout<<"List is empty"<<endl; else
while(p!=NULL)
{
rd(p);
p=p->next;
}
}
} while(c!='0');
return 0;
}