codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* Bài 721/187/SBT Thầy NTTMK:Cách 1:Cho mảng một chiều các số nguyên.Hãy viết hàm đệ quy đếm số lượng giá trị phân biệt có trong mảng . 458.cpp */ /* Ý tưởng:Đếm số lượng giá trị phân biệt trong mảng a có n-1 phần tử.Sau đó xét tới phần tử cuối cùng trong mảng có trùng với phần tử nào đứng đằng trước nó không.Nếu không trùng ta tăng số lượng giá trị phân biệt lên 1.*/ /* Tác giả: Nguyễn Việt Nam Sơn Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé. Mong giúp đỡ được Bạn trên con đường Học Lập Trình. TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN */ #include<stdio.h> #include<conio.h> #define MAX 100 void nhapmang(int a[MAX],int &n) { do{ printf("\nNhap vao so phan tu cua mang:n="); scanf("%d",&n); if(n<1||n>MAX) printf("\nSo ban nhap vao khong hop le!Xin vui long nhap lai!\n"); else break; }while(n<1||n>MAX); for(int i=0;i<n;i++) { printf("\nNhap vao a[%d]=",i); scanf("%d",&a[i]); } } void xuatmang(int a[MAX],int n) { for(int i=0;i<n;i++) { printf("%4d",a[i]); } printf("\n"); } int giatriphanbiet(int a[MAX],int n) { if(n<1) return 0; if(n==1) return 1; int kiemtra=1; int dem=giatriphanbiet(a,n-1); for(int i=0;i<n-1;i++) { if(a[i]==a[n-1]) kiemtra=0; } if(kiemtra==1) dem++; return dem; } void main() { int a[MAX],n,tieptuc; quaylai:nhapmang(a,n); printf("\n>>>>>>>>>Mang Vua Nhap La:<<<<<<<<<<<<<\n"); xuatmang(a,n); int s=giatriphanbiet(a,n); printf("\nSo luong gia tri phan biet co trong mang la:%d",s); printf("\nBan co muon tiep tuc chay chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!\n"); tieptuc=getch(); if(tieptuc=='c'||tieptuc=='C') goto quaylai; }
Private
[
?
]
Run code
Submit