30/09/2018, 16:08
Nhờ sửa lỗi bài tìm dãy đối xứng
#include<stdio.h>
int main()
{
int A[20],i,j,n;
printf("nhap day so xem co phai la doi xung hay khong
Moi ban nhap cac phan tu ");
scanf("%d",&n);
for(i=0; i<n; i++)
{
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
for(j=n-1,i=0; i<=j; i++,j--)
if(A[i]==A[j])
printf("day so doi xung");
else printf("ko la day doi xung");
}
Mình muốn nó không hiển thị nhiều cái tên “day so doi xung” nhiều lần quá thì làm thế nào?
vd về dãy đối xứng như 12421 đây là dãy đối xứng
Bài liên quan
@Toi_Do bạn sửa lại cái tiêu đề nhé, tiêu đề chưa thể hiện được nội dung bạn muốn hỏi. Nếu các bạn khác cùng đặt chung tiêu đề “Mọi người xem giúp mình mã này với” thì làm sao biết được ai hỏi cái gì
Đồng thời bạn cũng phải giải thích cái chương trình của bạn đang làm cái gì? Nếu bạn chỉ post code thì không ai biết code bạn viết cái gì, bị lỗi ở đâu. Thì khi đó không thể giúp bạn sửa lỗi được.
P/S: Đạt đã move bài bạn vào Programming > C. Đã sửa lại lỗi chính tả, đã sửa lại code nhìn cho đẹp hơn.
P/S2: Đạt đã sửa tiêu đề thành “Nhờ sửa lỗi bài tìm dãy đối xứng”. Bây giờ @Toi_Do cho biết đề bài đi, dãy đối xứng theo yêu cầu của bạn là dãy như thế nào.
vd 12521 đây là 1 dãy đối xứng.
Em Viết được mã này rồi nhưng mà nó hơi thừa tý in ra nhiều dòng chữ quá
có lệnh nào kết thúc được không ạ
cho em xin nỗi nha em mới vào room nên vẫn còn non nớt mong anh bỏ quá
À cái vụ post bài nhiều người bị lắm. Nhưng nếu em post bài thì em phải suy nghĩ cách post làm sao cho bạn em, người không học chung với em, hiểu em đang muốn hỏi cái gì.
Forum hay trong đời thật cũng vậy, em hỏi bạn em với nội dung y chang thì bạn em cũng thua à, vì nó không hiểu em đang hỏi cái gì
thế 125521 có phải là dãy đối xứng luôn không?
P/S: Đây là cách post bài trong forum mình nè, em có thể “Quote” bài của anh để hỏi từng vấn đề cụ thể mà không cần phải post 2 bài liên tục. Như vậy nó rối forum.
e có thể sửa lại như sau:
Của bác nếu dãy không đối xứng thì cuối cùng chương trình vẫn sẽ hiện thêm 1 dòng “day doi xung”
bạn có thể sửa vòng for của bạn:
…sửa:
===> thành:
e sửa chữ
break
thànhreturn
hoặc dùng cờ hiệu cũng dc. hilệnh của anh mới quá em không biết anh giải thích em đi
đúng rồi không đối xứng vẫn thêm dòng đối xứng
Đâu có lệnh nào mới đâu bạn @Toi_Do??
int check là khai báo thêm 1 biến để check xem có là dãy đối xưng ko? ban đầu gán cho giá trị 1 - mặc định là đối xứng. trong vòng for, nếu có giá trị a[i] khác a[j] thì check sẽ gán bằng 0 - không đối xứng. ở dưới lệnh if chắc ko cần giải thích nữa nhé.
không nó tác dụng là chưa hợp lý nhé bạn, thật ra khi gặp
a[i]!=a[j]
, thì nó sẽ thoát khỏi vòng lặp luôn. Nhưng vẫn chạy xuất dưới nên xuất ra thêm câu. Vì vậy chỉ cần đổi lạibreak
=return
là ok nhé bạn.Lúc trưa code chay, nên k chạy code để debug dc.H up code hoàn chỉnh nhá.
Chưa hiểu lắm ý bạn nói
Muốn chương trình k thoát ra thì mình có hàm
system("pause")
kìa bạn.Dãy đối xứng là phần tử đầu đối xứng với phần tử cuối, phần tử thứ 2 đối xứng phần tử kề phần tử cuối … qua phần tử ở giữa làm tâm đối xứng hoặc không có phần tử ở giữa.
Dãy 125521 là dãy đối xứng, dãy 12123 không phải là dãy đối xứng.
tại em nghĩ sâu xa nhìn thấy lệnh check tưởng cái gì!!! nên khong đọc nữa
mà câu lệnh anh hay thật ngắn gọn rễ hiểu chác anh tư giỏi lắm nhỉ
Code trên mình dùng hàm để viết. Để hạn chế in dòng chữ như bạn đã nói thì mình dùng 1 biến
check
khi viết hàmdoi_xung
, khi kiểm tra điều kiện:if(so_nguyen[i]==so_nguyen[j])
Nếu đúng thì gán
check=1
, nếu sai thì gáncheck=0
và thoát khỏi vòng lặpfor
bằng lệnhbreak
. Sau đó trả về hàmmain
như trên.Bạn cứ chạy thử code của mình nếu có gì không hiểu thì cứ hỏi.
sao dài thế anh…
if(doi_xung(so_nguyen,so_phan_tu))
printf(“Mang da nhap la mang doi xung.”);
else
printf(“Mang da nhap khong phai la mang doi xung.”);
return 0;
em không hiểu cái này anh ơi
Code trên mình viết hoàn chỉnh luôn muk.Vừa nhập mảng ,vừa kiểm tra tính đối xứng của mảng đã nhập.Nếu như bạn chỉ cần phần đối xứng thì chỉ cần quan tâm tới hàm:
int doi_xung(int so_nguyen[],int so_phan_tu)
.thôi.