cout<<"Vvedite parametr poiska"<<endl;
cin >> name3;
outFile<<"\t"<<name3<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.fio, name3) == 0) // сравнение строк
{Output(Dan);
k+=1;
outFile<<Dan.name1<<" "<<Dan.name2<<" "<<Dan.name3<<" "<<Dan.price1<<" "<<Dan.text1<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
Поиск из txt С++
Komtek sistone China 25000 5 4 200000 130 1112301596
(имя1) (имя2) (имя3) (цена1) (количество1) (количество2) (имя4) (количество3) (дата)
и требуется произвести поиск сначало по имя3
Код:
Подскажите пожалуйста будет ли верна данная функция поиска и помогите пожалуйста организовать второй поиск по дате. Буду очень признателен.
STL использовать можно???
Код:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
#include <conio.h>
using namespace std;
vector <int> Search()
{
vector <int> vec;
for(int i=0;i<120;i++)
vec.push_back(i);
return vec;
}
vector <string> Split(const string& str)
{
vector <string> ret;
typedef string::size_type string_size;
string_size i=0;
while (i != str.size())
{
while (i != str.size() && isspace(str)) ++i;
string_size j = i;
while (j != str.size() && !isspace(str[j])) ++j;
if (i != j)
{
ret.push_back(str.substr(i,j - i));
i = j;
}
}
return ret;
}
string SearchStrFor3Par(const string& str,size_t par)
{
ifstream inFile("test.txt");
if (inFile.fail())
{
cerr<<"Error!!! Don't read file!!!"<<endl;
exit(1);
}
string tmpstr;
while (!inFile.eof())
{
getline(inFile,tmpstr);
vector <string> checkstr = Split(tmpstr);
if (checkstr[par] == str) return tmpstr;
}
return tmpstr="Poisk rezultata ne dal...";
}
int main()
{
string str;
string search_str;
size_t par;
cout<<"Please input search str >";
cin>>str;
cout<<"Please input parametr >";
cin>>par;
search_str = SearchStrFor3Par(str,par);
cout<<"-------------------------------------------"<<endl;
cout<<"*******************************************"<<endl;
cout<<"****"<<search_str<<endl;
cout<<"*******************************************"<<endl;
cout<<"-------------------------------------------"<<endl;
getch();
return 0;
}
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cctype>
#include <conio.h>
using namespace std;
vector <int> Search()
{
vector <int> vec;
for(int i=0;i<120;i++)
vec.push_back(i);
return vec;
}
vector <string> Split(const string& str)
{
vector <string> ret;
typedef string::size_type string_size;
string_size i=0;
while (i != str.size())
{
while (i != str.size() && isspace(str)) ++i;
string_size j = i;
while (j != str.size() && !isspace(str[j])) ++j;
if (i != j)
{
ret.push_back(str.substr(i,j - i));
i = j;
}
}
return ret;
}
string SearchStrFor3Par(const string& str,size_t par)
{
ifstream inFile("test.txt");
if (inFile.fail())
{
cerr<<"Error!!! Don't read file!!!"<<endl;
exit(1);
}
string tmpstr;
while (!inFile.eof())
{
getline(inFile,tmpstr);
vector <string> checkstr = Split(tmpstr);
if (checkstr[par] == str) return tmpstr;
}
return tmpstr="Poisk rezultata ne dal...";
}
int main()
{
string str;
string search_str;
size_t par;
cout<<"Please input search str >";
cin>>str;
cout<<"Please input parametr >";
cin>>par;
search_str = SearchStrFor3Par(str,par);
cout<<"-------------------------------------------"<<endl;
cout<<"*******************************************"<<endl;
cout<<"****"<<search_str<<endl;
cout<<"*******************************************"<<endl;
cout<<"-------------------------------------------"<<endl;
getch();
return 0;
}
input parametr - необходимая дата?
Но если так, поск не работает :(
Код:
ifstream inFile("test.txt");
Код:
string SearchStrFor3Par(const string& str,size_t par)
Код:
cout<<"Proizvesti poisk tovarov zimoy?"<<endl;
cin >> zoomzoom;
outFile<<"\t"<<zoomzoom<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.date, zoomzoom) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.ostatak<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
cin >> zoomzoom;
outFile<<"\t"<<zoomzoom<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.date, zoomzoom) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.ostatak<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
Код:
for (i=0; i<n; i++)
{if(!strcmp (Dan.date, zoomzoom))//так лучше...
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.ostatak<<std::endl;}
}
{if(!strcmp (Dan.date, zoomzoom))//так лучше...
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.ostatak<<std::endl;}
}
а чем не устраивает моя реализация???
Код:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
class class2;
class class1
{int a;
friend void fun(class1&,class2&);
public:
class1(int A) : a(A) { };
};
class class2
{int a;
friend void fun(class1&,class2&);
public:
class2(int A) : a(A) { }; };
void fun(class1& M1,class2& M2)
{if (M1.a == M2.a) cout << "equal\n";
else cout << "non equal\n"; }
class class3
{int x,y;
public:
void read(int& X, int& Y) const { X=x; Y=y; }
void write(int X, int Y) { x=X; y=Y; }
void display() const;
void e(void) const { ((class3*) this)->x++; }
};
void class3::display() const { cout << x << '\t' << y << endl; }
static union
{ int a;
};
struct Data {
char magazin[10], fio[20], year[10], in[5];
int count, ostatok, name, out;
time_t date;
float price;
static void Stopper() {getch();}
};
class Antey {
public:
float price;
int ostatok, out;
};
class Prodolit {
public:
float price;
int ostatok, out;
};
class Svetlana {
public:
float price;
int ostatok, out;
};
void Output(Data);
void main(void)
{
char *SrStK= "Srednyaya stoimost' knig v magazine ";
char avtor[20], zoomzoom[15];
float Ostatok=0, SrOstatok=0, Price, SrPrice;
int n=0,q=0, w=0, e=0,i,k=0, Kolichestvo=0, S=50;
fstream inFile;
inFile.open("data.txt",ios::in);
fstream outFile("file.txt",ios::out);
if(!inFile.is_open())
{cerr << "Error\n";
abort(); }
Data* Dan=new Data;
Antey Ant[50];
Prodolit Prod[50];
Svetlana Svet[50];
cout <<"\tHello \n";
cout<<"Ves' spisok:" << endl;
cout.setf(cout.left);
cout.width(7);
cout << "Magazin";
cout.width(4);
cout << "Type";
cout.width(10);
cout << "Country";
cout.width(6);
cout << "Price";
cout.width(6);
cout << "In";
cout.width(5);
cout << "Prodano";
cout.width(5);
cout << "Vsego";
cout.width(15);
cout << "Out";
cout.width(15);
cout << "Ostatok";
cout.width(7);
cout << "Date" << endl<<endl;
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
///////////////////////////////////////////////
cout<<"Vvedite type PEVM"<<endl;
cin >> avtor;
outFile<<"\t"<<avtor<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.fio, avtor) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
cout<<"Vvedite magazin"<<endl;
cin >> zoomzoom;
outFile<<"\t"<<zoomzoom<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.magazin, zoomzoom) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
for (i=0; i<n; i++)
{ if (strcmp (Dan.magazin, "Antey")==0)
{ q+=1;
Ant[q].price = Dan.price;
Ant[q].ostatok = Dan.ostatok;}
else
{ if (strcmp (Dan.magazin, "Prodolit")==0)
{ w+=1;
Prod[w].price = Dan.price;
Prod[w].ostatok = Dan.ostatok;}
else
{ e+=1;
Svet[e].price = Dan.price;
Svet[e].ostatok = Dan.ostatok;}}
}
Data::Stopper();
class1 mc1 = 100, mc3 = 200;
class2 mc2 = 100;
fun(mc1,mc2);
fun(mc3,mc2);
int x,y;
class3 A;
A.write(25,36);
A.display();
A.e();
A.read(x,y) ;
cout << x << '\t' << y << endl;
const class3 B=A;
cout <<"\n\t Spasibo za vnimanie!!! ";
}
void Output (Data d)
{
struct tm *t;
cout.width(7);
cout << d.magazin;
cout.width(4);
cout << d.fio;
cout.width(10);
cout << d.year;
cout.width(6);
cout << d.name;
cout.width(6);
cout << d.count;
cout.width(5);
cout << d.price;
cout.width(5);
cout << d.in;
cout.width(15);
cout << d.out;
cout.width(15);
cout<<(d.ostatok);
t=gmtime(&d.date);
cout << t->tm_mday << "." << (t->tm_mon+1) << "." << (1900+t->tm_year) << endl;
}
#include <fstream.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
class class2;
class class1
{int a;
friend void fun(class1&,class2&);
public:
class1(int A) : a(A) { };
};
class class2
{int a;
friend void fun(class1&,class2&);
public:
class2(int A) : a(A) { }; };
void fun(class1& M1,class2& M2)
{if (M1.a == M2.a) cout << "equal\n";
else cout << "non equal\n"; }
class class3
{int x,y;
public:
void read(int& X, int& Y) const { X=x; Y=y; }
void write(int X, int Y) { x=X; y=Y; }
void display() const;
void e(void) const { ((class3*) this)->x++; }
};
void class3::display() const { cout << x << '\t' << y << endl; }
static union
{ int a;
};
struct Data {
char magazin[10], fio[20], year[10], in[5];
int count, ostatok, name, out;
time_t date;
float price;
static void Stopper() {getch();}
};
class Antey {
public:
float price;
int ostatok, out;
};
class Prodolit {
public:
float price;
int ostatok, out;
};
class Svetlana {
public:
float price;
int ostatok, out;
};
void Output(Data);
void main(void)
{
char *SrStK= "Srednyaya stoimost' knig v magazine ";
char avtor[20], zoomzoom[15];
float Ostatok=0, SrOstatok=0, Price, SrPrice;
int n=0,q=0, w=0, e=0,i,k=0, Kolichestvo=0, S=50;
fstream inFile;
inFile.open("data.txt",ios::in);
fstream outFile("file.txt",ios::out);
if(!inFile.is_open())
{cerr << "Error\n";
abort(); }
Data* Dan=new Data;
Antey Ant[50];
Prodolit Prod[50];
Svetlana Svet[50];
cout <<"\tHello \n";
cout<<"Ves' spisok:" << endl;
cout.setf(cout.left);
cout.width(7);
cout << "Magazin";
cout.width(4);
cout << "Type";
cout.width(10);
cout << "Country";
cout.width(6);
cout << "Price";
cout.width(6);
cout << "In";
cout.width(5);
cout << "Prodano";
cout.width(5);
cout << "Vsego";
cout.width(15);
cout << "Out";
cout.width(15);
cout << "Ostatok";
cout.width(7);
cout << "Date" << endl<<endl;
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
///////////////////////////////////////////////
cout<<"Vvedite type PEVM"<<endl;
cin >> avtor;
outFile<<"\t"<<avtor<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.fio, avtor) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
cout<<"Vvedite magazin"<<endl;
cin >> zoomzoom;
outFile<<"\t"<<zoomzoom<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan.magazin, zoomzoom) == 0)
{Output(Dan);
k+=1;
outFile<<Dan.magazin<<" "<<Dan.fio<<" "<<Dan.name<<" "<<Dan.price<<" "<<Dan.ostatok<<" "<<Dan.out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
for (i=0; i<n; i++)
{ if (strcmp (Dan.magazin, "Antey")==0)
{ q+=1;
Ant[q].price = Dan.price;
Ant[q].ostatok = Dan.ostatok;}
else
{ if (strcmp (Dan.magazin, "Prodolit")==0)
{ w+=1;
Prod[w].price = Dan.price;
Prod[w].ostatok = Dan.ostatok;}
else
{ e+=1;
Svet[e].price = Dan.price;
Svet[e].ostatok = Dan.ostatok;}}
}
Data::Stopper();
class1 mc1 = 100, mc3 = 200;
class2 mc2 = 100;
fun(mc1,mc2);
fun(mc3,mc2);
int x,y;
class3 A;
A.write(25,36);
A.display();
A.e();
A.read(x,y) ;
cout << x << '\t' << y << endl;
const class3 B=A;
cout <<"\n\t Spasibo za vnimanie!!! ";
}
void Output (Data d)
{
struct tm *t;
cout.width(7);
cout << d.magazin;
cout.width(4);
cout << d.fio;
cout.width(10);
cout << d.year;
cout.width(6);
cout << d.name;
cout.width(6);
cout << d.count;
cout.width(5);
cout << d.price;
cout.width(5);
cout << d.in;
cout.width(15);
cout << d.out;
cout.width(15);
cout<<(d.ostatok);
t=gmtime(&d.date);
cout << t->tm_mday << "." << (t->tm_mon+1) << "." << (1900+t->tm_year) << endl;
}
Почему не работает второй расчет по "out", ведь он написан так же как и расчет ostatok? Может другие параметры?!
Код:
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
Код:
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close(); //здесь ты уже закрыл файл.
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
//а здесь пытаешься прочитать уже закрытый файл...
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close(); //здесь ты уже закрыл файл.
cout<<endl<<endl;
Data::Stopper();
//////////////////////////////////////////////
//а здесь пытаешься прочитать уже закрытый файл...
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
Но даже убрав атрибуты закрытия файла результат не измениться
Код:
using namespace std;
глянул художество,тягостное впечатление.Давай конкретно:что требуется,чем можно пользоваться,чег нужно добиться...
Идет без ошибок, просто при вычислении в столбце out идет по всем строкам "-842150451"..
Цитата: mitrof4nov
идет по всем строкам "-842150451"..
это мусор,дебаж и смотри где разрушается объект.
Ладно! Но а если относительно кода: можно как-то в том коде составить вместе 2 функции умножения в одну?
Цитата:
Но а если относительно кода: можно как-то в том коде составить вместе 2 функции умножения в одну?
Честно говоря ничего не понял...
Я буду вам очень благодарен, если вы мне еще подскажите реализацию по упорядочению дат. Знаю что пройдет это методом пузырька :) но относительно текущих классов у меня ничего не получается. Помогите, я буду вам очень благодарен.
Ты сам писал тот фрагмент который привел???Еще раз тебе говорю программу как ни читал,не понял ровным счетом ничего,куча ненужых классов,объединение с одним членом(не сочтите за каламбур...),говорю,то что написано у тебя,лично я не понимаю...Что конкретно нужно ты можешь человеческим языком написать???Про пузырьковую сортировку гугл в руки.Но еще раз повторюсь,в твоем коде я непонял ровным счетом ничего....Может реализовать немного по другому????
Как вы смотрите на нее - так и попробуйте.
Но не судите строго, пожалуйста, как всегда :) не могу справиться с ошибками (например не правильно реализовал вычисление ячеек stpros и stost). Подскажите как их можно исправить :( я буду вам очень благодарен.
Исходная строка в фаиле:
Komtek IBM China 45000 7 5 Bad 21.03.2001 18.03.2001
Слушай,ты можешь написать что ты хоешь?то что у тебя есть-очень и очень плохо...
Код:
while (input >> list[n].magazin>>list[n].tippvm>>
list[n].country>>list[n].price>>list[n].inmag>>list[n].outmag>>list[n].prim>>list[n].dataprov>>list[n].datapost)
{ list[n].ostatok = list[n].name * list[n].price;
Output(list[n]);
n++;
}
input.close();
cout<<endl<<endl;
Data::Stopper();
list[n].country>>list[n].price>>list[n].inmag>>list[n].outmag>>list[n].prim>>list[n].dataprov>>list[n].datapost)
{ list[n].ostatok = list[n].name * list[n].price;
Output(list[n]);
n++;
}
input.close();
cout<<endl<<endl;
Data::Stopper();
идет ошибка error C2296: '>>' : illegal, left operand has type 'void (__thiscall newew::*)(void)'
Не в тот класс записал?!
этой темой.
BroKer прав.У тебя очень "не прозрачный" вариант решения достаточно простой задачи.Тебе необходимо для начала выработать требования к проекту.Чтобы их выработать , нужно четко представить себе потребности будующих пользователей и то каким образом программа должна удовлетворять эти потребности.Можно выделить два основных момента в проведении обьектно-ориентированного анализа. Первый – это краткое , наиболее общее формулирование требований к программе с точки зрения конечного пользователя.
Второй момент – анализ ситуаций использования , где рассматриваются все возможные цели и действия пользователей при использовании программы и то каким образом программа должна реагировать на каждую из возможных ситуаций.Рассмотри ситуации ввода данных, ситуации поиска и отображения записей,ситуации возникновения ошибок,хотя бы эти. Построй диаграмму классов и выясни для себя четко для чего служит каждый класс.Ты ничего этого не делал...Только потом начинай писать код.
mitrof4nov,вот ознакомся для общего развития с
BroKer прав.У тебя очень "не прозрачный" вариант решения достаточно простой задачи.Тебе необходимо для начала выработать требования к проекту.Чтобы их выработать , нужно четко представить себе потребности будующих пользователей и то каким образом программа должна удовлетворять эти потребности.Можно выделить два основных момента в проведении обьектно-ориентированного анализа. Первый – это краткое , наиболее общее формулирование требований к программе с точки зрения конечного пользователя.
Второй момент – анализ ситуаций использования , где рассматриваются все возможные цели и действия пользователей при использовании программы и то каким образом программа должна реагировать на каждую из возможных ситуаций.Рассмотри ситуации ввода данных, ситуации поиска и отображения записей,ситуации возникновения ошибок,хотя бы эти. Построй диаграмму классов и выясни для себя четко для чего служит каждый класс.Ты ничего этого не делал...Только потом начинай писать код.
Отрабатывает без ошибок, но сортироовка как таковая не проходит. Подскажите пожалуйста где я ошибся в не, буду очень благодарен.
Видимо сначало необходимо отсчитать 4 символа с конца до точки, их отсортировать, потом цикл по месяцам и т.д. Помогите пожалуйста, буду благодарен.
Как вариант, можно перевести дату в одно число
Код:
unsigned int split_date(unsigned int year, unsigned char month, unsigned char day)
{
return (year*10000 + month*100 + day);
}
{
return (year*10000 + month*100 + day);
}
и далее сортировать по нему.
Ну а если переведем в число, отсортируем пузырьком, а обратно как осуществить перевод, что бы грамотно на экране отобразилось?
И причем здесь пузырек? Отсортируй sort`ом из stl.
Цитата:
Необходимо организовать сортировку по предпоследнему значению, т.е. по дате. (в нашем случае это 21.12.2006, 01.04.2006,...)
Код:
struct TRecord
{
string name; // твои поля
...
string first_date;
string second_date;
unsigned int key; // поле по которому сортируем
bool operator < (const TRecord &_t)const;
}
bool TRecord::operator < (const TRecord &_t) const
{
return (this->key < _t.key);
}
...
TRecord data_record;
vector<TRecord> data_table;
...
data_record.key = split_date(data_record.first_date);
data_table.push_back(data_record);
...
sort(data_table.begin(), data_table.end());
{
string name; // твои поля
...
string first_date;
string second_date;
unsigned int key; // поле по которому сортируем
bool operator < (const TRecord &_t)const;
}
bool TRecord::operator < (const TRecord &_t) const
{
return (this->key < _t.key);
}
...
TRecord data_record;
vector<TRecord> data_table;
...
data_record.key = split_date(data_record.first_date);
data_table.push_back(data_record);
...
sort(data_table.begin(), data_table.end());
Я могу ошибатся, но помоему это кроспостинг из студентов.
Я то думал отсортировать сравнением строк, но не знаю как разбить всю дату на отдельные части, что бы потом с помощью strstr сравнивать, и упорядочивать пузырьком.
Код:
char date[11]; // дата в строковой записи - 10 символов и 11-й символ конца строки
char day[3]; //день - два символа на дату и один на символ конца строки
char month[3]; //месяц
char year[5]; //год
i = 0;
k = 0;
while (i < 2) //Копируем день
{
day[k] = date;
k++;
i++;
}
day[2] = "\0";
i = 3;
k = 0;
while (i < 5) //Копируем месяц
{
month[k] = date;
k++;
i++;
}
month[2] = "\0";
i = 6;
k = 0;
while (i < 10) //Копируем год
{
year[k] = date;
k++;
i++;
}
year[5] = "\0";
char day[3]; //день - два символа на дату и один на символ конца строки
char month[3]; //месяц
char year[5]; //год
i = 0;
k = 0;
while (i < 2) //Копируем день
{
day[k] = date;
k++;
i++;
}
day[2] = "\0";
i = 3;
k = 0;
while (i < 5) //Копируем месяц
{
month[k] = date;
k++;
i++;
}
month[2] = "\0";
i = 6;
k = 0;
while (i < 10) //Копируем год
{
year[k] = date;
k++;
i++;
}
year[5] = "\0";
но если у меня дана такая строка(их 10, но содержание похожее), то не затруднит ли вас показать, как отсортировать все остальные данные? Ведь у меня каждое слово - это как массив.:
Sibron Mac Tokio 39000 10 7 Bad 11.03.2006 07.03.2006
Откажись ты от своего убого решения,все можно сделать намного проще и лаконичнее,тебе уже показали как сделать поиск и сортировку.Все что ты здесь пишешь не просто плохо,а очень плохо...