bạn nào biết bài toán tìm vi trí của 1 số trong mảng(1 chiều) giúp mình với ví dụ như bài "nhập dữ liệu cho mảng, tìm số lớn nhất và chỉ ra vị trí của nó trong mảng"
1. Thủ tục gọi mảng 2. Tìm max - Khởi tạo 1 biến max = A[0] (gán số lớn nhất bằng phần tử đầu tiên) - Cho i chạy từ 1 đến n (for, while, do while): Nếu A>max thì gán max bằng A 3. Tìm vị trí: Lợi dụng i, xuất vị trí thông qua i Code này mình viết nhanh chứ chưa chạy thử, bạn tham khảo xem sao, nó hơi dài dòng Mã: #include<conio.h> #include<stdio.h> void main() { int n,i,max,dem; int A[20]; clrscr(); printf("Nhap vao so luong phan tu, n= ");scanf("%d",&n); for (i=0;i<n;i++) { printf("Nhap so thu %d: ",i); scanf("%d",&A[i]); } max=A[0]; for (i=1;i<n;i++) { if (A[i]>max) { max=A[i]; dem=i; } } printf("\nSo lon nhat la %d",max); if (max==A[0]) { printf("\nVT= 1"); } else { printf("\nVT: %d",dem+1); } getch(); }
mình có một đoạn code của bài này. nhưng sock một cái. mình viết trên 2 máy nhưng 1 máy chạy đc còn một máy chạy sai. không hiểu đc. máy cậu xem giùm mình.
Code của bạn sai ở chổ sau câu lệnh if, sau đó không có dấu ";" Code tìm vị trí của bạn dc đó, có thể mà mình không nghĩ ra Xin gửi code hoàn thiện cho bài này Mã: #include<conio.h> #include<stdio.h> void main() { int n,i,max,VT; int A[20]; clrscr(); printf("Nhap vao so luong phan tu, n= ");scanf("%d",&n); for (i=1;i<=n;i++) { printf("Nhap so thu %d: ",i); scanf("%d",&A[i]); } VT=1; max=A[1]; for (i=1;i<=n;i++) { if (A[i]>max) { max=A[i]; VT=i; } } printf("\nSo lon nhat la %d",max); printf("\nNam thu %d",VT); getch(); }
Các bạn chú ý sau này khi duyệt mảng 1 chiều (2 chiều) thì chỉ số phần tử chạy từ 0 đến n-1; @hongoctrien: Nếu chạy từ 1 thì i<=n; Ví dụ khi mảng có 2 phần tử max bằng nhau thì code này chỉ ra có 1 vị trí??? p/s: Các bạn sửa lại tiêu đề để sau này dễ tìm kiếm
anh mô giỏi chuơng trình con bày dùm bài này với Đề: viết chương trình con tính tổng trả về \ S(n)=1+2+3...+n viết chương trình chính S(5)+S(10)
Mới viết tới dc S(n) + S(m), còn tổng chưa viết dc , bạn nào làm tiếp mình tham khảo với Mã: int S=0,i,n,m; void tongS (int S, int x) { for (i=1;i<=x;i++) { S=S+i; } printf("%d",S); } void main() { clrscr(); printf("\nS(n)= ");scanf("%d",&n); printf("S(m)= ");scanf("%d",&m); printf("\nS(%d)= ",n); tongS(S,n); printf("\nS(%d)= ",m); tongS(S,m); getch(); }
Với những đề bài có ghi kết quả trả về của ct con thì mình nghĩ nên xài return kq rồi in kq trong main chính. Mã: int tinhtong(int n) { int s=0; for(int i=0;i<=n;i++) s+=i; return s; } int main() { int n; printf("Nhap n: "); scanf("%d",&n); printf("Tong = %d \n",tinhtong(n)); printf("Tong S(5) + S(10) = %d",tinhtong(5)+tinhtong(10)); return 0; } Theo mình để làm ý tổng s(n) + s(m) của bạn thì nên dùng mảng sẽ hay hơn
giải tới đây bí không biết tính tổng sao mọi người tham khảo nha #include<stdio.h> #include<conio.h> void tong(int n) { int i=0,is=0; while(i++<n) is=is+i; printf("tong:%d",is); } void main { int m,n; printf("nhap vao so n,m:"); scanf("%d%d",&n&m); tong(n); tong(m); .... } còn tính tổng sao hem biết mọi người thêm ý kiến nha
Nhiều bạn làm ctcon là xuất kết quả ngay trong ctcon ... ở trong ctcon của bạn cái biến lưu trữ kết quả của tổng là is (là biến cục bộ) vậy 1 lần gọi ctcon thì chỉ xài đc 1 lần rồi mất đi ... Giải quyết câu hỏi của bạn thì tham khảo code của mình ở trên ... hoặc là chỉnh sửa trong ct của bạn là thêm 1 biến toàn cục để lưu kết quả vào
Lấy lại code tìm số lớn nhất bên trên nhé Mã: #include<conio.h> #include<stdio.h> void main() { int n,i,max; int A[20]; printf("Nhap vao so luong phan tu, n= ");scanf("%d",&n); for (i=1;i<=n;i++) { printf("Nhap so thu %d: ",i); scanf("%d",&A[i]); } max=A[1]; for (i=1;i<=n;i++) { if (A[i]>max) { max=A[i]; VT=i; } } printf("\nSo lon nhat la %d",max); printf("\nVi tri: "); for(i = 1; i <= n; i++){ if(A[i] == max){ printf("%d", i); printf("\t"); } } getch(); }
Cách này thì mình biết rồi, mình muốn hỏi cách dùng bộ nhớ động của con trỏ để lưu vị trí int *vtmax(int *a,int &n) { int max=0; int *t; t=new int[1]; int vt=0; for(int i=0;i<n;i++) { if(max<a) {*(t+i)=i; t=new int[1+i];} } return t; } kiểu thế này, mà mình gọi hàm ko được @@