将数组中的每个数字替换为该点之前的最大数字
Replacing each number within an array with the maximum number up to that point
#include<iostream.h>
#include<fstream.h>
ifstream f("date.in");
using namespace std;
int i;
int P(int a[100],int k,int max)
{
max=a[1];
for(i=2;i<=k;i++)
if(a[i]>max)
max=a[i];
return max;
}
int main()
{
int x,a[100],n;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
for(i=2;i<=n;i++)
a[i]=P(a,i,x);
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
}
我的"date.in"文件包括以下内容:
12
4 6 3 7 8 1 6 2 7 9 10 8
如标题所述,程序应从文件中修改数组,以便每个数字都具有在数组中找到的最大值,直到并包括该相应数字的位置。我已经经历了一百次,但无法弄清楚我的代码出了什么问题。
编译时,我得到以下内容:
4 6 3 7 8 8 6 8 7 9 10 10
任何协助将不胜感激。
int i;
全局变量通常是一个坏主意。 因为这个循环:
for(i=2;i<=n;i++)
a[i]=P(a,i,x);
和这个循环:
for(i=2;i<=k;i++)
if(a[i]>max)
max=a[i];
"同时"运行,因此i
在第一个中没有正确从2
计数到n
,它实际上只是获取第一个索引,然后是偶数索引。 (检查您的结果,偶数索引是 100% 正确的:x 6 x 7 x 8 x 8 x 9 x 10
(。 如果您使用每个循环的本地计数器:for(int i=2; ...
则不会发生此问题。
此外,您的整个设计速度很慢。 不知道你为什么这样做,因为它可以很容易地在一次通过中完成:http://ideone.com/LmD0HX。
并使用<iostream>
而不是<iostream.h>
.它们实际上是不同的文件。
相关文章:
- 如何在C ++中替换整数的前两位数字?
- 我有模板功能.通过使用函数std::for_each,用这个容器中的最大数字替换每个正数
- 使用 Get 的 C++ 输入被替换为空格、不正确的数字
- 在 Python/C++ 中用更改文件中的随机数替换数字
- TicTacToe代码不会用O和X替换数字
- 这个给定的代码应该将给定的数字转换为尽可能滞后的数字,no.by 用 9.It 替换合适的数字是行不通的
- 使用 sprintf 和 sscanf 将给定数字中的所有 0 替换为 5
- 我无法用字符替换重复的数字"a"
- 用递增的数字替换字符串中的空格
- 如何用C 中的数字替换字母
- C 如果指示指向NULLPTR,我可以用数字替换它
- 如何将向量中的所有元素替换为元素数字的总和
- 将两个数字替换为给定数组中介于两个之间的单个数字
- 二叉树实现 - 分支上的数字被替换
- 使用 C++ 替换 txt 文件中的文本数字字符串
- 检测几乎为零并将其替换为 0.0 或将它们保留为小数字是否更快?
- C++11正则表达式:在替换字符串中捕获组后的数字
- 将数组中的每个数字替换为该点之前的最大数字
- 如何允许用户将数字替换为字符-三字棋c++
- c++:用多个数字替换字符串中的字符