以下是引用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; }