-1

我不知道该怎么做。请帮我编写代码或告诉我要查找的教科书或其他内容;我需要代码来完成这个程序,我很想解释我在看什么..

#include<iostream>
using namespace std;

int main()
{    
   short num[100], size, //declare an array of type short that has 100 elements
      unique[100], number,  // declare a second array to help solve the problem; number counts the number of unique values
      k;   // loop control variable; may need other variables
   cout<<"enter the number of values to store in the array\n";
   cin>>size;
   cout<<”enter the “&lt;<size<<” values to be used as data for this program\n”;
   for(k=0; k<size; k++)
      cin>>num[k];

   // print the contents of the array
   cout<<"\nthere are "<<size<<" values in the array\n";
   for(k=0; k<size; k++)
      cout<<num[k]<<’ ‘; // there is one space between each number in the display
   cout<<endl;  // cursor moved to next output line

   cout<<"the program will count the number of different (distinct) values found in the array\n";   

   //************************************************************
   //Put the code here that counts the number of unique values stored in the 
   //array num.  The variable number will contain the count.
   //************************************************************

   cout<<endl<<number<<" unique values were found in the "<<size<<" element array\n";
   // pause the program to see the results
   system("pause");
   //return 0;       
}

我必须做这两件事之一,我不知道它们是什么意思?

算法 - 唯一数组用于帮助找到解决方案,用于避免对任何值进行多次计数
将数字设置为 0 - 这表示数据集中不同值的数量;也用作唯一数组中的下标
从 0 循环到大小加一,遍历数据 (num) 数组的连续元素 将
  当前数组元素的值存储在非数组变量 (SV)
  中 将 event_flag 设置为 0
  从 0 循环到编号加一,遍历唯一数组的连续元素
    如果 SV 等于唯一数组的当前元素
      将 event_flag 设置为 1
    中断(停止)内部循环 内部循环
  结束
  如果 event_flag 等于 0(在唯一数组中未找到且先前未计数的值) 将
    SV 存储在唯一数组的元素编号中
  递增编号的值
外循环结束
解决方案- 变量编号包含数据数组中不同值的计数

Alternate Algorithm
不使用 event_flag 的算法(可以使用循环控制变量来确定事件是否发生)

算法 - 唯一数组用于帮助找到解决方案,用于避免对任何值进行多次计数
将数字设置为 0 - 这表示数据集中不同值的数量;也用作唯一数组中的下标
从 0 到 size 加一循环,遍历数据 (num) 数组的连续元素 将
  当前数组元素的值存储在非数组变量 (SV)
  中 从 0 到 number 加一循环,继续遍历唯一数组的连续元素
    如果 SV 等于唯一数组的当前元素
      中断(停止)内循环 内循环
  结束
  如果内循环的循环控制变量等于数字值(SV 在唯一数组中未找到且先前未找到计算)
  将 SV 存储在唯一数组的元素编号中
  增加 number 的值
外循环结束
解决方案- 变量 number 包含数据数组中不同值的计数

我把这个放在我的:

//************************************************************
//Put the code here that counts the number of unique values stored in the array num. The variable number will contain the count.
for(k=0; k<size; k++)
num=SV;
event_flag=0;
for(k=1; k<number; k++)
if(SV=unique)
return true;
return false; 
//************************************************************

显然,它不起作用。

4

4 回答 4

2

这是我的代码,它似乎工作

//************************************************************
//Put the code here that counts the number of unique values 
//stored in the array num. The variable number will contain the count.

number = 0;
for (k = 0; k < size; ++k)
{
       short sv = num[k];
       short event_flag = 0;
       for (int i = 0; i < number; ++i)
       {
               if (sv == unique[i])
               {
                       event_flag = 1;
                       break;
               }
       }

       if (event_flag == 0)
       {
               unique[number] = sv;
               ++number;
       }
}

对于替代方案,

他是我的代码,它似乎工作

//************************************************************
//Put the code here that counts the number of unique values 
//stored in the array num. The variable number will contain the count.

number = 0;
for (k = 0; k < size; ++k)
{
       short sv = num[k];
       int i;
       for (i = 0; i < number; ++i)
               if (sv == unique[i])
                       break;

       if (number == i)
       {
               unique[number] = sv;
               ++number;
       }
}
于 2013-10-09T19:23:24.223 回答
0

试试这个...

您可以在需要的地方插入cout语句。

#include <iostream>
using namespace std;

int main() 
{
    int Input[100], Unique[100], InSize, UniLength = 0;

    cin >> InSize;
    for (int ii = 0 ; ii < InSize ; ii++ ) 
    {
        cin >> Input[ii];
    }
    Unique[0] = Input[0];
    UniLength++;
    bool IsUnique;
    for ( int ii = 1 ; ii < InSize ; ii++ ) 
    {
        IsUnique=true;
        for (int jj = 0 ; jj < UniLength ; jj++ ) 
        {
            if ( Input[ii] == Unique[jj] )
            {
                IsUnique=false;
                break;
            }                     
        }                      
        if ( IsUnique )  
        {          
            Unique[UniLength] = Input[ii];
            UniLength++;
        }
    }
    cout<<"We've "<<UniLength<<" Unique elements and We're printing them"<<endl;
    for ( int jj = 0 ; jj < UniLength ; jj++ ) 
    {
        cout << Unique[jj] << " ";
    }
}

我希望这就是你要找的......

祝你今天过得愉快。

于 2014-08-31T02:50:44.497 回答
0

大致要求您执行以下操作:

#include <iostream>

using namespace std;

int main()
{
    // This is the given array.
    int given_array[5] = { 1, 1, 2, 2, 3 };

    // This is the array where unique values will be stored.
    int unique_array[5];

    // This index is used to keep track of the size
    // (different from capacity) of unique_array.
    int unique_index = 0;

    // This is used to determine whether we can
    // insert an element into unique_array or not.
    bool can_insert;

    // This loop traverses given_array.
    for (int i = 0; i < 5; ++i)
    {
        // Initially assume that we can insert elements
        // into unique_array, unless told otherwise.
        can_insert = true;

        // This loop traverses unique_array.
        for (int j = 0; j < unique_index; ++j)
        {
            // If the element is already in unique_array,
            // then don't insert it again.
            if (unique_array[j] == given_array[i])
            {
                can_insert = false;
                break;
            }
        }

        // This is the actual inserting.
        if (can_insert)
        {
            unique_array[unique_index] = given_array[i];
            unique_index++;
        }
    }

    // Tell us how many elements are unique.
    cout << unique_index;

    return 0;
}
于 2013-10-09T19:11:42.877 回答
0

这是我的方法。希望它会有所帮助。

#include<iostream>
#include<algorithm>

int main(){

    int arr[] = {3, 2, 3, 4, 1, 5, 5, 5};
    int len = sizeof(arr) / sizeof(*arr); // Finding length of array

    std::sort(arr, arr+len);

    int unique_elements = std::unique(arr, arr+len) - arr;

    std::cout << unique_elements << '\n'; // The output will 5

    return 0;
}
于 2017-11-09T18:43:12.643 回答