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 | 

 

 GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyTue Jun 01, 2010 8:27 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 867523 cái ông thầy chơi ác! cho đề khó mà không cho thi trên máy bắt viết code bằng tay! vậy là em làm sai tè le luôn(về test mới thấy) GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 867523 ! tức quá về nhà ăn cơm không được ngồi giải đề thi GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 906512 => đã ra. Giờ mình post lên cho mấy u test giùm!
GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ ZL0.11753680_1_1
Code:

#include
#include
#include
using namespace std;
struct nhanvien
{
    char manv[6];
    char hoten[50];
    char quequan[20];
    unsigned int namsinh;
    unsigned int namvaolam;
};
//khai bao prototype
bool nhapnhanvien(nhanvien &nv,int i);
void nhapdsnhanvien(int n, nhanvien ds[]);
int timnhanvientheohoten (char ht[], nhanvien ds[],int n);
void indanhsach(nhanvien ds[],int n);
void chuanhoaten(char hoten[]);
//ham main
void main()
{
    nhanvien a[100];
    char ten[40];
    int n;
    cout<<"nhap tong so nhan vien: ";
    cin>>n;
    nhapdsnhanvien(n,a);
    indanhsach(a,n);
    cout<<"nhap ten nhan vien can tim: ";
    cin.ignore(255,'\\n');
    cin.getline(ten,40);
    chuanhoaten(ten);
    int i=timnhanvientheohoten(ten,a,n);
    if(i==-1) cout<<"khong tim thay nhan vien "<
    else cout<<"co nhan vien "<<<" trong danh sach\\n"<<<"\\t"
            <<<"\\t"
            <<<"\\t"
            <<<"\\t"
            <<
    cout<
   
}
//dinh nghia

