저는 현재 C로 프로그래밍 중이며 현재 사용자 입력의 중복을 배열에 저장하고 출력하는 프로그램을 작업 중입니다. 첫째, 프로그램은 나에게 쉬운 것처럼 보였지만 끝없는 Google 검색과 YouTube 자습서에도 불구하고 일주일 동안 파악하지 못한 몇 가지 문제가 있음을 깨달았습니다. 대부분의 자습서는 배열 또는 유사 항목에서 중복 항목을 삭제하는 방법을 보여줍니다. 그것들을 표시하는 것은 중복을 삭제하는 것과 매우 유사해야하는 것 같지만 솔루션이 매우 간단하다고 확신하지만 내가 원하는 방식으로 표시하는 것은 불가능한 것 같습니다. 그래서 여기에 기본적인 논리가 있습니다. 두 개의 for 루프와 하나의 if가 배열을 비교합니다.
#include<stdio.h>
int main(void)
{
int dupArray[100], newArray[100], array[100], size = 0, number = 0, i = 0, j =
0, x = 0, y = 0, m = 0, n = 0;
printf("How many numbers do you want to compare? ");
scanf("%d", &size);
for (i = 0; i < size; i++)
{
printf("Enter number %d", i + 1);
printf("/%d: ", size);
scanf("%d", &array[i]);
}
for (y = 0; y < size; y++)
{
for (j = 0; j < size; j++)
{
if (array[j] == array[y] && y != j)
{
dupArray[x] = array[j];
printf("duplicate: %d", dupArray[x]);
printf("\n");
x++;
}
}
}
return 0;
}
이 프로그램은 이중 숫자에 대해 잘 작동합니다. 예를 들어, 사용자 입력이 5 5 6 3 6 7 9 0 0 4 인 배열 크기가 10이면 중복 : 5 중복 : 5 중복 : 6 중복 : 6 중복 : 0 중복 : 0 그러나 다음 중 2 개 이상 동일한 숫자가 입력되면 프로그램은 동일한 숫자를 많이 출력합니다. 예 : 배열 크기 5. 사용자 입력 : 5 1 5 6 5 중복 : 5 중복 : 5 중복 : 5 중복 : 5 중복 : 5 중복 : 5 숫자를 만들려면 어떻게해야하나요? 숫자 입력-한 번만 출력 하시겠습니까?
중복 배열에 추가하기 전에 번호가 이미 중복 배열에 있는지 확인해야합니다.
이 수표
if( array[j]==array[y] && y!=j )
동일한 인덱스에있는 숫자를 비교하는 것을 방지하지만 다른 인덱스에있는 동일한 값을 비교하는 것은 방지합니다.
그래서 그것은
if( array[j]==array[y] && y!=j && !InDup(dupArray, array[j], x) )
{
...
}
및 InDup()
요소가 배열에 있는지 확인합니다 :
int InDup(int *a,int num, int x)
{
size_t i;
for (i=0; i<x; i++)
if(a[i] == num) return 1;
return 0;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다