ITK35Zone
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
ITK35Zone


 
Trang ChínhTrang Chính  Latest imagesLatest images  Đăng kýĐăng ký  Đăng Nhập  
Chào mừng các bạn đã đến với diễn đàn ITK35Zone - Lớp CNTT K35 Trường Đại học Sư phạm TP.HCM
Hiện diễn đàn đang bị lỗi kĩ thuật, mong mọi người thông cảm. BQT sẽ cố gắng khắc phục trong thời gian sớm nhất...

Share | 


 

 [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Chuyển đến trang : 1, 2  Next
[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:33 am

blackrose4s
Userblackrose4s Người này hiện đang:
Level: Người Nhà
Danh vọng:312


Người Nhà

blackrose4s

Người Nhà

Giới tính : Nam
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng

Thú cưng
.:

Bài gửiTiêu đề: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Code:

#include <iostream.h> using namespace std;
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
struct SinhVien
{
      char MaSV[11];
      char HoTen[50];
      char QueQuan[20];
      unsigned int NamSinh;
      float Diem;
      char XepLoai[30];
} SV[100], t[1];
bool Nhap1SinhVien(int n)
{
      cout<<"Nhap ma sinh vien "<<(n+1)<<endl;
      cin.get(SV[n].MaSV,11); cin.get();
      cout<<"Nhap ho ten sinh vien "<<(n+1)<<endl;
      cin.getline(SV[n].HoTen,50);
      // Xoa ki tu trang cuoi chuoi
      while (*(SV[n].HoTen+strlen(SV[n].HoTen)-1)==32)
                  *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0';
      // 2 ki tu trang lien tiep xoa bot mot cai
      int i=0;
      while (*(SV[n].HoTen+i))
          if (*(SV[n].HoTen+i)==32&&*(SV[n].HoTen+i+1)==32)
              strcpy(SV[n].HoTen+i,SV[n].HoTen+i+1);
         else i++;
      if (SV[n].HoTen[0]==' ')
      for (int i=0;SV[n].HoTen[i]!='\0';i++) SV[n].HoTen[i]=SV[n].HoTen[i+1];
      // Viet hoa ki tu dau dong
      SV[n].HoTen[0]=toupper(SV[n].HoTen[0]);
      cout<<"Nhap que quan ( ten tinh/thanh pho) sinh vien "<<(n+1)<<endl;
      cin.getline(SV[n].QueQuan,20);
      // Xoa ki tu trang cuoi chuoi
      while (*(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)==32)
            *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0';
      // 2 ki tu trang lien tiep xoa bot mot cai
      int j=0;
      while (*(SV[n].QueQuan+j))
          if (*(SV[n].QueQuan+j)==32&&*(SV[n].QueQuan+j+1)==32)
           strcpy(SV[n].QueQuan+j,SV[n].QueQuan+j+1);
         else j++;
      if (SV[n].QueQuan[0]==' ')
         for (int j=0;SV[n].QueQuan[j]!='\0';j++) SV[n].QueQuan[j]=SV[n].QueQuan[j+1];
      // Viet hoa ki tu dau dong
      SV[n].QueQuan[0]=toupper(SV[n].QueQuan[0]);
      cout<<"Nhap nam sinh sinh vien "<<(n+1)<<endl;
      cin>>SV[n].NamSinh;
      cout<<"Nhap diem tot nghiep sinh vien "<<(n+1)<<endl;
      cin>>SV[n].Diem;
      if (SV[n].Diem >= 9) strcpy(SV[n].XepLoai,"Xuat Xac");
      if ((SV[n].Diem >= 8)&&(SV[n].Diem < 9)) strcpy(SV[n].XepLoai,"Gioi");
      if ((SV[n].Diem >= 7)&&(SV[n].Diem < 8)) strcpy(SV[n].XepLoai,"Kha");
      if ((SV[n].Diem >= 6)&&(SV[n].Diem < 7)) strcpy(SV[n].XepLoai,"Trung Binh Kha");
      if ((SV[n].Diem >= 5)&&(SV[n].Diem < 6)) strcpy(SV[n].XepLoai,"Trung Binh");
      if ((SV[n].NamSinh>=1950)&&(SV[n].NamSinh<=2000)&&(SV[n].Diem<=10.0)&&(SV[n].Diem>=5.0))
         return 1; else return 0;
}
void NhapDSSinhVien(int N,bool A[])
{
      for (int k=0;k<N;k++)
      {
         do
        {
            cout<<"NHAP THONG TIN SINH VIEN THU "<<(k+1)<<endl;
           A[k]=Nhap1SinhVien(k);
           cin.get();
        } while (A[k]== 0);
      }

}
void TimSinhVienTheoHoTen(int N,char T[50])
{
      int dem=0;
      for(int k=0;k<N;k++)
      if (strcmp(T,SV[k].HoTen)==0) {
      cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl;
      cout<<"Ho va ten: "<<SV[k].HoTen<<endl;
      cout<<"Que Quan: "<<SV[k].QueQuan<<endl;
      cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl;
      cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl;
      cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl;
      dem+=1;
      }
  if (dem==0) cout<<"Khong tim duoc sinh vien nao \n";
}
void SapXepTheoDiem(int N)
{
      int j,i=0;
      for(int i;i<N;i++)
      for(int j=i+1;j<N+1;j++)
          if (SV[i].Diem < SV[j].Diem)
            {
              t[0] = SV[i];
              SV[i] = SV[j];
              SV[j] = t[0];
            }
      for(int i;i<N;i++)
        for(int j=i+1;j<N+1;j++)
          if ((SV[i].Diem == SV[j].Diem)&&(atol(SV[i].MaSV) > atol(SV[j].MaSV)))
            {
              t[0] = SV[i];
              SV[i] = SV[j];
              SV[j] = t[0];
            }
}
void InDanhSach(int N)
{
      for(int k=0;k<N;k++)
         {
            cout<<"THONG TIN SINH VIEN THU "<<(k+1)<<endl;
            cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl;
            cout<<"Ho va ten: "<<SV[k].HoTen<<endl;
            cout<<"Que Quan: "<<SV[k].QueQuan<<endl;
            cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl;
            cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl;
            cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl;
        }
}
int main() {
  bool A[100];
  int N;
  char T[50];
  cout<<"Nhap so luong sinh vien N \n";
  cin>>N; cin.get();
  NhapDSSinhVien(N,A);
  cout<<"Nhap ho ten hoc sinh can tim \n";
  cin.getline(T,50);
  TimSinhVienTheoHoTen(N,T);
  SapXepTheoDiem(N);
  InDanhSach(N);
  getch();
  return 0;
}

Bài giải này chưa hoàn thiện ở những điểm sau:

- Khi nhập Họ tên sinh viên và Quê quán: không xử lí được nếu nhập khoảng cách ở đầu chuỗi.
- Chưa giải quyết được đoạn sắp xếp sinh viên theo mã số SV khi 2 sinh viên có cùng điểm tốt nghiệp.
- Trình bày chưa đẹp.

Những lỗi này mình sẽ sớm khắc phục trong thời gian tới, hiện giờ các bạn xem đỡ nhé ! [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 906512



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 10:00 am

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
sau khi kiểm tra lại thì thấy lỗi ngữ nghĩa tùm lum hết. blackrose coi lại nhé.chứ tui thấy nó bị lỗi khá nặng đó



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 3:31 pm

nguoitanoi061290
Usernguoitanoi061290 Người này hiện đang:
Level: Ma Mới
Danh vọng:11


Ma Mới

nguoitanoi061290

Ma Mới

Giới tính : Nam
Đến từ : Đà Lạt
Join : 02/12/2009
Bài gửi : 11

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
bai giai gi kho hiu wa vay phu.bua nao thi bay minh nha cau.kho hiu qua



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 4:59 pm

hongchung
Userhongchung Người này hiện đang:
Level: Thành Viên Chuẩn
Danh vọng:49


Thành Viên Chuẩn

hongchung

Thành Viên Chuẩn

http://www.hongchungk35.tk
Giới tính : Nam
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
oh bai nay khong biet test thu chua!thay sai nhieu cho!
hinh nhu la mot so cho giong nhu trong ngon ngu c! nhung ban nay lam vay la gioi wa roi! thank nhieu!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 5:34 pm

blackrose4s
Userblackrose4s Người này hiện đang:
Level: Người Nhà
Danh vọng:312


Người Nhà

blackrose4s

Người Nhà

Giới tính : Nam
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Cảm ơn các bạn đã quan tâm góp ý nhưng mà viết bài không có dấu cẩn thận bị admin xử lí đó nha Crying or Very sad

Tình hình là ở nhà mình sử dụng Borland C++ 5.2 trong khi đa số các bạn sử dụng Microsoft Visual C++ 6.0. Hình như 2 thằng này không ưa nhau hay sao ấy, mình viết code và test trên Borland C++ thì chạy tốt nhưng các bạn copy qua Visual C++ thì báo lỗi lung tung. Do đó, mình đã sửa lại code và test trên Visual C++ chạy ngon lành.

Dưới đây là bài giải hoàn chỉnh , đã thêm hàm fix các lỗi "nhập khoảng cách ở đầu chuỗi" và "sắp xếp theo mã số sinh viên" .

Code:

#include <iostream>
using namespace std;
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
struct SinhVien
{
      char MaSV[11];
      char HoTen[50];
      char QueQuan[20];
      unsigned int NamSinh;
      float Diem;
      char XepLoai[30];
} SV[100], t[1];
bool Nhap1SinhVien(int n)
{
      cout<<"Nhap ma sinh vien "<<(n+1)<<endl;
      cin.get(SV[n].MaSV,11); cin.get();
      cout<<"Nhap ho ten sinh vien "<<(n+1)<<endl;
      cin.getline(SV[n].HoTen,50);
     // Xoa ki tu trang dau chuoi
     while (*SV[n].HoTen==32)
     {
         for (int i=0;i<strlen(SV[n].HoTen)-1;i++)  SV[n].HoTen[i]=SV[n].HoTen[i+1];     
               *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0';
     }
      // Xoa ki tu trang cuoi chuoi
      while (*(SV[n].HoTen+strlen(SV[n].HoTen)-1)==32)
                  *(SV[n].HoTen+strlen(SV[n].HoTen)-1)='\0';
      // 2 ki tu trang lien tiep xoa bot mot cai
      int i=0;
      while (*(SV[n].HoTen+i))
          if (*(SV[n].HoTen+i)==32&&*(SV[n].HoTen+i+1)==32)
              strcpy(SV[n].HoTen+i,SV[n].HoTen+i+1);
        else i++;
      if (SV[n].HoTen[0]==' ')
      for (int i=0;SV[n].HoTen[i]!='\0';i++) SV[n].HoTen[i]=SV[n].HoTen[i+1];
      // Viet hoa ki tu dau dong
      SV[n].HoTen[0]=toupper(SV[n].HoTen[0]);
      cout<<"Nhap que quan ( ten tinh/thanh pho) sinh vien "<<(n+1)<<endl;
      cin.getline(SV[n].QueQuan,20);
     // Xoa ki tu trang dau chuoi
      while (*SV[n].QueQuan==32)
     {
         for (int i=0;i<strlen(SV[n].QueQuan)-1;i++)
                        SV[n].QueQuan[i]=SV[n].QueQuan[i+1];     
                   *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0';
     }
      // Xoa ki tu trang cuoi chuoi
      while (*(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)==32)
                  *(SV[n].QueQuan+strlen(SV[n].QueQuan)-1)='\0';
      // 2 ki tu trang lien tiep xoa bot mot cai
      int j=0;
      while (*(SV[n].QueQuan+j))
          if (*(SV[n].QueQuan+j)==32&&*(SV[n].QueQuan+j+1)==32)
          strcpy(SV[n].QueQuan+j,SV[n].QueQuan+j+1);
          else j++;
      if (SV[n].QueQuan[0]==' ')
        for (int j=0;SV[n].QueQuan[j]!='\0';j++) SV[n].QueQuan[j]=SV[n].QueQuan[j+1];
      // Viet hoa ki tu dau dong
      SV[n].QueQuan[0]=toupper(SV[n].QueQuan[0]);
      cout<<"Nhap nam sinh sinh vien "<<(n+1)<<endl;
      cin>>SV[n].NamSinh;
      cout<<"Nhap diem tot nghiep sinh vien "<<(n+1)<<endl;
      cin>>SV[n].Diem;
      if (SV[n].Diem >= 9) strcpy(SV[n].XepLoai,"Xuat Xac");
      if ((SV[n].Diem >= 8)&&(SV[n].Diem < 9)) strcpy(SV[n].XepLoai,"Gioi");
      if ((SV[n].Diem >= 7)&&(SV[n].Diem < 8)) strcpy(SV[n].XepLoai,"Kha");
      if ((SV[n].Diem >= 6)&&(SV[n].Diem < 7)) strcpy(SV[n].XepLoai,"Trung Binh Kha");
      if ((SV[n].Diem >= 5)&&(SV[n].Diem < 6)) strcpy(SV[n].XepLoai,"Trung Binh");
      if ((SV[n].NamSinh>=1950)&&(SV[n].NamSinh<=2000)&&(SV[n].Diem<=10.0)&&(SV[n].Diem>=5.0))
        return 1; else return 0;
}
void NhapDSSinhVien(int N,bool A[])
{
      for (int k=0;k<N;k++)
      {
        do
        {
          cout<<"NHAP THONG TIN SINH VIEN THU "<<(k+1)<<endl;
          A[k]=Nhap1SinhVien(k);
          cin.get();
        } while (A[k]== 0);
      }

}
void TimSinhVienTheoHoTen(int N,char T[50])
{
      int dem=0;
      for(int k=0;k<N;k++)
      if (strcmp(T,SV[k].HoTen)==0) {
      cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl;
      cout<<"Ho va ten: "<<SV[k].HoTen<<endl;
      cout<<"Que Quan: "<<SV[k].QueQuan<<endl;
      cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl;
      cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl;
      cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl;
      dem+=1;
      }
  if (dem==0) cout<<"Khong tim duoc sinh vien nao \n";
}
void SapXepTheoDiem(int N)
{
      int j,i;
      for(i=0;i<N;i++)
      for(j=i+1;j<N+1;j++)
          if (SV[i].Diem < SV[j].Diem)
            {
              t[0] = SV[i];
              SV[i] = SV[j];
              SV[j] = t[0];
            }
      for(i=0;i<N;i++)
        for(j=i+1;j<N+1;j++)
          if ((SV[i].Diem == SV[j].Diem)&&(atol(SV[i].MaSV) > atol(SV[j].MaSV)))
            {
              t[0] = SV[i];
              SV[i] = SV[j];
              SV[j] = t[0];
            }
}
void InDanhSach(int N)
{
      for(int k=0;k<N;k++)
        {
            cout<<"THONG TIN SINH VIEN THU "<<(k+1)<<endl;
            cout<<"Ma so sinh vien: "<<SV[k].MaSV<<endl;
            cout<<"Ho va ten: "<<SV[k].HoTen<<endl;
            cout<<"Que Quan: "<<SV[k].QueQuan<<endl;
            cout<<"Nam Sinh: "<<SV[k].NamSinh<<endl;
            cout<<"Diem tot nghiep: "<<SV[k].Diem<<endl;
            cout<<"Xep loai tot nghiep: "<<SV[k].XepLoai<<endl;
        }
}
int main() {
  bool A[100];
  int N;
  char T[50];
  cout<<"Nhap so luong sinh vien N \n";
  cin>>N; cin.get();
  NhapDSSinhVien(N,A);
  cout<<endl<<"********************************************"<<endl;
  cout<<"Nhan Enter de den ham TimSinhVienTheoHoTen \n";
  getch();
  cout<<"Nhap ho ten hoc sinh can tim \n";
  cin.getline(T,50);
  TimSinhVienTheoHoTen(N,T);
  cout<<endl<<"********************************************"<<endl;
  cout<<"Nhan Enter de den ham InDanhSach \n";
  getch();
  SapXepTheoDiem(N);
  InDanhSach(N);
  getch();
  return 0;
}

Nói là hoàn chỉnh nhưng theo đề thì vẫn có một số điểm chưa hoàn thiện. VD như:
+ Phải kiểm tra tính hợp lệ của tuổi bắt đầu đi học nhưng đã kiểm tra năm hợp lệ rồi thì tại sao lại còn phải kiểm tra tuổi. Do đó, bài giải không khai thác chỗ này .
+ Tên thì có thể trùng nhưng Mã số sinh viên thì duy nhất . Đề không yêu cầu kiểm tra mã số sinh viên trùng nhau nên bài giải cũng không khai thác, và còn nhiều chỗ nho nhỏ khác nữa....
+ Câu e) kêu in dữ liệu dưới dạng bảng ??? OMG!! Xin chịu thua ! Ít đi học nên không biết thầy có dạy cái này hông ? chứ em nhớ hổng lầm cái này C++ nâng cao Exclamation



Số lần được cảm ơn : Message reputation : 100% (2 votes)


[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 7:27 pm

Admin
UserAdmin Người này hiện đang:
Level: Tổng điều hành
Danh vọng:581


Tổng điều hành

Admin

Tổng điều hành

https://cnttdhsupham.forumvi.com
Giới tính : Nam
Đến từ : Bình Phước
Join : 29/10/2009
Bài gửi : 581
HUMOR : Du Lịch - Hoạt Động Tập thể - Vọc Phần Mềm

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Cảm ơn Blackrose!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:01 pm

hongchung
Userhongchung Người này hiện đang:
Level: Thành Viên Chuẩn
Danh vọng:49


Thành Viên Chuẩn

hongchung

Thành Viên Chuẩn

http://www.hongchungk35.tk
Giới tính : Nam
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
viết trên Borland C++ với lại Visual C++ phải khai báo lại thư viện bạn đã thử chưa?



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:02 pm

hongchung
Userhongchung Người này hiện đang:
Level: Thành Viên Chuẩn
Danh vọng:49


Thành Viên Chuẩn

hongchung

Thành Viên Chuẩn

http://www.hongchungk35.tk
Giới tính : Nam
Đến từ : oooo
Join : 25/04/2010
Bài gửi : 49
HUMOR : ooooo

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Phải Thank bạn nhiều!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:07 pm

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
bộ phận kiểm tra đã kiểm tra xong.kết quả...hơi tiếc cho bạn phú.
sau khi test mình thấy ko sai code.nhưng mà sai ngữ nghĩa.
mình chọn số lượng là 2 sv
nhập xong hết thông tin của sv1 thì nó típ tục báo...nhập típ thông tin
sv1 đi em! [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 867523 hix
thêm nữa là phần nhập tên vẫn có thể nhập số tùy ý(sv2 mình mới nhập tùm lum xem sao).
bạn cố gang lại thử đi nhé phú.dù sao cũng phải kham phục!gioỉ thật đó



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:16 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Code:

#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
struct sinhvien
{
    char masv[11];
    char hoten[50];
    char quequan[20];
    unsigned int namsinh;
    float diem;
    char xeploai[30];
};
bool nhap1sinhvien(sinhvien &sv)
{
    cout<<"nhap ma sinh vien\n";
    cin.ignore(255,'\n');
    cin.getline(sv.masv,11);
    cout<<"nhap ho ten\n";
    cin.ignore(255,'\n');
    cin.getline(sv.hoten,50);
    cout<<"nhap que quan\n";
    cin.ignore(255,'\n');
    cin.getline(sv.quequan,20);
    cout<<"nhap nam sinh\n";
    cin>>sv.namsinh;
    cout<<"nhap diem\n";
    cin>>sv.diem;
    if((sv.namsinh<1950)||(sv.namsinh>2000))
        return false;
    int tuoi=2010-sv.namsinh;
    if((tuoi<18)||(tuoi>50))
        return false;
    if((sv.diem<5.0)||(sv.diem>10.0))
        return false;
    if(sv.diem>=9.0) strcpy(sv.xeploai,"xuatsac");
    else if(sv.diem>=8.0) strcpy(sv.xeploai,"gioi");
    else if(sv.diem>=7.0) strcpy(sv.xeploai,"kha");
    else if(sv.diem>=6.0) strcpy(sv.xeploai,"tbkha");
    else strcpy(sv.xeploai,"trung binh");
    return true;
}
void nhapdssinhvien(sinhvien ds[],int n)
{
    sinhvien tmp;
    int i=0;
    while (i<n)
    {
        if(nhap1sinhvien(tmp))
        {
            ds[i++]=tmp;
        }
    }

}
void timsinhvientheoten(sinhvien ds[],int n)
{
    int i,ok=0;
    char ht[50];
    cout<<"nhap ten can tim\n";
    cin.ignore(255,'\n');
    cin.getline(ht,50);
    for(i=0;i<n;i++)
    {
        if(strcmp(ds[i].hoten,ht)==0)
        {
            cout<<"co ten "<<ht<<" trong danh sach\n";
            ok=1;
            break;
        }
   
    }
    if(ok!=1) cout<<"ko co ten "<<ht<<" trong danh sach\n";
}
void sapxeptheodiem(sinhvien ds[],int n)
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=1;j<n;j++)
        {
            if(ds[i].diem<ds[j].diem)
                swap(ds[i],ds[j]);
            else if(ds[i].diem==ds[j].diem)
            {
                if(strcmp(ds[i].masv,ds[j].masv)==1)
                    swap(ds[i],ds[j]);
            }
        }
}
void indanhsach(sinhvien ds[],int n)
{
        int i;
        cout<<"masv      ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].masv;
              cout<<"\t\t";
              }
        cout<<"\n";
        cout<<"ho va ten  ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].hoten;
              cout<<"\t";
              }
        cout<<"\n";
        cout<<"que quan  ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].quequan;
              cout<<"\t\t";
              }
        cout<<"\n";
        cout<<"nam sinh  ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].namsinh;
              cout<<"\t\t\t";
              }
        cout<<"\n";
        cout<<"diem      ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].diem;
              cout<<"\t\t\t";
              }
        cout<<"\n";
        cout<<"xep loai  ";
        for(i=0;i<n;i++)
            {
              cout<<ds[i].xeploai;
              cout<<"\t\t";
              }
       
}
void main()
{
    sinhvien ds[100];
    int n;
    cout<<"nhap so sinh vien can nhap vao danh sach";
    cin>>n;
    nhapdssinhvien(ds,n);
    sapxeptheodiem(ds,n);
    indanhsach(ds,n);
    timsinhvientheoten(ds,n);
}

