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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2013, 15:35   #1
bilochka
Пользователь
 
Регистрация: 10.02.2013
Сообщений: 12
По умолчанию переделать код С++ на С

код есть на С++, а мне нужно его переделать в С. Помогите пожалуйста, буду очень благодарна.
код:
Код:
#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;
}

Последний раз редактировалось Stilet; 10.05.2013 в 16:17.
bilochka вне форума Ответить с цитированием
Старый 10.05.2013, 15:48   #2
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

замените:
0) #include <iostream> на #include <stdio.h>
1) cout на printf() (или другой аналог);
2) cin на scanf() (или другой аналог);
3) new на calloc или malloc;
4) delete на free
5) объявление переменных типа elem на struct elem
Profit...

Последний раз редактировалось tools; 10.05.2013 в 15:53.
tools вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать код С++ FDCastro Помощь студентам 2 26.03.2013 23:26
Переделать код CMSon Помощь студентам 12 31.01.2013 17:30
Переделать код Faton 11 Общие вопросы C/C++ 6 21.01.2013 02:11
переделать код Frank63 Паскаль, Turbo Pascal, PascalABC.NET 1 05.11.2012 15:45
Переделать код Hepri Работа с сетью в Delphi 3 20.08.2009 20:28