c++文件读取排序问题
现在我写的程序生成了这样一个txt文件(如图)怎么写一个函数读取每行的工作时间,然后进行排序并改变后面排名的值呢?...
现在我写的程序生成了这样一个txt文件(如图)怎么写一个函数读取每行的工作时间,然后进行排序并改变后面排名的值呢?
展开
2个回答
2015-05-19
展开全部
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
using namespace std;
int pow(int i,int j)
{
int sum=1;
for(int k=1; k<=j; k++)
{
sum*=i;
}
return sum;
}
int jinzhi_16(char *number)
{
char *p=number;
int sum=0;
int len=strlen(number);
int i=0;
int lone;
while(*p)
{
if(toascii(*p)>=65&&toascii(*p)<=70)
{
lone=toascii(*p)-55;
}
else
{
lone=*p-'0';
}
sum+=pow(16,len-i-1)*lone;
i++;
*p++;
}
return sum;
}
int jinzhi_1_10(char *number,int N)
{
char *p=number;
int sum=0;
int len=strlen(number);
int i=0;
int lone;
while(*p)
{
lone=*p-'0';
sum+=pow(N,len-i-1)*lone;
i++;
*p++;
}
return sum;
}
int is_reverse(char *number)
{
int len=strlen(number);
char *save_number=(char *)malloc(sizeof(char) *(strlen(number)));
strcpy(save_number,number);
reverse(save_number,save_number+len-1);
if(strcmp(save_number,number)==0)
{
return true;
}
}
int return_is_16(char *number)
{
char *p=number;
while(*p)
{
if(toascii(*p)>=65&&toascii(*p)<=91)
{
return true;
}
*p++;
}
}
int main()
{
int N;
cin>>N;
getchar();
char *number=(char *)malloc(sizeof(char) * 32);
gets(number);
int num;
if(N==16)
{
num=jinzhi_16(number);
}
else
{
num=jinzhi_1_10(number,N);
}
int count_step=0;
while(is_reverse(number)!=1)
{
int new_number;
reverse(number,number+strlen(number)-1);
new_number=sprintf(number,"%s",new_number);
num=new_number+num;
sprintf(number,"%d",num);
count_step++;
cout<<number;
if(count_step>=30)
{
cout<<"Impossible!";
return 0;
}
}
cout<<"STEP="<<count_step;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-05-20
展开全部
已发邮箱,如果满意请采纳
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询