Còn cái chuẩn hóa chuỗi chưa có làm đc chỉ làm đc nhiêu đây thui nhưng mà còn 1 số cái chưa hoàn chỉnh lăm!!!mấy bạn test thử nhan!!!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 9:45 pm

blackrose4s
Userblackrose4s Người này hiện đang:
Level: Người Nhà
Danh vọng:312


Người Nhà

blackrose4s

Người Nhà

Giới tính : Nam
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
superkid đã viết:
bộ phận kiểm tra đã kiểm tra xong.kết quả...hơi tiếc cho bạn phú.
sau khi test mình thấy ko sai code.nhưng mà sai ngữ nghĩa.
mình chọn số lượng là 2 sv
nhập xong hết thông tin của sv1 thì nó típ tục báo...nhập típ thông tin
sv1 đi em! [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 867523 hix
thêm nữa là phần nhập tên vẫn có thể nhập số tùy ý(sv2 mình mới nhập tùm lum xem sao).
bạn cố gang lại thử đi nhé phú.dù sao cũng phải kham phục!gioỉ thật đó

Chương trình bắt nhập lại SV nào là do nhập năm sinh và điểm không đúng ( năm sinh phải thuộc [1950;2000] và điểm phải thuộc [5;10] )

Việt Nam mình có người tên có số đó bạn Shocked với lại đã nói rồi : đề yêu cầu đến đâu thì làm đến đó, bài giải đã dài lắm rồi !

Hi hi, vậy là không có sai nhé , cám ơn đã góp ý

@qphuong: Bài của ông in danh sách có dạng bảng ( chỉ bị lỗi không hiện họ tên). Đúng là một ý tưởng mới lạ đó Very Happy



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyThu May 20, 2010 11:41 pm

Regulus™
UserRegulus™ Người này hiện đang:
Level: Tổng điều hành
Danh vọng:758


Tổng điều hành

Regulus™

Tổng điều hành

http://itk35.tk
Giới tính : Nam
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
bài của phương test tốt... đang coi làm cái chuẩn hóa tên vs làm cái bảng lại cho đẹp Smile)



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyFri May 21, 2010 10:59 am

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
sao bài của p tui thấy còn bị lỗi lúc cho xuất bảng.mọi thứ mình nhập bằng tay đều ko dc hiển thị.và khi đưa ra yêu cầu bắt người ta nhập quê quan thì phả bấm enter 2 lần sau khi đã nhập để mà qua yêu cầu tiếp theo.phương ráng sửa lại cho anh em đi phương.thêm cái nữa góp ý là mình thấy bài của phú có cái hay là nhập sv nào thì phú cho biết đây là sv thứ bao nhiêu.của p ko có.p thêm vào đi nhé.haiz...công nhận mấy u giỏi thiệt.tui chưa làm dc zậy.hix



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyFri May 21, 2010 8:19 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
àh cái lỗi như ông nói thì tại do câu lệnh cin.ignore(255,'\n') áh câu này là lệnh dừng xóa bộ nhớ với lại nó chỉ đọc sau khi bấm enter nên khi mà ông chạy thì trc khi nhập ông phải enter trc rùi nhập là đc!còn cái kia thì dễ mà các bạn tự thêm nhá!hihi



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptyFri May 21, 2010 9:38 pm

