Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cám ơn bạn nhiều nhé!
    Cho mình hỏi thêm, Sao khi nhap xong mình mở file SV.txt lên thì nó không có hiện thị giống như mình nhập. Mà nó hiện lên các kí tự không đọc được giống dạng mã hóa.

    - - - Nội dung đã được cập nhật ngày 16-03-2016 lúc 04:29 PM - - -

    Sắp xếp dánh sách thí sinh có sẵn trong file theo tổng điểm giảm dần. mỗi thí sinh gồm các thông tin sau:
    Mã thí sinh: là một số nguyên tự động tăng, bắt đầu là 1.
    Tên thí sinh, ngày tháng năm sinh.
    Diểm môn 1,2,3.
    /*minh sửa lại theo đề của mình nhưng bị lỗi dòng fgets(s[i].nam,30,f) cố gắng sửa mà vẫn bị lỗi, bạn nào biết sửa giúp mình với . mình mới học lap trình c nên chưa hiểu lắm */

    #include<stdio.h>
    #include<conio.h>
    using namespace std;

    struct sinhvien
    {
    char hoten[30], nam[30];
    float d1, d2, d3, tong;
    int ma;
    };
    void nhap(sinhvien s[], int n)
    {
    int i;

    for (i = 0; i<n; i++)
    { s[i].ma=i+1;
    fflush(stdin);
    //printf("
    nhap vao sv thu %d", i + 1);
    fflush(stdin);
    printf("
    maso: %d", s[i].ma);
    // gets(s[i].ma);
    printf("ho ten ");
    gets(s[i].hoten);
    printf("nam sinh ");
    gets(s[i].nam);

    do
    {
    printf("
    Nhap vao diem mon 1: ");
    scanf("%f", &s[i].d1);
    if (s[i].d1 < 0 || s[i].d1 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    } while (s[i].d1 < 0 || s[i].d1 > 10);
    do
    {
    printf("
    Nhap vao diem mon 2: ");
    scanf("%f", &s[i].d2);
    if (s[i].d2 < 0 || s[i].d2 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    } while (s[i].d2 < 0 || s[i].d2 > 10);
    // fflush(stdin);
    do
    {
    printf("
    Nhap vao diem mon 3: ");
    scanf("%f", &s[i].d3);
    if (s[i].d3 < 0 || s[i].d3 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    } while (s[i].d3 < 0 || s[i].d3 > 10);
    s[i].tong = s[i].d1 + s[i].d2 + s[i].d3;

    }
    }
    void xuat(sinhvien s[], int n)
    {

    for (int i = 0; i<n; i++)
    printf("
    %d %s %f",s[i].ma, s[i].hoten, s[i].tong);

    }

    void sapxep(sinhvien s[], int n)
    {
    int i, j;
    sinhvien temp;
    for (i = 0; i<n - 1; i++)
    for (j = i + 1; j<n; j++)
    {
    if (s[i].tong<s[j].tong)
    {
    temp = s[i];
    s[i] = s[j];
    s[j] = temp;
    }
    printf("
    %s %s %s %2.2f", s[i].ma, s[i].hoten, s[i].nam, s[i].tong);;
    }

    }
    void nhapfile(sinhvien s[], int n)
    {
    int i;
    FILE*f;
    f = fopen("D:\SV.txt", "wt");
    for (i = 0; i<n; i++)
    { fflush(stdin);
    fprintf(f, "
    %d", s[i].ma);
    fgets(s[i].hoten, 30, f);
    fflush(stdin);
    fgets(s[i].nam, 30, f);
    fprintf(f, "%f", &s[i].d1);
    fprintf(f, "%f", &s[i].d2);
    fprintf(f, "%f", &s[i].d3);

    }
    fclose(f);
    }
    int main()
    {
    int n;
    sinhvien danhsach[30];
    printf(" nhap n:
    ");
    scanf("%d", &n);
    nhap(danhsach, n);
    sapxep(danhsach, n);
    xuat(danhsach, n);
    nhapfile(danhsach, n);
    getch();
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    mọi người giúp minh code khong loi, khi chạy chương trinh chạy binh thường. nhưng sinh vien 1 khong cho nhap điểm thứ 3.

    /*code chạy nhưng không cho nhap điem môn thu 3,kéo theo tinh tổng diem sai, sap xếp ra ket qua sai */

    #include<stdio.h>
    #include<conio.h>
    #include<iostream.h>
    using namespace std;

    struct sinhvien
    { char hoten[30], nam[30];
    float d1,d2,d3,tong;
    int ma;
    };
    void nhap(sinhvien s[],int n)
    { int i;

    for(i=0;i<n;i++)
    { s[i].ma=i+1;
    fflush(stdin);
    printf("
    nhap vao sv thu %d",i+1);
    printf(" ma so: %d", s[i].ma);
    printf("ho ten ");
    gets(s[i].hoten);
    printf("nam sinh ");
    gets(s[i].nam);

    do
    {
    printf("
    Nhap vao diem mon 1: ");
    scanf("%f", &s[i].d1);
    if(s[i].d1 < 0 ||s[i].d1 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    }
    while(s[i].d1 < 0|| s[i].d1 > 10);
    do
    {
    printf("
    Nhap vao diem mon 2: ");
    scanf("%f", &s[i].d2);
    if(s[i].d2 < 0 ||s[i].d2 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    }
    while(s[i].d2 < 0|| s[i].d2 > 10);
    }
    do
    {
    printf("
    Nhap vao diem mon 3: ");
    scanf("%f", &s[i].d3);
    if(s[i].d3 < 0 ||s[i].d3 > 10)
    {
    printf("
    Diem hoa khong hop le. Nhap lai!");
    }
    }
    while(s[i].d3 < 0|| s[i].d3 > 10);
    s[i].tong=s[i].d1+s[i].d2+s[i].d3;

    }
    void xuat(sinhvien s[],int n)
    { int i;
    for (i=0;i<n;i++)
    { printf("
    %s %f",s[i].hoten,s[i].tong);;
    }
    }

    void sapxep(sinhvien s[],int n)
    { int i,j;
    sinhvien temp;
    for(i=0;i<n-1;i++)
    for (j=i+1;j<n;j++)
    { if(s[i].tong<s[j].tong)
    {temp=s[i];
    s[i]=s[j];
    s[j]=temp;
    }
    printf("
    %d %s %s %2.2f", s[i].ma, s[i].hoten, s[i].nam, s[i].tong);;
    }
    xuat(s,n);
    }
    void nhapfile(sinhvien s[],int n)
    {int i;
    FILE*f;
    f=fopen("D:\SV.txt","wt");
    for(i=0;i<n;i++)
    {
    fprintf(f,"
    %d",s[i].ma);
    fgets(s[i].hoten,30 ,f);
    fgets(s[i].nam,30,f);
    fprintf(f,"%f",&s[i].d1);
    fprintf(f,"%f", &s[i].d1);
    fprintf(f,"%f", &s[i].d2);
    scanf("f,%f", &s[i].d3);
    }
    fclose(f);
    }
    int main()
    { int n;
    sinhvien danhsach[30];
    printf(" nhap n");
    scanf("%d",&n);
    nhap(danhsach,n);
    sapxep(danhsach,n);
    xuat(danhsach,n);
    nhapfile(danhsach,n);
    getch();
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bài bạn làm không cẩn thận nên bị thiếu dấu } làm vòng for ko chạy đúng mình sửa lại code tí
    Mã:
    #include<stdio.h>
    #include<conio.h>
    using namespace std;
    
    struct sinhvien
    {
    	char hoten[30], nam[30];
    	float d1, d2, d3, tong;
    	char ma[30];
    };
    void nhap(sinhvien s[], int n)
    {
    	int i;
    
    	for (i = 0; i<n; i++)
    	{
    		fflush(stdin);
    		printf("
     nhap vao sv thu %d", i + 1);
    		fflush(stdin);
    		printf("
     nhap vao ma so:");
    		gets(s[i].ma);
    		printf("ho ten ");
    		gets(s[i].hoten);
    		printf("nam sinh ");
    		gets(s[i].nam);
    
    		do
    		{
    			printf("
    Nhap vao diem mon 1: ");
    			scanf("%f", &s[i].d1);
    			if (s[i].d1 < 0 || s[i].d1 > 10)
    			{
    				printf("
    Diem hoa khong hop le. Nhap lai!");
    			}
    		} while (s[i].d1 < 0 || s[i].d1 > 10);
    		do
    		{
    			printf("
    Nhap vao diem mon 2: ");
    			scanf("%f", &s[i].d2);
    			if (s[i].d2 < 0 || s[i].d2 > 10)
    			{
    				printf("
    Diem hoa khong hop le. Nhap lai!");
    			}
    		} while (s[i].d2 < 0 || s[i].d2 > 10);
    //	fflush(stdin);
    	do
    	{
    		printf("
    Nhap vao diem mon 3: ");
    		scanf("%f", &s[i].d3);
    		if (s[i].d3 < 0 || s[i].d3 > 10)
    		{
    			printf("
    Diem hoa khong hop le. Nhap lai!");
    		}
    	} while (s[i].d3 < 0 || s[i].d3 > 10);
    	s[i].tong = s[i].d1 + s[i].d2 + s[i].d3;
    
    }
    }
    void xuat(sinhvien s[], int n)
    {
    	
    	for (int i = 0; i<n; i++)
    		printf("
     %s %f", s[i].hoten, s[i].tong);
    	
    }
    
    void sapxep(sinhvien s[], int n)
    {
    	int i, j;
    	sinhvien temp;
    	for (i = 0; i<n - 1; i++)
    	for (j = i + 1; j<n; j++)
    	{
    		if (s[i].tong<s[j].tong)
    		{
    			temp = s[i];
    			s[i] = s[j];
    			s[j] = temp;
    		}
    		printf("
     %s %s %s %2.2f", s[i].ma, s[i].hoten, s[i].nam, s[i].tong);;
    	}
    
    }
     void nhapfile(sinhvien s[], int n)
    {
    	int i;
    	FILE*f;
    	f = fopen("D:\SV.txt", "wt");
    	for (i = 0; i<n; i++)
    	{
    		fprintf(f, "
     %d", s[i].ma);
    		fgets(s[i].hoten, 30, f);
    		fgets(s[i].nam, 30, f);
    		fprintf(f, "%f", &s[i].d1);
    		fprintf(f, "%f", &s[i].d1);
    		fprintf(f, "%f", &s[i].d2);
    		scanf("f,%f", &s[i].d3);
    	}
    	fclose(f);
    }
    int main()
    {
    	int n;
    	sinhvien danhsach[30];
    	printf(" nhap n:
    ");
    	scanf("%d", &n);
    	nhap(danhsach, n);
    	sapxep(danhsach, n);
    	xuat(danhsach, n);
    	nhapfile(danhsach, n);
    	getch();
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    minh sửa lại theo đề của mình nhưng bị lỗi dòng fgets(s[i].nam,30,f) cố gắng sửa mà vẫn bị lỗi
    Trong hàm nhapfile, file của bạn đang ở chế độ ghi nên bạn dùng hàm fgets là nhầm rồi.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •