-1

程序将输入 N 个数字并计算数组中出现 1 次的值的数量 此程序中使用了函数

#include<iostream>
using namespace std;

// Prototypes are placed before main
void input_data(short num[], short size);
void display_data(short num[], short size);
short frequencyOf1(short num[], short size);

int main()
{    
short num[100], size, // Declare an array of type short that has 100 elements
      number;         // Number counts the number of values that had a frequency of 1

cout<<"Enter the number of values to store in the array\n";
cin>>size;
while (size > 0)// Loop to try different data sets w/o re-executing the program
{
    input_data(num, size);   // Call statement to function to store data in array 
    display_data(num, size); // Call statement to function to print contents of array        

    cout<<"The program will count the number of values in the array that occurred 1 time\n"; 
    number = frequencyOf1(num, size);  // Call statement to function to count the number of value
                                       // That occurred 1 time; this is a value returning function          
    cout<<endl<<number<<" Values were found that occurred 1 time in the "<<size<<" element array\n";  

    cout<<"\nEnter the number of values to store in the array or 0 to terminate the program\n";
    cin>>size;
}    // End of while loop
     // Pause the program to see the results
 system("pause");
 return 0;       
}
// Function definitions are placed after main
void input_data(short num[], short size)
{
short i;
cout<<"Enter the "<<size<<" values to be used as data for this program\n";
for(i=0; i<size; i++)
   cin>>num[i];
}   

void display_data(short num[], short size)
{
short i;
cout<<"\nThere are "<<size<<" values in the array\n";
for(i=0; i<size; i++)
   cout<<num[i]<<' '; // There is one space between each number in the display
cout<<endl;           // Cursor moved to next output line 
}     
short frequencyOf1(short num[], short size)
{
// Enter code to solve the problem
// Must return a count using a 'return' statement
//?
  number=0;
  for(i=0; i<size; i++)
       {
            short sv=num[i];
            short event_flag=0;
                  for(int j=0; j<number; j++)
                      {
                        if(sv==frequencyOf1[j])
                         {
                                 event_flag=1;
                                         break;
                         }
                      }

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

这是另一个我不明白它在问同样的事情我是否像这样使用 for 循环?或其他东西它不起作用

好的,我试过了,现在不行了

程序将输入 N 个数字并计算数组中出现 1 次的值的数量此程序中使用的函数 */
#include using namespace std;

// Prototypes are placed before main
void input_data(short num[], short size);
void display_data(short num[], short size);
short frequencyOf1(short num[], short size);

int main()
{    
short num[100], size, // Declare an array of type short that has 100 elements
      number;         // Number counts the number of values that had a frequency of 1

cout<<"Enter the number of values to store in the array\n";
cin>>size;
while (size > 0)// Loop to try different data sets w/o re-executing the program
{
    input_data(num, size);   // Call statement to function to store data in array 
    display_data(num, size); // Call statement to function to print contents of array        

    cout<<"The program will count the number of values in the array that occurred 1 time\n"; 
    number = frequencyOf1(num, size);  // Call statement to function to count the number of value
                                       // That occurred 1 time; this is a value returning function          
    cout<<endl<<number<<" Values were found that occurred 1 time in the "<<size<<" element array\n";  

    cout<<"\nEnter the number of values to store in the array or 0 to terminate the program\n";
    cin>>size;
}    // End of while loop
     // Pause the program to see the results
 system("pause");
 return 0;       
}
// Function definitions are placed after main
void input_data(short num[], short size)
{
short i;
cout<<"Enter the "<<size<<" values to be used as data for this program\n";
for(i=0; i<size; i++)
   cin>>num[i];
}   

void display_data(short num[], short size)
{
short i;
cout<<"\nThere are "<<size<<" values in the array\n";
for(i=0; i<size; i++)
   cout<<num[i]<<' '; // There is one space between each number in the display
cout<<endl;           // Cursor moved to next output line 
}     
short frequencyOf1(short num[], short size)
{
  bool can_insert;


  for (int i = 0; i < 5; ++i)
{

    can_insert = true;


    for (int j = 0; j < size; ++j)
    {

        if (num[j] == number[i])
        {
            can_insert = false;
            break;
        }
    }


    if (can_insert)
    {
        num[size] = number[i];
        size++;
    }
}


cout << size;

return 0;
}
4

1 回答 1

0

虽然我们不会为您回答您的家庭作业问题,但我们可以提供一些建议。

通过将代码分解为更小的函数,您走在了正确的道路上。input_data()、display_data() 和 frequencyOf1() 都是思考任务的好方法。

最重要的是为每个函数编写简单的小测试,以证明它们做了你认为的事情。我会单独测试每一个,如下所示:

void test_display_data()
{    
    short num[] = {1, 3, 7, 5, 3};
    short numSize = sizeof(num);
    display_data (num, numSize );
}

int main()
{
    test_display_data();
    return 0;
}

只是为了确保它符合您的期望。单独调试每个小程序。当您完成测试一个例程并知道它可以工作时,将调用更改main()为调用您自己的test_input_data()函数,然后开始调试它。

于 2013-10-09T20:56:17.300 回答