9.21.2012

[C++ Hướng đối tượng] Code mẩu bài tập về nhà #3 :19.09

Ý tưởng: dùng mãng hai chiều. Chi tiết hơn -> hãy tham gia buổi học nhóm ngày mai: Ca 2 , P205, CS1, Q7.


#include<iostream.h>
#include<conio.h>
#include<time.h>
#define r 22
void time_start()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
cout<<timeinfo ->tm_hour<<": ";
cout<<timeinfo ->tm_min<<": ";
cout<<timeinfo ->tm_sec;
}

int main()
{
char a[r][44],s1=30,s2=31,s3=0222;
for(int i=0;i<r;i++)
for(int j=0;j<44;j++)
a[i][j]=' ';
int n,mid,p=0,count;
R:system("cls");
cout<<"\t\t\t Home work #3 C++ 19.Sep.12\n";
cout<<"\t\tby Viet Trung - 05CDCT1 http://izone4u.blogspot.com/\n";
cout<<"\t IDE,CLR is powered by C-Free 5.0. All rights reserved\n";
cout<<"\t\t\t Welcome to Msys-Console\n";
cout<<"\t\t\t\t Clock ";time_start();
cout<<"\n--------------------------------------------------------------------------------\n";
cout<<"Nhap so dong [3-22]: ";
cin>>n;
if(n<2||n>22)
{
cout<<"\nFailed, Press any key to re-type !";
getch();
goto R;
}
mid=((n-1)*2+1)/2;
while(p<n)
{
//p++;//Xoa dong giua
for(int t=p;t<n;t++)
a[t][mid-p]='*';
for(int t=p;t<n;t++)
a[t][mid+p]='*';
p++;
};
for(int f=0;f<n;f++)
               count+=((n-1)*2+1)-(2*f);
system("cls");
cout<<”So sao da dung: “<<count<<endl;
cout<<"\nStyle 1 - "<<s1<<endl<<endl;
for(int i=0;i<n;i++)
for(int j=0;j<= mid*2;j++)
{
cout<<a[i][j];
if(j==mid*2) cout<<endl;
}
cout<<"\nStyle 2 - "<<s2<<endl<<endl;
for(int i=n-1;i>=0;i--)
for(int j=0;j<= mid*2;j++)
{
cout<<a[i][j];
if(j==mid*2) cout<<endl;
}
p=0;
while(p<n-1)
{
for(int t=p+1;t<n-1;t++)
a[t][mid-p]=' ';
for(int t=p+1;t<n-1;t++)
a[t][mid+p]=' ';
p++;
};
cout<<"\nStyle 3 - "<<s3<<endl<<endl;
for(int i=n-1;i>=0;i--)
for(int j=0;j<= mid*2;j++)
{
cout<<a[i][j];
if(j==mid*2) cout<<endl;
}
cout<<endl;
return 0;
}

9.16.2012

Những điều cần tránh trong lập trình C/C++


Bài sưu tầm từ WaltP
Lưu ý:  vì sự khác biệt ngôn ngữ và cách hành văn nên mình sẽ không dịch bài này và để các bạn tự dịch để nắm nội dung sâu sắc và sát hơn với ý của tác giả

C/C++ programmers are allowed to do some things they shouldn't. We are given functions that are supposed to be useful but aren't because of hidden faults, or taught ways to do things that are bad, wrong, not necessary. These posts will discuss many of these as time goes on.
The code in this collection of electronic bits is specifically written in C. I'm using the free Borland 5.5 compiler for the code. For any code that is designed to show the errors, your results may be a little different. But rest assured, the problem exists in many if not all compilers. And if most compilers show these anomalies, wouldn't you rather not use the feature even if it works on your current compiler?
Most of these functions from C exist as methods in C++. Not being a guru in C++, if anyone would like to contact me with the C++ equivalent, I will add the information to these posts.
Enjoy, and clean up your code!

gets()


You should never use gets(). Never. Never. Never. I hope I am being clear. NEVER!!

gets() is a function that misbehaves badly. It has no internal checks which means it will read anything you give it. Define a 10 character buffer and gets() will happily accept the Declaration of Independance as its input.

Here's an example. Create and build this program:

