Thứ Bảy, 28 tháng 12, 2013

Cách khắc phục một số trường hợp ổ cứng load 100 %

Posted by Unknown Thứ Bảy, tháng 12 28, 2013, under | No comments

Khi Windows mới khởi động thì ổ cứng HDD load 80 % - 100 % thì không sao, sau thời gian khởi động tầm 2 phút mà hiện tượng vẫn xảy ra thì hơi bị nguy. Để khắc phục trình trạng trên, chúng ta tiến hành các thao tác như sau :

1. Kiểm tra chương trình nào ngốn ổ cúng :
Các bạn bật " Task Manager " lên, xem chương trình nào làm cho ổ cứng load cao, bạn thử " End task " nó đi xem có hết không . ( thường xảy ra hiện tượng này do các service , xem hình minh họa )
2. Tắt tự sửa chữa Windows 8 Maintenace :
-Vào Control Panel -> Acton Center vào mục Maintenace-> Setting-> Never check for solutions



- Tắt luôn phần auto "Maintenace":


3. Tắt Windows SmartScreen: 
 Thỉnh thoảng làm full Disk nhưng cái khó chịu nhất của nó là khi truy cập vào các ổ nhiều file hay folder ít dùng hoặc lần đầu mở cứ bị giật giật.
-Tắt trong Action Center và nếu không muốn nó cứ nhắc nhở thông báo đã tắt SmartScreen thì chọn Turn of mesages about Windows SmartScreen đi .

4. Tắt chế độ tự sao lưu :

5. Tắt chế độ sử dụng Ram ảo :




6. Tắt chế độ tự updata của windows :
 Tắt chế độ update tự động của windows, bạn phải tự update windows khi nào rãnh không là viêc, vì để chế độ auto thì mỗi khi windows update sẽ sử dụng tài nguyên máy, trong đó có HDD, đôi khi còn phải reset máy nữa , cảm thấy rất phiền trong khi bạn làm việc .

7. Tắt chế độ tự quét của pm virus :
Các phần mềm Anti Virus , ..., khi hoạt động- quét thì phải sử dụng tài nguyên máy rất nhiều, quá trình quét là dò tìm mẫu virus trên máy ( HDD), nên khi chúng hoạt động thì máy bạn ít nhiều ổ cứng phải được sử dụng, do đó tắt chế độ  auto scan đi, scan khi nào rãnh .
8. Sửa lỗi bad ổ cứng :
Đây là lỗi khó chiệu nhất, nếu nặng thì ổ cứng có thể bị hư, bạn phải thay ổ cứng mới. Lỗi này làm ổ cứng load 100% mà khi bạn bật " Task Manager " lên không thấy chương trình nào chiếm dụng ổ cứng hết .
Đầu tiên bạn boot bằng đĩa Hiren's boot -> chọn Boot CD khi menu boot hiện ra.











Thứ Tư, 18 tháng 12, 2013

Ngăn xếp trong C

Posted by Unknown Thứ Tư, tháng 12 18, 2013, under | No comments

I. Lý thuyết :
1. Định nghĩa :
Ngăn xếp ( stack )là một kiểu danh sách tuyến đặc biệt mà phép bổ sung hoặc loại bỏ phần tử luôn thực hiện tại một đầu, gọi là đỉnh( top ). Stack thuộc và loại danh sách hoạt động dựa trên nguyên tắc LIFO (Last- in- First- Out)

2. Cách khai báo :
Khai báo stack :
typedef struct 
{
        int     top;
        int nodes[MAX];
} stack;

Kiểm tra stack rỗng :
int Empty(stack *ps) 
{
        if (ps ->top == -1)
            return(TRUE);
        return(FALSE);
}

Kiểm tra stack đầy:
int Full(stack *s)
{
   if(s->top == MAX-1) return 1;
    else return 0;
}

Thêm phần tử vào đỉnh stack:
void    Push (stack *ps, int x)
{
        if ( ps ->top == -1) {
            printf(“\n stack full”);
            return;
        }
        ps -> top = ps ->top + 1;
        ps -> nodes[ps->top] = x;
}

