gpt4 book ai didi

c - 如何逐行保存数组中的整数并计算唯一整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:51 25 4
gpt4 key购买 nike

我想计算每行唯一整数的数量。我想要的输出是:

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

最佳答案

将整数读入整数数组,对数组进行排序,然后在每次值更改时扫描数组递增“唯一”计数器。

所以对于输入:

           1 2 3 4 5 6 5 4 5`

排序:

           1 2 3 4 4 5 5 5 6 
unique=0 1 2 3 4 5 6

一旦排序,唯一计数迭代如下:

int last = sorted[0] ;
int unique = 1 ;
for( int i = 1; i < n; i++ )
{
if( sorted[n] != last )
{
last = sorted[n] ;
unique++ ;
}
}

关于读取数据;我建议您使用 fgets() 读取行,然后使用 sscanf() 扫描行。

fgets( line, sizeof(line), fp ) ;

int value ;
int index = 0 ;
int count ;

for( count = 0;
sscanf( &line[index], "%d%n", &value, &index ) == 1 ;
count++ ;
{
array[count] = value ;
}

上述方法读取一行,然后验证并同时转换为整数。当遇到非数字值或行尾时,循环终止。对于空行或以非数字开头的行,count 将为零;否则它将是转换的整数总数。

关于c - 如何逐行保存数组中的整数并计算唯一整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com