abcde
Userabcde Người này hiện đang:
Level: Thành Viên Chuẩn
Danh vọng:43


Thành Viên Chuẩn

abcde

Thành Viên Chuẩn

Giới tính : Nam
Đến từ : abcde
Join : 02/04/2010
Bài gửi : 43
HUMOR : abcde

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Cảm ơn bạn Phú và bạn Phương nhiều nhé : )



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 22, 2010 9:31 am

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
ủa?thế sao mình ko xài câu như bình thường p?xài cái câu cin.ignore làm gì zậy?ủa mà câu này mình có học ko nhỉ???



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 22, 2010 5:30 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
cái câu lệnh này theo mình đc bít thì là dùng để xóa bộ nhớ trong chuỗi!!!
hình như là nếu ko có câu này thì chuỗi chỉ nhập đc 1 lần rùi thì cái chuỗi đó có giá trị đó luôn không thay đổi nữa!!!ví dụ khi nhập tên cho sinh viên thứ 1 xong mà ko có câu này thì sau khi nhập tên cho sinh viên thứ hai thì tên của sinh viên thứ hai sẽ là tên của sinh viên thứ nhât!!!câu này thì thầy chỉ giới thiệu cho bít thui bữa đi học cuối cùng áh



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 22, 2010 5:49 pm

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
hix...hum đó bị ốm.nghỉ mất tiu.tiếc wa'.huhu



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 29, 2010 7:35 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Code:
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
struct sinhvien
{
   char masv[11];
   char hoten[50];
   char quequan[20];
   unsigned int namsinh;
   float diem;
   char xeploai[30];
};
bool nhap1sinhvien(sinhvien &sv)
{
   cout<<"nhap ma sinh vien\n";
   cin.ignore(255,'\n');
   cin.getline(sv.masv,11);
   cout<<"nhap ho ten\n";
   cin.ignore(255,'\n');
   cin.getline(sv.hoten,50);
   
   while (*sv.hoten==32)      //xoa ki tu dau chuoi
    {
        for (int i=0;i<strlen(sv.hoten)-1;i++) 
              sv.hoten[i]=sv.hoten[i+1];   
        *(sv.hoten+strlen(sv.hoten)-1)='\0';
    }

   while(*(sv.hoten+strlen(sv.hoten)-1)==32)  //xoa ki tu cuoi chuoi
      *(sv.hoten+strlen(sv.hoten-1))='\0';
   int i=0;
    while (*(sv.hoten+i))  //xoa khoang trang thua
        if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32)
              strcpy(sv.hoten+i,sv.hoten+i+1);
        else i++;
   
   for ( i=0;i<strlen(sv.hoten);i++)    //Chuyen tat ca thanh chu thuong
         sv.hoten[i]=tolower(sv.hoten[i]);

      sv.hoten[0]=toupper(sv.hoten[0]);    //In hoa chu cai dau tien
    for ( i=0;i<strlen(sv.hoten);i++)   
         if (sv.hoten[i-1]==' ' && sv.hoten[i]!=' ')
            sv.hoten[i]=toupper(sv.hoten[i]);
      
   cout<<"nhap que quan\n";
   cin.ignore(255,'\n');
   cin.getline(sv.quequan,20);
   while (*sv.quequan==32)    //xoa ki tu dau chuoi
    {
        for (int i=0;i<strlen(sv.quequan)-1;i++) 
              sv.quequan[i]=sv.quequan[i+1];   
        *(sv.quequan+strlen(sv.quequan)-1)='\0';
    }

   while(*(sv.quequan+strlen(sv.quequan)-1)==32)    //xoa ki tu cuoi chuoi
      *(sv.quequan+strlen(sv.quequan-1))='\0';
   i=0;
    while (*(sv.quequan+i))    //xoa khoang trang thua
        if (*(sv.quequan+i)==32&&*(sv.quequan+i+1)==32)
              strcpy(sv.quequan+i,sv.quequan+i+1);
        else i++;
   
   for ( i=0;i<strlen(sv.quequan);i++)    //Chuyen tat ca thanh chu thuong
         sv.quequan[i]=tolower(sv.quequan[i]);

      sv.quequan[0]=toupper(sv.quequan[0]);      //In hoa chu cai dau tien
      for ( i=0;i<strlen(sv.quequan);i++)   
         if (sv.quequan[i-1]==' ' && sv.quequan[i]!=' ')
            sv.quequan[i]=toupper(sv.quequan[i]);
      
   cout<<"nhap nam sinh\n";
   cin>>sv.namsinh;
   cout<<"nhap diem\n";
   cin>>sv.diem;
   if((sv.namsinh<1950)||(sv.namsinh>2000))
      return false;
   int tuoi=2010-sv.namsinh;
   if((tuoi<18)||(tuoi>50))
      return false;
   if((sv.diem<5.0)||(sv.diem>10.0))
      return false;
   if(sv.diem>=9.0) strcpy(sv.xeploai,"xuatsac");
   else if(sv.diem>=8.0) strcpy(sv.xeploai,"gioi");
   else if(sv.diem>=7.0) strcpy(sv.xeploai,"kha");
   else if(sv.diem>=6.0) strcpy(sv.xeploai,"tbkha");
   else strcpy(sv.xeploai,"trung binh");
   return true;
}
void nhapdssinhvien(sinhvien ds[],int n)
{
   sinhvien tmp;
   int i=0;
   while (i<n)
   {
      cout<<"nhap thong tin sinh vien thu"<<i+1<<endl;
      if(nhap1sinhvien(tmp))
      {
         ds[i++]=tmp;
      }
   }

}
void timsinhvientheoten(sinhvien ds[],int n)
{
   int i,ok=0;
   char ht[50];
   cout<<"nhap ten can tim\n";
   cin.ignore(255,'\n');
   cin.getline(ht,50);
   for(i=0;i<n;i++)
   {
      if(strcmp(ds[i].hoten,ht)==0)
      {
         cout<<"co ten "<<ht<<" trong danh sach\n";
         ok=1;
         break;
      }
   
   }
   if(ok!=1) cout<<"ko co ten "<<ht<<" trong danh sach\n";
}
void sapxeptheodiem(sinhvien ds[],int n)
{
   int i,j;
   for(i=0;i<n;i++)
      for(j=1;j<n;j++)
      {
         if(ds[i].diem<ds[j].diem)
            swap(ds[i],ds[j]);
         else if(ds[i].diem==ds[j].diem)
         {
            if(strcmp(ds[i].masv,ds[j].masv)==1)
               swap(ds[i],ds[j]);
         }
      }
}
void indanhsach(sinhvien ds[],int n)
{
        int i;
      cout<<"masv      ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].masv;
            cout<<"\t\t\t";
           }
      cout<<"\n";
      cout<<"ho va ten  ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].hoten;
            cout<<"\t";
           }
      cout<<"\n";
      cout<<"que quan  ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].quequan;
            cout<<"\t\t";
           }
      cout<<"\n";
      cout<<"nam sinh  ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].namsinh;
            cout<<"\t\t\t";
           }
      cout<<"\n";
      cout<<"diem      ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].diem;
            cout<<"\t\t\t";
           }
      cout<<"\n";
      cout<<"xep loai  ";
      for(i=0;i<n;i++)
         {
            cout<<ds[i].xeploai;
            cout<<"\t\t";
           }
      
}
int main()
{
    sinhvien ds[100];
   int n;
   cout<<"nhap so sinh vien can nhap vao danh sach : ";
   cin>>n;
   nhapdssinhvien(ds,n);
   sapxeptheodiem(ds,n);
   timsinhvientheoten(ds,n);
   indanhsach(ds,n);
   return 0;
}

