Liệt kê số lượng các ký tự trong chuỗi.

Đây là bài liệt kê các loại ký tự trong một chuỗi cho trước, ví dụ:nhập vào “abcabchhh” kết quả ‘a’: 2; ‘b’: 2; ‘c’:2; ‘h’:3
Bài này có nhiều cách viết, ở đây tôi post 2 cách,các bạn có thể tham khảo:
//dem so luong cac ky tu trong chuoi, cách 1
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
//clrscr();
char *str, x;
int i, j, d;

str=(char*)malloc(100*sizeof(char));

printf(“Nhap chuoi can xu ly: “);
fflush(stdin);
gets(str);
printf(“\nChuoi ban dau: %s”, str);

for(i=0;i<strlen(str);i++)
{
x=str[i];//phan tu dang xet
for(j=i-1;j>=0;j–)//ktra x voi doan da xet roi
if(str[j]==x)//neu x trung voi mot trong cac pt da xet
break;//thi thoat, ko can kt nua luc do j>=0
if(j<0)//neu j<0 tuc la x ko trung voi phan tu da xet nao
{
d=1;//khi do tien hanh dem so luong cua x
for(j=i+1;j<strlen(str);j++)//bang cach duyet ve cuoi day
if(x==str[j])//neu co phan tu giong x
d++;//thi d++
printf(“\n%c = %d”, str[i], d);//in ket qua ra
}
else //neu j>=0 thi x da dc xet roi,
continue; //ta bo qua buoc i nay, tuc la ko xet x nua
}
getch();
return 0;
}
//dem so luong cac ky tu trong chuoi cach lam 2
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char str[100], x;
char y[100];
int i, j, d;

printf(“Nhap chuoi can xu ly: “);
fflush(stdin);
gets(str);
printf(“\nChuoi ban dau: %s”, str);

for(x=’!’;x<=’~’;x++)
{
d=0;
for(i=0;i<strlen(str);i++)
if(x==str[i])
d++;
if(d>0)
printf(“\n’%c’ = %d”, x, d);
}
printf(“Nhap chuoi kiem tra: “);
fflush(stdin);
gets(y);
if(strstr(str,y)!=NULL)
printf(“\nTu: %s co trong chuoi: %s”, y, str);
else
printf(“\nTu: %s khong co trong chuoi: %s”, y, str);
getch();
return 0;
}

November rain

Tháng mười một đến cùng với cái se lạnh của rét đầu mùa. Bạn ngồi một mình bên tách café đắng ngắt. Bạn nhìn qua khung cửa của cái quán tồi tàn, cái quán nhỏ thực sự tồi tàn với vài cái bàn cùng mấy cái ghế cũ kỹ, có vài chiếc còn gẫy chân nằm chỏng chơ ở góc quán. Mưa tháng mười một tí tách rơi. Mưa tháng mười một thật khó tả, nó đem lại cho bạn nhiều cảm xúc lộn xộn. Chốc chốc bạn nghĩ về quá khứ, về hiện tại, về tương lai. Chốc chốc bạn nghĩ về bạn bè, gia đình, về ly café đắng ngắt, về… mọi thứ. Nhạc từ quán phát ra bập bùng, bạn nghe tiếng ghi ta réo rắt, tiếng Rose trầm ấm “And it’s hard to hold a candle In the cold November rain”, …. Ồ thật là khó khăn khi phải giữ ngọn nến trong cơn mưa tháng mười một. Bạn thấy mọi thứ thật khó khăn, không dễ dàng để bạn vượt qua. Mọi thứ đến rồi đi. Đúng là “Nothing lasts forever, even cold November rain”…..

Đề cương ôn tập một số môn K1-2011-2012

Gửi các bạn đề cương ôn tập một số môn học kỳ 1 năm học 2011-2012.
Lưu ý: Đề cương có thể thay đổi một số câu hỏi.
http://www.mediafire.com/?sosuxaja1au692d
Lập trình Windows-còn thiếu chút nữa cá bạn nhá.
http://www.mediafire.com/?gbqvn23dcej9f95

Chuẩn đầu ra và tài liệu một số môn học ngành CNTT.

Gửi các bạn chuẩn đầu ra và chương trình đào tạo theo tín chỉ ngành CNTT- ĐH Hàng Hải.
http://www.mediafire.com/?rcbucqldscn2y7d
Và tài liệu một số môn học ngành CNTT: Lập trình C, Cấu trúc dữ liệu, Phân tích, thiết kế và đánh giá thuật toán, Lập trình Hướng đối tượng, …
http://www.mediafire.com/?ahi635uf4hx0t25

Gửi các bạn sắp thi lại môn C

