Bài toán: Kiểm tra mảng có đối xứng hay không
Input: mảng a có n phần tử
Xử lý: duyệt mảng, so sánh phần tử đầu và phần tử cuối của mảng có bằng nhau không, nếu bằng thì tiếp tục đến phần tử đầu +1 và phần tử cuối -1, đến giữa mảng Nếu so sánh mà có phần tử nào đó không bằng nhau thì hàm trả về là -1, rồi thoát khỏi vòng lặp
Nếu so sánh bằng nhau hết thì hàm trả về là 1
Output: mảng đối xứng là 1, mảng không đối xứng là -1
Hàm Kiểm tra mảng đối xứng
int KiemTraMangDoiXung(int a[], int n) { for(int i = 0; i < n/2; i++) { if(a[i] != a[n - i - 1]) { return -1; break; } } return 1; }
Chương trình
#include<stdio.h> #include<conio.h> #include <stdlib.h> #define MAX 100 void nhapmang(int a[], int &n); void xuatmang(int a[], int n); int KiemTraMangDoiXung(int a[], int n); void main() { int a[MAX],n; nhapmang(a,n); printf("\nNoi dung cua mang"); xuatmang(a,n); if(KiemTraMangDoiXung(a,n) == 1) printf("\nMang doi xung "); else printf("\nMang khong doi xung "); printf("\nChuc cac ban hoc tot"); getch(); } void nhapmang(int a[], int &n) { do { printf("\nSo phan tu trong mang "); scanf("%d",&n); }while(n<=0 && n>100); for(int i=0 ; i<n ; i++ ) { printf("\nSo phan tu a[%d] la: ",i); scanf("%d",&a[i]); } } void xuatmang(int a[], int n) { for(int i=0 ; i<n ; i++ ) printf("%4d",a[i]); } int KiemTraMangDoiXung(int a[], int n) { for(int i = 0; i < n/2; i++) { if(a[i] != a[n - i - 1]) { return -1; break; } } return 1; }
Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.
Chúc bạn thành công!
Xem thêm:Đếm số phần tử x
if(a[i] != a[n – i – 1])
cho em hỏi tại sao lại trừ cho i
cho mình hỏi lun là vì răng lại trừ cho 1
Bởi vì từ cuối mảng ta phải lùi về 1 số để so sánh với giá trị i đầu tăng lên
cho em hỏi bây giờ mình muốn nhập một mảng tăng dần, nếu nhập sai thì yêu cầ nhập lại thì mình sử dụng do while như thế nào ạ?
Bạn kiểm tra số vừa nhập với số nhập trước đó
giải thích giúp e giá trị trả về -1 trong for và 1 ngoài for với ạ. Nếu trong for đúng hàm vẫn trả về giá trị -1 vậy hàm sẽ trả về hai giá trị phải ko ạ?
cho mình hỏi mình thử chạy đoạn code này nhưng nó lại báo lỗi đoạn for là vì sao