Lấy phần từ đỉnh stack :
int Pop( stack *s)
{
      if(Empty(s)){
            printf("\n Stack rong");
            return NULL;
            }
       return(s->info[s->top--]);
  }

3. Ví dụ minh họa :
Viết chương trình chuyển đổi số thập phân sang nhị phân .
C1 : Cách viết không dùng stack :
#include<stdio.h>
#include<conio.h>
#define MAX 255
int main()
{
    int x,i=16,matna=0x8000,j=0;//thêm biến j để chặn
    printf("Nhap so: ");
    scanf_s("%d",&x);
    printf("\nKet qua:");
    for(;i;--i)
    {
    if(x&matna)
        {printf("1");j=1;}
    else if(j)printf("0");
    matna>>=1;
    }
    _getch();
    return 0;
    }
C2: Cách viết dùng stack :
// stack_chuyen_doi_co_so.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 255
void push(int *s, int *top, int x)
{
if (*top == MAX)
{
printf("\n Stack day");
_getch();
exit(0);
}
s[++(*top)] = x;
}
int pop(int *s, int *top)
{
if (*top == 0)
{
printf("\n Stack rong");
_getch();
exit(0);
}
return(s[(*top)--]);
}
int main()
{
int x, s[MAX], top = 0;
printf("\n Nhap so thap phan : ");
scanf_s("%d", &x);
do
push(s, &top, x % 2);
while (x /= 2);
printf("\n So nhi phan sao khi chuyen doi :");
for (; top;)
printf("%d", pop(s, &top));
_getch();
return 0;
}


II. Bài tập :



Thứ Ba, 17 tháng 12, 2013

Cấu trúc trong C

Posted by Unknown Thứ Ba, tháng 12 17, 2013, under | No comments

I. Lý thuyết :
1. Định nghĩa :
Trong lập trình, đôi khi các kiểu dữ liệu cơ sở chưa đủ mềm dẻo để cho cái bài toán thực tế. Các sự vật, hiện tượng trong thực tế rất phức tạp và có nhiều tình nhất khác nhau. Người lập trình có thể định nghĩa các kiểu dữ liệu mới có cấu trúc phù hợp với từng bài toán cụ thể  - Struct (1 loại kiểu dữ liệu có cấu trúc) trong ngôn ngữ lập trình C.
2. Cách khai báo :
Các cách khai báo "struct" :
C1:
struct TênCấuTrúc
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
};
C2:
typedef struct
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
}TênCấuTrúc;
C3:
struct TênCấuTrúc
{
    KiểuDữLiệu1  ThànhPhần1;
    KiểuDữLiệu2  ThànhPhần2;
    ...
    KiểuDữLiệun  ThànhPhầnn;
};
typedef struct TênCấuTrúc TênCấuTrúcMới;
3. Ví dụ :

struct hocsinh
{
    char *HoTen;
    int NamSinh;
    float DiemTB;
};

struc phanso
{
    int Tu;
    int Mau;
};
typedef struct phanso PhanSo;