bool nhapnhanvien(nhanvien &nv,int i)
{
    //nhap sinh vien
    cin.ignore(255,'\\n');
    cout<<"ho ten: ";
    cin.getline(nv.hoten,50);
    cout<<"Que quan: ";
    cin.getline(nv.quequan,20);
    cout<<"Nam sinh: ";
    cin>>nv.namsinh;
    cout<<"Nam vao lam: ";
    cin>>nv.namvaolam;
    //sinh ma nhan vien tu dong tang
    int a[5],j=4;
    switch(j)
    {
    case 4:a[j--]=i%10;
    case 3:a[j--]=(i%100)/10;
    case 2:a[j--]=((i%1000)/100);
    case 1:a[j--]=((i%10000)/1000);
    case 0:a[j--]=((i%100000)/10000);
    }
    for(j=0;j<5;j++)
        switch(a[j])
    {
    case 0:nv.manv[j]=48;break;
    case 1:nv.manv[j]=49;break;
    case 2:nv.manv[j]=50;break;
    case 3:nv.manv[j]=51;break;
    case 4:nv.manv[j]=52;break;
    case 5:nv.manv[j]=53;break;
    case 6:nv.manv[j]=54;break;
    case 7:nv.manv[j]=55;break;
    case 8:nv.manv[j]=56;break;
    }
    nv.manv[5]='\\0';
    //kiem tra nam sinh va nam bat dau di lam
    if (nv.namsinh<1950||nv.namsinh>2000) return 0;
    if (nv.namvaolam>2010) return 0;
    //kiem tra tuoi bat dau lam
    int tuoi=nv.namvaolam-nv.namsinh;
    if (tuoi<18||tuoi>60) return 0;
    //chuan hoa ten
        chuanhoaten(nv.hoten);
        chuanhoaten(nv.quequan);
    return 1;
}
void nhapdsnhanvien(int n, nhanvien ds[])
{
    nhanvien tmp;
    int i=0;
    do
    {
        cout<<"nhap nhan vien thu "<<
        if(nhapnhanvien(tmp,i+1))
            ds[i++]=tmp;
    }
    while(i
}
int timnhanvientheohoten (char ht[], nhanvien ds[],int n)
{
    for(int i=0;i
        if(strcmp(ht,ds[i].hoten)==0) return i;
    return -1;
}
void indanhsach(nhanvien ds[],int n)
{
    for (int i=1;i<=78;i++)
        cout<<"_";
    cout<
    cout<<"| Ma NV |"<<"        Ho Ten      |"<<"  Nam Sinh  |"<<"    Que Quan    |"<<"  Nam vao lam  |\\n";
    for (i=1;i<=78;i++)
        cout<<"_";
    cout<
    for (i=0;i
    {
        cout<<"|"<<<<"|"
            <<<<"|"
            <<<<"|"
            <<<<"|"
            <<<<"|\\n";
    }
   
    for (i=1;i<=78;i++)
        cout<<"_";
        cout<

}
void chuanhoaten(char hoten[])
{
        while (hoten[0]==' ') for(int i=0;i
            hoten[i]=hoten[i+1];
    //
    for(int i=0;i
        while ((hoten[i]==' ')&&(hoten[i+1]==' '))
        {
            for(int j=i;j
                hoten[j]=hoten[j+1];
        }
        while(hoten[(strlen(hoten))-1]==' ') hoten[(strlen(hoten))-1]='\\0';
//
    strupr(hoten);
    strlwr(hoten+1);
    for(int k=0;k
        if (hoten[k]==' ')
        {
            strupr(hoten+k+1);
            strlwr(hoten+k+2);
        }
}

huhu không chịu đâu! ước gì được thêm cỡ 10 phút thì đâu có sai như vậy huhu!



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyTue Jun 01, 2010 10:26 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Báo cáo chị Yến Xào là phần khai báo thư viện của chị ngộ mất rồi kìa! sửa lại đi



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyTue Jun 01, 2010 10:55 pm

congtu_ngaitu91
Usercongtu_ngaitu91 Người này hiện đang:
Level: Thành Viên Thường Trực
Danh vọng:68


Thành Viên Thường Trực

congtu_ngaitu91

Thành Viên Thường Trực

Giới tính : Nam
Đến từ : ngãi tứ
Join : 12/12/2009
Bài gửi : 68
HUMOR : mọi thứ

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
post len lam j nua~ t thi lai rui` .chan' nhu con gian'



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyTue Jun 01, 2010 11:11 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Hay lắm Yến...Có như vậy mới làm được một IT chuyên nghiệp,... hâm mộ pà quá, môn này tui ráng thi cho qua. chứ cũng không quá đạt nặng như vậy. Cố lên!! Congratulation!!!



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 7:52 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Code:


#include <iostream>
#include<cstring>
#include <iomanip>
using namespace std;
struct nhanvien
{
    char manv[6];
    char hoten[50];
    char quequan[20];
    unsigned int namsinh;
    unsigned int namvaolam;
};
//khai bao prototype
bool nhapnhanvien(nhanvien &nv,int i);
void nhapdsnhanvien(int n, nhanvien ds[]);
int timnhanvientheohoten (char ht[], nhanvien ds[],int n);
void indanhsach(nhanvien ds[],int n);
void chuanhoaten(char hoten[]);
//ham main
void main()
{
    nhanvien a[100];
    char ten[40];
    int n;
    cout<<"nhap tong so nhan vien: ";
    cin>>n;
    nhapdsnhanvien(n,a);
    indanhsach(a,n);
    cout<<"nhap ten nhan vien can tim: ";
    cin.ignore(255,'\n');
    cin.getline(ten,40);
    chuanhoaten(ten);
    int i=timnhanvientheohoten(ten,a,n);
    if(i==-1) cout<<"khong tim thay nhan vien "<<ten;
    else cout<<"co nhan vien "<<ten<<" trong danh sach\n"<<a[i].manv<<"\t"
            <<a[i].hoten<<"\t"
            <<a[i].namsinh<<"\t"
            <<a[i].quequan<<"\t"
            <<a[i].namvaolam<<endl;
    cout<<endl;
   
}
//dinh nghia

bool nhapnhanvien(nhanvien &nv,int i)
{
    //nhap sinh vien
    cin.ignore(255,'\n');
    cout<<"ho ten: ";
    cin.getline(nv.hoten,50);
    cout<<"Que quan: ";
    cin.getline(nv.quequan,20);
    cout<<"Nam sinh: ";
    cin>>nv.namsinh;
    cout<<"Nam vao lam: ";
    cin>>nv.namvaolam;
    //sinh ma nhan vien tu dong tang
    int a[5],j=4;
    switch(j)
    {
    case 4:a[j--]=i%10;
    case 3:a[j--]=(i%100)/10;
    case 2:a[j--]=((i%1000)/100);
    case 1:a[j--]=((i%10000)/1000);
    case 0:a[j--]=((i%100000)/10000);
    }
    for(j=0;j<5;j++)
        switch(a[j])
    {
    case 0:nv.manv[j]=48;break;
    case 1:nv.manv[j]=49;break;
    case 2:nv.manv[j]=50;break;
    case 3:nv.manv[j]=51;break;
    case 4:nv.manv[j]=52;break;
    case 5:nv.manv[j]=53;break;
    case 6:nv.manv[j]=54;break;
    case 7:nv.manv[j]=55;break;
    case 8:nv.manv[j]=56;break;
    }
    nv.manv[5]='\0';
    //kiem tra nam sinh va nam bat dau di lam
    if (nv.namsinh<1950||nv.namsinh>2000) return 0;
    if (nv.namvaolam>2010) return 0;
    //kiem tra tuoi bat dau lam
    int tuoi=nv.namvaolam-nv.namsinh;
    if (tuoi<18||tuoi>60) return 0;
    //chuan hoa ten
        chuanhoaten(nv.hoten);
        chuanhoaten(nv.quequan);
    return 1;
}
void nhapdsnhanvien(int n, nhanvien ds[])
{
    nhanvien tmp;
    int i=0;
    do
    {
        cout<<"nhap nhan vien thu "<<i+1<<endl;
        if(nhapnhanvien(tmp,i+1))
            ds[i++]=tmp;
    }
    while(i<n);
}
int timnhanvientheohoten (char ht[], nhanvien ds[],int n)
{
    for(int i=0;i<n;i++)
        if(strcmp(ht,ds[i].hoten)==0) return i;
    return -1;
}
void indanhsach(nhanvien ds[],int n)
{
    for (int i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    cout<<"| Ma NV |"<<"        Ho Ten      |"<<"  Nam Sinh  |"<<"    Que Quan    |"<<"  Nam vao lam  |\n";
    for (i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    for (i=0;i<n;i++)
    {
        cout<<"|"<<setw(7)<<ds[i].manv<<"|"
            <<setw(20)<<ds[i].hoten<<"|"
            <<setw(13)<<ds[i].namsinh<<"|"
            <<setw(17)<<ds[i].quequan<<"|"
            <<setw(15)<<ds[i].namvaolam<<"|\n";
    }
   
    for (i=1;i<=78;i++)
        cout<<"_";
        cout<<endl;

}
void chuanhoaten(char hoten[])
{
        while (hoten[0]==' ') for(int i=0;i<strlen(hoten);i++)
            hoten[i]=hoten[i+1];
    //
    for(int i=0;i<strlen(hoten);i++)
        while ((hoten[i]==' ')&&(hoten[i+1]==' '))
        {
            for(int j=i;j<strlen(hoten);j++)
                hoten[j]=hoten[j+1];
        }
        while(hoten[(strlen(hoten))-1]==' ') hoten[(strlen(hoten))-1]='\0';
//
    strupr(hoten);
    strlwr(hoten+1);
    for(int k=0;k<strlen(hoten);k++)
        if (hoten[k]==' ')
        {
            strupr(hoten+k+1);
            strlwr(hoten+k+2);
        }
}



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 8:22 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Trích dẫn :
post len lam j nua~ t thi lai rui` .chan' nhu con gian'
yến post lên phòng hờ có thi lại thì onl kiếm code mà học chứ kì trước thi xoá mất code luôn:( làm lại thấy bà cố tổ. lúc thi yến cũng làm sai từa lưa hột dưa luôn mà!
@ Phạm Nông: chị đã sửa lại code òi. do copy và past nó ăn luôn của chị mấy string nên code trước đọc hiểu chết liền. do lỗi copy ấy mà.
@kim_o: không phải yến giỏi đâu tại thi hk đc nên ấm ước làm cho ra ấy mà! hichic! một phần chắc cũng do khi viết xong một chương trình gì đó mà chạy là trong lòng thấy zui zui sao sao á! cho dù đó là một chương trình con nít cũng biết viết! cứ ra bảng f5 đen thui kia là zui òi GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 168320
@all: mấy u thấy code mình sai nhớ chỉ giáo mình nhá! hichic!



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 8:42 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
tao phục mày wa' xào...cỡ tao chắc thi xong là hết.ko thích code lắm,



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 9:25 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
for(j=0;j<5;j++)
switch(a[j])
{
case
0:nv.manv[j]=48;break;
case 1:nv.manv[j]=49;break;
case
2:nv.manv[j]=50;break;
case 3:nv.manv[j]=51;break;
case
4:nv.manv[j]=52;break;
case 5:nv.manv[j]=53;break;
case
6:nv.manv[j]=54;break;
case 7:nv.manv[j]=55;break;
case
8:nv.manv[j]=56;break;
}

khúc này làm j vậy Yến Very Happy



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 9:41 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
haiz bó tay với nhỏ Yến luôn viết code mình test chạy đúng mà ko bít sao đúng!!!
thắc mắt chỗ giống như regulus áh!!!khó hỉu quá!!!



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyWed Jun 02, 2010 11:12 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: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
nhìn hơn giống mã ACSI của các số
mà sao hem có 0 2 4 6 8

Theo mình thì bài này tách ra từng số của i
rùi xài chèn vào xâu bằng cách ép kiểu (char) (i+48)



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyFri Jun 04, 2010 7:27 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
à khúc đó là chuyển từ kiểu int ra kiểu char đó! khi a[i]=0 thì nó sẽ chuyển thành 48. xuất ra màn hình thì vẫn là số 0. vì số 0 trong bảng mã ascii là 48 mừ. mấy cái case khúc sau tương tự thui à!.
Theo bạn Hải góp ý hồi sáng thì mình có thể rút gọn code bằng cách ép kiểu. đỡ tốn công viết cái switch khúc sau mấy bạn thắc mắc nhưng cái switch lúc đầu thì char(...)+48.
... có nghĩa là copy khúc trước vô!
chưa test trên vs6 hihi. để ý thử òi post sau nhé mấy bạn thông củm.
còn bạn hải hỏi hk có mấy số 0,2,4,6,8 mình hk hiểu câu hỏi lém!
all: thanks đã góp ý! khakha



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyFri Jun 04, 2010 8:01 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Code:

switch(j)
    {
    case 4:a[j--]=i%10;
    case 3:a[j--]=(i%100)/10;
    case 2:a[j--]=((i%1000)/100);
    case 1:a[j--]=((i%10000)/1000);
    case 0:a[j--]=((i%100000)/10000);
    }
    for(j=0;j<5;j++)
        nv.manv[j]=(char)(a[j]+48);


Trích dẫn :

switch(j)
{
case 4:nv.manv[j--]=(char)i%10+48;
case 3:nv.manv[j--]=(char)(i%100)/10+48;
case 2:nv.manv[j--]=(char)(i%1000)/100+48;
case 1:nv.manv[j--]=(char)(i%10000)/1000+48;
case 0:nv.manv[j--]=(char)(i%100000)/10000+48;

}



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyFri Jun 04, 2010 8:03 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
đây là 2 cách cho code gọn hơn. các bạn test thử.
c1 bỏ switch thứ 2 thay thế bằng vòng lặp for
c2
bỏ hết 2 switch thay thế bằng switch trên là ok
mời các bạn test thử và tiếp tục đóng góp ý kiến cho code càng gọn càng tốt để mà đem phao vô phòng thi. haha
cái code bạn hải hỏi thiếu một dòg òi mấy bạn hk phát hiện ra hihi! mình hk thể nào mà sửa đc nên post đây đỡ zị
Code:
case 9:nv.manv[j]=57;break;



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySat Jun 05, 2010 12:03 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 đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Yến vừa xinh đẹp lại học giỏi Very Happy . Biết bao giờ mình mới được như Yến đây ???? Shocked



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySat Jun 05, 2010 8:30 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
sau một hồi đọc lại code mình thấy code dài và khó nhớ. với lại học thuộc cũng khó. mình mới rút 2 switch kia thành một vòng lặp for cho mã tự tăng. bài này là mã tự tăng ngắn nhất trong những code mình viết. mong các bạn góp ý tiếp cho code ngày càng ngắn! và nhờ các bạn test code giùm luôn có trục trặc gì nhớ rú mình nha. có sai nhờ các bạn sửa giùm luôn thể! hihi
Code:

#include <cmath>
#include <iostream>
#include<cstring>
#include <iomanip>
using namespace std;
struct nhanvien
{
    char manv[6];
    char hoten[50];
    char quequan[20];
    unsigned int namsinh;
    unsigned int namvaolam;
};
//khai bao prototype
bool nhapnhanvien(nhanvien &nv,int i);
void nhapdsnhanvien(int n, nhanvien ds[]);
int timnhanvientheohoten (char ht[], nhanvien ds[],int n);
void indanhsach(nhanvien ds[],int n);
void chuanhoaten(char hoten[]);
//ham main
void main()
{
    nhanvien a[100];
    char ten[40];
    int n;
    cout<<"nhap tong so nhan vien: ";
    cin>>n;
    nhapdsnhanvien(n,a);
    indanhsach(a,n);
    cout<<"nhap ten nhan vien can tim: ";
    cin.ignore(255,'\n');
    cin.getline(ten,40);
    chuanhoaten(ten);
    int i=timnhanvientheohoten(ten,a,n);
    if(i==-1) cout<<"khong tim thay nhan vien "<<ten;
    else cout<<"co nhan vien "<<ten<<" trong danh sach\n"<<a[i].manv<<"\t"
            <<a[i].hoten<<"\t"
            <<a[i].namsinh<<"\t"
            <<a[i].quequan<<"\t"
            <<a[i].namvaolam<<endl;
    cout<<endl;
   
}
//dinh nghia

bool nhapnhanvien(nhanvien &nv,int i)
{
    //nhap sinh vien
    cin.ignore(255,'\n');
    cout<<"ho ten: ";
    cin.getline(nv.hoten,50);
    cout<<"Que quan: ";
    cin.getline(nv.quequan,20);
    cout<<"Nam sinh: ";
    cin>>nv.namsinh;
    cout<<"Nam vao lam: ";
    cin>>nv.namvaolam;
    //sinh ma nhan vien tu dong tang
    for(int j=0;j<5;j++) nv.manv[j]=(char)i%(int)pow(10,5-j)/pow(10,4-j)+48;
 
nv.manv[5]='\0';
    //kiem tra nam sinh va nam bat dau di lam
    if (nv.namsinh<1950||nv.namsinh>2000) return 0;
    if (nv.namvaolam>2010) return 0;
    //kiem tra tuoi bat dau lam
    int tuoi=nv.namvaolam-nv.namsinh;
    if (tuoi<18||tuoi>60) return 0;
    //chuan hoa ten
        chuanhoaten(nv.hoten);
        chuanhoaten(nv.quequan);
    return 1;
}
void nhapdsnhanvien(int n, nhanvien ds[])
{
    nhanvien tmp;
    int i=0;
    do
    {
        cout<<"nhap nhan vien thu "<<i+1<<endl;
        if(nhapnhanvien(tmp,i+1))
            ds[i++]=tmp;
    }
    while(i<n);
}
int timnhanvientheohoten (char ht[], nhanvien ds[],int n)
{
    for(int i=0;i<n;i++)
        if(strcmp(ht,ds[i].hoten)==0) return i;
    return -1;
}
void indanhsach(nhanvien ds[],int n)
{
    for (int i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    cout<<"| Ma NV |"<<"        Ho Ten      |"<<"
Nam Sinh  |"<<"    Que Quan    |"<<"  Nam vao lam  |\n";
    for (i=1;i<=78;i++)
        cout<<"_";
    cout<<endl;
    for (i=0;i<n;i++)
    {
        cout<<"|"<<setw(7)<<ds[i].manv<<"|"
            <<setw(20)<<ds[i].hoten<<"|"
            <<setw(13)<<ds[i].namsinh<<"|"
            <<setw(17)<<ds[i].quequan<<"|"
            <<setw(15)<<ds[i].namvaolam<<"|\n";
    }
   
    for (i=1;i<=78;i++)
        cout<<"_";
        cout<<endl;

}
void chuanhoaten(char hoten[])
{
        while (hoten[0]==' ') for(int i=0;i<strlen(hoten);i++)
            hoten[i]=hoten[i+1];
    //
    for(int i=0;i<strlen(hoten);i++)
        while ((hoten[i]==' ')&&(hoten[i+1]==' '))
        {
            for(int j=i;j<strlen(hoten);j++)
                hoten[j]=hoten[j+1];
        }
        while(hoten[(strlen(hoten))-1]==' ') hoten[(strlen(hoten))-1]='\0';
//
    strupr(hoten);
    strlwr(hoten+1);
    for(int k=0;k<strlen(hoten);k++)
        if (hoten[k]==' ')
        {
            strupr(hoten+k+1);
            strlwr(hoten+k+2);
        }
}



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySat Aug 14, 2010 9:18 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
bạn nào thi lại c++ thì task này có thể tham khảo. chúc các bạn thành công. vì bị sốt rồi nên hk lên send được nữa. xin lỗi nhé. không thì qua blogplus mình lấy link mediafire mà down về
một lần nữa chúc các bạn thành công
quánh dấu kí tên
Cout Yan



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySat Aug 14, 2010 10:30 pm

avatar
Usernhocbap1514 Người này hiện đang:
Level: Ma Mới
Danh vọng:12


Ma Mới

nhocbap1514

Ma Mới

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

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Thấy các em code giỏi vậy sao làm bài thấp vậy GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 484559

Giấu nghề hả GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 542366



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySun Aug 15, 2010 8:53 am

Yuki
UserYuki Người này hiện đang:
Level: Người Nhà
Danh vọng:295


Người Nhà

Yuki

Người Nhà

Giới tính : Nam
Đến từ : An Giang
Join : 19/11/2009
Bài gửi : 295
HUMOR : nge nhạc,doc truyen,choi game va....judo :P

Thú cưng
.:

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
có nghề đâu mà giấu a GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 830844 GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 830844



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySun Aug 15, 2010 7:22 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
hk phải đâu anh. làm bài thi code trên giấy hk có phím f7 anh ơi. mà điểm cuối kì em nghi thầy chấm điểm lộn nữa mà hihi. chứ hk phải dấu nghề đâu. mà đầu óc em bả nho thân bả đậu sao mà dấu được. phải học hỏi mấy anh nhiều lắm hihi



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptySun Aug 15, 2010 7:27 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
à quên dặn mấy bác nữa. mấy bác thi lại lấy code cuối cùng cho nó ngắn học thuộc cho nó dễ nha mấy bác. chúc các bác thi thành công. thi xong điểm cao nhớ kao mình chầu kem nha. GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 732193



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyMon Aug 16, 2010 1:57 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 đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Bài của Yến sao tui copy dô Cltr + F5 nó không chạy mờ báo 20 error(s), 1 warning(s) GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 360287

Hu hu ngày mai là thi lại rồi ! Chắc tui cắn lưỡi quá ! GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ 867523 Chép hết bài của Yến dô liệu có được không ?



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ EmptyMon Aug 16, 2010 8:05 pm

xiao_yan69
Userxiao_yan69 Người này hiện đang:
Level: Banned User
Danh vọng:312


Banned User

xiao_yan69

Giới tính : Nữ
Đến từ : k35 lớp CNTT1
Join : 08/11/2009
Bài gửi : 312
HUMOR : 大學生

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 
Trích dẫn :
Bài của Yến sao tui copy dô Cltr + F5 nó không chạy mờ báo 20 error(s), 1 warning(s)
bạn cho hỏi bạn dùng chương trình gì để build vậy? mình dùng vs6 có lẽ bạn dùng vs2005 nó chắc nó bị error chỗ đó hay là bạn chép thiếu cái j đó vào để build. bạn vô blog mình lấy link tải về test lại thử xem. nếu có error hay waining bạn hãy ghi lại và post lên mình giải đáp cho nếu mình biết
Trích dẫn :
Hu hu ngày mai là thi lại rồi ! Chắc tui cắn lưỡi quá ! Chép hết bài của Yến dô liệu có được không ?
nếu thầy cho i trang đề thì bạn cứ việc chép hk vấn đề j cảSmile còn hk giống bạn chép thì mình chỉ bó tay .com



GIẢI ĐỀ THI CHÍNH THỨC MÔN C++ Empty

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



Sponsored content

Bài gửiTiêu đề: Re: GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

 


 

GIẢI ĐỀ THI CHÍNH THỨC MÔN C++

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

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