如何在默认和二维数组中找到顺序扩大元素的位置
How to find the position of sequentially enlarged elements in default and two-dimensional array?
我想在数组中找到顺序放大的元素:
#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
using namespace std;
void main()
{
int n;
cout << "How many elements in array? array = ";
cin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++)
{
cout << "Element arr[" << i << "] = ";
cin >> arr[i];
}
cout << "n#### Founded sequentially enlarged elements ####n" << endl;
for (int i = 0; i < n; i++)
{
if (arr[i] + 1 == arr[i + 1])
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;
}
}
system("pause");
}
运行代码产生以下输出:
How many elements in array? array = 7 Element arr[0] = 9 Element arr[1] = 13 Element arr[2] = 1 Element arr[3] = 2 Element arr[4] = 3 Element arr[5] = 4 Element arr[6] = 81 #### Founded sequentially enlarged elements #### arr[2] = 1 arr[3] = 2 arr[4] = 3
为什么它不会在数组中输出所有顺序放大的元素?在示例中,最后一个元素arr[5] = 4
缺少。
我如何获得此结果:
arr[2] = 1
arr[3] = 2
arr[4] = 3
arr[5] = 4
示例我的代码二维数组:
#include "stdafx.h"
#include <iostream>
#include "stdlib.h"
using namespace std;
void main()
{
int n, m;
cin >> n;
cin >> m;
int **arr = new int*[n];
for (int i = 0; i < n; i++)
{
arr[i] = new int[m];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << "arr[" << i << "," << j << "] = ";
cin >> arr[i][j];
}
}
cout << "n#### Founded sequentially enlarged elements ####n" << endl;
int c = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; i < m; j++)
{
arr[i] = arr[i] + 1;
arr[j] = arr[j] + 1;
if (arr[i][j] == arr[i + 1][j + 1])
{
cout << "arr[" << i << "," << j << "] = " << arr[i][j] << endl;
c++;
}
else if (c != 0)
{
cout << "arr[" << i << ","<<j<<"] = " << arr[i][j] << endl;
c = 0;
}
}
}
system("pause");
}
您可以使用此技巧。
内部如果有条件检查,则是'||'如果第一个条件为true
,操作员会跳过第二个条件
for (int i = 0; i < n ; i++)
{
if(i>0 && i < n-1){//avoid UB
if ((arr[i] + 1 == arr[i + 1]) || (arr[i]-1==arr[i-1]) )// the second condition will always be skipped when the first is true. So the second condition will be checked only for the last sequential element
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;
}
}else if(i==0){
if (arr[i] + 1 == arr[i + 1])
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;
}
}else{
if (arr[i]-1==arr[i-1] )// when i = n-1
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;
}
}
}
示例:
让数组为:{9,13,1,2,3,4,81}
当光标到达元素4时,i = 5将首先检查带有元素81的条件。或在条件检查中,第二个条件,即'arr [i] -1 == arr [i-1]'将被检查,即在元素4和3之间。
可以将代码清洁并优化到一定级别,但这个想法是在这里的捕获。
您的代码具有逻辑错误。element.you被拒绝打印第二个元素。这是为什么每当arr [5] == arr [4]而不等于arr [6]的原因,这就是为什么不显示它的原因。
这是以下代码生成您预期的结果。
查看for loop.add按照您的循环。
int c=0;//checking if sequence is found
for (int i = 0; i < n-1; i++)
{
if (arr[i] + 1 == arr[i + 1])
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;
c++;//increasing the counter if sequence is found
}
else if(c!=0)
{
cout << "arr[" <<i<< "] = " << arr[i] << endl;//printing the seccond element to if further comparison returns false.
c=0;//reset counter which tells that sequence is over.
}
}
相关文章:
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 序列容器 - 只能按顺序访问元素
- 如何检查 2 个 c++ 数组在 O(1) 或 O(log n) 时间复杂度中是否相同(所有元素都相同,顺序很重要)?
- 保留从一个多集复制到另一个多集的元素的顺序
- 如何在 C++ 中将从文本文件中读取的元素推送和弹出到数组中,并按 Revserse 顺序输出堆栈?
- 查找数组的第一个和最后一个索引,其中 from 和 to 元素的顺序总和最大
- 编写一个递归功能,该功能采用数组并以相反顺序显示元素,而无需在末尾启动数组的索引
- 编写链接函数的更短/更有效的方法,该函数按字典顺序添加新元素
- stable_sort不遵守元素的顺序
- 从容器中获取随机元素,该容器在恒定时间内没有严格的元素顺序
- 如何在默认和二维数组中找到顺序扩大元素的位置
- 多重映射是否保证广告顺序与其初始值设定项中给出的元素顺序匹配
- 调用std::nth_element后第n个元素之前的元素顺序
- 控制地图中元素的顺序
- 指针集中元素的顺序
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- 双向循环列表中的赋值运算符以错误的顺序添加元素
- 更改STL多集中两个相等元素的顺序
- 初始值设定项列表中元素的求值顺序