Ví dụ minh họa :
// cau_truc_voi_phan_so.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
struct PhanSo
{
int tu;
int mau;
} a;
void Nhap(PhanSo &ps)
{
printf("\t Nhap vao phan tu so: ");
scanf_s("%d", &a.tu);
printf("\t Nhap vao phan mau so: ");
scanf_s("%d", &a.mau);
ps = a;
}
void Xuat(PhanSo a);
void Xuat(PhanSo a)
{
printf("%d/%d", a.tu, a.mau);
}
int UCLN(int a, int b)
{
a = abs(a);
b = abs(b);
if (a == b) return a;
while (a != b)
if (a > b)
a -= b;
else
b -= a;
return a;
}
void ToiGian(PhanSo &ps)
{
ps.tu = a.tu / UCLN(a.tu, a.mau);
ps.mau = a.mau / UCLN(a.tu, a.mau);
}
void TinhTong(PhanSo a, PhanSo b)
{
PhanSo c;
if (a.mau==b.mau)
{
c.tu = a.tu + b.tu;
c.mau = a.mau;
}
else
{
c.tu = a.tu * b.mau + b.tu * a.mau;
c.mau = a.mau * b.mau;
}
printf("\n \n Tong hai phan so la : ");
Xuat(c);
}
void TinhHieu(PhanSo a, PhanSo b)
{
PhanSo c;
if (a.mau == b.mau)
{
c.tu = a.tu - b.tu;
c.mau = a.mau;
}
else
{ c.tu = a.tu * b.mau - b.tu * a.mau;
c.mau = a.mau * b.mau;
} printf("\n \n Hieu cua hai phan so la :");
Xuat(c);
}
int _tmain(int argc, _TCHAR* argv[])
{
PhanSo ps, ps2;
// Nhap vao phan so thu nhat va toi gian no
printf("\n------------------------------------------");
printf("\n Nhap vao phan so thu 1: \n");
Nhap(ps);
ToiGian(ps);
printf("\n Phan so toi gian la: ");
Xuat(ps);
printf("\n------------------------------------------");
printf("\n------------------------------------------");
// Nhap vao phan so thu hai va toi gian no
printf("\n  Nhap vao phan so thu 2: \n");
Nhap(ps2);
ToiGian(ps2);
printf("\n Phan so toi gian la: ");
Xuat(ps2);
printf("\n------------------------------------------");
// Tinh Tong
TinhTong(ps, ps2); TinhHieu(ps, ps2); _getch();
return 0;
}



II. Bài tập :


Chủ Nhật, 15 tháng 12, 2013

Con trỏ trong C

Posted by Unknown Chủ Nhật, tháng 12 15, 2013, under | No comments

I .Lý thuyết :
1. Định nghĩa:
Con trỏ  là một biến(như bạn khai báo biến thông thường), nhưng biến này đặc biệt ở chỗ là nó lưu trữ địa chỉ của vùng nhớ mà nó trỏ tới.
- Bạn muốn con trỏ trỏ tới một biến (thì con trỏ sẽ lưu trữ địa chỉ của biến đó, một số hexa mà bộ nhớ cấp phát )
- Bạn muốn con trỏ trỏ tới một mảng thì nó lưu trữ địa chỉ của phần tử đầu tiên của mảng đó.
- Bạn muốn con trỏ trỏ tới một hàm thì con trỏ sẽ lưu trữ địa chỉ của hàm đó (lát mình chỉ cách dùng)
- Bạn muốn con trỏ trỏ tới một struct(hình như khi học tới con trỏ thì chưa học tới cái này thì phải – lát mình chỉ)
- Bạn muốn con trỏ trỏ tới người yêu của thằng nào đó thì lưu trữ địa chỉ nhà em nó .
- Con trỏ có thể trỏ tới con trỏ ….

và kiểu của con trỏ bạn có thể dùng là (int, char, array, structure, function, hay con trỏ).

2. Ví dụ minh họa :
VD 1: con trỏ với biến :
code :
// con_tro.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<conio.h>
void main()
{
int *p;// khai bao bien con tro p
int i = 40; // khai bao bien i co gia tri 40
p = &i;// gan bien i vao bien con tro
printf("\n Gia tri cua bien con tro :%d", *p);
printf("\n Dia chi o nho cua bien con tro :%d", p);
printf("\n");
_getch();
}

VD 2: con tro với mảng :
code :
// con_tro.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<conio.h>
void main()
{
int arr[] = { 1, 98, 17, 10 };
int *pointer;
pointer = &arr[0];
for (int i = 0; i<4; ++i)
{
printf("\n Gia tri cua phan tu thu %d la: %d", i+1, *(pointer++));
}
printf("\n--------------------------------\n");
for (int i = 0; i<4; ++i)
{
printf("\n Dia chi cua phan tu thu %d la : %d",i+1,  (pointer++) );
}
_getch();
}
VD 3: con trỏ với hàm
code:
// con_tro_ham.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<malloc.h>
#include<conio.h>
void in_put(int *a, int n)
{
int i;
for (i = 0; i< n; i++)
{
printf("\n Nhap phan tu a[%d]= ", i + 1);
scanf_s("%d", (a + i));
}
}
void out_put(int *a, int n)
{
printf("\n Cac phan tu mang vua nhap :");
for (int i = 0; i<n; i++)
printf("%d ", *(a + i));
}
void main()
{
int *a, n;
printf("\n Nhap so phan tu cua mang : ");
scanf_s("%d", &n);
a = (int *)malloc(n*sizeof(int));
in_put(a, n);
    out_put(a, n);
_getch();
}