mới làm xong mấy bạn coi có thiếu sót gì ko nha!!! Sad



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 29, 2010 10:09 pm

kim_o
Userkim_o Người này hiện đang:
Level: Thành Viên Xây Dựng
Danh vọng:148


Thành Viên Xây Dựng

kim_o

Thành Viên Xây Dựng

Giới tính : Nam
Đến từ : An Giang
Join : 12/11/2009
Bài gửi : 148

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
thx nhiều nhá, Hay và bổ ích... Mad



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 29, 2010 11:18 pm

Regulus™
UserRegulus™ Người này hiện đang:
Level: Tổng điều hành
Danh vọng:758


Tổng điều hành

Regulus™

Tổng điều hành

http://itk35.tk
Giới tính : Nam
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer

Thú cưng
.:

Bài gửiTiêu đề: full

 
Code:
#include <iostream>
using namespace std;
#include <cstring>
#include <cstdlib>
#include <iomanip>
struct SinhVien
{
char MaSV[11];
char HoTen[50];
char QueQuan[20];
unsigned int NamSinh;
float Diem;
char XepLoai[30];
};

void  xoa1kitu(char a[], int vitri)
{
    int n= strlen(a);
    for(int j=vitri; j<n;j++)
          a[j]=a[j+1];
          a[n-1]='\0'; 
               
}
void chuanhoa(char chuoi[])
    {
       
        while (chuoi[0]==' ')
        {
            xoa1kitu(chuoi,0);
        }
       
        while (chuoi[strlen(chuoi)-1]==' ')
        {
            xoa1kitu(chuoi,strlen(chuoi)-1);
        }
        for (int i=0;i<strlen(chuoi);i++)
        {
            if ((int)chuoi[i]==32  && (int)chuoi[i+1]==32)
            {
                xoa1kitu(chuoi,i);
                i--;
            }
           
        }

        for (int i=0;i<strlen(chuoi);i++)    //Chuyen tat ca thanh chu thuong
            chuoi[i]=tolower(chuoi[i]);

        chuoi[0]=toupper(chuoi[0]);                //In hoa chu cai dau tien
        for (int i=0;i<strlen(chuoi);i++)   
            if (chuoi[i-1]==' ' && chuoi[i]!=' ')
                chuoi[i]=toupper(chuoi[i]);
    }


