gpt4 book ai didi

c - 如何检查输入数组是否有数字,并将其在输出数组中相应的索引位置加1?

转载 作者:行者123 更新时间:2023-11-30 16:29:19 25 4
gpt4 key购买 nike

对于一个类,我们需要编写一小段代码来检查输入数组中是否有数字,如果该数字存在,则将+1添加到输出数组的索引位置。示例:

输入:

1
1
3
2

输出

0 2 1 1

在此场景中,有 2 个数字 1,因此输出的索引位置 1 处为 +2。我只是不知道该怎么做?这就是我到目前为止所拥有的。

#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdio.h>
#include <math.h>

void create_hist(double input[], int num_vals, int output[]) {
memset(output, 0, sizeof(int) * 28);
for(int i = 0; i < num_vals; i++){
//HERE IS WHERE I AM STUCK//
}
}
}

void call_function( const char * label, double x[], int count ) {
int hist[28 + 1];
create_hist( x, count, hist );
printf( "%s\n", label );
printf( "\tInput data:\n" );

for ( int i = 0; i < count; i++ ) {
printf( "\t%d\t%f\n", i, x[i] );
}

printf( "\tHistogram:\n" );

for ( int i = 0; i <= 28; i++ ) {
printf( "\t%d\t%d\n", i, hist[i] );
}

printf( "\n" );
}

int main( void ) {
srand( time( NULL ) );

double x1[] = { 0 };
call_function( "Count == 0", x1, 0 );

double x2[] = { 0, 0, 0 };
call_function( "Three equal values", x2, 3 );

double x3[28 + 1];
for ( int i = 0; i <= 28; i++ ) {
x3[i] = i;
}
call_function( "One value in each bucket", x3, 28 + 1 );

double x4[28 * 2 + 1];
for ( int i = 0; i <= 28 * 2; i++ ) {
x4[i] = (28+1) * ( double ) rand() / RAND_MAX;
}
call_function( "Random values", x4, 28 * 2 + 1 );

return 0;
}

最佳答案

您可以使用input[i]值作为output数组的索引。但在此之前,您需要检查 input[i] 是否小于 num_vals,以避免越界访问。

   void create_hist(double input[], int num_vals, int output[]) 
{
memset(output, 0, sizeof(int) * 28);
for(int i = 0; i < num_vals; i++)
{
//You can do as below//
if(input[i] < num_vals)
output [input[i]]++;
}
}

关于c - 如何检查输入数组是否有数字,并将其在输出数组中相应的索引位置加1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914844/

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