Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有人能解释一下为什么我的程序不是';不能正确地对值进行排序吗?_C++_Sorting - Fatal编程技术网

C++ 有人能解释一下为什么我的程序不是';不能正确地对值进行排序吗?

C++ 有人能解释一下为什么我的程序不是';不能正确地对值进行排序吗?,c++,sorting,C++,Sorting,对于我的作业,我们必须构建链接sort.cpp文件和testsort.cpp文件的.h文件。但是,当我编译并运行testsort.cpp程序时,它不提供排序数组。相反,它只输出原始数组。我尝试将返回函数添加到sort.cpp文件,但出现以下错误: 错误:返回值为的返回语句,在返回“void”[-fpermissive]的函数中 返回A testsort.cpp #include <iostream> #include <cstdlib> #include &q

对于我的作业,我们必须构建链接sort.cpp文件和testsort.cpp文件的.h文件。但是,当我编译并运行testsort.cpp程序时,它不提供排序数组。相反,它只输出原始数组。我尝试将返回函数添加到sort.cpp文件,但出现以下错误:

错误:返回值为的返回语句,在返回“void”[-fpermissive]的函数中 返回A

testsort.cpp

#include <iostream>
#include <cstdlib>     

#include "sort.h"


int main() 
    {
      const int n = 10;
      int i, isort;
      float A[n];

      for (i=0;i<n;i++) 
          {
            A[i] = float(rand())/RAND_MAX; 
          }
  
      for (i=0;i<n;i++) 
          {
            std::cout << A[i] << " ";
          }
  
      std::cout << " unsorted\n";

      std::cout << "Enter 1 for insertion sort, 2 for partition test, 3 for quick sort\n";
      std::cin >> isort;

      switch (isort) 
          {
  
              case 1:
              InsertionSort( A, n );
              break;
  
              case 2:
              //  std::cout << "Count for small sub-array " << Partition( A, n ) << "\n";
              break;
  
              case 3:
              //  QuickSort(A,n);
              break;
  
              default:
              std::cout << isort << " is not an allowed choice\n";
          }

      for (i=0;i<n;i++) 
          {
            std::cout << A[i] << " ";
          }
      std::cout << " sorted\n";
    }
#include <iostream>
#include <cmath>
#include "sort.h"

      void InsertionSort (float A[], float n)
      {
        int value;
        int j;
        
        for (int i = 1; i < n; i++)
          {
            value = A[i];
            j = i;
              
              while(j > 0 && A[j-1] > value) 
                {
                   A[j] = A[j-1];
                   j--;
                }
            
            A[j] = value;
          }
         //return A; 
        //std::cout<<"Running Insertion Sort\n";
      }
排序.cpp

#include <iostream>
#include <cstdlib>     

#include "sort.h"


int main() 
    {
      const int n = 10;
      int i, isort;
      float A[n];

      for (i=0;i<n;i++) 
          {
            A[i] = float(rand())/RAND_MAX; 
          }
  
      for (i=0;i<n;i++) 
          {
            std::cout << A[i] << " ";
          }
  
      std::cout << " unsorted\n";

      std::cout << "Enter 1 for insertion sort, 2 for partition test, 3 for quick sort\n";
      std::cin >> isort;

      switch (isort) 
          {
  
              case 1:
              InsertionSort( A, n );
              break;
  
              case 2:
              //  std::cout << "Count for small sub-array " << Partition( A, n ) << "\n";
              break;
  
              case 3:
              //  QuickSort(A,n);
              break;
  
              default:
              std::cout << isort << " is not an allowed choice\n";
          }

      for (i=0;i<n;i++) 
          {
            std::cout << A[i] << " ";
          }
      std::cout << " sorted\n";
    }
