gpt4 book ai didi

检查数组中相同的数字及其值

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:24 25 4
gpt4 key购买 nike

作为我必须编写的程序的一部分,我需要编写的函数之一应该检查数组是否有任何相同的相同数字,以及其中一个是否大于/等于给定数字.

给定的数字也是数组中数字的数量

这是我目前所拥有的:

int checkarray(int *arr, int num)
{
int check = num;
int check2 = num;
int *lor;
int *poi;
int *another;

another = arr;
lor = arr;
poi = arr;
int check3 = num;

for ( ; num > 1; num--) {

for ( ; check3 >= 0; check3--) {

if (*arr == *poi)
return 0;
poi++;
}
arr++;
poi = another;
}

for ( ; check2 > 0; check2--) {

if (*lor >= check)
return 0;
lor++;
}
return 1;
}

我知道我为这个函数做了太多的指针/int,但这不是问题..

如果我没记错的话,检查给定值的部分工作正常,所以我认为您可以忽略该部分(这是最后一个“for”循环)

我知道这应该很容易,但出于某种原因我就是无法让它工作...

编辑:

我举个例子:如果数组是 0 1 2 3 1 函数将返回 0,因为第二个和最后一个数字相同。如果给定的数字是 5,并且其中一个数字大于或等于 5,例如 0 1 2 5 4,该函数也将返回 0。

否则,函数返回 1。

最佳答案

我创建了一个新数组,我将在其中保存数字,这样我就可以检查数组中是否有重复数字。我在函数中还有一个参数来知道数组的大小。

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

int checkArray(int *arr, int size, int number){
int i,j;
int *countArray = calloc(size,sizeof(int));
for(i=0;i<size;i++){
if(arr[i]>=number){ //Check >= number
free(countArray);
return 0;
}
for(j=0;j<i;j++){ //Check repeat number
if(countArray[j]==arr[i]){
free(countArray);
return 0;
}
}
countArray[j]=arr[i]; //no repeat number so we save it.
}

free(countArray);
return -1; //Error

}

int main(){
int arr[6] = {0,8,2,3,4,1};
printf("Result %d",checkArray(arr,6,5));

}

希望对您有所帮助。

没有新数组的更新

int checkArray(int *arr, int size, int number){
int i,j;
for(i=0;i<size;i++){
if(arr[i]>=number){
return 0;
}
for(j=0;j<i;j++){
if(arr[i]==arr[j]){
return 0;
}
}
}
return -1; //Error
}

关于检查数组中相同的数字及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35036790/

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