簡體   English   中英

找出數字是否相同 C#

[英]Find out if numbers are identical C#

我有這個作業,編寫一個程序,讀取用戶輸入的十個數字,並指出其中是否有任何相同的數字。 我有一年沒有編寫任何程序,所以我忘記了很多東西,而且我沒有找到任何與這個主題相關的東西。 我嘗試使用 field 和 if..else ,但沒​​有用。 有沒有更快的方法來比較這些數字? 或者這個問題的其他方法?

我的代碼有點糟糕,但我沒有想出更好的方法。代碼是用我自己的語言寫的,但這應該不是問題。 如果你能幫助我,我將不勝感激

    for(i=0;i<=n;i++){

   if (pole[0]==pole[2])
   printf("first and second number are identical");
   else if (pole[0]==pole[3])
   printf("prvé a tretie číslo sa rovnajú");
   else if (pole[0]==pole[4])
   printf("prvé a stvrte číslo sa rovnajú");
   else if (pole[0]==pole[5])
   printf("prvé a piate číslo sa rovnajú");
   else if (pole[0]==pole[6])
   printf("prvé a sieste číslo sa rovnajú");
   else if (pole[0]==pole[7])
   printf("prvé a siedme číslo sa rovnajú");
   else if (pole[0]==pole[8])
   printf("prvé a osme číslo sa rovnajú");
   else if (pole[0]==pole[9])
   printf("prvé a deviate číslo sa rovnajú");
   else if (pole[0]==pole[10])
   printf("prvé a desiate číslo sa rovnajú");

   else if (pole[2]==pole[3])
   printf("druhe a tretie číslo sa rovnajú");
   else if (pole[2]==pole[4])
   printf("druhe a stvrte číslo sa rovnajú");
   else if (pole[2]==pole[5])
   printf("druhe a piate číslo sa rovnajú");
   else if (pole[2]==pole[6])
   printf("druhe a sieste číslo sa rovnajú");
   else if (pole[2]==pole[7])
   printf("druhe a siedme číslo sa rovnajú");
   else if (pole[2]==pole[8])
   printf("druhe a osme číslo sa rovnajú");
   else if (pole[2]==pole[9])
   printf("druhe a deviate číslo sa rovnajú");
   else if (pole[2]==pole[10])
   printf("druhe a desiate číslo sa rovnajú");
   
   else if (pole[3]==pole[4])
   printf("tretie a stvrte číslo sa rovnajú");
   else if (pole[3]==pole[5])
   printf("tretie a piate číslo sa rovnajú");
   else if (pole[3]==pole[6])
   printf("tretie a sieste číslo sa rovnajú");
   else if (pole[3]==pole[7])
   printf("tretie a siedme číslo sa rovnajú");
   else if (pole[3]==pole[8])
   printf("tretie a osme číslo sa rovnajú");
   else if (pole[3]==pole[9])
   printf("tretie a deviate číslo sa rovnajú");
   else if (pole[3]==pole[10])
   printf("tretie a desiate číslo sa rovnajú");
   
   else if (pole[4]==pole[5])
   printf("stvrte a piate číslo sa rovnajú");
   else if (pole[4]==pole[6])
   printf("stvrte a sieste číslo sa rovnajú");
   else if (pole[4]==pole[7])
   printf("stvrte a siedme číslo sa rovnajú");
   else if (pole[4]==pole[8])
   printf("stvrte a osme číslo sa rovnajú");
   else if (pole[4]==pole[9])
   printf("stvrte a deviate číslo sa rovnajú");
   else if (pole[4]==pole[10])
   printf("stvrte a desiate číslo sa rovnajú");
   
   else if (pole[5]==pole[6])
   printf("piate a sieste číslo sa rovnajú");
   else if (pole[5]==pole[7])
   printf("piate a siedme číslo sa rovnajú");
   else if (pole[5]==pole[8])
   printf("piate a osme číslo sa rovnajú");
   else if (pole[5]==pole[9])
   printf("piate a deviate číslo sa rovnajú");
   else if (pole[5]==pole[10])
   printf("piate a desiate číslo sa rovnajú");
   
   else if (pole[6]==pole[7])
   printf("sieste a siedme číslo sa rovnajú");
   else if (pole[6]==pole[8])
   printf("sieste a osme číslo sa rovnajú");
   else if (pole[6]==pole[9])
   printf("sieste a deviate číslo sa rovnajú");
   else if (pole[6]==pole[10])
   printf("sieste a desiate číslo sa rovnajú");
   
   else if (pole[7]==pole[8])
   printf("siedme a osme číslo sa rovnajú");
   else if (pole[7]==pole[9])
   printf("siedme a deviate číslo sa rovnajú");
   else if (pole[7]==pole[10])
   printf("tretie a desiate číslo sa rovnajú");
   
   else if (pole[8]==pole[9])
   printf("osme a deviate číslo sa rovnajú");
   else if (pole[8]==pole[10])
   printf("osme a desiate číslo sa rovnajú");
   
   else if (pole[9]==pole[10])
   printf("deviate a desiate číslo sa rovnajú");
   else
   printf("there are no identical number");
   }
   
   
   
    return 0;
}

嵌套循環。

for (int i = 0; i < n - 1; i++)
  for (int j = i + 1; j < n; j++)
    if (pole[i] == pole[j]) {...}

您在代碼的開頭有一個 for 循環,但您沒有使用它,最干凈的解決方案是使用 2 for 循環,如下所示:

int f = 0;

for(int i=0;i<=n;i++){
   for(int j=0;j<i;j++){
       if(pole[i] == pole[j]){
            printf("number at position %d is equal to number at position %d",i,j);
            f = 1;
       }
   }
}
if (f == 0)
    printf("There are no identical numbers");

在應該使用這些循環的情況下,我們首先使用 i 變量和 j 變量循環到所有元素,對於 i 之前的每個元素,我們將測試它們是否相等,如果相等,我們將打印出他們匹配。

f 代表標志,所以我們現在可以在找到匹配的情況下,如果沒有,我們將在最后打印沒有相同的數字

int flag = 0;
for(int i=0;i<n;i++){
    for(int j=i; j<n; j++){
        if(poll[i] == poll[j]){
            printf("%d th and %d th numbers are identical",i,j);
            flag = 1;
        }    
    }
}
if(flag == 0){
    printf("No identical numbers are there")
}

感謝您的回復,它對我幫助很大,我學到了一些東西。 我更改了代碼,無論我做什么,它總是顯示“沒有相同的數字”。 我不知道這是什么問題,我很絕望。

int pole[10];
int i,n,j;


for (i = 0; i <10; i++ ){
    printf ("\n Zadaj [%d] prvok pola: ",i);
    scanf ("%d",&pole[i]);
}

int f=0;

for( i=0;i<=n;i++){
 for( j=0;j<i;j++){
   if(pole[i] == pole[j]){  
        printf("number at position %d is equal to number at position %d",i,j);
        
   }
  }
}
if (f == 0)
printf("There are no identical numbers");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM