以下是引用xianfajushi在2020-2-13 16:14:21的发言:
改变参数为50就找到了,这个早知道了,上图参数为100的3个文件的输出,改为50则0和1不变,2就是这样的,用表格软件做出图像?我只是调试观察到的数据,用表格做出图像是比较形象。
改变参数为50就找到了,这个早知道了,上图参数为100的3个文件的输出,改为50则0和1不变,2就是这样的,用表格软件做出图像?我只是调试观察到的数据,用表格做出图像是比较形象。
估计楼主更想看到您正确的代码,而非图片和结果
程序代码:
//变成这样的吗?会不会很累?
int 数重组位最大(int 整数)
{ /*C++任意输入一个整数,再把它的各位数字重新组合一个新的整数,使其值最大*///缘由https://bbs.bccn.net/viewthread.php?tid=499134&pid=2718301&page=1#pid2718301
int 输入整数 = 整数, 数(0), 输出(0), 取值(0), 比较(0), 暂存(0), 位(0), 序(0), 反向(0);
bool 控制(true);
if (输入整数 < 100)输入整数 *= 10;
if (输入整数 > 1000)输入整数 /= 10;
//scanf_s("%d", &输入整数);
do
{
比较 = 序 = 0;
暂存 = 输入整数;
do
{
取值 = 暂存 % 10;
if (取值 > 比较)/*每次取最大值*/
{
比较 = 取值;
数 = 序;
}
++序;
} while (暂存 /= 10);
if (控制) 位 = 反向 = 序;
输出 += 比较 * pow(10, --位);
控制 = false;
} while (输入整数 -= 比较 * pow(10, 数));/*每次减去最大值*/
//printf_s("%d ", 输出);
数 = 0; 取值 = 输出;
do
{
数 += (输出 % 10) * pow(10, --反向);
} while (输出 /= 10);/*反向输出各位数*/
//printf_s("%d ", 数);
cout << 取值 << "-" << 数 << "=" << 取值 - 数 << endl;
return 取值 - 数;
}

程序代码: void 获取2个谷值()
{
double 读数据[3000]{0}, 谷值[3]{0};
char* 文件 = "..\\测试存文件\\data100000.txt";
文件读取(文件, "r", 读数据, 3000);
int 序 = 0, 数序1 = 0, 数序2 = 0, 数序3 = 0, 谷口 = 0;
while (序 < 3000)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499186&page=1&extra=#pid2718585
if (谷值[0]>读数据[序])
谷值[0] = 读数据[序], 数序1 = 序;
++序;
}
printf_s("%f->%d\n", 谷值[0], 数序1);
序 = 数序1; while (读数据[--序] < 0); 谷口 = 序; 序 = 0;
while (序 < 谷口)
{
if (谷值[1]>读数据[序])
谷值[1] = 读数据[序], 数序2 = 序;
++序;
}
序 = 数序1; while (读数据[++序] < 0);
while (序 < 3000)
{
if (谷值[2]>读数据[序])
谷值[2] = 读数据[序], 数序3 = 序;
++序;
}
if (谷值[1]<谷值[2])
printf_s("%f->%d\n", 谷值[1], 数序2);
else
printf_s("%f->%d\n", 谷值[2], 数序3);
}

程序代码:
#include <iostream>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv)
{
double a[3000];
double peak1,peak2,peak3,min=a[0];
int i,p1,p2,p3,b,life;
char filename[1000]={0};
FILE *fp=NULL;
FILE *fpp=NULL;
for(b=100000;b<100854;b++)
{
sprintf(filename,"F:\\uz\\new\\data%d.txt",b);
fp=fopen(filename,"r");
for(i=0;i<2500;i++)
{
fscanf(fp,"%lf",&a[i]);
}
for(i=1;i<2500;i++)
{
if(min>a[i])
{
min=a[i];
peak1=a[i];
p1=i+1;
}
}//找最小值
for(i=p1+300,min=a[p1+300];i<2500;i++)
{
if(min>a[i])
{
min=a[i];
peak2=a[i];
p2=i+1;
}
}//找第二个峰值
for(i=p1-300,min=a[p1-300];i>0;i--)
{
if(min>a[i])
{
min=a[i];
peak3=a[i];
p3=i+1;
}
}//找第三个峰值
/* printf("%lf %d\n",peak1,p1);
printf("%lf %d\n",peak2,p2);
printf("%lf %d\n",peak3,p3);*/
if(peak2>peak3)
{
life=abs(p2-p1);
//printf("%d\n",life);
}
else
{
life=abs(p2-p1);
//printf("%d\n",life);
}
fpp=fopen("F:\\uz\\life1.txt","a");
if(fpp==NULL)
{
printf("wrong");
}
fprintf(fpp,"%d\n",life);
fclose(fp);
fclose(fpp);
}
return 0;
}