Dek-D.com ใช้คุกกี้เพื่อพัฒนาประสบการณ์ของ
ผู้ใช้ให้ดียิ่งขึ้น เรียนรู้เพิ่มเติมที่นี่
ยอมรับ

รับค่าตัวเลขมาสี่ตัว หาตัวซ้ำทำไงครับ

ตั้งกระทู้ใหม่
ตั้งกระทู้ใหม่
สมมติรับค่าด้วยเลขมาสี่ตัว1-9
แล้วมันจะแสดงผลประมาณ 1234 ไม่มีตัวเลขซ้ำกัน
1150 มีตัวเลข 1 ซ้ำกัน
2592 มีตัวเลข 2 ซ้ำกันประมาณนี่อ่ะครับ
ทำไงอ่ะ

แสดงความคิดเห็น

>

2 ความคิดเห็น

Shalnark T Diabolus 7 มิ.ย. 61 เวลา 20:58 น. 1-2

ง่ายสุดก็แยก4หลักไปใส่ตัวแปล4ตัวแล้วจับเช็คทีละคู่ ถ้าเจอซ้ำก็นับไป+1

0
Guanyu 7 มิ.ย. 61 เวลา 23:48 น. 2

ผมพอช่วยบอกโค๊ตได้ไหมครับ ลองหลายรอบแล้วคิดไม่ออกจริงๆTT


#include <stdio.h>

int main()

{

int a,b,c,d,n;

printf("Number(1000-9999): ");scanf("%d",&n);

a=n/1000;

b=n/100%10;

c=n/10%10;

d=n%10;

if(a!=b&&c&&d)

printf("All number Different\n");

else if((a==b)!=c&&d)

printf("%d is number repeatedly\n",a);

else if((a==c)!=b&&d)

printf("%d is number repeatedly\n",a);

else if((a==d)!=c&&b)

printf("%d is number repeatedly\n",a);

return 0;

}


อันนี้แค่ลองเทียบกับ a ก็ไม่ออกอ่ะครับ

ตอน รัน 1015 มันบอก All number Different

ตอน รัน 1150 มันออกมาได้อยู่

พยายามยามหลายครั้งไม่ได้สักทีครับTT

2
Shalnark T Diabolus 8 มิ.ย. 61 เวลา 00:20 น. 2-1

อย่างแรกที่ควรรู้ไว้ครับ "การเปรียบเทียบทำได้แค่ครั้งละ2ตัวเท่านั้น"

if(a!=b&&c&&d) ใช้ไม่ได้

ถ้าจะใช้ต้องเขียนเป็น if(a!=b && a!=c && a!=d)

แต่เงื่อนไขนี้ก็ยังไม่ถูก เงื่อนไขนี้ก็แค่เอาaไปเทียบทุกตัว แล้วb c d ไม่ต้องเทียบเหรอ อีกอย่างมันไม่สามารถเทียบให้จบในเงื่อนไขเดียวด้วย ตัวอย่างที่ยกมามันซ้ำแค่2ตัวเลยเห้นไม่ชัด แต่ถ้าสมมุติเป็น 1212 ล่ะ

a = 1

b = 2

c = 1

d = 2

มันก็จะซ้ำกัน2คู่ แปลว่ามันต้องพิมพ์2ครั้ง หมายความว่าใช้else ifไม่ได้ เพราะถ้าใช้else ifพอเข้าเงื่อนไขใดเงื่อนไขหนึ่งแล้วมันจะเมินเงื่อนไขอื่นๆหลังจากนั้นทันที

เพราะงั้นต้องใช้

if ........ {


}


if ........ {


}

ซ้อนไปหลายๆครั้งจนครบเงื่อนไข

ถ้าเป็นผม ผมจะใช้เงื่อนไข

if a = b or a = c or a = d >> write a

if b != a and (b = c or b = d) >> write b

if c != a and c != b and c = d >> write c

if a != b and a != c and a != d and b != c and b != d and c != d >> write All Diff

0