我不知道该怎么做。请帮我代码或告诉我要查找哪些教科书或其他东西;我需要代码来完成这个程序,我想要解释我正在看的东西..
#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 “<<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存储在唯一数组的元素编号中
增加数字的值
外循环结束
解决方案 - 变量编号包含数据数组中不同值的计数
替代算法
不使用event_flag的算法(循环控制变量可用于确定是否发生了事件)
算法 - 使用唯一数组来帮助找到解决方案,用于避免计算任何超过一次的值
将数字设置为0 - 这表示数据集中不同值的数量;也用作唯一数组中的下标
从0到大小循环,继续通过数据(num)数组的连续元素
将当前数组元素的值存储在非数组变量(SV)中
从0循环到数字,继续通过唯一数组的连续元素
如果SV等于唯一数组的当前元素
中断(停止)内循环
内循环结束
如果内循环的循环控制变量等于数字的值(在唯一数组中找不到SV而以前没有计数)
将SV存储在唯一数组的元素编号中
增加数字的值
外循环结束
解决方案 - 变量编号包含数据数组中不同值的计数
我把它放在我的手中:
//************************************************************
//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;
//************************************************************
显然,它不起作用。
答案 0 :(得分: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;
}
}
答案 1 :(得分: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;
}
答案 2 :(得分: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] << " ";
}
}
我希望这就是你要找的......
度过愉快的一天。
答案 3 :(得分: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;
}