VD 4: con trỏ với cấu trúc


Thứ Bảy, 14 tháng 12, 2013

Mảng trong C

Posted by Unknown Thứ Bảy, tháng 12 14, 2013, under | No comments

I. Mảng ( array ):
Là tập hợp gồm các phần tử, mỗi phần tử thì có chỉ số riêng để xác định vị trí của phần tử đó . Chỉ số phần tử là số tự nhiên  ( N), chỉ số đầu tiên là 0 .
Mảng có 2 loại :
 . Mảng một chiều : biểu diễn tập hợp ,có 1 chỉ số ( một dòng ) :0-> n, n là số tự nhiên.
 VD : a[0]= 11. a[1]= 1 , ...
 . Mảng nhiều chiều : biểu diễn tập hợp, có 2 chỉ số ( dòng, cột) : 0 ->n, n là số tự nhiên .
 VD: a[0][0] =2, a[1][2]= 5, ...
Cách khai báo mảng:
Mảng một chiều : kiểu_dữ_liệu  tên_mảng[số_phần_tử];
VD: khai báo mảng số nguyên a có 10 phần tử : int a[10]; và phần tử thứ 5 có giá trị bằng 67 : a[4]=67 ( vì phần tử thứ nhất có chỉ số bằng 0, nên phần tử thứ 5 có chỉ số bằng 4 ).
Mảng nhiều chiều : kiểu_dữ_liệu  tên_mảng[số_phần_tử_cột][số_phần_tử_dòng];
VD: khai báo mảng số nguyên a có 5 phần tử cột ( 5 cột ), 4 phần tử ở dòng ( 4 dòng) : int a[5][4]; và phần tử thứ 5 có giá trị bằng 67 : a[4][0]=67 ( vì phần tử thứ nhất có chỉ số cột bằng 0 chỉ số dòng bằng 0 : a[0][0] , nên phần tử thứ 5 có chỉ số bằng [4][0] ).
   *Mảng một chiều là biểu diễn tập hợp trong Toán học.
   *Mảng nhiều chiều là biểu diễn ma trận trong Toán học.

II. Hàm (function):
Hàm là một khối lệnh được thực hiện khi nó được gọi từ một điểm khác của chương trình. Dạng thức của nó như sau:
type name ( argument1 , argument2 , ...) statement
trong đó:type là kiểu dữ liệu được trả về của hàm name là tên gọi của hàm.arguments là các tham số (có nhiều bao nhiêu cũng được tuỳ theo nhu cầu). Một tham số bao gồm tên kiểu dữ liệu sau đó là tên của tham số giống như khi khai báo biến (ví dụ int x) và đóng vai trò bên trong hàm như bất kì biến nào khác. Chúng dùng để truyền tham số cho hàm khi nó được gọi. Các tham số khác nhau được ngăn cách bởi các dấu phẩy.statement là thân của hàm. Nó có thể là một lệnh đơn hay một khối lệnh..
VD : hàm cộng hai số nguyên
int cong_hai_so_nguyen( int a, int b)
{
int S; // tong hai so nguyen
S=a+b;
return(S);
}
* Bất kỳ chương trình nào dù nhỏ hay lớn đều có  một hàm là "void main () ".

III. Bài tập áp dụng :

