[Video] Ôn luyện - Sắp xếp trong C, con trỏ cấp phát động
Đề Bài
Cho menu chương trình như sau
1. Nhập vào N số nguyên
2. Hiển thị danh sách các phần tử trong mảng
3. Tính tổng các phần tử trong mảng
4. Săp xếp các phần tử trong mảng theo thứ tự tăng dần
5. Thoát
Yêu cầu :
Khai báo biến con trỏ t trong chương trình
- Khi người dùng lựa chọn 1 -> thực hiện hỏi người dùng số phần tử cần thểm vào mảng t. Sau đó nhập các phần tử được thêm vào cho mảng t
sau khi nhập -> hiển thị lại menu chương trình
- Khi người dùng lựa chọn 2 -> thực hiện theo yêu câu -> sau khi thực hiên xong -> hiển thị lại menu chương trình
- Khi người dùng lựa chọn 3 -> thực hiện theo yêu câu -> sau khi thực hiên xong -> hiển thị lại menu chương trình
- Khi người dùng lựa chọn 4 -> thực hiện theo yêu câu -> sau khi thực hiên xong -> hiển thị lại menu chương trình
- Khi người dùng lựa chọn 5 -> thoát chương trình
Mã Nguồn:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void showMenu() {
printf("1. Nhap N phan tu cho mang");
printf("2. Hien thi danh sach cac phan tu trong mang");
printf("3. Tinh tong cac phan tu trong mang");
printf("4. Sap xep cac phan tu trong mang theo thu tu tang dan");
printf("5. Thoat!");
printf("Choose : ");
}
int main(int argc, char *argv[]) {
//quan ly cac phan tu trong mang
int *t;
int total = 0, N, choose, i, j;
int sum = 0;
do {
showMenu();
scanf("%d", &choose);
switch(choose) {
case 1:
printf("Nhap so phan tu can them N = ");
scanf("%d", &N);
//tong so phan tu trong mang t
if(total == 0) {
total = N;
t = (int *) calloc (N, sizeof(int));
} else {
total += N;
t = (int *) realloc(t, total * sizeof(int));
}
//nhap du lieu cho tung phan tu
//tong so phan tu : total, index : 0 -> total - 1
//da nhap san : 0 -> total - N - 1 : phan tu cu -> da nhap roi
//total - N toi total - 1
for(i=total - N;i<total;i++) {
printf("Nhap phan tu t[%d] = ", i);
scanf("%d", t+i);
}
break;
case 2:
printf("Danh sach phan tu trong mang :");
for(i=0;i<total;i++) {
printf("%d, ", t[i]);
}
break;
case 3:
for(i=0;i<total;i++) {
sum += t[i];
}
printf("Tong = %d", sum);
break;
case 4:
for(i=0;i<total-1;i++) {
for(j=i+1;j<total;j++) {
if(t[i] > t[j]) {
//swap -> doi vi tri cua i & j
//t[i] = 5, t[j] = 2
int temp = t[i];//temp = 5
t[i] = t[j];//t[i] = 2, t[j] = 2
t[j] = temp;//t[j] = 5
}
}
}
printf("Ket qua:");
for(i=0;i<total;i++) {
printf("%d, ", t[i]);
}
break;
case 5:
printf("Thoat!");
break;
default:
printf("Nhap sai!");
break;
}
} while(choose != 5);
return 0;
}
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)