[Giải bài tập lập trình C/C++] Đếm số lần xuất hiện của từng phần tử phân biệt trong mảng 1 chiều

preview_player
Показать описание
- Phân tích chi tiết và cung cấp ý tưởng từng bước giải của thuật toán " đếm số lần xuất hiện của từng phần tử phân biệt trong mảng. ".
Рекомендации по теме
Комментарии
Автор

anh dạy chi tiết ghê luôn á cám ơn anh nhiều lắm, bây giờ em mới hiểu sâu được cái code. CÁm ơn anh nhiều hi vọng anh còn ra video mới nữa. Em mới học lập trình th video này 4 năm về trước rồi :))). Coi lại càng hiểu hơn nữa♥

longnguyenvuminh
Автор

bạn nghĩ sao khi dùng mảng đánh dấu. Bạn có nói đến cách khác cho mình xin link cách không dùng mảng phụ.

dinhmien
Автор

Anh giảng thú vị thiệt. Cảm ơn anh!!!!

tunglam
Автор

cho em hỏi sao kết quả không đúng ạ

#include"cmath"
#include"iostream"
#include"ctime"
#include"algorithm" // for sort
#include"functional"
using namespace std;
int main(){
int a[100], b[100], n, i, j, m=0;
// De in phan tu lon thu 4 trong mang
cout<<"Nhap so phan tu mang : ";
cin>>n;

for(int i=0;i<n;i++){
cout<<"Nhap phan tu a["<<i <<"] "<<" ";
cin >>a[i];
}
cout<<"\n\nMang da nhap:";
for(int i=0;i<n;i++){
cout<<a[i]<<"\t";
}
//kiem tra tinh phan biet (so trung nhau in 1 lan)

//a[0] phan biet
b[m]=a[0];
m++;
for(i=1;i<n;i++){
bool kt=true;
for(j=i-1;j>=0;j--){
if(a[i]==a[j] ) {
kt=false;
break;
}
}
if(kt==true){
b[m]=a[i];
m++;
}
}
// sap xep giam dan
sort(b, b+m, greater<int>());
cout<<"\nMang ptu phan biet la: ";
for(j=0;j<m;j++) cout<<a[j]<<"\t";


cout<<"\nPhan tu lon thu 4 trong mang\t";
for(j=0;j<m;j++){
if(j==3)
cout<<b[j];
break;}
return 0;
system("pause");
}

manit
Автор

bài này mình có thể lái đi là cho biết mảng có bao nhiêu phần tử khác nhau - bài toán 1

dinhmien
Автор

Mn cho e hỏi là sao phải chèn hàm Tim phan tu phan biet vào trong hàm Xu_Ly vậy ạ

phihuu
Автор

A giảng dễ hiểu nhưng có khúc vẽ a nên sử dụng màu khác cho nó dễ nhìn

LuanNguyen-nsjc
Автор

Ad ơi! Em có cái đồ án nó làm theo kiểu mang 2 chiều ma trận cũng duyệt tìm số lần xuất hiện. Mà nó muốn in ra là gồm có bao nhiêu miền. Ví dụ 1 giá trị cùng nhau cùng chung 1 cạnh qua được nếu giá trị khác nhau sẽ là 1 cái miền khác. Rồi xác định miền có giá trị lớn và nhỏ nhất ở vị trí bắt đầu là chỗ nào giá trị là bao nhiêu. Mong ad đọc và giúp dùm e. Cảm ơn nhiều ạ

jeny
Автор

Bài này thuật toán em làm là xếp mảng tăng dần, sau đó if a[i] == a[j] thì tăng biến đếm, else thì in nó ra luôn

phamhuuloc
Автор

nếu làm như vầy mà in ra phần tử nhiều lần xuất hiện nhất thì mình làm như thế nào ạ?
anh cho em xin thêm gợi ý ạ, em suy nghĩ vẫn chưa được .

trinhcuong
Автор

Có thể làm mà không cần dùng mảng phụ được không bạn. Nếu làm thế về tài nguyên lợi hay không so với dùng mảng phụ? Thanks

duynguyenuc
Автор

tuyệt lắm, ước gì ở đại học giảng như vậy

DuyNguyen-zvjs
Автор

hay và chi tiết, nhờ video a mới thông não được thuật toán :v

luantran
Автор

cho e hỏi là sao khai báo a b thì lại có max ạ
int b[MAX];
int a[MAX]; e cảm ơn

doraemon
Автор

A ơi, tại sao lại có '' Kiem_Tra'' mà trước đó a chưa khai báo ạ

oanxuanson
Автор

anh ơi ở hàm Tim_Phan-Tu_Phan_Biet cho em hỏi đến bước break là nó thoát khỏi if hay cái vòng for chứa j vậy a

hungnguyenngoc
Автор

cũng là yêu cầu này mà làm bằng danh sách liên kết đơn thì làm như thế nào vậy anh

hungnguyenthe
Автор

anh có video không sử dụng mảng phụ chưa ạ

snowfox
Автор

Không dùng mảng phụ nè
#include<stdio.h>
#include<conio.h>
#define MAX 100
main()
{
int a[MAX], n, dem;
do{
printf("so luong phan tu: ");
scanf("%d", &n);
}while(n<=0||n>MAX);
for(int i=0;i<n;i++)
{
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
printf("day so: ");
for(int i=0;i<n;i++)
printf("%4d", a[i]);
for(int i=0;i<n;i++)
{
dem=0;
for(int j=0;j<n;j++)
if(a[i]==a[j])
if(i<=j)
dem++;
else
break;
if(dem!=0)
printf("\ntan suat xuat hien cua %d la %d lan", a[i], dem);
}
getch();
}

linhquang
Автор

anh giúp e bài này . nhập vào 1 mảng một chiều không quá 200 phần tử . hãy đếm số phần tử có trong dãy nhanh nha anh

nguyentheson