Bài 4: Bài toán và thuật toán – Câu 4 trang 44 SGK Tin học 10. Cho N và dãy số a1….aN, hãy tìm giá trị nhỏ nhất (Min) của dãy đó.
Cho N và dãy số a1….aN, hãy tìm giá trị nhỏ nhất (Min) của dãy đó.
– Xác định bài toán:
Input: Số N và dãy N số a1, a2, ..,aN.
Output: Giá trị nhỏ nhất (Min) của dãy số.
– Ý tưởng:
Khởi tạo giá trị Min = a1.
Lần lượt nhận giá trị /i từ 2 đến N, so sánh giá trị số hạng a1 với giá trị Min, nếu ai < Min thì Min nhận giá trị mới ai
– Thuật toán:
Mô tả thuật toán theo cách liệt kê:
Quảng cáoBước 1. Nhập N và dãy a1….aN;
Bước 2. Min <- ai, i <- 2
Bước 3. Nếu i > N thì đưa ra giá trị Min rồi kết thúc;
Bước 4.
Bước 4.1: Nếu ai < Min thì Min <- ai
Bước 4.2: i <- i+1 rồi quay lại bước 3
* Xác định bài toán :
- Input : nhập n và dãy a1, a2, ... , an
- Output : giá trị lớn nhất trong dãy
* Ý tưởng :
- Khởi tạo giá trị Max = a[1]
- Lần lượt với i từ 2 đến n, so sánh giá trị số hạng a[i] với giá trị Max, nếu ai > Max thì Max nhận giá trị mới là a[i]
* Viết thuật toán :
- Bước 1 : nhập n và dãy a1, a2, ... , an
- Bước 2 : i ← 2; max ← a[1]
- Bước 3 : nếu i > n thì đưa ra giá trị min rồi kết thúc
- Bước 4 :
- Bước 4.1 : nếu a[i] > max thì min ← a[i]
- Bước 4.2 : i ← i + 1 quay lại bước 3
* Khai báo biến :
- Var n, i, max : integer;
This entry is part 41 of 69 in the series Học C Không Khó
81 / 100
Bài toán: Nhập vào mảng một chiều. Hãy tìm số lớn nhất trong mảng, tìm số nhỏ nhất trong mảng.
- Input
- Output
Viết chương trình tìm số lớn nhất trong mảng
Để tìm số lớn nhất trong mảng ta thực hiện các bước như sau
- Khởi tạo giá trị max=a[0]
- Duyệt lần lượt các phần tử của mảng. Nếu phần tử nào có giá trị lớn max thì ta tiến hành gán giá trị đó cho max.
- Sau khi duyệt hết các phần tử của mảng thì ta tiến hành trả về giá trị của max
- Hàm max sẽ có kiểu trả về là kiểu int (hoặc kiểu long cũng được ).
- Cần có hai tham số truyền vào là: tên mảng và số lượng phần tử.
Code tham khảo cách viết hàm tìm giá trị lớn nhất trong mảng như sau
int max(int a[], int n) { int max = a[0]; for (int i = 1; i < n; i++) if (max < a[i]) max = a[i]; return max; } |
Viết chương trình tìm số nhỏ nhất trong mảng
Tương tự như trên ta cũng làm lần lượt các bước
- Khởi tạo giá trị min=a[0]
- Duyệt lần lượt các phần tử của mảng. Nếu phần tử nào có giá trị nhỏ hơn min thì ta tiến hành gán giá trị đó cho min.
- Sau khi duyệt hết các phần tử của mảng thì ta tiến hành trả về giá trị của min.
- Hàm min sẽ có kiểu trả về là kiểu int (hoặc kiểu long cũng được ).
- Cần có hai tham số truyền vào là: tên mảng và số lượng phần tử.
Code tham khảo cách viết hàm tìm giá trị nhỏ nhất như sau
int min(int a[], int n) { int min = a[0]; for (int i = 1; i < n; i++) if (min > a[i]) min = a[i]; return min; } |
Sau khi viết được hai hàm tính min, max thì chương trình của chúng ta đã có thể giải quyết được bài toán ở trên.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <stdio.h> void nhap(int a[], int n) { for (int i = 0; i < n; i++) { printf("Nhap vao phan tu a[%d]: ", i); scanf("%d", &a[i]); } } int max(int a[], int n) { int max = a[0]; for (int i = 1; i < n; i++) if (max < a[i]) max = a[i]; return max; } int min(int a[], int n) { int min = a[0]; for (int i = 1; i < n; i++) if (min > a[i]) min = a[i]; return min; } int main() { int a[1000]; int n; printf("\nNhap n = "); scanf("%d", &n); nhap(a, n); printf("\nMax = %d", max(a, n)); printf("\nMin = %d", min(a, n)); return 0; } |
Nhap n = 5 Nhap vao phan tu a[0]: 12 Nhap vao phan tu a[1]: 16 Nhap vao phan tu a[2]: 19 Nhap vao phan tu a[3]: 32 Nhap vao phan tu a[4]: 14 Max = 32 Min = 12 |
Bài viết của mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi! Theo dõi lập trình không khó tại: