Thứ Năm, 7 tháng 8, 2014

Danh sach liên kết Mật khẩu


/**
Tạo 1 dslk  THONG TIN gồm tài khoản và mật khẩu ...
a.Nhập danh sách, điều kiện mật khẩu phải có ít nhất 1 chữ cái hoa, 1 chữ cái thường, 1 chữ số và 1 kí tự đặc biệt.
mật khẩu có ít nhất 8 kí tự.
dừng nhập khi nhập vào tài khoản là kí tự trắng.
b. Bổ sung 1 tài khoản vào danh sách, nếu đã có thì ko bổ sung nữa.
c. Xóa tất cả các tài khoản trùng nhau.
/**/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
struct TK
{
 char tk[100];
 char mk[100];
 TK *tiep;
};
TK *dau=NULL, *cuoi;
void tao(char *tk,char *mk)
{
 TK *p=(TK*)malloc(sizeof(TK));
 // hoặc dùng TK *p=new TK; trong C++
 strcpy(p->tk,tk);
 strcpy(p->mk,mk);
 if(dau==NULL)
  dau=p;
 else
  cuoi->tiep=p;
 p->tiep=NULL;
 cuoi=p;
}
int ktra_mat_khau(char* s)
{
 if(strlen(s)<8)
  return 0;
 for(int i=0;s[i];i++)
  if(s[i]>=32&&s[i]<=126) // các ký tự ASCII in được bao gồm các chữ cái, chữ số và ký tự đặc biệt
   return 1;
 return 0;
}
void nhap()
{
 int i=1;
 char tk1[100],mk1[100];
 while(1)
 {
  printf("\n Nhap thong tin tai khoan %d: ",i);
  printf(" Ten tai khoan: ");
  fflush(stdin);
  gets(tk1);
  if(tk1[0]==NULL)
   return;
  do
  {
   printf(" Mat khau: ");
   fflush(stdin);
   gets(mk1);
  } while(ktra_mat_khau(mk1)==0);
 
  tao(tk1,mk1);
  i++;
 }
}
void inds()
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  printf("\n Tai khoan: %s; Mat khau: %s",p->tk,p->mk);
}
void bosung(char* tk1, char* mk1)
{
 for(TK *p=dau;p!=NULL;p=p->tiep)
  if(strcmp(p->tk,tk1)==0)
   return;
 tao(tk1,mk1);
}
void main()
{
 nhap();
 printf("\n---------------------------------\n");
 printf("\n\n Nhap thong tin can bo sung: ");
 char tk1[100],mk1[100];
 printf("Tai khoan: ");
 fflush(stdin);
 gets(tk1);
 printf("Mat khau: ");
 fflush(stdin);
 gets(mk1);
 bosung(tk1,mk1);
 inds();
 getch();
}

Thứ Tư, 6 tháng 8, 2014

In các từ dài nhất trong chuỗi

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
void tim(char *s)
 {
 int cuoi, i=0, j=0, max=0, dem=0;
 for(; i<=strlen(s); i++)
 {
  if(s[i]!=' '&&s[i]!='\0') dem++;
  else
  {
   if(dem>max)
   {
    max=dem;
    cuoi=i-1;
   }
   dem=0;
  }
 }
 int m=0;
 int vt[100];
 for(i=0; i<=strlen(s); i++)
{
 if(s[i]!=' '&&s[i]!='\0') dem++;
 else
 {
  if(dem==max)
  {
   vt[m]=i-1;
   m++;
  }
  dem=0;
 }
}
 for(i=0;i<m;i++)
 {
 for(j=vt[i]-max+1; j<=vt[i]; j++)
  printf("%c",s[j]);
 printf("\n");
 }

}

void main()
{
 char s[100];
 printf(" Nhap chuoi: ");
 gets(s);
 printf(" Cac tu dai nhat trong chuoi la: \n");
 tim(s);
 getch();
}

Thứ Hai, 4 tháng 8, 2014

Struct quản lý học phần

/**
Để quản lý các học phần trong một trường đại học, người ta quản lý các thông tin: 
+ mã học phần
+ tên học phần, 
+ số tín chỉ
+ loại học phần (có hai loại học phần: tự nhiên và xã hội. 
Nếu là học phần dành cho khối tự nhiên thì dữ liệu của trường này là “TN”, nếu là học phần dành cho khối xã hội thì dữ liệu của trường này là “XH”.

a. Nhập vào thông tin của n (n<=200) học phần với điều kiện không có hai học phần nào trùng mã với nhau.
b. In ra màn hình thông tin của những học phần có đơn giá lớn hơn g với g là giá trị nhập vào từ bàn phím. 
Biết rằng đơn giá của học phần tính theo công thức: số tín chỉ * 120000 * hệ số đơn giá 
(nếu là học phần tự nhiên thì hệ số đơn giá là 1.5, nếu là học phần xã hội thì hệ số đơn giá là 1.0). 
Thông tin của mỗi học phần in trên một dòng theo thứ tự: mã học phần, tên học phần, số tín chỉ, loại học phần 
(tự nhiên/xã hội), đơn giá học phần.
c. In ra màn hình thông tin của các học phần có mã học phần bắt đầu bởi chuỗi ký tự “TIN” và có số tín chỉ nhỏ hơn 3.
/**/

#include<stdio.h>
#include<conio.h>
#include<string.h>

struct HP
{
char ma[20],ten[50];
int sotc;
char loai[3];
};

void nhap(HP *a,int n)
{
for(int i=0;i<n;i++)
{
printf("\n\n Nhap hoc phan thu %d",i+1);

printf("\n-   Ten hoc phan: ");
fflush(stdin);
gets(a[i].ten);

int k;
do
{
k=0;
printf("-   Ma hoc phan: ");
fflush(stdin);
gets(a[i].ma);
for(int j=0;j<i;j++)
if(strcmp(a[j].ma,a[i].ma)==0)
{
k=1;
break;
}
}
while(k==1);

printf("-   So Tin chi: ");
scanf("%d",&a[i].sotc);

printf("-   Loai hoc phan: chon (1): Tu Nhien  -  (2) Xa Hoi \n");

char t;
do
{
fflush(stdin);
t=getch();
if(t=='1')
strcpy(a[i].loai,"TN");
else if(t=='2')
strcpy(a[i].loai,"XH");

if(t=='1')
printf("+  HP tu nhien");
else if(t=='2')
printf("+  HP xa hoi");

} while(t!='1'&&t!='2');
}
}

float dongia(HP a)
{
float s=a.sotc*120000;
if(strcmp(a.loai,"TN")==0)
s=s*1.5;
return s;
}

void in(HP *a,int n,float m)
{
for(int i=0;i<n;i++)
if(dongia(a[i])>m)
printf("\n Ma: %s; TenHP: %s; SoTC: %d; Loai: %s; DonGia: %g",a[i].ma,a[i].ten,a[i].sotc,a[i].loai,dongia(a[i]));
}

void in1(HP *a,int n)
{
for(int i=0;i<n;i++)
if(strncmp(a[i].ma,"TIN",3)==0&&a[i].sotc<3)
printf("\n Ma: %s; TenHP: %s; SoTC: %d; Loai: %s; DonGia: %g",a[i].ma,a[i].ten,a[i].sotc,a[i].loai,dongia(a[i]));
}

void main()
{
HP a[200];
int n;

printf(" Nhap so hoc phan: ");
scanf("%d",&n);

nhap(a,n);

printf("\n\n--------------------------------");

float g;
printf("\n\n Nhap don gia g= ");
scanf("%f",&g);
printf("\n\n Thong tin cua nhung hoc phan co don gia lon hon %g la: ",g);

in(a,n,g);

printf("\n\n Cac hoc phan bat dau bang chuoi ky tu TIN va co so tin chi <3 la: ");

in1(a,n);

getch();
}

Struct cuộc gọi

/**
Để quản các cuộc gọi điện thoại nội mạng (gọi là các cuộc gọi) người ta quản lý các thông tin sau: 
+ số máy thực hiện cuộc gọi, 
+ số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi (tính bằng giây), 
+ thời điểm thực hiện cuộc gọi (thời điểm thực hiện cuộc gọi có hai loại là giờ thấp điểm và giờ cao điểm (giá trị 1 ứng với giờ thấp điểm, giá trị 0 ứng với giờ cao điểm). 

Hãy khai báo mảng cấu trúc để lưu thông tin của các cuộc gọi và viết chương trình thực hiện các công việc sau:
a. Nhập vào thông tin của n (n  100) cuộc gọi với điều kiện không có cuộc gọi nào có số máy thực hiện cuộc gọi trùng với số máy nhận cuộc gọi.
b. In ra màn hình thông tin của những cuộc gọi có thời gian gọi lớn hơn m  phút với giá trị m  nhập vào từ bàn phím. Thông tin của mỗi cuộc gọi in trên một dòng theo thứ tự: 
 số máy thực hiện cuộc gọi, số máy nhận cuộc gọi, thời gian thực hiện cuộc gọi, 
thời điểm thực hiện cuộc gọi (giờ thấp điểm/giờ cao điểm).
c. In ra màn hình thông tin của các cuộc gọi có số tiền cao nhất. Biết rằng, 6 giây đầu tiên có đơn giá là 800 đồng/6 giây (nếu gọi chưa đủ 6 giây thì làm tròn số tiền đến 6 giây thực hiện cuộc gọi), các giây tiếp theo có đơn giá 100 đồng/giây. 
Ngoài ra trong giờ thấp điểm thì đơn giá sẽ được giảm 10%.
/**/

