Yêu cầu:
– Viết chương trình nhập vào mảng A gồm n phần tử, trong quá trình nhập kiểm tra các phần tử nhập vào không được trùng, nếu trùng thông báo và yêu cầu nhập lại.
Thuật toán:
– So sánh giá trị nhập vào với các phần tử trong mảng.
Code:
/************************************************************ * Author: VNCODING * History * 2014/10/31 first create VNCODING *************************************************************/ #include <stdio.h> #include <conio.h> #define MAX_SIZE 100 void print_arr(int A[], int n, char name_arr); void import_arr(int A[], int n); bool is_existed_arr(int A[], int n, int x); void main() { int A[MAX_SIZE]; int n = 5; import_arr(A, n); print_arr(A, n, 'A'); getch(); } void print_arr(int A[], int n, char name_arr) { int i; if(n == 0) { printf("\nArray %c is empty", name_arr); return; } printf("\nMang %c", name_arr); for(i = 0; i < n; i++) printf("\n%c[%d] = %d", name_arr, i, A[i]); } void import_arr(int A[], int n) { int i, j; int temp; for(i = 0; i < n; i++) { do { printf("\nNhap vao A[%i] = ", i); scanf("%d", &temp); }while( i > 0 && is_existed_arr(A, i+1, temp)); A[i] = temp; } } // Ham kiem tra xem x da xuat hien trong mang A hay chua? bool is_existed_arr(int A[], int n, int x) { int i; for(i = 0; i < n; i++) if(x == A[i]) return true; return false; }
Kết quả:
Nhap vao A[0] = -2 Nhap vao A[1] = 0 Nhap vao A[2] = 3 Nhap vao A[3] = 6 Nhap vao A[4] = -2 Nhap vao A[4] = 3 Nhap vao A[4] = 9 Mang A A[0] = -2 A[1] = 0 A[2] = 3 A[3] = 6 A[4] = 9
Làm ơn giải thích giúp mình vấn đề này về mảng: Khi mình thay đổi 1 phần tử bất kì arr[i] trong 1 hàm thì trong hàm main phần tử đó cũng thay đổi, tại sao vậy nhỉ?? mình hiều arr[i] chỉ như 1 biến thông thường thôi chứ nhỉ, có phải con trỏ đâu, chỉ có a là contro thôi chứ??