【发布时间】:2016-04-30 04:01:01
【问题描述】:
我想计算每行唯一整数的数量。 我想要的输出是:
unique: 6
unique: 3
unique: 5
unique: 5
unique: 1
unique: 1
unique: 7
更新:
fgets(line, sizeof(line), fp) ;
int value;
int index1 = 0;
int count1;
for(count = 0; sscanf( &line[index1], "%d%n", &value, &index1 ) == 1 ; count1++) {
array[count1] = value ;
}
int last = sorted[0] ;
int unique = 1 ;
for( int i = 1; i < n; i++ ){
if( sorted[n] != last ){
last = sorted[n];
unique++ ;
}
}
}
fclose(fp);
return 0;
}
那么可以用array[count] 代替sorted[0] 吗?我从哪里得到 n 的值?
因此,我想逐行读取文件,并计算每行唯一整数的数量(您在上面看到的输出)。我不想要硬编码的数组值,也不想要第一个唯一整数(我想要每行所有唯一整数)。有什么建议?请拜托,我好困
更新: 我进行了快速排序,可以按降序逐行获取值。我应用了唯一性算法,当我打印唯一性的值时,它始终是 2。
qsort(array, count, sizeof(int), int_cmp);
int n;
for (n=0; n<count; n++)
printf ("sorted array:%d\n ", array[n]);
int last = array[0] ;
int unique = 1 ;
int i;
for( i = 1; i < n; i++ ){
if(array[n] != last ){
last = array[n] ;
unique++;
}
}
printf("unique:%d", unique);
输出:
sorted array:6
sorted array:5
sorted array:5
sorted array:5
sorted array:4
sorted array:4
sorted array:3
sorted array:2
sorted array:1
unique:2
sorted array:62
sorted array:48
sorted array:14
sorted array:14
unique:2
sorted array:9
sorted array:7
sorted array:5
sorted array:3
sorted array:1
unique:2
sorted array:5678
sorted array:1234
sorted array:789
sorted array:456
sorted array:123
unique:2
sorted array:34
sorted array:34
sorted array:34
sorted array:34
sorted array:34
unique:2
sorted array:1
unique:1
sorted array:7
sorted array:7
sorted array:7
sorted array:6
sorted array:5
sorted array:5
sorted array:4
sorted array:4
sorted array:4
sorted array:4
sorted array:3
sorted array:3
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:1
sorted array:1
sorted array:1
unique:2
调试更新:
sorted array:6
sorted array:5
sorted array:5
sorted array:5
sorted array:4
sorted array:4
sorted array:3
sorted array:2
sorted array:1
i:1
n:9
last:6
:unique:2
sorted array:62
sorted array:48
sorted array:14
sorted array:14
i:1
n:4
last:62
:unique:2
sorted array:9
sorted array:7
sorted array:5
sorted array:3
sorted array:1
i:1
n:5
last:9
:unique:2
sorted array:5678
sorted array:1234
sorted array:789
sorted array:456
sorted array:123
i:1
n:5
last:5678
:unique:2
sorted array:34
sorted array:34
sorted array:34
sorted array:34
sorted array:34
i:1
n:5
last:34
:unique:2
sorted array:1
unique:1
sorted array:7
sorted array:7
sorted array:7
sorted array:6
sorted array:5
sorted array:5
sorted array:4
sorted array:4
sorted array:4
sorted array:4
sorted array:3
sorted array:3
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:2
sorted array:1
sorted array:1
sorted array:1
i:1
n:20
last:7
:unique:2
【问题讨论】:
-
不加评论就投反对票是没有帮助的。这里有一个合理的问题,可能被一些多余的内容和不适当的标签所掩盖,但 cmets 的目的是帮助改进问题。
-
仔细考虑你的标签;问题真的是关于文件 io 和数组吗?在我看来,您实际上正在寻找的是一个 algorithm - file-io 和数组似乎不是您的问题。
-
@Clifford 我不明白如何应用算法,因为我不明白如何将文件中的值逐行提取到数组中以执行算法。并感谢您的标签建议。
-
我的答案现在涵盖了两者(尽管可能不再与问题匹配)。希望对您有所帮助。
-
一般:注释你的代码(你开始(很好),但还有更多:靠近顶部,在 sn-p/file 中说明代码的用途。继续here)。在其第一个表达式中声明
for-loops 的控制变量,并在一个块中本地声明临时变量作为循环体。如果您对变量是什么感到困惑,请选择富有表现力的名称。如果您不使用调试器来逐步执行,请添加日志记录或调试输出语句。for-loop 中用于计算唯一值的迭代变量是什么,你用什么来索引?
标签: c arrays algorithm file-io