Bài tập 1:  Viết chương trình nhập xuất mảng một chiều, thêm, xóa, sửa phần tử ( dùng hàm ).
code :
// mang_mot_chieu.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#define size 50
//HAM NHAP MANG
void NhapMang(int arr[], int n)
{
for (int i = 0; i<n; i++)
{
printf("\n Nhap phan tu : arr[%d] = ", i);
scanf_s("%d", &arr[i]);
}
}
//HAM XUAT MANG
void XuatMang(int arr[], int n)
{
for (int i = 0; i<n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
//HAM THEM 1 PHAN TU VAO MANG
void Them(int arr[], int &n)
{
int vitri, giatri;
do
{
printf("\n Nhap vi tri can them: \n");
scanf_s("%d", &vitri);
} while (vitri<1 || vitri>n);
printf("\n Nhap phan tu can them : arr[%d] = ", vitri);
scanf_s("%d", &giatri);
for (int i = n; i>vitri; i--)
{
arr[i] = arr[i - 1];
}
arr[vitri] = giatri;
n++;
}
//HAM XOA 1 PHAN TU KHOI MANG
void Xoa(int arr[], int &n)
{
int vitri;
do
{
printf("\n Nhap vi tri muon xoa: ");
scanf_s("%d", &vitri);
} while (vitri<1 || vitri>n);
for (int i = vitri; i<n - 1; i++)
{
arr[i] = arr[i + 1];
}
n--;
}
//HAM SUA 1 PHAN TU TRONG MANG
void Sua(int arr[], int n)
{
int vitri;
do
{
printf("\n Nhap vi tri muon sua: ");
scanf_s("%d", &vitri);
} while (vitri<1 || vitri>n);
printf("\n Nhap phan tu can sua : arr[%d] = ", vitri);
scanf_s("%d", &arr[vitri - 1]);
}
void main()
{
printf("\t Bai tap Mang 1 chieu \n");
printf("\t -------------------- \n");
//Khai bao
int arr[size];
int n, dem = 0, tong = 0;
//Nhap du lieu
do
{
printf("\n Nhap so phan tu cua mang: ");
scanf_s("%d", &n);
} while (n <= 0 || n>size);
NhapMang(arr, n);
//Xu ly & xuat du lieu
printf("\n Mang nhap vao la:");
XuatMang(arr, n);
printf("\n Cac phan tu co gia tri chan:");
for (int i = 0; i<n; i++)
{
if (arr[i] % 2 == 0)
{
printf("%d ", arr[i]);
dem++;
tong += arr[i];
}
}
printf("\n");
printf("\n  Co %d phan tu chan trong mang\n", dem);
printf("\n Tong cac phan tu chan la: %d\n", tong);
Them(arr, n);
printf("\n Mang sau khi them vao la: \n");
XuatMang(arr, n);
Xoa(arr, n);
printf("\n Mang sau khi xoa la: \n");
XuatMang(arr, n);
Sua(arr, n);
printf("\n Mang sau khi sua la: \n");
XuatMang(arr, n);
printf("\t--------------------\n");
_getch();
}







Thứ Tư, 11 tháng 12, 2013

C/C++

Posted by Unknown Thứ Tư, tháng 12 11, 2013, under | No comments

* Kể từ bài này mình sẽ viết về lập trình C / C++ ,từ căn bản đến nâng cao .

I. Gới thiệu sách :
Các bạn tìm đọc  vài quyển sau nha ! ( Mình không share được vì bản quyền sách , các bạn cố gắn tìm đọc trên internet , dùng thẻ Visa mua: quyển 1 thì tầm vài chục $, quyển 2 trên 100$, quyền 3 vài chục $  : )) )

1 . Brian Kernighan, Dennis Ritchie, The C Programming Language (2nd Edition :238 trang ): kinh điển và phải-đọc cho tất cả những ai muốn học C! ( hầu như 4 năm DH của tui chỉ đọc cuốn này )


2. Randal Bryant, David O'Hallaron, Computer Systems: A Programmer's Perspective ( 2001 :783 trang; 2002: 1078 trang ): cuốn này được dùng cho lớp CS107. Đọc cuốn này và làm bài tập của lớp CS107 sẽ rèn cho bạn kỹ năng lập trình C .

3. David Hanson, C Interfaces and Implementations ( 533 trang ) : muốn  "lên cơ" bida thì phải thường xuyên xem người khác chơi để mà học "đường" mới ; muốn giỏi lập trình thì phải thường xuyên đọc mã của những cao thủ. David Hanson là một cao thủ C và cuốn sách này sẽ chỉ cho bạn nhiều "đường" mới trong việc sử dụng C ( Văn ôn ,võ luyện . Tầm sư học đạo . Tìm cao thủ bái sư  ... )

II .Bài tập thực hành :

 Bài 1 : Viêt chương trình in dòng " helloworld " .

Tạo mới 1 project " helloworld " -> file -> new ->projects





code :
// khai báo thư viện
#inclucde<stdio.h>
// hàm chính
void main ()
{
// xuất ra màn hình
printf("Hello World ! Welcome to Vietnam !");
}

Kiểm tra lỗi : nhấp phím " F5 " để kiểm tra lỗi , thông báo lỗi hiện dưới khung " Output" .
Chạy chương trình : nhấp phím " Ctrl + F5" , kết quả xuất ra của sổ doc .




Bài tập 2 : Viết chương trình tính tổng 2 số nguyên nhập vào từ bàn phím .

Trước đây, để đọc dữ liệu nhập vào phím với ngôn ngữ C dùng " scanf" , những năm gần đây MS thay đổi là "scanf_s", vì thế khi bạn viêt "scanf" thì khi bạn "debug" sẽ thấy thông báo "Wamring ", đây là lỗi cú pháp, chương trình vẫn chạy .

code :
// bien_docgiatri.cpp : Defines the entry point for the console application.
//khai bao thu vien
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<math.h>
// ham chinh
void main()
{
//khai bao bien
// kieu du lieu bien la so nguyen
int a, b, s;
//doc du lieu nhap vao tu ban phim
printf("\n Nhap gia tri cua a =");
//truoc day doi voi C de doc du lieu nhap vao ban phim dung "scanf"
//bay h chay tren phien ban moi, MS yeu cau "scanf_s", khac ti
scanf_s("%d", &a);
printf("\n Nhap gia tri cua b =");
scanf_s("%d", &b);
s = a + b;
// xuat du lieu xa man hinh
printf("\n Tong cua 2 so vau nhap: %d + %d = %d \n",a,b,s);
_getch();
}

Bải tập 3 : Viết chương trình đọc chuỗi nhập vào từ bàn phím, xuất ra màn hình chuỗi vừa nhập .

code:
// doc_xuat_chuoi.cpp : Defines the entry point for the console application.
// khai bao thu vien
#include "stdafx.h"
#include<concrt.h>
#include<string.h>
void main()
{
// chuoi la mang, mang nay la mang mot chieu chua ky tu
// khai bao bien cho chuoi
// 50 la so ky tu toi da co trong mang "ten"
char ten[50];
printf("\n Nhap vao ho va ten cua ban :");
// doc chuoi nhap vao tu ban phim
gets_s(ten); printf("\n Ho va ten cua ban la :");
// xuat chuoi vua nhap ra man hinh
puts(ten);
_gettch();
}


Bài tập 4 : Viết chương trình xóa bỏ khoảng trắng thừa trong một chuỗi ( giữa 2 từ liền kề nếu có hơn 2 khoảng trắng thì xóa đi chừa 1 khoảng trắng )

code
// xoa_khoang_trang.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
char *trim(char *chuoi)
{
char *p;
while (p = strstr(chuoi, "  "))// 2 khoang trang ke nhau thi xoa 1 khoang trang
memmove(p, p + 1, strlen(chuoi) - (p - chuoi));
if (chuoi[0] == ' ')
memmove(chuoi, chuoi + 1, strlen(chuoi));
if (chuoi[strlen(chuoi) - 1] == ' ')
chuoi[strlen(chuoi) - 1] = 0;
return chuoi;
}
void main()
{
char chuoi[100];
printf("\n Nhap chuoi vao chuoi can chinh sua :"); gets_s(chuoi);
trim(chuoi);
printf("\n Chuoi sau khi da xoa khoang trang thua :"); puts(chuoi);
_getch();
}



Bài tập 5: Viết chương trình nối 2 chuỗi thành 1 chuỗi .

