我正在通过解决为其他编程语言设计的问题来自学c ++。所以我会问很多问题。 我创立了非常有趣的一个,我有点失落。
我需要编写一个程序:
1。创建其中一个特殊数组(8x8):
一个。对角矩阵
湾低三角矩阵
℃。高三角矩阵
d。对称矩阵
2。用[-30..45];
范围内的随机整数填充它第3。显示填充的数组
4。将数组转换为向量
5。使用线性搜索算法在向量中搜索用户指定的元素
6。使用以下算法之一对矢量进行排序:
一个。泡沫
湾插入
℃。选择
7。显示已排序的矢量。
我已经开始研究它,但我遇到了一些问题。
我不知道如何创建这些矩阵,我想这与for循环有关。
我知道如何生成随机数,但不知道范围。
我可以使用cout函数显示数组,但它看起来不像矩阵。
改造的最佳方式是什么?
如何实施此搜索算法?
这是我的代码,我只是设法实现排序算法,并创建一个随机数的矩阵。但我不认为我是以正确的方式做到的。
#include <algorithm>
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
template<typename ForwardIterator>
void selectionSort(ForwardIterator begin, ForwardIterator end) {
for (ForwardIterator i = begin; i != end; ++i)
iter_swap(i, min_element(i, end));
}
template<typename Iterator>
void bubbleSort(Iterator first, Iterator last)
{
Iterator i, j;
for (i = first; i != last; i++)
for (j = first; j < i; j++)
if (*i < *j)
{
iter_swap(i, j);
}
}
void insertion_sort(int arr[], int length) {
int i, j, tmp;
for (i = 1; i < length; i++) {
j = i;
while (j > 0 && arr[j - 1] > arr[j]) {
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
j--;
}//end of while loop
}//end of for loop
}//end of insertion_sort.
int main()
{
int method, matrixTYPE, arr[8][8];
for (int i = 0; i < 8; i++)
{
arr[i][i] = (rand() % 44) + -30;
}
for (int i = 0; i < 16; i++)
{
cout << arr[i][i] << endl;
}
system("pause");
return 0;
}
答案 0 :(得分:1)
您需要两个嵌套循环来访问2D数组的所有元素:
for (int i = 0; i < 8; ++i)
for (int j = 0; j < 8; ++j)
arr[i][j] = 42;
你的第一个循环只分配给对角线上的元素:
[X] [ ] [ ] [ ]
[ ] [X] [ ] [ ]
[ ] [ ] [X] [ ]
[ ] [ ] [ ] [X]
第二个超出界限。