bool Nhap1SinhVien(SinhVien &sv)
{
    char HoTen[50],QueQuan[20];
    cout<<"\n-------------------------------------------------------------------------\n";
    cout<<"Nhap MSSV              :";
    cin.ignore(255,'\n');
    cin.getline(sv.MaSV,11);
    cout<<"Nhap Ho ten Sinh vien  :";
    cin.getline(HoTen,50);
    chuanhoa(HoTen);
    strcpy(sv.HoTen,HoTen);
    cout<<"Nhap que quan          :";
    cin.getline(QueQuan,20);
    chuanhoa(QueQuan);
    strcpy(sv.QueQuan,QueQuan);
    cout<<"Nhap nam sinh          :";
    cin>>sv.NamSinh;
    cout<<"Nhap Diem :            :";
    cin>>sv.Diem;
    if (sv.Diem>=8) strcpy(sv.XepLoai,"Gioi");
    else if (sv.Diem>=6) strcpy(sv.XepLoai,"Kha");
    else strcpy(sv.XepLoai,"TB");
    int Tuoi=2010-sv.NamSinh;
    if((sv.NamSinh<1950)||(sv.NamSinh>2000))
        return false;
    else if ((sv.Diem<5.0)||(sv.Diem>10.0))
        return false;
    else if  (Tuoi<18 || Tuoi>50 )
        return false;
    else return true;
   
}