code :
// ghep_chuoi.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include<conio.h>
// khong viet ham
// khong cap phat dong
void main()
{
char s1[100], s2[100];
int i, j;
printf("\n Nhap chuoi thu nhat: ");
gets_s(s1);
printf("\n Nhap chuoi thu hai: ");
gets_s(s2);
for (i = 0; s1[i] != '\0'; ++i);
for (j = 0; s2[j] != '\0'; ++j, ++i)
{
s1[i] = s2[j];
}
s1[i] = '\0';
printf("\n Ket qua sau khi ghep 2 chuoi: %s", s1);
printf("\n");
_getch();
}



* Đến đây mình kết thúc phần đầu về Lập trình C căn bản .
* Phần kế sẽ đi sâu : mảng, con trỏ , cấu trúc .







Thứ Hai, 9 tháng 12, 2013

Pascal

Posted by Unknown Thứ Hai, tháng 12 09, 2013, under | No comments

I. Gới thiệu :
II. Nội dung :
III. Bài tập:

Bài tập 1 : Viết chương trình in dòng chữ " Xin chao" ra mà hình
a. chạy tập tin TPX.exe ( bản không cài đặt ) , nhấp OK .

b. Trong cửa sổ, gõ các dòng sau:
Program HelloWorld;
Uses CRT;
Begin
  Writeln ('Xin chao');
 Write ('Nhap phim Enter de ket thuc !');
Readln;
End.
c. lưu file : Menu Flie ->Save (Crtl +F2) -> gõ tên vào khung ->Ok
d. Xem kết quả : vào menu  Run->Run ( Crtl + F9 )

e. kết thúc chương trình : nhấp phím bất kỳ ( Enter chẳn hạn ).


Bài tập 2 : Tạo file mới , save .

Bài tập 3: Mở flie -> Menu file ->Open -> chọn file cần mở -> Open




Tài Liệu : https://docs.google.com/file/d/0B6JhErFMAx7sQ3RuQW5XTmJBRFU/edit

Chủ Nhật, 8 tháng 12, 2013

Sửa lõi ứng dụng " Store " sau khi nâng cấp từ Windows 8 lên 8.1

Posted by Unknown Chủ Nhật, tháng 12 08, 2013, under | No comments

I. Sửa lỗi không vào được Store :
1. Chạy CMD với quyền admin

2. Từ cửa sổ CMD, chạy lệnh sau :
powershell -ExecutionPolicy Unrestricted Add-AppxPackage -DisableDevelopmentMode -Register $Env:SystemRoot\WinStore\AppxManifest.xml

3. Vào Store or chạy  CMD với lệnh :  start "" "ms-windows-store:"

* Lỗi :0x8007064A


II. PC settings :
1. Chạy CMD với quyền Admin
2. Trong CMD, chạy lần lượt 3 lệnh sau :

powershell -ExecutionPolicy Unrestricted Add-AppxPackage -DisableDevelopmentMode -Register $Env:SystemRoot\camera\AppxManifest.xml

powershell -ExecutionPolicy Unrestricted Add-AppxPackage -DisableDevelopmentMode -Register $Env:SystemRoot\FileManager\AppxManifest.xml

powershell -ExecutionPolicy Unrestricted Add-AppxPackage -DisableDevelopmentMode -Register $Env:SystemRoot\ImmersiveControlPanel\AppxManifest.xml


* Chạy lệnh CMD xong, reset lại máy .
* Bài này mình dịch từ các trang nước ngoài, có gì  ... các bạn thông cảm.

III. Cài lại app trong "Store" đã gỡ bỏ :
  Vào UI ->Store -> tại giao diện này nhấp phải ->Your apps -> All apps -> chọn app cài .

VI. Kiểm tra hệ thống công cụ " SFC.EXE ":
 Trích MS :
1. Mở CMD với quyền ADMIN
2. Tại dấu nhắc đơi lệnh, gõ "sfc /scannow", rồi ENTER.


Lệnh sfc /scannow sẽ quét tất cả các tệp hệ thống được bảo vệ và thay thế các tệp bị hỏng bằng bản sao được lưu trong bộ nhớ cache nằm trong thư mục nén tại %WinDir%\System32\dllcache.
Trình giữ chỗ %WinDir% thể hiện thư mục hệ điều hành Windows. Ví dụ: C:\Windows.