/**/

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

struct DT
{
char goi[12],nhan[12];
int tg,td;
};

void nhap(DT *a,int n)
{
for(int i=0;i<n;i++)
{
printf("\n\n Nhap cuoc goi thu %d",i+1);

printf("\n-   So may goi: ");
fflush(stdin);
gets(a[i].goi);

char tam[12];
do
{
printf("-   So may nhan: ");
fflush(stdin);
gets(tam);
}
while(strcmp(tam,a[i].goi)==0);

strcpy(a[i].nhan,tam);

printf("-   Thoi gian: ");
scanf("%d",&a[i].tg);

printf("-   Thoi diem: ");
scanf("%d",&a[i].td);
}
}

void thongtin(DT a)
{
printf("\n- So may goi: %s",a.goi);
printf("; So may nhan: %s",a.nhan);
printf("; Thoi gian: %d",a.tg);
if(a.td==1)
printf("; Gio thap diem");
else printf("; Gio cao diem");
}

void inthongtin(DT *a,int n,int m)
{
for(int i=0;i<n;i++)
if(a[i].tg>m)
thongtin(a[i]);
}

float dongia(DT a)
{
float gia;
if(a.tg<=6)
gia=800;
else gia=(a.tg-6)*100+800;
if(a.td==1)
gia=gia*9/10;
return gia;
}

void intiencaonhat(DT *a,int n)
{
float max=dongia(a[0]);
for(int i=0;i<n;i++)
if(dongia(a[i])>max)
max=dongia(a[i]);

for(int i=0;i<n;i++)
if(dongia(a[i])==max)
thongtin(a[i]);
}

void main()
{
DT a[100];
int n;

printf(" Nhap so luong cuoc goi: ");
scanf("%d",&n);

nhap(a,n);

printf("-------------------------------");

int m;
printf("\n Nhap so phut: ");
scanf("%d",&m);
printf("\n Thong tin cuoc goi lon hon %d phut la: ",m);
inthongtin(a,n,m);

printf("\n\n Thong tin cuoc goi co so tien cao nhat la: ");
intiencaonhat(a,n);

getch();

}
/**/

Một vài bài C

01. Đảo từ trong chuỗi:
/**/

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *dao(char *s)
{
int n=strlen(s);
for(int i=0;i<n/2;i++)
{
char t=s[i];
s[i]=s[n-i-1];
s[n-i-1]=t;
}
return s;
}

char *daotu(char *s)
{
int dau=0;
for(int i=0;i<=strlen(s);i++)
{
if(s[i]==' '||s[i]=='\0')
{
int n=i+dau;
for(int j=dau;j<n/2;j++)
{
char t=s[j];
s[j]=s[n-j-1];
s[n-j-1]=t;
}
dau=i+1;
}
}
return s;
}

int main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" Chuoi vua nhap la: '%s'",s);
printf("\n Chuoi sau khi dao tu la: '%s'",dao(daotu(s)));
getch();
}

/**/

02. Hàm trả về chuỗi sau khi in hoa các ký tự đầu từ, các ký tự còn lại được in thường.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *chuanhoa(char *s)
{
for(int i=1;i<strlen(s);i++)
{
if(s[i-1]==' '&&s[i]>='a'&&s[i]<='z') // nếu nó là chữ thường và trước nó là kí tự trắng
s[i]=s[i]-32;
else if(s[i-1]!=' '&&s[i]>='A'&&s[i]<='Z') // nếu nó là chữ hoa và trước nó khác trắng.
s[i]=s[i]+32;
}
if(s[0]>='a'&&s[0]<='z') // riêng cho trường hợp s[0]
s[0]=s[0]-32;
return s;
}

void main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" Chuoi sau khi chuan hoa la: %s",chuanhoa(s));
getch();
}

03. Tìm 1 từ dài nhất trong chuỗi:

/* */

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

char *tim(char *s)
{
int cuoi, i=0, j=0, max=0, dem=0;
char *p=(char*)malloc(100);
for(; i<=strlen(s); i++)
{
if(s[i]!=' '&&s[i]!='\0') dem++;
else
{
if(dem>max)
{
max=dem;
cuoi=i-1;
}
dem=0;
}
}
for(i=cuoi-max+1; i<=cuoi; p[j++]=s[i++]);
p[j]='\0';
return p;
}