Môn Lập trình C là môn học không dễ, nếu không muốn nói là khó nếu ta tìm hiểu sâu. Tuy nhiên, trong phạm vi môn học này ở trường thì tương đối dễ dàng để có thể đạt điểm >=7. Vậy tại sao các bạn vẫn rất khó khăn và có phần sợ khi thi môn này??? Bằng chứng là danh sách học lại có tới 57 bạn đăng ký, ngoài ra không kể các bạn khác chưa đăng ký. Khóa 51 cũng sẽ có số lượng tương tự hoặc hơn.
Vấn đề mấu chốt tôi có thể chốt lại cho các bạn như sau:
1. Các bạn không chịu khó thực hành (vấn đề lớn)
2. Không xác định được ôn tập ở phần nào (cứ đề cương thầy cho mà phang tới tấp, 9-10 thì thầy không chắc nhưng 7-8 thì dễ như là chơi Picachu)
3. Quá lo lắng nên không đọc kỹ đề khi thi (cứ bình tĩnh, có ai ăn thịt các bạn đâu nhỉ)
4. …… để thầy tìm tiếp xem nguyên nhân là gì nhá
Giải pháp đây:
1. Ôn tập phần mảng kỹ: cái này thì nhiều vấn đề nhưng các em khỏi lo đi, cứ làm được trọn vẹn phần NHẬP, XUẤT mảng là đã được điểm rồi mà (nhớ nhá: NHẬP, XUẤT mảng 1 chiều, 2 chiều-tức là ma trận đó). Còn các vấn đề khác như sắp xếp, tìm kiếm, thống kê, … tính sau.
2. Ôn tập phần cấu trúc rất kỹ: cái này dễ nhất, dễ làm, dễ kiếm điểm. Các em cứ KHAI BÁO một cấu trúc theo đề thi (cho bao nhiêu thông tin thì khai báo bấy nhiêu trường), viết hàm NHẬP một danh sách các cấu trúc, XUẤT một sanh sách các cấu trúc – tức là nhập xuất một cái mảng 1 chiều ấy mà. Phần tìm kiếm, thống kê, sắp xếp nữa.
3. File : ghi dữ liệu vào file (file text cho dễ) – làm luôn trong phần XUẤT danh sách cho nhanh
4. Các phần khác như tính tổng S, đếm số từ trong xâu, đếm số ký tự khác nhau trong xâu, …
Nếu 1, 2, 3 mà làm ok thì đã được khoảng 5 điểm rồi + điểm x nữa là đạt >=5.5 vậy là qua, đúng chưa nhỉ????
Chúc các bạn thi tốt.

Buồn cho bài thi Hướng đối tượng.

Đề thi và đề cương giống nhau tới 90% mà các bạn làm sao mà hay thế không biết???
Sửa lỗi sai của một cái đoạn chương trình con con mà cuối cùng lại nhét thêm một đống lỗi nữa vào chương trình. Thật chả biết như thế nào nữa.
Các bạn rất hay viết như thế này:
1. mail, Main, maid (main cơ mà); If, For, Return, Public, Void (if, for, return, public, void cơ mà);
2. thứ tự đặt public, private, protected đâu có quan trọng thế mà nhiều bạn lại bảo lỗi chương trình sai vì phải đặt private lên trước public.
3. hàm khởi tạo, hủy bỏ phải trùng tên lớp, không có kiểu trả về, thuộc tính public, … thế mà cứ bắt chúng là private, rồi lại nhét tham số vào cho hàm hủy nữa chứ,
4. thầy không muốn liệt kê ra nữa
Chúc các bạn học tốt vào năm tới vậy.

Bài này giải quyết hầu hết các vấn đề DSLK trong OOP(tiếp)

//lop Stqck, queue
#include
#include
class Node
{
int data;
Node *next;
public:
Node(int dt, Node *next1)
{
data=dt;
next=next1;
}
friend class DSLK;
};
////////////////////////
class DSLK
{
Node *head;
int dem;
public:
DSLK()
{
head = NULL;
dem=0;
}
~DSLK();
void push_front(int d);
void pop_front();
void push_back(int d);
void pop_back();
int begin() const;
int end() const;
int size() const;
int empty() const;
};
////////////////////
DSLK::~DSLK()
{
Node *p=head;
while(p!=NULL)
{
head=head->next;
delete p;
p=head;
}
}
////////////////////
void DSLK::push_front(int d)//them so d vao dau
{
head=new Node(d,head);
dem++;
}
////////////////////
void DSLK::pop_front()//xoa phan tu o dau
{
Node *p=head;
if(p!=NULL)
{
head=head->next;
delete p;
dem–;
}
}
////////////////////
void DSLK::push_back(int d)
{
Node *p, *q;
if(head==NULL)
head=new Node(d,NULL);
else
{
q=head;
while(q->next!=NULL)
q=q->next;
p=new Node(d,NULL);
q->next=p;
}
dem++;
}
////////////////////
void DSLK::pop_back()//xoa phan tu o cuoi
{
Node *q, *p=head;
if(head !=NULL)
{
if(head->next==NULL)
head=NULL;
else
{
while (p->next!=NULL)
{
q=p;
p=p->next;
}
q->next=NULL;
}
delete p;
dem–;
}
}
////////////////////
int DSLK::begin() const
{
return head->data;
}
////////////////////
int DSLK::end() const
{
Node *p;
while(p->next !=NULL)
p=p->next;
return p->data;
}
////////////////////
int DSLK::size() const
{
return dem;
}
////////////////////
////////////////////
int DSLK::empty() const
{
return (dem==0);
}
////////////////////
////////////////////
class Queue:public DSLK
{
public:
Queue()
{
cout<<"\nQueue Constructor";
}
};
////////////////////
class Stack:public DSLK
{
public:
Stack()
{
cout<<"\nStack Constructor";
}
};
////////////////////
void main()
{
clrscr();
Queue q;
int d;
cout<<"\nTao Queue\n";
do
{
cout<>d;
if(d!=-1)
q.push_back(d);
}while (d!=-1);
cout<<"\nQueue vua tao\n";
while(!q.empty())
{
cout<<q.begin()<<" ";
q.pop_front();
}
getch();
clrscr();
Stack s;
cout<<"\nTao Stack\n";
do
{
cout<>d;
if(d!=-1)
s.push_front(d);
}while (d!=-1);
cout<<"\nStack vua tao\n";
while(!s.empty())
{
cout<<s.begin()<<" ";
s.pop_front();
}

getch();
}