Mảng Struct Trong C - Programming - Dạy Nhau Học Trang chủ » Duyệt Struct » Mảng Struct Trong C - Programming - Dạy Nhau Học Có thể bạn quan tâm Duyệt Tập Tin Duyệt Tập Tin Ios Duyệt Tcm Duyệt Tệp Tin Duyệt Thầm Mảng Struct trong C programming c hoahong (Hoa Hồng) June 17, 2016, 7:02am #1 Mình có bài lập trình về Struct trong C. Có thắc mắc về phần hiển thị mảng Struct. Debug ko báo lỗi. Mà khi mình thực hiện 2 lệnh in mảng Struct thì chỉ được 1, đến lệnh hiển thị tiếp theo thì ko hiển thị mà báo lỗi ko chạy tiếp. Mong mọi người chỉ giúp. Thanks all!!! #include"conio.h" #include"stdio.h" struct NhanVien { char HoTen[100]; int NamSinh; float HSL; }; void InNV(struct NhanVien a[], int n) { printf("%-20s %10s %15s %-10s\n", "Ho ten", "Nam sinh", "He so luong"); for (int i = 1; i <= n; i++) { printf("%-20s %10d %15.2f\n", a[i].HoTen, a[i].NamSinh, a[i].HSL); } } int main() { struct NhanVien a[100]; int n, i; // Nhap n nhan vien printf("Nhap so luong nhan vien: "); scanf("%d", &n); while (n <= 1 ) { printf("Nhap lai so luong nhan vien > 1: "); scanf("%d", &n); } for (i = 1; i <= n; i++) { #define nv a[i] printf("Nhap du lieu cho sinh vien thu %d:\n", i); printf("Ho ten: "); // gets(nv.HoTen); scanf("%s", &nv.HoTen); fflush(stdin); printf("Nam sinh: "); scanf("%d", &nv.NamSinh); printf("He so luong: "); scanf("%f", &nv.HSL); } // Hien thi danh sach nhan vien co HSL duoi 3.67 printf("------Danh sach nhan vien co he so luong duoi 3.67: \n"); printf("%-20s %10s %15s %-10s\n", "Ho ten", "Nam sinh", "He so luong"); for (i = 1; i <= n; i++) { #define nv a[i] if (nv.HSL < 3.67) printf("%-20s %10d %15.2f\n", nv.HoTen, nv.NamSinh, nv.HSL); } // Thay doi thong tin nhan vien thu k int k; struct NhanVien s; printf("Nhap thu tu nhan vien can chinh sua thong tin (tu 1 den %d): ",n); scanf("%d", &k); while (k <= 0|| k > n) { printf("Nhap lai thu tu nhan vien can chinh sua thong tin: "); scanf("%d", &k); } printf("Nhap thong tin moi cho nhan vien thu %d: \n", k); fflush(stdin); printf("Ho ten: "); //gets(nvs.HoTen); scanf("%s", &s.HoTen); fflush(stdin); printf("Nam sinh: "); scanf("%d", &s.NamSinh); printf("He so luong: "); scanf("%f", &s.HSL); a[k] = s; // Sap xep danh sach nhan vien theo nam sinh tang dan va hien thi fflush(stdin); struct NhanVien tg; for(i = 1; i < n; i ++) for(int j = i+1; j <= n; j ++) { if(a[i].NamSinh > a[j].NamSinh) { tg = a[i]; a[i] = a[j]; a[j] = tg; } } printf("Danh sach da sap xep la:\n"); InNV(a,n); getch(); return 0; } 2 Likes freedom June 17, 2016, 6:25am #2 Cách post Code dùng Markdown trong Category Programming meta Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme… Bạn xem lại các vòng lặp for, mảng trong C bắt đầu từ 0 chứ không phải 1 hoahong (Hoa Hồng) June 17, 2016, 6:41am #3 Mình biết nhưng mình muốn dùng từ phẩn tử 1 để tiện cho việc đánh số phần tử: Ví dụ: a[1] trữ thông tin nhân viên số 1. tcm (Người bí ẩn) June 17, 2016, 6:55am #4 hoahong: Mình biết nhưng mình muốn dùng từ phẩn tử 1 để tiện cho việc đánh số phần tử Làm gì có vụ này ? Quy ước của nó là start từ 0 mà bạn lại gán 1 thì phần tử cuối ở đâu ? Chẳng lẽ bằng số lượng phần tử luôn ? hoahong (Hoa Hồng) June 17, 2016, 6:58am #5 Bạn chỉ cẩn khai báo số phần tử cộng thêm 1 là ok. Ví dụ bạn sử dụng 50 phần tử thì bạn khai báo: int a[51] tcm (Người bí ẩn) June 17, 2016, 7:02am #6 Thế cũng không tiện lắm đâu và cũng không tốt chút nào ! Bạn khai báo a[0] rồi +1 cho nó cũng được mà KhoaTran (Trần Ngọc Khoa) June 20, 2016, 9:23am #7 printf("%-20s %10s %15s %-10s\n", "Ho ten", "Nam sinh", "He so luong"); chỗ này bạn điền thiếu một đối số nè. 4 Likes hoahong (Hoa Hồng) June 17, 2016, 12:52pm #8 thanks bạn nhé. Lỗi đơn giản vậy mà mình ko soi ra. Cứ nghĩ sai ở cú pháp hay struct. 1 Like hoahong (Hoa Hồng) June 17, 2016, 1:01pm #9 Mình mới tham gia nhóm nên chưa biết. Thanks bạn nha. 2 Likes vtmyeuthuong (Manh Pham) June 18, 2016, 6:02pm #10 anh có thể giải thích rõ hơn về việc sử dụng %-20s không ạ, bình thường thì em dùng %4d nghĩa là nó sẽ giành 4 khoảng trống để viết số đó, vậy %-20s thì dấu “trừ” có ý nghĩa gì vậy ạ? ^^ KhoaTran (Trần Ngọc Khoa) June 20, 2016, 9:23am #11 vtmyeuthuong: anh có thể giải thích rõ hơn về việc sử dụng %-20s không ạ, bình thường thì em dùng %4d nghĩa là nó sẽ giành 4 khoảng trống để viết số đó, vậy %-20s thì dấu “trừ” có ý nghĩa gì vậy ạ? ^^ Nó sẽ canh bên phải hoặc bên trái đó bạn. 5 Likes KhoaTran (Trần Ngọc Khoa) June 20, 2016, 8:55am #12 Nếu được thì bạn nhấn dấu tích đã được trả lời giùm mình nhé. Trả lời bao lâu nay mà chưa được nhân dấu tick lần nào 1 Like hoahong (Hoa Hồng) June 20, 2016, 9:24am #13 Hi, mình mới tham gia nên ko biết! thanks bạn lần nữa nhé. Mong sẽ được học hỏi nhiều từ mọi người trong diễn đàn. KhoaTran (Trần Ngọc Khoa) June 20, 2016, 11:07am #14 Cảm ơn bạn nhiều 1 Like Nguyen_Hoang_Thanh_A (Nguyễn Hoàng Thành An) April 4, 2019, 5:31pm #16 #include <iostream> #include <conio.h> using namespace std; struct matrix{ int column;int row; int* data; }; int Alloc(int **M,int row,int column); void freeMatrix(int *M); matrix InputMatrix(int column,int row); void OutputMatrix(matrix M); matrix operator+(matrix a, matrix b); matrix operator*(matrix a, matrix b); int Alloc(int** A, int row, int column){ *A=new int[row*column]; if(*A==NULL){ return 0; }else{ return 1; } } void freeMatrix(int *M){ if(M!=NULL){ delete []M; } } matrix InputMatrix(int column,int row){ matrix mt;mt.column=column;mt.row=row; if (!Alloc(&mt.data,row,column)){ cout<<"Khong con du bo nho!"<<endl; } int I,J; for(I=0;I<mt.row;++I) for(J=0;J<mt.column;++J) { cout<<"data"<<"["<<I<<"]["<<J<<"]="; cin>>mt.data[I*mt.column+J]; } return mt; } void OutputMatrix(matrix M){ int i,j; for(i=0;i<M.row;i++){ for(j=0;j<M.column;j++){ cout<<M.data[i*M.column+j]<<"\t"; } cout<<endl; } } matrix operator+(matrix a, matrix b){ matrix c;c.row=a.row;c.column=a.column; if(Alloc(&c.data,c.row,c.column)==0){ cout<<"\nKhong du bo nho cho ma tran tich!"; } int i,j; for(i=0;i<a.row;i++){ for(j=0;j<a.column;j++){ c.data[i*a.column+j]=a.data[i*a.column+j]+b.data[i*a.column+j]; } } return c; } matrix operator*(matrix a, matrix b){ //Ma tran tich thi co dk so cot ma tran a bang so dong ma tran b khi nhap row and colum thi row=column matrix c; if(a.column!=a.row){ cout<<"\nKhong the nhan hai ma tran nay!"; return c; } c.row=a.row;c.column=a.column; if(Alloc(&c.data,c.row,c.column)==0){ cout<<"\nKhong du bo nho cho ma tran tich!"; } int i,j,k;int sum=0; for(i=0;i<a.row;i++){ for(j=0;j<a.row;j++){ sum=0; for(k=0;k<a.row;k++){ sum=sum+a.data[i*a.row+k]+b.data[k*a.row+i]; } c.data[i*a.row+j]=sum; } } return c; } int main(){ int column,row; matrix A,B,C,D; cout<<"\nInput column numbers : ";cin>>column; cout<<"\nInput row numbers : ";cin>>row; cout<<"\nNhap ma tran A : \n";A=InputMatrix(column,row); cout<<"\nMa tran sau khi nhap la : \n";OutputMatrix(A); cout<<"\nNhap ma tran B : \n";B=InputMatrix(column,row); cout<<"\nMa tran sau khi nhap la : \n";OutputMatrix(B); C=A+B; cout<<"\nMa tran C=A+B la : \n";OutputMatrix(C); D=A*B; cout<<"\nMa tran D=A*B la : \n";OutputMatrix(D); } Em làm được hết mà sau chạy chương trình thì đúng hết chỉ có cái tích ma trận bị sai. Em thấy thuật toán đúng hết mà. Ai giúp em tìm lỗi với ạ Untitled.png1920×1080 186 KB DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Duyệt Struct Mảng Struct Và Ví Dụ ứng Dụng Struct (C++) | Microsoft Docs Cài đặt Danh Sách Liên Kết đôi Trong C/C++ - Lập Trình Không Khó [PDF] Bài 4 CẤU TRÚC DỮ LIỆU - Soict Implement Bài Toán Duyệt Cây Nhị Phân Với Rust | TopDev Cây Nhị Phân Trong C++ | TopDev Duyệt Cây Nhị Phân Theo Thứ Tự Sau Bằng Giải Thuật Không đệ Quy Sử ... Struct Trong C/C++ Binary Search Tree, AVL Tree - VisuAlgo Page Structure - Nhận Tiện ích Mở Rộng Này Cho Firefox (vi) Struct OStruct Và Lớp Math Time Trong Ruby Rust: Turbofish ::<> - Tôi Là Duyệt