void NhapDSSinhVien(SinhVien ds[],int n)
{
    SinhVien tmp;
    int i=0;
    while (i<n)
    {
        if(Nhap1SinhVien(tmp))
        {
            ds[i++]=tmp;
        }
        else
            cout<<"\n !!! Thong tin Sinh Vien vua nhap ko hop le... Vui long nhap lai\n "<<endl;
    }

}

void XuatDS(SinhVien sv[],int n)
{
    // Dong dau tien
    for (int i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    cout<<"|  MSSV  |"<<"        Ho Ten      |"<<"  Nam Sinh  |"<<"  Que Quan |"<<"  Diem  |"<<"  Xep Loai |\n";
    for (int i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    //Cac dong hien thi du lieu
    for (int i=0;i<n;i++)
    {
        cout<<"|"<<setw(8)<<sv[i].MaSV<<"|"
            <<setw(20)<<sv[i].HoTen<<"|"
            <<setw(13)<<sv[i].NamSinh<<"|"
            <<setw(11)<<sv[i].QueQuan<<"|"
            <<setw(8)<<sv[i].Diem<<"|"
            <<setw(11)<<sv[i].XepLoai<<"|";
        cout<<endl;
       
    }
   
    for (int i=1;i<=78;i++)
        cout<<"_";
        cout<<endl;
   
}

void TimSinhVienTheoHoTen(SinhVien sv[], int n)
{
    char keyword[100] ;
    cout<<"Nhap ten sinh vien can tim :";
    cin.ignore(255,'\n');
    cin.getline(keyword,100);
    chuanhoa(keyword);
    int dem=0;
    for (int i=0;i<n;i++)
        if (strcmp(sv[i].HoTen,keyword)==0)
        {
            dem++;
            cout<<"\n----------------------------------------------\n";
            cout<<"MSSV              :"<<sv[i].MaSV<<endl;
            cout<<"Ho ten            :"<<sv[i].HoTen<<endl;
            cout<<"Nam Sinh          :"<<sv[i].NamSinh<<endl;
            cout<<"Que quan          :"<<sv[i].QueQuan<<endl;
            cout<<"Diem              :" <<sv[i].Diem<<endl;
            cout<<"Xep loai          :" <<sv[i].XepLoai<<endl;
        }
        if (dem>0)
        {
        cout<<"\n----------------------------------------------\n";
        cout<<"Tim thay  " <<dem<<" sinh vien co ten : "<<keyword<<endl;
        }
        else
            cout<<"Ko tim thay !!!";
}
void SapXepTheoDiem(SinhVien sv[], int n)
{
    for (int i=0;i<n;i++)
        for (int j=i;j<n;j++)
        {
            if (sv[i].Diem > sv[j].Diem)
                swap(sv[i] , sv[j]);
            else if (sv[i].Diem = sv[j].Diem)
            {
                if (strcmp(sv[i].MaSV , sv[j].MaSV)==1)
                swap(sv[i] , sv[j]);
            }
        }
}

int main()
{
    SinhVien sv[100];
    char keyword[100];
    int n;
    cout<<"Nhap so luong sinh vien :";
    cin>>n;
    NhapDSSinhVien(sv,n);
    SapXepTheoDiem(sv,n);
    system("cls");
    XuatDS(sv,n);
    TimSinhVienTheoHoTen(sv,n);

return 0;   

    }

code test tốt trên C free, VC6, VS2005 Very Happy

mún hiện cái bảng đẹp thì

demo: http://www.box.net/files#/files/0/f/0/1/f_442415838

[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 3L0.11609660_1_1



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySat May 29, 2010 11:27 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
1 ý tưởng mới cho những bạn ko thích sài con trỏ!!!
kết nhất là cái bảng!!!hehe
thanhks leo!!!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 12:40 am

Regulus™
UserRegulus™ Người này hiện đang:
Level: Tổng điều hành
Danh vọng:758


Tổng điều hành

Regulus™

Tổng điều hành

http://itk35.tk
Giới tính : Nam
Đến từ : ...
Join : 06/11/2009
Bài gửi : 758
HUMOR : Nghe nhạc.. Computer

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
thông báo: bị sai phần điểm ..
khi swap thì điểm chạy lung tung.. ko đúng nữa... bà kon sửa tiếp đí :d



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 8:57 am

kim_o
Userkim_o Người này hiện đang:
Level: Thành Viên Xây Dựng
Danh vọng:148


Thành Viên Xây Dựng

kim_o

Thành Viên Xây Dựng

Giới tính : Nam
Đến từ : An Giang
Join : 12/11/2009
Bài gửi : 148

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
cho hỏi: while (*(sv.hoten+i)) //xoa khoang trang thua
if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32)
strcpy(sv.hoten+i,sv.hoten+i+1);
else i++;
va một số câu ì, Hình như sau While và Ì là một (bool sta.) sao ko thấy đau hết vậy??? Giải thích giùm cách chạy này,THx nghe



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 10:29 am

superkid
Usersuperkid Người này hiện đang:
Level: IT Pro
Danh vọng:500


IT Pro

superkid

IT Pro

Giới tính : Nam
Đến từ : cái rốn của vũ trụ!
Join : 06/11/2009
Bài gửi : 500
HUMOR : chơi, nghe nhạc, vẽ, v.v...

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 92788mẹ ơi đúng là quỷ đỡ...cái thằng leo này kinh thật pà kon há.à choi tui hỏi chút xíu.tui thì dở về viết mấy cái code nhưng tui xin góp ý cái này xíu.tui tính làm cái phần xóa khoảng trắng và viết hoa chữ cái đầu tiên như sau.mình nhập tên váo 1 mảng.sau đó cho nó chạy từng ô trong mảng.nếu thấy ở đâu kí tự có mã ASCII bằng mã của phím spacebar thì mình delete nó.và cho hàm viết hoa chữ cái ở ô tiếp theo.theo mọi người đây có phải là cách làm tối ưu chưa?
thêm nữa là bài của ông leo sao tui copy về máy cho chạy thì nó báo là 5 lỗi.ông nói là nói chạy dc trên VC6 mà máy tui chạy VC6 nè.sao lỗi dữ thế?
------------------------------------------------------------------------
ông kiểm tra lại xem do code hay do máy dùm tui nhé.hix!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 11:19 am

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
kim_o đã viết:
Trích dẫn :
cho hỏi: while (*(sv.hoten+i)) //xoa khoang trang thua
if (*(sv.hoten+i)==32&&*(sv.hoten+i+1)==32)
strcpy(sv.hoten+i,sv.hoten+i+1);
else i++;
va một số câu if, Hình như sau While và If là một (bool sta.) sao ko thấy đau hết vậy??? Giải thích giùm cách chạy này,THx nghe
cái phần điều kiện ở câu lệnh while là *(sv.hoten+i) nghĩa là phấn tử thứ i khác rỗng còn trong câu if thì *(sv.hoten+i)==32&&(sv.hotten+i+1)==32 là câu điều kiện có nghĩa là hai phần tử thứ i và i+1 đều bằng khoảng cách (mã ASCII của khoảng cách là 32)
cách chạy thì khi mà phần tử thứ i khác rỗng thì kiểm tra tiếp phần tử thứ i có là khoảng cách ko nếu đúng thì kiểm tra tiếp phần thứ i+1 nếu là khoảng trắng thì copy phần tử thứ i+1 vào phần tử thứ i nghĩa là xóa bớt phần tử thứ i+1 còn không thì tăng i lên chỉ dậy thui!!!

rex đã viết:
Trích dẫn :
thông báo: bị sai phần điểm ..
khi swap thì điểm chạy lung tung.. ko đúng nữa... bà kon sửa tiếp đí :d
cái câu lệnh của ông nó bị sai rùi
Code:
if (sv[i].Diem > sv[j].Diem)
                swap(sv[i] , sv[j]);
phải là
Code:
if (sv[i].Diem < sv[j].Diem)
                swap(sv[i] , sv[j]);
mới đúng!!!
@superkid:ý tưởng của ông hay áh nhưng mà trong C++ ko có hàm nào để xóa hết nên khi làm sẽ gặp nhiều phiền phức nên ko thể làm cùng lúc cả hia việc đc!!!còn bài của leo báo lỗi là do C_free nên khi chạy trên VC6 nó báo lỗi linh tinh thui mấy bạn tự sửa đc mà!!!



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 1:17 pm

blackrose4s
Userblackrose4s Người này hiện đang:
Level: Người Nhà
Danh vọng:312


Người Nhà

blackrose4s

Người Nhà

Giới tính : Nam
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Các bạn đúng là Pro Very Happy

À mà nói thêm với bạn kim_o là :Theo sách cấu trúc của while là "while(expression) statement" ( expression chứ không phải conditional như cấu trúc If, for, do .. while). Do đó , trong dấu ngoặc của while vừa có thể là biểu thức điều kiện hoặc một biểu thức có trị xác định(biểu hiện).



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 2:09 pm

qphuong07
Userqphuong07 Người này hiện đang:
Level: IT Pro
Danh vọng:677


IT Pro

qphuong07

IT Pro

Giới tính : Nam
Đến từ : dong nai
Join : 06/11/2009
Bài gửi : 677
HUMOR : Ngủ là ok!!!

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
Code:
#include <iostream>
using namespace std;
#include <cstring>
#include <cstdlib>
#include <iomanip>
struct SinhVien
{
char MaSV[11];
char HoTen[50];
char QueQuan[20];
unsigned int NamSinh;
float Diem;
char XepLoai[30];
};

void  xoa1kitu(char a[], int vitri)
{
    int n= strlen(a);
    for(int j=vitri; j<n;j++)
          a[j]=a[j+1];
          a[n-1]='\0'; 
               
}
void chuanhoa(char chuoi[])
    {
      
      while (chuoi[0]==' ')
      {
         xoa1kitu(chuoi,0);
      }
      
      while (chuoi[strlen(chuoi)-1]==' ')
      {
         xoa1kitu(chuoi,strlen(chuoi)-1);
      }
      for (int i=0;i<strlen(chuoi);i++)
      {
         if ((int)chuoi[i]==32  && (int)chuoi[i+1]==32)
         {
            xoa1kitu(chuoi,i);
            i--;
         }
         
      }

      for (i=0;i<strlen(chuoi);i++)    //Chuyen tat ca thanh chu thuong
         chuoi[i]=tolower(chuoi[i]);

      chuoi[0]=toupper(chuoi[0]);            //In hoa chu cai dau tien
      for ( i=0;i<strlen(chuoi);i++)   
         if (chuoi[i-1]==' ' && chuoi[i]!=' ')
            chuoi[i]=toupper(chuoi[i]);
    }


bool Nhap1SinhVien(SinhVien &sv)
{
   char HoTen[50],QueQuan[20];
   cout<<"\n-------------------------------------------------------------------------\n";
   cout<<"Nhap MSSV              :";
   cin.ignore(255,'\n');
   cin.getline(sv.MaSV,11);
   cout<<"Nhap Ho ten Sinh vien  :";
   cin.getline(HoTen,50);
   chuanhoa(HoTen);
   strcpy(sv.HoTen,HoTen);
   cout<<"Nhap que quan          :";
   cin.getline(QueQuan,20);
   chuanhoa(QueQuan);
   strcpy(sv.QueQuan,QueQuan);
   cout<<"Nhap nam sinh          :";
   cin>>sv.NamSinh;
   cout<<"Nhap Diem :            :";
   cin>>sv.Diem;
   if(sv.Diem>=9) strcpy(sv.XepLoai,"xuat sac");
   else if (sv.Diem>=8) strcpy(sv.XepLoai,"Gioi");
   else if (sv.Diem>=6) strcpy(sv.XepLoai,"Kha");
   else strcpy(sv.XepLoai,"TB");
   int Tuoi=2010-sv.NamSinh;
   if((sv.NamSinh<1950)||(sv.NamSinh>2000))
      return false;
   else if ((sv.Diem<5.0)||(sv.Diem>10.0))
      return false;
   else if  (Tuoi<18 || Tuoi>50 )
      return false;
   else return true;
   
}



void NhapDSSinhVien(SinhVien ds[],int n)
{
   SinhVien tmp;
   int i=0;
   while (i<n)
   {
      if(Nhap1SinhVien(tmp))
      {
         ds[i++]=tmp;
      }
      else
         cout<<"\n !!! Thong tin Sinh Vien vua nhap ko hop le... Vui long nhap lai\n "<<endl;
   }

}

void XuatDS(SinhVien sv[],int n)
{
   // Dong dau tien
   for (int i=1;i<=78;i++)
      cout<<"_";
   cout<<endl;
   cout<<"|  MSSV  |"<<"        Ho Ten      |"<<"  Nam Sinh  |"<<"  Que Quan |"<<"  Diem  |"<<"  Xep Loai |\n";
   for ( i=1;i<=78;i++)
      cout<<"_";
   cout<<endl;
   //Cac dong hien thi du lieu
   for ( i=0;i<n;i++)
   {
      cout<<"|"<<setw(8)<<sv[i].MaSV<<"|"
         <<setw(20)<<sv[i].HoTen<<"|"
         <<setw(13)<<sv[i].NamSinh<<"|"
         <<setw(11)<<sv[i].QueQuan<<"|"
         <<setw(8)<<sv[i].Diem<<"|"
         <<setw(11)<<sv[i].XepLoai<<"|";
      cout<<endl;
      
   }
   
   for ( i=1;i<=78;i++)
      cout<<"_";
      cout<<endl;
   
}

void TimSinhVienTheoHoTen(SinhVien sv[], int n)
{
   char keyword[100] ;
   cout<<"Nhap ten sinh vien can tim :";
   cin.ignore(255,'\n');
   cin.getline(keyword,100);
   chuanhoa(keyword);
   int dem=0;
   for (int i=0;i<n;i++)
      if (strcmp(sv[i].HoTen,keyword)==0)
      {
         dem++;
         cout<<"\n----------------------------------------------\n";
         cout<<"MSSV              :"<<sv[i].MaSV<<endl;
         cout<<"Ho ten            :"<<sv[i].HoTen<<endl;
         cout<<"Nam Sinh          :"<<sv[i].NamSinh<<endl;
         cout<<"Que quan          :"<<sv[i].QueQuan<<endl;
         cout<<"Diem              :" <<sv[i].Diem<<endl;
         cout<<"Xep loai          :" <<sv[i].XepLoai<<endl;
      }
      if (dem>0)
      {
      cout<<"\n----------------------------------------------\n";
      cout<<"Tim thay  " <<dem<<" sinh vien co ten : "<<keyword<<endl;
      }
      else
         cout<<"Ko tim thay !!!";
}
void SapXepTheoDiem(SinhVien sv[], int n)
{
   for (int i=0;i<n;i++)
      for (int j=1;j<n;j++)
      {
         if (sv[i].Diem < sv[j].Diem)
            swap(sv[i] , sv[j]);
         else if (sv[i].Diem == sv[j].Diem)
         {
            if (strcmp(sv[i].MaSV , sv[j].MaSV)==1)
            swap(sv[i] , sv[j]);
         }
      }
}

int main()
{
   SinhVien sv[100];
   
   int n;
   cout<<"Nhap so luong sinh vien :";
   cin>>n;
   NhapDSSinhVien(sv,n);
   SapXepTheoDiem(sv,n);
   system("cls");
   XuatDS(sv,n);
   TimSinhVienTheoHoTen(sv,n);

return 0;   

   }

bài của rex sau khi sửa lại đôi chút giờ có thể chạy tốt trên VC6 rùi đó mấy cái lỗi cũng ko còn và điểm cũng xếp ok và thêm cái xếp loại xuất sắc mà rex còn thiếu ở bài trên!!!



Số lần được cảm ơn : Message reputation : 100% (1 vote)


[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 2:49 pm

luachonmotvisao_56
Userluachonmotvisao_56 Người này hiện đang:
Level: Ma Mới
Danh vọng:3


Ma Mới

luachonmotvisao_56

Ma Mới

Giới tính : Nữ
Đến từ : phú yên
Join : 30/12/2009
Bài gửi : 3
HUMOR : xem phim

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
sao minh copy hoai ko dc nhi



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 EmptySun May 30, 2010 4:15 pm

blackrose4s
Userblackrose4s Người này hiện đang:
Level: Người Nhà
Danh vọng:312


Người Nhà

blackrose4s

Người Nhà

Giới tính : Nam
Đến từ : không gian
Join : 10/11/2009
Bài gửi : 312
HUMOR : không rõ ràng

Thú cưng
.:

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 
luachonmotvisao_56 đã viết:
sao minh copy hoai ko dc nhi

Mong rằng Chúa sẽ giúp bạn Crying or Very sad



[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010 Empty

UserSponsored content Người này hiện đang:
Level:
Danh vọng:



Sponsored content

Bài gửiTiêu đề: Re: [HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

 


 

[HOT] Giải ĐỀ THI MẪU trong đề cương ôn tập C++ 2010

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 2 trangChuyển đến trang : 1, 2  Next

Permissions in this forum:Bạn không có quyền trả lời bài viết
ITK35Zone :: Học tập :: Lưu trữ (năm 1) :: Tin học đại cương-
 
Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất