写的丑死
未AC
搞不懂
//#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
class LINT
{
friend ostream& operator<<(ostream& out, LINT& e);
private :
char num[100];
public :
LINT(){num[0]='\0';}
LINT(char *m){strcpy(num,m);}
LINT(int a);
bool operator>(const LINT& m);
};
/*
功能:初始化
输入:int a
输出:
日期:
*/
LINT::LINT(int a)
{
if (a==0) { num[0]='0';num[1]='\0';return;}
int i=0;
while (a)
{
num[i++] = a % 10;
a /= 10;
}
num[i]='\0';
int len = strlen(num);
for (i=0; i<strlen(num); i++)
{
char tmp = num[len-i-1];
num[len-i-1] = num[i];
num[i] = tmp;
}
return;
}
/*
功能:重载运算符
输入:LINT a,b
输出:a>b 成立 1 否则 0
日期
*/
bool LINT::operator>(const LINT &m)
{
return strcmp(num, m.num)>0;
}
/*
功能:重载输出运算符
输入:LINT e
输出:
日期:
*/
ostream& operator<<(ostream &out, LINT& e)
{
out<<e.num;
return out;
}
class LIST
{
private :
LINT n[100];
int len;
public:
LIST(int n=0){len=n;}
void Add(LINT e);
void Sort();
void Print();
LINT GetAt(int i){return n[i];}
int GetLen(){return len;}
};
/*
功能:Add
输入:LINT e
输入:无
日期:
*/
void LIST::Add(LINT e)
{
n[len++]=e;
}
/*
功能:Sort 从大到小
输入:无
输入:无
日期:
*/
void LIST::Sort()
{
int i,j;
for (i=0; i<len; i++)
{
for (j=0; j<len-1-i; j++)
{
if (n[j+1]>n[j])
{
LINT tmp = n[j+1];
n[j+1] = n[j];
n[j]=tmp;
}
}
}
}
/*
功能:输出显示
输入:无
输出:无
日期:
*/
void LIST::Print()
{
for (int i=0; i<len; i++) cout<<"第 "<<i<<" :值:"<<n[i]<<endl;
}
class STRING
{
friend istream& operator>>(istream &in,STRING& str);
friend ostream& operator<<(ostream &out,STRING& str);
private :
char n[1000];
public :
STRING(){n[0]='\0';}
STRING* Split(char a);
int GetLen();
char * ConvertToCharArray();
};
int STRING::GetLen(){return strlen(n); }
STRING* STRING::Split(char a)
{
STRING* pStr = new STRING[100];
int k=0,kp=0;
int len = strlen(n);
for (int i=0; i<len; )
{
while(n[i]==a && i<len) i++;//找到第一个非空格
kp=0;
while (n[i]!=a&&i<len)
{
pStr[k].n[kp++]=n[i++];
}
pStr[k++].n[kp]='\0';
}
return pStr;
}
istream& operator>>(istream&in ,STRING&str)
{
gets(str.n);
return in;
}
ostream& operator<<(ostream&out, STRING&str)
{
out<<str.n;
return out;
}
char * STRING::ConvertToCharArray()
{
char * p = new char [1000];
strcpy(p,n);
return p;
}
int main()
{
LINT a("123") ;
LINT b("45");
LINT c("132");
LIST lst;
int k;
cin>>k;
getchar();
STRING str;
cin>>str;
STRING * pStr = str.Split(' ');
int i=0;
while ( pStr[i].GetLen() >0)
{
char *p = pStr[i].ConvertToCharArray();
lst.Add(p);
delete p;
i++;
}
lst.Sort();
for (int i=0; i<lst.GetLen(); i++)
{
LINT p = lst.GetAt(i);
cout<<p;
}
cout<<endl;
delete pStr;
//system("pause");
return 0;
}
本文介绍了一种处理大整数的类`LINT`,实现了大整数的比较和输出功能。此外还定义了一个`LIST`类用于存储`LINT`类型的大整数,并实现排序和打印功能。最后通过`STRING`类处理字符串,将其分割为多个部分并转换为`LINT`类型,加入`LIST`中进行排序输出。

1262

被折叠的 条评论
为什么被折叠?