Chú ý : Không đóng cửa sổ Dấu nhắc Lệnh này cho đến khi quá trình xác minh hoàn tất 100%. Kết quả quét sẽ được hiển thị sau khi quá trình này hoàn tất.
3. Sau khi hoàn thành quá trình, bạn có thể nhận được một trong các thông báo lỗi sau:
     - Bảo vệ Tài nguyên Windows không tìm thấy bất kỳ hành vi vi phạm tính toàn vẹn nào.
Điều này nghĩa là bạn không có bất kỳ tệp hệ thống nào bị hỏng hoặc bị thiếu.
     - Bảo vệ Tài nguyên Windows không thể thực hiện thao tác đã yêu cầu.
Để khắc phục sự cố này, hãy thực hiện quét Trình kiểm tra Tệp Hệ thống trong chế độ an toàn và đảm bảo các thư mục PendingDeletes và PendingRenames có trong %WinDir%\WinSxS\Temp.
    - Bảo vệ Tài nguyên Windows đã tìm thấy các tệp bị hỏng và sửa chữa chúng thành công. Chi tiết được bao gồm trong CBS.Log %WinDir%\Logs\CBS\CBS.log.
Để xem thông tin chi tiết về quét tệp hệ thống và việc khôi phục, hãy đi tới Cách xem chi tiết về quy trình Trình kiểm tra Tệp Hệ thống.
   - Bảo vệ Tài nguyên Windows đã tìm thấy các tệp bị hỏng nhưng không thể khắc phục một số tệp. Chi tiết được bao gồm trong CBS.Log %WinDir%\Logs\CBS\CBS.log.
Để sửa chữa các tệp bị hỏng theo cách thủ công, xem chi tiết của quy trình Trình kiểm tra Tệp Hệ thống để tìm tệp bị hỏng, sau đó thay thế thủ công tệp bị hỏng bằng bản sao tốt đã biết của tệp.

4. Xong dóng CMD lại, reset máy.


Thứ Bảy, 30 tháng 11, 2013

Windows 8.1 - Nguy cơ mất mật khẩu Email !

Posted by Unknown Thứ Bảy, tháng 11 30, 2013, under | No comments

Tình hình mà mình đang dùng Windows 8.1  Pro 32bit  VL, Active bằng Call Fone . Nhưng khi dùng vài bữa thì phát hiện ra cơ chế bảo mật  mật khẩu Email của windows có thể nối là quá yếu : mật khẩu Email đươc lưu trên máy thì được bảo bệ bởi 1 lớp là khi biết được mật khẩu login wíndows là có thể xem được mật khẩu Email ngay, đáng lẽ mật khẩu ấy phải được mã hóa trước khi lưu trên máy chứ đằng này MS lại không mã hóa mà lưu. Và như chúng ta đã biết chuyện lộ mật khẩu login windows không phải là chuyện hiếm, mà khi đã lộ thì mật khẩu Email của chúng ta coi không cánh mà bay


Hình minh họa  khi đăng nhập Email của Gmail, Facebook, Yahoo ... thì Wíndows sẽ lưu account, password, chúng ta muốn xem password thì chỉ cần nhập password login windows là xem được :





Như chúng ta đã biết thì để bảo mật tốt thì không chỉ dùng những thuật toán bảo mật mạnh ( mã hóa một chiều , số bit lớn ... ) mà ta còn áp dụng cơ chế bảo mật đa lớp.
Bảo mật đa lớp không có nghĩa là các bạn cứ nghĩa là nhiều lớp là tốt mà nó vừa thôi, theo tôi tầm 3 lào ok . Nếu nhiều quá thì :
 1. Dễ trùng lặp -> cơ sở cho hacker lọc dữ liệu
2. Chi phí cao : thời gian mã hóa, tốn tài nguyên, thời gian giải mã, so sánh ....


Xem Nhiều

Bài đăng phổ biến

Lưu trữ blog

Blog Archive