C 中的计数排序 - 错误 : Use of undeclared identifier

标签 c arrays sorting counting

我正在尝试编写一个使用计数排序算法的函数,但是当我尝试编译时它说 output_arraycount_array 未声明,尽管我已经将它们声明为 int 类型数组。

#include <stdio.h>
#include <stdlib.h>
#include "input_blatt01.h"

int MAX_LAENGE = 1000;
int MAX_VALUE = 100;
int i, k, j;
void count_sort_calculate_counts(int input_array[], int len, int count_array[])
{
    for (i=0; i<=len;i++)
    {
        count_array[i] = 0;
    }
    for (j=1; j<=len;j++)
    {
        count_array[input_array[j]] = count_array[input_array[j]] + 1;
    }
}

void count_sort_write_output_array(int output_array[], int len, int count_array[])
{
    k=0;
    for (j=1;j<=len;j++)
    {
        for (i=1; i<=count_array[j]; i++)
        {
            output_array[k] = j;
            k = k + 1;
        }
    }
}



int main(int argc, char *argv[]) {

    if (argc < 2){
        printf("Aufruf: %s <Dateiname>\n", argv[0]);
        printf("Beispiel: %s zahlen.txt\n", argv[0]);
        exit(1);
    }

    char *filename = argv[1];

    int input_array[MAX_LAENGE];  
    int len = read_array_from_file(input_array, MAX_LAENGE, filename);

    printf("Unsortiertes Array:");
    print_array(input_array, len);
    int i, k, j;
    count_sort_calculate_counts(input_array, len, count_array);
    count_sort_write_output_array(output_array, len, count_array);

    printf("Sortiertes Array:");
    print_array(output_array, len);

    return 0;
}

编译器输出:

introprog_blatt01_aufgabe02_vorgabe.c:51:51: error: use of undeclared identifier 'count_array'; did you mean 'print_array'? count_sort_calculate_counts(input_array, len, count_array);

./input_blatt01.h:2:6: note: 'print_array' declared here void print_array(int array[], int len);

introprog_blatt01_aufgabe02_vorgabe.c:52:35: error: use of undeclared identifier 'output_array'; did you mean 'input_array'? count_sort_write_output_array(output_array, len, count_array); introprog_blatt01_aufgabe02_vorgabe.c:45:9: note: 'input_array' declared here int input_array[MAX_LAENGE];

introprog_blatt01_aufgabe02_vorgabe.c:52:54: error: use of undeclared identifier 'count_array'; did you mean 'print_array'? count_sort_write_output_array(output_array, len, count_array);

./input_blatt01.h:2:6: note: 'print_array' declared here void print_array(int array[], int len);

introprog_blatt01_aufgabe02_vorgabe.c:55:17: error: use of undeclared identifier 'output_array'; did you mean 'input_array'? print_array(output_array, len);

introprog_blatt01_aufgabe02_vorgabe.c:45:9: note: 'input_array' declared here int input_array[MAX_LAENGE];

最佳答案

您将 output_arraycount_array 声明为以下函数的参数:

void count_sort_calculate_counts(int input_array[], int len, int count_array[])
void count_sort_write_output_array(int output_array[], int len, int count_array[])

但是您没有在main 函数中声明output_arraycount_array

你可能需要这个:

...
int input_array[MAX_LAENGE];  
int output_array[MAX_LAENGE];   // <<< add this
int count_array[MAX_LAENGE];    // <<< add this 
int len = read_array_from_file(input_array, MAX_LAENGE, filename);
...

关于C 中的计数排序 - 错误 : Use of undeclared identifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33669776/

相关文章:

Python;计算向量的元素

python根据子列表值重新排列列表中的元素

JavaScript Array.sort 不适用于某些数字数组

c# - 结合多个 Linq OrderBy 实现 IComparer

c - inet_ntop 重复循环IP

ruby - 在一行中创建多个数组

c - waitpid、WNOHANG 和 SIGCHLD 示例

C - "mixedly allocated"数组的调用函数

c++ - Python 与 C : different outputs

iOS 检测 IPv6 支持