#include <iostream>
#include <cmath>
#include "sort.h"

      void InsertionSort (float A[], float n)
      {
        int value;
        int j;
        
        for (int i = 1; i < n; i++)
          {
            value = A[i];
            j = i;
              
              while(j > 0 && A[j-1] > value) 
                {
                   A[j] = A[j-1];
                   j--;
                }
            
            A[j] = value;
          }
         //return A; 
        //std::cout<<"Running Insertion Sort\n";
      }
#包括
#包括
#包括“sort.h”
void InsertionSort(浮点A[],浮点n)
{
int值;
int j;
对于(int i=1;i0&&A[j-1]>值)
{
A[j]=A[j-1];
j--;
}
A[j]=值;
}
//返回A;
//标准::cout
  • void函数不能返回值
  • 在InsertionSort方法中,var值的类型为int。但数组元素的类型为float,值为b/t 0和1。在执行“value=A[i];”期间,值变为0(隐式类型转换),因此排序失败。请将值的类型更改为float
  • void函数不能返回值
  • 在InsertionSort方法中,var值的类型为int。但数组元素的类型为float,值为b/t 0和1。在执行“value=A[i];”期间,值变为0(隐式类型转换),因此排序失败。请将值的类型更改为float

  • 您使用sort.h和sort.cpp的方式是错误的。sort.cpp中的插入排序函数从未被调用。我尝试的是用sort.cpp中编写的函数替换sort.h中的空白插入排序函数,并删除了sort.cpp文件。此外,您还需要将插入排序函数中的值的数据类型更改为float当你使用浮点数组时,这两个变化和你的排序功能都很好

    排序.H

    #ifndef SORT_H
    #define SORT_H
    
    void InsertionSort (float A[], float n)
      {
        float value;
        int j;
        
        for (int i = 1; i < n; i++)
          {
            value = A[i];
            j = i;
              
              while(j > 0 && A[j-1] > value) 
                {
                   A[j] = A[j-1];
                   j--;
                }
            
            A[j] = value;
          }
         //return A; 
        //std::cout<<"Running Insertion Sort\n";
      }
    
    #endif
    
    \ifndef排序
    #定义排序
    void InsertionSort(浮点A[],浮点n)
    {
    浮动值;
    int j;
    对于(int i=1;i0&&A[j-1]>值)
    {
    A[j]=A[j-1];
    j--;
    }
    A[j]=值;
    }
    //返回A;
    
    //std::cout您使用sort.h和sort.cpp的方式是错误的。您在sort.cpp中的插入排序函数从未被调用。我尝试的是用sort.cpp.中编写的函数替换sort.h中的空白插入排序函数,并删除了sort.cpp文件。此外,您还需要更改插入排序函数中值的数据类型当你使用浮点数组的时候,这两个变化和你的排序功能都很好

    排序.H

    #ifndef SORT_H
    #define SORT_H
    
    void InsertionSort (float A[], float n)
      {
        float value;
        int j;
        
        for (int i = 1; i < n; i++)
          {
            value = A[i];
            j = i;
              
              while(j > 0 && A[j-1] > value) 
                {
                   A[j] = A[j-1];
                   j--;
                }
            
            A[j] = value;
          }
         //return A; 
        //std::cout<<"Running Insertion Sort\n";
      }
    
    #endif
    
    \ifndef排序
    #定义排序
    void InsertionSort(浮点A[],浮点n)
    {
    浮动值;
    int j;
    对于(int i=1;i0&&A[j-1]>值)
    {
    A[j]=A[j-1];
    j--;
    }
    A[j]=值;
    }
    //返回A;
    
    //std::coutWhy是
    InsertionSort
    n
    参数类型为
    float
    而不是
    size\ut
    ?您应该对所有数组索引器使用
    size\t
    而不是
    int
    :您的排序算法是错误的。返回并研究插入排序算法。为什么
    InsertionSort
    n
    参数类型为
    float
    而不是
    size\u t
    ?对于所有数组索引器,应该使用
    size\u t
    而不是
    int
    :排序算法错误。请返回并研究插入排序算法。