C/CPP/C++ Code Example:
#include <stdio.h>

int main()
{
    char  b1[] = "ABCD";
    char  b2[] = "LMNO";
    char  b3[] = "ZYXW";
   
    puts(b1);
    puts(b2);
    puts(b3);
    putchar('\n');
   
    puts("Enter some characters:");
    gets(b2);

    putchar('\n');
    puts(b1);
    puts(b2);
    puts(b3);
   
    return(0);
}
You will notice there are 3 character arrays of 5 characters each (don't forget about the '\0' at the end of each).

Now run the program and enter "1234" when prompted. My output:

Generic Code Example:
D:\C\GIDForums>gets
ABCDE
LMNOP
ZYXWV

Enter some characters:
1234

ABCDE
1234
ZYXWV

D:\C\GIDForums>
So far so good. Now run it again and enter all the numbers:

Generic Code Example:
D:\wjp\C\GIDForums>gets
ABCDE
LMNOP
ZYXWV

Enter some characters:
1234567890

90
1234567890
ZYXWV

D:\wjp\C\GIDForums>


Whoa! What happened to b1?!? Well, gets() just happily accepted what you typed in and put it into memory starting at b2 and didn't give one hoot about anything but reading the characters. gets() overwrote memory it shouldn't have.

Keep in mind your results may be a little different, but the concept is the same. This function is dangerous!!!. Play around with this program. Some of you will find it crashes. Some will find it will accept a *lot* of characters. Who knows what it's doing with your memory, what it's writing over?

Avoid gets() like it's the bubonic plague with a rickets chaser.

fgets()

Instead, use fgets():

C/CPP/C++ Code Example:
fgets(buffer, BufLength, stdin);
So in our program, use:

C/CPP/C++ Code Example:
puts("Enter some characters:");
fgets(b2, 5, stdin);  // 5 is the size of buffer b2
Not much harder, but much safer. fgets() will read up to BufLength-1 characters and stop. It will also stop if it reads a new-line '\n' which it unfortunately will place in the buffer. So there are 2 possible outcomes using fgets():

Outcome #1
You've entered exactly or more characters than the buffer holds. 
your buffer contains BufLength-1 characters

the input stream still contains the rest and will be read on the next fgets().

The characters in the input stream will have to be dealt with. See the fflush() discussion.

Outcome #2
You've entered fewer characters than the buffer holds.

your buffer contains BufLength-1 characters, including the '\n' at the end.

the input stream is empty.

The input stream is clean so you have no I/O problems. But that '\n' may have to be dealt with. To remove it, include string.h in your file and add a line:

C/CPP/C++ Code Example:
puts("Enter some characters:");
fgets(b2, 5, stdin);  // 5 is the size of buffer b2
if (b2[strlen(b2)-1] == '\n') b2[strlen(b2)-1] = '\0';
This if statement will test the last character (b2[strlen(b2)-1]) for the new-line and change it to a null.

To deal with both options at once to either remove the trailing '\n' or clear the buffer, whichever situation exists, define a dummy buffer of say 50 characters (you choose the size) and use this code:

C/CPP/C++ Code Example:
puts("Enter some characters:");
fgets(b2, 5, stdin);  // 5 is the size of buffer b2
if (b2[strlen(b2)-1] == '\n')
{   // full input line read
    b2[strlen(b2)-1] = '\0';  // remove the new-line
}
else
{   // parial input line read
    b2[0] = 0;  // empty the b2 buffer
    do
    {   // loop until the new-line is read
        fgets(dummy, 50, stdin);
        strcat(b2, dummy);  // Save input but be sure
                            // sure to test your buffer size
    } while (dummy[strlen(dummy)-1] != '\n');
}
OK, so it's not that easy. But it's better than having a program that will explode, isn't it? Anyway, just copy the code above and you'll be fine.

9.04.2012

Living Things : CD gốc+ Lyric + Vietsub

Living Things




Playlist Living Things, powered by ZingMP3 


Cái tên không còn xa lạ, đây chính là cơn bảo nhạc thứ năm mà Linkin Park đã đổ vào làng nhạc của thế giới, thế giới âm nhạc xáo trộn, mọi bảng xếp hạng đều có tên của họ,  liên tục nắm vị trí đầu bảng và top 5 trong các BXH âm nhạc uy tính trên thế giới như Billboard 200,...  Album phòng thu thứ năm này đã mang đến một sự mới mẽ trong cách chơi nhạc của Linkin Park. 
 \\Some info below is powered by tiin.vn
  Chất nhạc rock nu-metal mạnh mẽ với giọng gào thét thiên phú của Chester thì vẫn không bao giờ hết sự kích thích, kết hợp những âm thanh điện tử mới mẻ tạo nên một đĩa nhạc không thể nào hay hơn. Không nằm ngoài dự đoán, Living Things đang nằm hạng nhất hầu hết các BXH về nhạc rock ở Mỹ và cả vị trí quán quân tại BillBoard 200. Tại nhiều quốc gia như Anh, Đức…, album phòng thu thứ 5 của nhóm cũng đang đứng trên đỉnh vinh quang với những No.1 đáng giá.


Mổ xẻ cơn bão mang tên Living Things
Linkin Park
Không chỉ thành công về mặt doanh số, Living Things còn là câu trả lời cho tất cả fan hâm mộ về một Linkin Park luôn mới mẻ nhưng vẫn là chính mình. Như Mike Shinoda chia sẻ, album này là sự khẳng định chất nhạc “alt-metal-electro-rock”. Không một chút gì khoa trương, đĩa nhạc đúng như nhóm chia sẻ, nó sẽ gần gũi hơn với từng cá tính, tình cảm chứ không mang nặng những đề tài xã hội nữa. Có lẽ một phần vì thế mà Living Things đang được đón nhận hết sức nhiệt tình chăng?!
Cùng khám phá từng ca khúc của Living Things để khám phá xem, đĩa nhạc chỉ vọn vẹn 36 phút này lại tạo nên những cơn bão lớn đến như vậy.
1. Lost in the echo
Track mở đầu cho toàn bộ 12 ca khúc, “Lost in the echo” là sự hòa trộn “ngọt ngào” giữa giọng rap của Mike và giọng ca chính của nhóm Chester Bennington. Bài hát có nhịp guitar nhanh, hứng khởi như mời gọi tất cả mọi người đến với “Living things”.
2. In my remains
“In my remains” là một trong những ca khúc hay nhất của “Living things”. Chất mạnh mẽ của rock hòa quyện với phần ca từ giàu chất thơ tạo nên một điều rất quyến rũ. Nằm ở vị trí thứ 2, ca khúc “nhẹ nhàng” hơn về mặt giai điệu nhưng lời ca khúc lại rất ám ảnh “like an army, falling, one by one by one”.
3. Burn it down
Là một trong những single mở đường cho sự trở lại của Linkin Park, “Burn it down” khiến người nghe nhạc gợi lại một hit đỉnh trước đó “New Devide”. Lựa chọn ca khúc này để làm single mở đường cho “Living Things” là một sự lựa chọn sáng suốt bởi nó gần như đại diện cho chất nhạc mà nhóm đáng theo đuổi và chinh phục người nghe.
Mổ xẻ cơn bão mang tên Living Things
4. Lies greed misery
Nhiều fan thừa nhận rằng họ tìm thấy một Linkin Park của khởi nguyên mà họ từng thần tượng trong ca khúc này. Những gì đã tạo nên thương hiệu của nhóm đều tập trung trong ca khúc, cái dữ dội trong giọng hát gầm rú của chester kèm theo là giọng rap nu-metal của Mike. Tất cả hòa quyện vào những âm thanh điện tử tạo nên một diện mạo mới.
5. I’ll be gone
Ca khúc là sự “độc chiếm” của riêng Chester khi không xuất hiện của Mike. Với chất liệu âm thanh điện tử đã được đẩy lên cao nhất và chất giọng của Chester cũng được xử lý phòng thu phần nào nhưng vẫn tạo nên một thứ xúc cảm lạ lẫm. Nó như gợi nhớ về thể loại morden rock của những năm 90.
6. Castle of glass
Bài hát mang đậm phong cách folk music (âm nhạc dân gian Mỹ), “Castle of glass” là một bài hát đầy hấp dẫn với những ẩn dụ, đơn giản nhưng cũng hết sức cực đoan. Bài hát là một trong những thế giới khác của Linkin Park mà nhóm muốn người hâm mộ tự khám phá.
7. Victimized
Giống như track “Lies Greed Misery” bài hát này mang đến cho người nghe những điều vốn dĩ đã ngấm vào máu của nhóm. Bài hát được gợi lên bởi Mike và được phát triển bởi Chester. Không khí của ca khúc nặng nề như chính tâm trạng của “nạn nhân”.
8. Roads Untraveled
Một bài hát mang đậm phong cách rock-ballad với những giai điệu nhịp nhàng bởi tiếng piano du dương và giọng hát trầm buồn như muốn tự sự của Chester. Có vẻ như đây là một track lạ trong album nhưng thay vì thể hiện bằng giai điệu thì “Roads Untraveled” lại thể hiện bằng chất tự sự.
Mổ xẻ cơn bão mang tên Living Things
9. Skin to bone
Track thứ 9 có nhịp hòa âm phối khí với nhịp điệu nhanh và trống dồn dập. Giọng hát bị đẩy xuống hàng thứ yếu, nhẹ nhưng đầy ám ảnh. Đây là một trong những track lạ lùng nhất của album.
10. Until  It Breaks
Nếu như I’ll be gone” là bản nhạc của riêng Chester thì “Until It Breaks” lại dành riêng cho Mike Shinoda. Giọng rap của người thủ lĩnh đầy mượt mà nhưng cũng hết sức khiêu khích. Một bản rap metal tuyệt hay trong album này.
11. Tinfoil
Bản nhạc này khá đặc biệt, nó chỉ có 1 phút 11 giây và chỉ là melody mà không có một giọng hát nào được cất lên. Một đoạn nhạc lạ với những nỗi ám ảnh.
12. Powerless
Kết thúc đĩa nhạc là bản “Powerless” nhẹ nhàng hơn nhưng cũng đầy ý nghĩa và ấn dụ. Bài hát như hợp âm ngắn, nhẹ nhàng kết thúc bản hợp âm với nhiều thú vị của “Living Things”. Những câu hát “người đã giữ trọn vẹn và ta đã bên cạnh người, bất lực” đã kết thúc đĩa nhạc tuyệt phẩm này.
Đây là món quà từ iZone4U gửi đến các bạn là fan của Linkin Park nói riêng và tất cả các bạn  - người mà đang đọc entry này nói chung. Lúc trước mình có đăng một bài vietsub mang tên Living Things, nhưng với nhu cầu riêng bản thân mình mà nói thì  không đủ, để cảm nhận được nhạc của Linkin Park thì phải vừa nghe nhạc vừa đọc lyric vừa nghiền vietsub vừa ngẫm feedback ^^. Thôi không nói bà lằn nhằng nửa, nếu bạn có hứng thú hãy nhấp vào các đường dẫn bên dưới để tải về những thứ mà tiêu đề entry này đã liệt kê. Chúc bạn vui vẽ và tìm được cái gì đó thật khác biệt trong cách suy nghĩ khi nghe và cảm nhận Living Things !

Nhấp vào link để tải:

Lưu ý khi tải file: Bạn sẽ được redirect đến một trang quảng cáo công cộng, đợi 5 giây, bên gốc phải phía trên sẽ có một nút với nhãn là "Passer L'Anonce ►" [or" Skip Ad ►"]...  nhấp vào nút này bạn sẽ được chuyển đến link host Mediafire để thực hiện việc tải file. Mọi sự cố phát sinh về việc tải file vui lòng pm qua Y !, cảm ơn bạn hợp tác. Xin lổi vì sự bất tiện này !"

  • CDs : (phiên bản 320kps và 256kps -> phòng trường hợp máy nghe nhạc của bạn không thể phát 320pks + 3 bài Live:  What I've Done, In The End, New Devide)

Download ▼ - bitrate = 256 kilobit per second
Download ▼ - bitrate = 320 kbps + 3 live songs

  • Vietsub, Comment, Lyric: Bản in  sẵn dùng, định dạng PDF, mã mở khoá : izone4u   Have fun !
Download ▼ - PDF Vietsub
(c) iZone4U. All rights reserved.

Nhãn: , , , , , , , ,