C ++中特殊数组的问题

时间:2014-03-27 13:16:43

标签: c++ arrays algorithm

我正在通过解决为其他编程语言设计的问题来自学c ++。所以我会问很多问题。 我创立了非常有趣的一个,我有点失落。

我需要编写一个程序:

1。创建其中一个特殊数组(8x8):

一个。对角矩阵

湾低三角矩阵

℃。高三角矩阵

d。对称矩阵

2。用[-30..45];

范围内的随机整数填充它

第3。显示填充的数组

4。将数组转换为向量

5。使用线性搜索算法在向量中搜索用户指定的元素

6。使用以下算法之一对矢量进行排序:

一个。泡沫

湾插入

℃。选择

7。显示已排序的矢量。

我已经开始研究它,但我遇到了一些问题。

  1. 我不知道如何创建这些矩阵,我想这与for循环有关。

  2. 我知道如何生成随机数,但不知道范围。

  3. 我可以使用cout函数显示数组,但它看起来不像矩阵。

  4. 改造的最佳方式是什么?

  5. 如何实施此搜索算法?

  6. 这是我的代码,我只是设法实现排序算法,并创建一个随机数的矩阵。但我不认为我是以正确的方式做到的。

    #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;
    
    } 
    

1 个答案:

答案 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]

第二个超出界限。