PDA

View Full Version : lập trình C++[HELP ME]



Cruella_Devil
02-05-2009, 16:54
1/Viêt chương trình đếm các chữ cái,các chữ só chứa trong một têp văn bản(tệp có bao nhiêu chữ cái A,...,Z;bao nhiêu chữ số 0,...,9)
2/Viết chương trình tạo 1 tệp văn bản chứa Tên,Địa Chỉ,Lương(1 thứ chiếm 1 dòng),sau đó chương trình sẽ đọc lại tệp này để in ra màn hình nội dung trên nhưng là trên 1 dòng cho 1 người.
3/Viết chương trình đếm số dòng,đếm số ký tự của 1 tệp văn bản.

Các bác giúp nha.3 bài này trông vậy thôi nhưng để viết và chạy chính xác là cả 1 vấn đề.Cảm ơn nha....

[=========> Bổ sung bài viết <=========]

bài hay đấy chắc phải nhờ đến các giáo sư lập trình.hx hx

binprolab
03-05-2009, 11:47
1.
#include <iostream>
#include <sstream>
#include <fstream>

using namespace std;

int main() {
int check[25];
for (int i=0; i<25; i++)
check[i] = i+65;
int dem[25];
for (int i=0; i<25; i++)
dem[i] = 0;
ofstream fo("output.txt");
fo << "CONG HOA XA HOI CHU NGHIA VIET NAM";
fo.close();
ifstream fi("output.txt");
string s;
while (fi >> s)
for (int i=0; i<s.length();i++)
for (int j=0;j<25;j++)
if((int)s[i] == check[j])
dem[check[j]-65] = dem[check[j]-65] + 1;
fi.close();
ofstream fo2("input.txt");
for (int i=0; i<25; i++)
fo2 << (char)check[i] << " " << dem[i] << endl;
fo2.close();
}

output.txt là tệp văn bản cần đọc. input.txt là kết quả. Ở đây mình làm ví dụ với tệp văn bản ngắn: "CONG HOA XA HOI CHU NGHIA VIET NAM" đọc số lần xuất hiện của các chữ cái in hoa. Bạn có thể sửa lại để đọc các chữ cái in thường và số đếm đều tương tự. 2 bài tiếp theo rất dễ bạn cố gắng suy nghĩ nhé. Còn nhiều cách ngắn hơn nhưng mình nghĩ cách này là dễ hiểu nhất. Có gì thắc mắc bạn cứ hỏi nhé.

Cruella_Devil
03-05-2009, 16:22
cám ơn nhiều nha.Chạy được rồi đó.Mình hiểu vì sao chương trình mình ko chạy rồi.Bạn có thể giúp mình 2 bài tiếp ko?

binprolab
04-05-2009, 10:43
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

class NhanVien {
string name;
string address;
double credit;
public:
NhanVien() {
name = "";
address = "";
credit = 0;
}
NhanVien(string nam, string add, double cre) {
name = nam;
address = add;
credit = cre;
}
void inputFromUser() {
cin.ignore(1);
cout << "name: ";
getline(cin,name);
cout << "address: ";
getline(cin,address);
cout << "credit: ";
cin >> credit;
}
void output(ofstream &fo) {
fo << name << endl;
fo << address << endl;
fo << credit << endl;
}
void inputFromFile(ifstream &fi) {
getline(fi,name);
getline(fi,name);
getline(fi,address);
fi >> credit;
}
void display() {
cout << setfill(' ') << setw(30) << left << name
<< " " << setfill(' ') << setw(10) << left << address
<< " " << setfill(' ') << setw(20) << left << credit << endl;
}
};


int main() {
NhanVien *nv = NULL;
int n = 0;
char choice;
do {
system("CLS");
cout << "\t==========MENU==============" << endl;
cout << "\t1.List Nhan Nhien" << endl;
cout << "\t2.inputFromUser" << endl;
cout << "\t3.Exit" << endl;
cout << "\t please 1,2 or 3 to exit: ";
cin >> choice;
switch (choice) {
case '1': {
ifstream fi("NhanVien.txt");
fi >> n;
nv = new (nothrow) NhanVien[n];
for (int i=0; i<n; i++)
nv[i].inputFromFile(fi);
fi.close();
for (int i=0; i<n; i++)
nv[i].display();
break;
}
case '2': {
cout << "So luong Nhan Vien: ";
cin >> n;
nv = new (nothrow) NhanVien[n];
for (int i=0; i<n; i++)
nv[i].inputFromUser();
break;
}
case '3': {
ofstream fo("NhanVien.txt");
fo << n << endl;
for (int i=0; i<n; i++)
nv[i].output(fo);
fo.close();
break;
}
default :
break;
}
} while (choice !='3');

return 0;
}

bài 2 của bạn. bài này mình tổng quát hóa lên để bạn có thể áp dụng vào những bài sau này. Có cả Menu lựa chọn.Làm hướng đối tượng theo đúng cách của C++.

[=========> Bổ sung bài viết <=========]


#include <iostream>
#include <fstream>
using namespace std;
int main() {
int demdong=0;
int demkitu=0;
string dong;
char kitu;
ifstream fi("NhanVien.txt");
while (getline(fi,dong))
demdong++;
fi.close();
ifstream fi2("NhanVien.txt");
while (fi2 >> kitu)
demkitu++;
fi2.close();
ofstream fo("output.txt");
fo << "so dong: " << demdong << endl;
fo << "so ki tu: " << demkitu << endl;
fo.close();
}
bài 3 của bạn. Ở phần đếm kí tự mình không biết đề bài của bạn có yêu cầu đếm cả kí tự trắng hay không. Bài này mình làm là không có đếm kí tự trắng. Nếu có đếm kí tự trắng thì cũng không khó thêm một vài lệnh if vào là được bạn tự làm nhé.