minami-ritsu
целую тебя через сотни вёрст
#include "StdAfx.h"
#include "stdafx.h"
#include "Katalog.h"
#include
#include "Buy.h"
#include "Sale.h"
#include
#include
using namespace std;
Katalog::Katalog(void)
{
}
// новый элемент
Katalog* Katalog::newt(Katalog* firstk, int i, char* st, char* cod, char* gab, char* nom) {
Katalog *cur;
cur=firstk;
Katalog *cur1=new Katalog;
if(firstk==NULL)
{
firstk=cur1;
cur1->mas=i;
cur1->name=new char[strlen(st)+1];
strcpy(cur1->name,st);
cur1->cod=new char[strlen(cod)+1];
strcpy(cur1->cod,cod);
cur1->gab=new char[strlen(gab)+1];
strcpy(cur1->gab,gab);
cur1->nomer=new char[strlen(nom)+1];
strcpy(cur1->nomer,nom);
cur1->next=NULL;
}

else
{while (cur->next!=NULL) cur=cur->next;
cur->next=cur1;
cur1->next=NULL;
cur1->mas=i;
cur1->name=new char[strlen(st)+1];
strcpy(cur1->name,st);
cur1->cod=new char[strlen(cod)+1];
strcpy(cur1->cod,cod);
cur1->gab=new char[strlen(gab)+1];
strcpy(cur1->gab,gab);
cur1->nomer=new char[strlen(nom)+1];
strcpy(cur1->nomer,nom);
cur1->next=NULL;
}
return firstk;
}
Katalog* Katalog::nov(Katalog* firstk) {
int i;
char* name=new char[255];
char* cod=new char[255];
char* nom=new char [255];
char* gab=new char[255];
cout << "Введите массу\n";
cin >> i;
cout << "Введите имя\n";
cin >> name;
cout << "Введите код\n";
cin >> cod;
cout << "Введите номенклатурный номер\n";
cin >> nom;
cout << "Введите габариты\n";
cin >> gab;
firstk=newt(firstk, i, name, cod, gab, nom);
return firstk;
}
// деструктор
Katalog::~Katalog(void)
{
}
// вывод
bool Katalog::vivod (Katalog* firstk) {
if (firstk!=NULL) {
Katalog* p=new Katalog;
p = firstk;
cout << "Имя Масса Код Габариты Номер\n";
while (p) {
cout << p->name << " " << p->mas << " " << p->cod << " " << p->gab << " " << p->nomer << endl;
p = p->next;
} }else {
cout << "Список пуст\n";
return false;}
return true;
}
// пустота
bool Katalog::pust(Katalog* firstk) {
return (firstk!=0);
}
// масса возрастает
Katalog* Katalog::masv (Katalog* firstk) {
Katalog* t=new Katalog; t=0;
Katalog* s=new Katalog; s=firstk;
Katalog* n=new Katalog; n=0;
Katalog* p=new Katalog; p=0;
int kol=1;
for (t=firstk; t->next!=0; t=t->next)
kol++;
for (int j=0; jnext) {if (s->mas>s->next->mas) {
bool f=false;
if (s!=firstk) {
n=firstk;
for (n=firstk; n->next!=s; n=n->next){
;
};
n->next=s->next;}
else f=true;
t=s;
p=t->next;
t->next=s->next->next;
s=p;
s->next=t;
if (f) firstk=s;
}
else {
if (s->next->next) s=s->next;}
}}}
return firstk;
}
Katalog* Katalog::masu (Katalog* firstk) {
Katalog* t=new Katalog; t=0;
Katalog* s=new Katalog; s=firstk;
Katalog* n=new Katalog; n=0;
Katalog* p=new Katalog; p=0;
int kol=1;
for (t=firstk; t->next!=0; t=t->next)
kol++;
for (int j=0; jnext)if (s->masnext->mas) {
bool f=false;
if (s!=firstk) {
n=firstk;
for (n=firstk; n->next!=s; n=n->next){
;
};
n->next=s->next;}
else f=true;
t=s;
p=t->next;
t->next=s->next->next;
s=p;
s->next=t;
if (f) firstk=s;
}
else {
if (s->next->next) s=s->next;}
}}
return firstk;
}
// удаление
Katalog* Katalog::delet (Katalog* firstk, char* c) {
Katalog* cur=new Katalog; Katalog* d=new Katalog;
d=firstk;
cur=firstk;
bool pus=false;
do {
for (int i=0; icod); i++)
if (cur->cod[i]==c[i]) pus=true;
else pus=false;
if (pus==true) break;
d=cur;
cur=cur->next;
} while (cur!=NULL);
if (pus==false) cout << "Элемент не существует\n";
else {Katalog* p=new Katalog; p=0;
if (cur==firstk) {if (cur->next!=0) firstk=firstk->next; else firstk=NULL; delete cur;} else
{

p=cur->next;
d->next=p;
cur=0;
delete cur;
}
}
return (firstk);
}
// редактирование
Katalog* Katalog::reg(Katalog* firstk, char* cod) {
Katalog* r=new Katalog;
for (r=firstk; r->next!=0; r=r->next) {
bool pus=false;
for (int i=0; icod); i++)
if (r->cod[i]==cod[i]) pus=true;
else pus=false;
if (pus==true) break;
}
cout << "Редактировать массу?\n";
bool red;
cin >> red;
if (red) {
cout << "Введите новую массу\n";
cin >> r->mas;}
cout << "Редактировать имя?\n";
cin >> red;
if (red) {
cout << "Введите новое имя\n";
cin >> r->name;}
cout << "Редактировать код?\n";
cin >> red;
if (red) {
cout << "Введите новый код\n";
cin >> r->cod;}
firstk=dobs(firstk, r->mas, r->name, r, r->cod, r->gab, r->nomer);
firstk=delet(firstk, r->cod);
return firstk;
}
Katalog* Katalog::dobs (Katalog* firstk, int i, char* st, Katalog* r, char* cod, char* g, char* n)
{Katalog *cur;
cur=r;
Katalog *cur1=new Katalog;
Katalog* p=cur->next;
cur->next=cur1;
cur1->next=p;
cur1->mas=i;
cur1->name=new char[strlen(st)+1];
strcpy(cur1->name,st);
cur1->cod=new char[strlen(cod)+1];
strcpy(cur1->cod,cod);
cur1->gab=new char[strlen(g)+1];
strcpy(cur1->gab,g);
cur1->nomer=new char[strlen(n)+1];
strcpy(cur1->nomer,n);
return (firstk);
}
// из файла
Katalog* Katalog::ffile(Katalog* firstk) {
ifstream somefile;
somefile.open("katalog.csv");
if (somefile==NULL) {
cout << "Ошибка! Проверьте файл\n";
return 0; }
char* s=new char[255];
int i=0;
char* name=new char[strlen(s)];
char* cod=new char[strlen(s)];
char* nom=new char [strlen(s)];
char* gab=new char[strlen(s)];
int buk=0;
bool fin=false;
while (!(fin)) {
somefile>>s;
if (s[0]!=0) {
i=0;
int buk=0;
while (s[buk]!=';') {
name[buk]=s[buk];
buk++;
}
name[buk]=0;
buk++; int pb=buk;
char* ii=new char[255];
while (s[buk]!=';') {
ii[buk-pb]=s[buk];
buk++;
}
ii[buk-pb]=0;
for (int a=0; anext) {
char* s=new char[255];
strcpy(s, p->name);
s[strlen(p->name)]=';';
int a=p->mas; int i=strlen(p->name)+1; int* str=new int[255]; int n=0;
while (a>0) {
str[n]=a%10;
a=a/10;
n++;
}
str[n]=0;
for (n; n>0; n--) {
s[i]=str[n-1]+'0';
i++;
}
s[i]=';'; i++;
for (n=strlen(p->cod); n>0; n--) {
s[i]=p->cod[strlen(p->cod)-n];
i++;
}
s[i]=';'; i++;
for (n=strlen(p->gab); n>0; n--) {
s[i]=p->gab[strlen(p->gab)-n];
i++;
}
s[i]=';'; i++;
for (n=strlen(p->nomer); n>0; n--) {
s[i]=p->nomer[strlen(p->nomer)-n];
i++;
}
s[i]=0;
//cout << s << endl;
out<<s<