int main()
{
char s[100];
printf(" Nhap chuoi: ");
fflush(stdin);
gets(s);
printf(" Chuoi vua nhap la: '%s'",s);
printf("\n 1 tu co do dai lon nhat trong chuoi la: '%s'",tim(s));
getch();
}

/* */

04. Xóa chuỗi con từ vị trí k với n kí tự:

#include<stdio.h>
#include<string.h>
#include<conio.h>

char *xoa(char *s,int k,int n)
{
int d=0;
for(int i=k-1;i<=strlen(s);i++)
if(i<k-1+n&&s[i]!=NULL)
d++;
else
s[i-d]=s[i];
return s;
}

void main()
{
char s[100];
int n,k;
printf(" Nhap chuoi: ");
gets(s);
printf(" Nhap vi tri xoa: ");
scanf("%d",&k);
printf(" Nhap so ki tu can xoa: ");
scanf("%d",&n);
printf("Chuoi sau khi xoa la: %s",xoa(s,k,n));
getch();
}

05. Đếm số từ trong chuỗi:

#include<stdio.h>
#include<string.h>
#include<conio.h>

int sotu(char *s)
{
int d=0;
for(int i=0;i<=strlen(s);i++)
if(s[i]!=' '&&(s[i+1]==' '||s[i+1]==NULL))
d++;
return d;
}

void main()
{
char s[100];
printf(" Nhap chuoi: ");
gets(s);
printf(" So tu trong chuoi la: %d",sotu(s));
getch();
}




Thứ Hai, 6 tháng 1, 2014

Games for windows phone 8

Temple Run 2: http://www.windowsphone.com/en-us/store/app/temple-run-2/6fa921ac-1f29-42e8-9f65-e8da33fcada3

4 Elements: http://www.windowsphone.com/en-us/store/app/4-elements-puzzledom/a817def1-2589-4581-a529-4b8ead3d10fc

Brain Cube Reloaded: http://www.windowsphone.com/en-us/store/app/brain-cube-reloaded/acc50661-f879-4175-9d6c-616158a8235e

Clown College: http://www.windowsphone.com/en-us/store/app/clown-college/976e6dfc-c864-4fbe-9c4f-3f7410344a0f



Call of Carlos: http://www.windowsphone.com/en-us/store/app/call-of-carlos/a0387105-9d30-4045-ba09-f5f5022c76f1

Đào vàng đón xuân: http://www.windowsphone.com/en-us/store/app/%C4%91%C3%A0o-v%C3%A0ng-%C4%91%C3%B3n-xu%C3%A2n/c5b290d6-e318-4b28-a02c-68c8223df6c9

ilomilo trial: http://www.windowsphone.com/en-us/store/app/ilomilo/6d8088a0-77d6-df11-a844-00237de2db9e

Turn N Turn: http://www.windowsphone.com/en-us/store/app/turn-n-run/1df94161-6d32-4088-a9e4-3fbaec986773

Contre Jour trial: http://www.windowsphone.com/en-us/store/app/contre-jour/4e66e96f-6390-43a1-921f-d43fd5c9eb13

AE Fruit Slash: http://www.windowsphone.com/en-us/store/app/ae-fruit-slash/0456cf7d-1802-4e07-8120-304a06cbdbf1

Shuriken Ninja: http://www.windowsphone.com/en-us/store/app/shuriken-ninja/b74d7c69-de5a-e011-854c-00237de2db9e

Totemo trial: http://www.windowsphone.com/en-us/store/app/totemo/8640892d-15b0-4b03-af45-1f90cda968ec

Cut The Rope Exp: http://www.windowsphone.com/en-us/store/app/cut-the-rope-exp/d9f1608e-138a-4278-802f-25e32e44c068

AG Jetpack Prisoner Escape: http://www.windowsphone.com/en-us/store/app/ag-jetpack-prisoner-escape/3d6bcaa0-a2fa-41cb-81b5-0c47e397fbdc

Windows Phone 8 - DIctionary Apps

Xynotec: http://www.windowsphone.com/en-us/store/app/en-vi-dict-xynotec/421a927d-a0ca-49f3-a5ed-d9e233ab9eab

e-v: http://www.windowsphone.com/en-us/store/app/english-vietnamese-dictionary/669771fb-e1d2-466d-9779-2b6f0275f31a

av mini dict: http://www.windowsphone.com/en-us/store/app/a-v-mini-dict/eae1ecb6-0ed2-4de9-83e8-a09770a9250f