[英]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.