PDA

View Full Version : Tổng hợp bài tập C/C++ (Mục lục trang 1)



neverland87
21-06-2007, 10:56 AM
Mục lục:

Trang 1 (http://forums.congdongcviet.com/showthread.php?t=2556)

MÃ HÓA THÔNG ĐIỆP
GIẢI PHƯƠNG TRÌNH BẬC NHẤT
TÍNH CĂN BẬC HAI THEO PHƯƠNG PHÁP LẶP NEWTON
CẤU TRÚC VÀ CÁC HÀM THAO TÁC TRÊN SỐ PHỨC
DÃY TĂNG DẦN
DÃY TĂNG CÓ TỔNG DÀI NHẤT
QUẢN LÝ SINH VIÊN
GIẢI PHƯƠNG TRÌNH BẬC HAI
MA PHƯƠNG
FILE VÀ HỆ THỐNG


Trang 2 (http://forums.congdongcviet.com/showthread.php?t=2556&page=2)

SẮP XẾP MẢNG
Một ví dụ về Đa hình
Tiếp một ví dụ về Đa hình
Tổng hai ma trận
Một ví dụ về sử dụng template và quá tải toán tử Nhập xuất
Ví dụ về quá tải toán tử
Đếm số lần xuất hiện của các ký tự trong chuỗi
Bài toán Ancarokhi
Chứng minh đẳng thức An Casi
Hiện bảng mã ASCII
In ra năm âm lịch tương ứng với năm nhập vào.
In ra bảng cửu chương
Nhập chuỗi và in chuỗi
Giải hệ phương trình bậc nhất.
Tính thứ của ngày


Trang 3 (http://forums.congdongcviet.com/showthread.php?t=2556&page=3)

Chuyển số La Mã sang số Ả rập
Chuyển năm sang số La Mã
Thuật toán sắp xếp bẳng Radix sort
Danh sách liên kết đơn (Thuật toán vừa chèn vừa sắp xếp)
Quá tải toàn tử nhập xuất và sử dụng template
Chương trình đếm số ký tự trong một chuỗi ASCII
Biểu diễn số dưới dạng bit
Đảo chuỗi
Chương trình xem tập tin
Giải bài toán trâu ăn cỏ
Loại bỏ khoảng trống thừa trong chuỗi
Tìm tất cả các ước của một số N
Bội số chung và ước số chung
Trộn 2 dãy giảm thành một dãy tăng
Tính tích 2 ma trận:
In danh sách các số hoàn hảo nhỏ hơn số N nhập từ user


Trang 4 (http://forums.congdongcviet.com/showthread.php?t=2556&page=4)

Bài in ra lịch của một năm bất kỳ lớn hơn 1700
Bài tập kiểm tra dấu ngoặc đúng.
Bài toán Tám Hoàng Hậu
In ra số Hex tương ứng với một số nguyên dương
Liệt kê các hoán vị của N phần tử
In chuỗi theo các từ mỗi từ một dòng
In ra chữ số hàng trăm hàng chục hàng đơn vị
Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều
Tính tổ hợp chập K của N phần tử
Chương trình đọc số có 1,2 hoặc 3 chữ số.
Tính số ngày trong một tháng trong một năm bất kỳ
Bài kiểm tra số nguyên tố
Tìm max min của 4 số
Tìm n số Fibonaci đầu tiên


Trang 5 (http://forums.congdongcviet.com/showthread.php?t=2556&page=5)

(Ngân hàng)Tìm số tiền nhận trong n tháng khi biết lãi xuất
In ra dãy số ngược so với dãy số nhập vào
Trò chơi 8 hòn bi
Kiểm tra số đối xứng
Điền giá trị cho một mảng vuông theo chiều kim đồng hồ
In hình tam giác
Trộn hai mảng tăng dần thành một mảng tăng dần
Tìm vị trí đầu và vị trí cuối của một số trong một dãy số
Tính x^1/1! + x^2/2! + x^3/3! + ... + x^n/n!
Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 3 đĩa
Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa

neverland87
21-06-2007, 10:58 AM
MÃ HÓA THÔNG ĐIỆP


#include <stdio.h>
#include <ctype.h>
#include <alloc.h>

char *crypt(char *tdiep, int column)
{
char tam[255], *result;
int i = 0, k = 0, n, j=0;

while(tdiep[i] != 0)
{
if (isalnum(tdiep[i]))
tam[k++] = tdiep[i];
i++;
}
tam[k] = 0;
result = (char *)malloc(k+1);
for (i=0; i<column; i++)
{
n = 0;
while(n+i < k)
{
result[j++] = tolower(tam[n+i]);
n += column;
}
}
result[k] = 0;
return result;
}

void main()
{
char thongdiep[255], *mahoa;
int col;

printf("\nNhap thong diep can ma hoa : ");
gets(thongdiep);
printf("\nCho biet so cot : ");
scanf("%d", &col);
mahoa = crypt(thongdiep, col);
printf("\nThong diep da duoc ma hoa thanh : %s", mahoa);
getch();
}


GIẢI PHƯƠNG TRÌNH BẬC NHẤT


#include <stdio.h>

void main()
{
float a, b;

printf("\nGiai phuong trinh bac nhat AX + B = 0");
printf("\nCho biet ba he so A B : ");
scanf("%f%f", &a, &b);

if (a==0)
if (b!=0)
printf("Phuong trinh vo nghiem");
else
printf("Phuong trinh co nghiem khong xac dinh");
else
printf("Dap so cua phuong trinh tren = %f", -b/a);
getch();
}

neverland87
21-06-2007, 10:59 AM
TÍNH CĂN BẬC HAI THEO PHƯƠNG PHÁP LẶP NEWTON


#include <stdio.h>
#include <math.h>

void main()
{
double a, xn, ketqua;

printf("\nNhap vao so muon tinh can bac hai : ");
scanf("%lf", &a);
xn = (a+1)/2;
do {
ketqua = xn;
xn = 0.5 * (xn + a/xn);
} while (fabs(xn-ketqua) > 0.0001);
printf("\nKet qua = %lf", xn);
getch();
}

neverland87
21-06-2007, 11:00 AM
CẤU TRÚC VÀ CÁC HÀM THAO TÁC TRÊN SỐ PHỨC


#include <math.h>

typedef struct tagcomplex {
float thuc, ao;
} complex;

complex tong(complex a, complex
{
complex c;
c.thuc = a.thuc + b.thuc;
c.ao = a.ao + b.ao;
return c;
}

complex hieu(complex a, complex
{
complex c;
c.thuc = a.thuc - b.thuc;
c.ao = a.ao - b.ao;
return c;
}

complex tich(complex a, complex
{
complex c;
c.thuc = a.thuc*b.thuc - a.ao*b.ao;
c.ao = a.thuc*b.ao + a.ao*b.thuc;
return c;
}

complex thuong(complex a, complex
{
complex c;
float tongbp;
tongbp = b.thuc*b.thuc + b.ao*b.ao;
c.thuc = (a.thuc*a.ao + b.thuc*b.ao)/tongbp;
c.ao = (a.ao*b.thuc - a.thuc*b.ao)/tongbp;
return c;
}

float argument(complex a)
{
return acos(a.thuc/sqrt(a.thuc*a.thuc + a.ao*a.ao));
}

float modul(complex a)
{
return sqrt(a.thuc*a.thuc + a.ao*a.ao);
}

void print_complex(complex a)
{
printf("%.2f + %.2fi", a.thuc, a.ao);
}

void main()
{
complex a, b, c;
printf("\nNhap he so thuc va phuc cua A : ");
scanf("%f%f", &a.thuc, &a.ao);
printf("\nNhap he so thuc va phuc cua B : ");
scanf("%f%f", &b.thuc, &b.ao);
printf("\nSo phuc A = ");
print_complex(a);
printf("\nSo phuc B = ");
print_complex( ;
printf("\nTong cua chung = ");
c = tong(a, ;
print_complex©;
printf("\nHieu cua chung = ");
c = hieu(a, ;
print_complex©;
printf("\nTich cua chung = ");
c = tich(a, ;
print_complex©;
printf("\nThuong cua chung = ");
c = thuong(a, ;
print_complex©;
printf("\nArgument cua a = %f", argument(a));
printf("\nModul cua a = %f", modul(a));
getch();
}

neverland87
21-06-2007, 11:02 AM
DÃY TĂNG DẦN

#include <stdio.h>

void main()
{
int a[10], i, maxstart, maxend, maxlen, tmpstart, tmpend, tmplen;

printf("\nNhap vao 10 phan tu nguyen cua day :");
for (i=0; i<10; i++)
scanf("%d", &a[i]);
printf("Day da cho :\n");
for (i=0; i<10; i++)
printf("%6d", a[i]);

maxstart = maxend = tmpstart = tmpend = 0;
maxlen = tmplen = 1;
for (i=1; i< 10; i++)
{
if (a[i] < a[tmpend])
{
if (maxlen < tmplen)
{
maxstart = tmpstart;
maxend = tmpend;
maxlen = tmplen;
}
tmpstart = tmpend = i;
tmplen = 1;
}
else
{
tmplen++;
tmpend++;
}
}
if (maxlen < tmplen)
{
maxstart = tmpstart;
maxend = tmpend;
}
printf("\nDay tang co so phan tu nhieu nhat la : \n");
for (i=maxstart; i<=maxend; i++)
printf("%6d", a[i]);
getch();
}

neverland87
21-06-2007, 11:03 AM
DÃY TĂNG CÓ TỔNG DÀI NHẤT


#include <stdio.h>

void main()
{
int a[10], i, maxstart, maxend, maxtotal, tmpstart, tmpend, tmptotal;

printf("\nNhap vao 10 phan tu nguyen cua day :");
for (i=0; i<10; i++)
scanf("%d", &a[i]);
printf("Day da cho :\n");
for (i=0; i<10; i++)
printf("%6d", a[i]);

maxstart = maxend = tmpstart = tmpend = 0;
maxtotal = tmptotal = a[0];
for (i=1; i< 10; i++)
{
if (a[i] < a[tmpend])
{
if (maxtotal < tmptotal)
{
maxstart = tmpstart;
maxend = tmpend;
maxtotal = tmptotal;
}
tmpstart = tmpend = i;
tmptotal = a[i];
}
else
{
tmptotal += a[i];
tmpend++;
}
}
if (maxtotal < tmptotal)
{
maxstart = tmpstart;
maxend = tmpend;
}
printf("\nDay tang co tong nhieu nhat la : \n");
for (i=maxstart; i<=maxend; i++)
printf("%6d", a[i]);
getch();
}

neverland87
21-06-2007, 11:06 AM
QUẢN LÝ SINH VIÊN


#include <stdio.h>
#include <ctype.h>
#include <mem.h>
#include <string.h>

#define MAX 100
#define TOAN 0
#define LY 1
#define HOA 2

struct sinhvien {
char mslop[5];
char hoten[35];
float diem[3];
} danhsach[MAX];
int n = 0;

void nhapmoi()
{
char mslop[5], tmp[3];
int i;
float diem[3];
do {
printf("\nCho biet ma so lop : ");
gets(mslop);
if (strlen(mslop))
{
strcpy(danhsach[n].mslop, mslop);
printf("\nCho biet ho ten : ");
gets(danhsach[n].hoten);
printf("\nCho biet diem so : ");
for (i=0; i<3; i++)
{
scanf("%f", &diem[i]);
danhsach[n].diem[i] = diem[i];
}
gets(tmp);
n++;
}
} while (strlen(mslop));
}

void timkiem()
{
char mslop[5];
int i = 0, found = 0;
printf("\nCho biet ma so lop : ");
gets(mslop);
if (strlen(mslop))
while (i<n)
if (stricmp(danhsach[i].mslop, mslop) == 0)
{
printf("\nMa so lop : %s", danhsach[i].mslop);
printf("\nHo va ten : %s", danhsach[i].hoten);
printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]);
printf("\nDiem Ly : %f", danhsach[i].diem[LY]);
printf("\nDiem Hoa : %f", danhsach[i].diem[HOA]);
found = 1;
break;
}
else
i++;
if (!found)
printf("\nKhong tim thay!!!");
}

void xoa()
{
char mslop[5], traloi;
int i = 0, j;
printf("\nCho biet ma so lop : ");
gets(mslop);
if (strlen(mslop))
while (i<n)
if (stricmp(danhsach[i].mslop, mslop) == 0)
{
printf("\nMa so lop : %s", danhsach[i].mslop);
printf("\nHo va ten : %s", danhsach[i].hoten);
printf("\nDiem Toan : %f", danhsach[i].diem[TOAN]);
printf("\nDiem Ly : %f", danhsach[i].diem[LY]);
printf("\nDiem Hoa : %f", danhsach[i].diem[HOA]);
printf("\nCo muon xoa khong (C/K)? ");
do {
traloi = toupper(getch());
} while (traloi != 'C' && traloi != 'K');
putc(traloi, stdout);
if (traloi == 'C')
{
n--;
memcpy(&danhsach[i], &danhsach[i+1], sizeof(struct sinhvien) * (n-i));
break;
}
}
else
i++;
}

void menu()
{
printf("\n***************");
printf("\n* 1. Them *");
printf("\n* 2. Xoa *");
printf("\n* 3. Tim kiem *");
printf("\n* 0. Thoat *");
printf("\n***************");
printf("\nChon lua ? ");
}

void main()
{
char traloi;
do {
menu();
do {
traloi = getch();
} while (traloi < '0' || traloi > '3');
putc(traloi, stdout);
switch (traloi)
{
case '1' : nhapmoi();
break;
case '2' : xoa();
break;
case '3' : timkiem();
break;
}
} while (traloi != '0');
}

neverland87
21-06-2007, 11:10 AM
GIẢI PHƯƠNG TRÌNH BẬC HAI


#include <stdio.h>
#include <math.h>
void main()
{
float a, b, c, delta;

printf("\nGiai phuong trinh bac hai AXý + BX + C = 0");
printf("\nCho biet ba he so A B C : ");
scanf("%f%f%f", &a, &b, &c);

delta = b * b - 4 * a * c;
if (delta<0)
printf("Phuong trinh vo nghiem");
else if (delta == 0)
printf("Phuong trinh co nghiem kep x1 = x2 = %f", -b/(2*a));
else
{
printf("Phuong trinh co hai nghiem phan biet\nx1 = %f", (-b + sqrt(delta))/(2*a));
printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
}
getch();
}

neverland87
21-06-2007, 11:18 AM
MA PHƯƠNG


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

// func declaration
void matrix( int n );

// main()
int main(void)
{
int n;

// input until it's valid.
do
{
printf("\n Plz input size of matrix [ odd size & n < 20 ]: n = ");
scanf("%d",&n);
if ( n % 2 == 0 ) printf("\n Invalid input value .. Plz re-input ... \n");
}
while ( n % 2 == 0 );

if ( n > 20 ) { n = 19 ; // in case of n is greater than 20
printf("\n %d is greater than 20 & set to be default as 19 .",n ); } // end if

// call matrix()
matrix(n);
// stop to watch
getch();
return 0;
}

// function matrix(int n)
void matrix( int n )
{
int a[20][20];
int i, j, row, col, count = 1;
int old_row, old_col, sum = 0;

// set starting value of array
for ( i = 0 ; i < n ; i++ )
for ( j = 0 ; j < n ; j++ )
a[i][j] = 0;

// set the 1st value to start
row = 0; col = (n-1) / 2;

while ( count < n*n + 1 )
{
a[row][col] = count++ ; // set value for elements
old_row = row ; old_col = col; // save the last addresses
// define whether going out of array
row -= 1; if ( row == -1 ) row = n - 1;
col += 1; if ( col == n ) col = 0;
// in case of already having number
if ( a[row][col] != 0 )
{
row = old_row + 1;
col = old_col;
} // end if
} // end while
// print result
printf("\n");
for ( i = 0 ; i < n ; i++ )
{
for ( j = 0 ; j < n ; j++ )
printf("%4d",a[i][j]);
printf("\n");
} // end for

// calculate sum
for ( j = 0 ; j < n ; j++ )
sum += a[0][j];
printf("\n Sum of each row - column - diagonal line is : %d " , sum);

return;
}

neverland87
21-06-2007, 11:23 AM
FILE VÀ HỆ THỐNG

1. Xóa 1 file dùng Remove

#include <stdio.h>

int main()
{
remove("d:/urls1.dat");

return 0;
}

2. Xóa 1 File dùng Unlink

#include <stdio.h>

int main()
{
remove("C:/pete.txt");

return 0;
}

3. Cho biết thông tin FAT


#include <stdio.h>
#include <dos.h>

void main(void)
{
struct fatinfo fat;

getfatd(&fat);

printf("Sectors per cluster %d\n", fat.fi_sclus);
printf("Clusters per disk %u\n", fat.fi_nclus);
printf("Bytes per cluster %d\n", fat.fi_bysec);
printf("Disk type %x\n", fat.fi_fatid & 0xFF);
}

4. Đếm tần suất 1 kí tự trong 1 file

# include <stdio.h>
# include <string.h>
main()
{
FILE *fp;
char in[100];
long int freq[257];
int i;

printf("\nFile frequency table generator\n\n");

printf("\nInput file:");
scanf("%s",in);
fp=fopen(in,"rb");
if(fp==NULL)
{
printf("\nCould not open input file.Aborting\n");
return 1;
}
for(i=0;i<257;i++)
freq[i]=0;
while(i=fgetc(fp),i!=EOF)
{
freq[i]++;
}
fcloseall();
fp=fopen("count.txt","w");
fprintf(fp,"\nCharacter frequency table of %s\n",in);
fprintf(fp,"\nCharacter ASCII frequency\n\n");
for(i=0;i<256;i++)
{
if(i==26)
{
fprintf(fp,"\t 26\t %ld\n",freq[26]);
}
else if(i==9)
{
fprintf(fp,"\t 9\t %ld",freq[9]);
}
else if(i<10)
{
fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);
}
else if(i<100)
{
fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);
}
else
{
fprintf(fp,"%c\t %d\t %ld\n",i,i,freq[i]);
}
}

fcloseall();
printf("\nFrequency table copied to count.txt\n");
}

5. Đọc nội dung 1 file

#include <stdio.h>

void main(void)
{
FILE *fp;
char ch;

fp = fopen("websites.txt","r");
ch = getc(fp);
while(ch!=EOF)
{
putchar(ch);
ch = getc(fp);
}
printf("\n\n");
}

6. Chọn ổ đĩa trong DOS

#include <stdio.h>
#include <dir.h>

void main(void)
{
int drives;

drives = setdisk(3);
printf("The number of available drives is %d\n", drives);
}

7.Chọn ổ đĩa trong WINS

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
char szBuffer[MAX_PATH+100];
UINT nDrive, AvailDrive = 0;
int dwLogicalDrives = GetLogicalDrives();
DWORD Success;

printf("Number of logical drives: %d\n", dwLogicalDrives);
for (nDrive = 0; nDrive < 32; nDrive++)
{
if (dwLogicalDrives & (1 << nDrive))
{ // Is drive available?
AvailDrive++;
// Get disk information.
wsprintf(szBuffer, "%c:\\", nDrive+'A', '\0');
// Print out information.
if(SetCurrentDirectory(szBuffer))
printf("%s Is Now Current\n", szBuffer);
else
printf("Could not set %s as the current drive\n", szBuffer);
}
}
printf("Number of drives available: %d\n", AvailDrive);

}

8. Cho biết kích thước 1 file


#include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>

int main()
{
int fp;

long file_size;

if ((fp = open("f:/cprojects/urls.txt", O_RDONLY)) == -1)
printf("Error opening the file \n");
else
{
file_size = filelength(file_handle);
printf("The file size in bytes is %ld\n", file_size);
close(fp);
}
return 0;
}

neverland87
21-06-2007, 11:26 AM
SẮP XẾP MẢNG


#include<alloc.h>
#include<stdio.h>
#include<conio.h>
//=======================================
void taolap(int *A,int n)
{
int i;
printf("\n Tao lap day so:\n");
for(i=0;i<n;i++)
{
printf("\n A[%d]=",i);
scanf("%d",&A[i]);
}
}
void dayso(int *A,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",A[i]);
}

void select(int *A,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(A[i]>A[j])
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
printf("\n Ket qua thu duoc la:");
dayso(A,n);
}
void luachon()
{
clrscr();
int *A,n;
printf("\n \t SAP XEP KIEU LUA CHON\n");
printf("\n Nhap so phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
taolap(A,n);
select(A,n);
free(A);
getch();
}

//=======================================
void in2(int *A,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",A[i]);
}
void tructiep()
{
clrscr();
int *A,i,j,n,temp;
printf("\n SAP XEP KIEU TRUC TIEP\n");
printf("\n\t SAP XEP KIEU TRUC TIEP\n");
printf("\n Nhap so phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
printf("\n Tao lap day so:\n");
for(i=0;i<n;i++)
{
printf("\n A[%d]=",i);
scanf("%d",&A[i]);
}
for(i=1;i<n;i++)
{
temp=A[i];
for(j=i-1;j>=0&&temp<A[j];j--)
A[j+1]=A[j];
A[j+1]=temp;
printf("\n\nKet qua lan thu %d:",i);
in2(A,i+1);
}
free(A);
getch();
}
//=======================================
void tlap(int *A,int n)
{

int i;
printf("\n");
printf("\n Tao lap day so:\n");
for(i=0;i<n;i++)
{
printf("\n A[%d]=",i);
scanf("%d",&A[i]);
}
}
void in1(int *A,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d",A[i]);
}

void bubble(int *A,int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
for(j=n-1;j>=i;j--)
{
if(A[j-1]>A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
}
}
printf("\n\n Ket qua lan %d:",i);
in1(A,n);
}
}
void suibot()
{
clrscr();
int *A,n;
printf("\n SAP XEP KIEU SUI BOT\n");
printf("\n Nhap so phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
tlap(A,n);
bubble(A,n) ;
free(A);
getch();
}
//=======================================
void qs(int *A,int left,int right)
{
int i,j,x,y;
i=left;
j=right;
x=A[(left+right)/2];
do
{
while(A[i]<x&&i<right)i++;
while(A[j]>x&&j>left)j--;
if(i<=j)
{
y=A[i];
A[i]=A[j];
A[j]=y;
i++;
j--;
}
}while(i<=j);
if(left<j)qs(A,left,j);
if(i<right)qs(A,i,right);
}
void quick(int *A,int n)
{
qs(A,0,n-1);
}

void in3(int *A,int n)
{
int i;
for(i=0;i<n;i++)
printf("%5d ",A[i]);
}
void nhanh()
{
clrscr();
int *A,n;
printf("\n SAP XAP NHANH\n");
printf("\n So phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
printf("\n\n Tao lap day so:\n");
for(int i=0;i<n;i++)
{
printf("\n A[%d]=",i);
scanf("%d",&A[i]);
}
quick(A,n);
printf("\n\n");
printf("Ket qua thu duoc la:\n\n");
in3(A,n);
getch();
free(A);
}
//=======================================
void in4(int *A,int n)
{
for(int i=0;i<n;i++)
printf("%5d",A[i]);
}
void merge(int *A,int n)
{
int i,k,j,low1,up1,low2,up2,size;
int *ds;
size=1;
ds=(int*)malloc(n*sizeof(int));
while(size<n)
{
low1=0;
k=0 ;
while(low1+size<n)
{
low2=low1+size;
up1=low2-1;
if(low2+size-1<n)
up2=low2+size-1;
else
up2=n-1;
for(i=low1,j=low2;i<=up1 && j<=up2;k++)
{
if(A[i]<=A[j])
ds[k]=A[i++];
else
ds[k]=A[j++];
}
for(;i<up1;k++)
ds[k]=A[i++];
for(;j<up2;k++)
ds[k]=A[j++];
low1=up2+1;
}
for(i=low1;k<n;i++)
ds[k++]=A[i];
for(i=0;i<n;i++)
A[i]=ds[i];
size*=2;
}
printf("\n \n Ket qua thu duoc la:\n\n");
in4(A,n);
free(ds);
}
void hoanhap()
{
clrscr();
int *A,n,i;
printf("\n \t SAP XEP KIEU HOA NHAP\n");
printf("\n So phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
printf("\n Tao lap day so:\n");
for(i=0;i<n;i++)
{
printf("\nA[%2d]=",i);
scanf("%d",&A[i]);
}
merge(A,n);
printf("\n");
getch();
free(A);
}

//=======================================
void in5(int *A,int n)
{
for(int i=0;i<n;i++)
printf("%5d",A[i]);
}
void shaker(int *A,int n)
{
int i,j,temp,tdoi;
do
{
tdoi=0;
for(i=n-1;i>0;i--)
{
if(A[i-1]>A[i])
{
temp=A[i-1];
A[i-1]=A[i];
A[i]=temp;
tdoi=1;
}
}
for(j=1;j<n;j++)
{
if(A[j-1]>A[j])
{
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp;
tdoi=1;
}
}

}while(tdoi);
printf("\n\n Ket qua la :",tdoi);
in5(A,n);
}
void shaker()
{
clrscr();
int *A,n,i;
printf("\n \tSHAKER_SORT\n");
printf("\n So phan tu n=");
scanf("%d",&n);
A=(int*)malloc(n*sizeof(int));
printf("\n \n Tao lap day so:\n");
for(i=0;i<n;i++)
{
printf("\n A[%2d]=",i);
scanf("%d",&A[i]);
}
shaker(A,n);
getch();
free(A);
}


//=======================================
void main()
{
while(1) {
clrscr();
int key;
printf("\n\tSAP XEP VA TIM KIEM\n");
printf("\n 1.Selection_sort\n");;
printf("\n 2.Bubble_sort\n");
printf("\n 3.Insertion_sort\n");
printf("\n 4.Quick_sort\n");
printf("\n 5.Merge_sort\n");
printf("\n 6.Shaker_sort\n");
printf("\n 0.Tro ve");
printf("\nBam mot phim de chon chuc nang:");
scanf("%d",&key);
if(key==0) break;

switch(key)
{
case 1:
clrscr();
luachon();
printf("\n\n\tAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;
case 2:
clrscr();
suibot();
printf("\n\n\tAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;
case 3:
clrscr();
tructiep();
printf("\n");
printf("\nAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;
case 4:
clrscr();
nhanh();
printf("\n");
printf("\nAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;
case 5:
clrscr();
hoanhap();
printf("\n");
printf("\nAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;
case 6:
clrscr();
shaker();
printf("\n");
printf("\nAn phim bat ky de tro lai menu chinh");
getch();
clrscr();
break;

}
}
// getch();
}

iamvtn
22-06-2007, 11:00 PM
Một ví dụ về Đa hình


#include <iostream.h>
#include <conio.h>
#include <math.h>
class hinhve
{
public:
virtual float dientich() = 0;
virtual char *ten() = 0;
virtual void in()=0;
};

class haichieu : public hinhve
{
public:
virtual float chuvi() = 0;
void in()
{
cout<<"ten cua hinh: "<<ten()
<<" ,dien tich la: "<<dientich()
<<" ,chu vi la: "<<chuvi()<<endl;
}
};

class bachieu : public hinhve
{
public:
virtual float thetich() = 0;
void in()
{
cout<<"ten cua hinh: "<<ten()
<<" ,dien tich la: "<<dientich()
<<" ,the tich la: "<<thetich()<<endl;
}
};


class hinhtron : public haichieu
{
private:
float r;
public:
hinhtron() { r = 0;}
hinhtron(float bk) {r = bk;}
float chuvi()
{
return 2*3.14*r;
}
float dientich()
{
return 3.14*r*r;
}
char *ten()
{
return "Hinh Tron";
}

};


class hinhvuong : public haichieu
{
private:
float a;
public:
hinhvuong(float x)
{
a = x;
}
float chuvi()
{
return a*4;
}
float dientich()
{
return a*a;
}
char *ten()
{
return "Hinh Vuong";
}
};

class tgdeu : public haichieu
{
private:
float a;
public:
tgdeu(float x) : a(x){}
float chuvi()
{
return 3*a;
}
float dientich()
{
return a*a*sqrt(3)/2;
}
char *ten()
{
return "Hinh tam giac deu";
}
};
class cau: public bachieu
{
private:
float r;
public:
cau(float bk): r(bk){}
float thetich() { return r*r*r*3.14;}
float dientich() { return 4*3.14*r*r; }
char *ten()
{
return "Hinh Cau";
}
};

class lapphuong : public bachieu
{
private:
float a;
public:
lapphuong(float x) : a(x) {}
float thetich() { return a*a*a; }
float dientich() { return 6*a*a; }
char * ten() { return "Hinh Lap Phuong"; }
};

void main()
{
hinhve *p;
p = new hinhtron(3);
p->in();
delete p;
p = new lapphuong(3);
p -> in();
delete p;
p = new cau(3);
p -> in();
delete p;
p = new tgdeu(5);
p -> in();
delete p;
p = new hinhvuong(6);
p -> in();
getch();
}

iamvtn
22-06-2007, 11:53 PM
Tiếp một ví dụ về Đa hình


#include <iostream.h>
#include <conio.h>
#include <math.h>

class Point
{
private:
int x; int y;
public:
Point()
{
x = 0; y = 0;
}
Point(int a,int b)
{
x = a; y = b;
}
virtual void set(int a,int b)
{
x = a; y = b;
}
float gettung()
{
return y;
}
float gethoanh()
{
return x;
}
float kc(Point t)
{
return ((x - t.x)*(x - t.x) + (y - t.y)*(y - t.y));
}
virtual void in()
{
cout<<"\n("<<x<<";"<<y<<")";
}
};
class Cpoint : protected Point
{
private:
int mau;
public:
Cpoint() : Point()
{
mau = 0;
}
Cpoint(int a,int b,int mau_) : Point(a,b)
{
mau = mau_;
}
void set(int a,int b,int mau_)
{
Point::set(a,b);
mau = mau_;
}
void in()
{
Point::in();
cout<<" Co mau la "<<mau;
}
} ;

void main()
{
Point *p;
p = new Cpoint(3,5,6);
p->in();
delete p;
p = new Point(5,2);
p->in();
getch();
}

iamvtn
23-06-2007, 12:17 AM
Tổng hai ma trận



#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot);
void nhapmt(float a[][10],int hang,int cot);
void inmt(float a[][10],int hang,int cot);
void main()
{
system("color 3e");
float a[10][10],b[10][10],c[10][10];
int hang1,cot1;

cout<<"Moi ban nhap vao ma tran a: \n";
cout<<"Nhap vao so hang cua ma tran a: ";
cin>>hang1;
cout<<"Nhap vao so cot cua ma tran a: ";
cin>>cot1;
nhapmt(a,hang1,cot1);
inmt(a,hang1,cot1);

int hang2,cot2;
cout<<"Moi ban nhap vao ma tran b: \n";
do
{
cout<<"Nhap vao so hang cua ma tran b: ";
cin>>hang2;
}while(hang2 != hang1);
do
{
cout<<"Nhap vao so cot cua ma tran b: ";
cin>>cot2;
}while(cot2 != cot1);
nhapmt(b,hang2,cot2);
inmt(b,hang2,cot2);

cout<<"\nVay tong cua hai ma tran a,b la: \n";
congmt(a,b,c,hang1,cot1);
inmt(c,hang1,cot1);
getch();
}

void congmt(float a[][10],float b[][10],float c[][10],int hang,int cot)
{
for (int i=0; i<hang; i++)
for (int j=0; j<cot; j++)
c[i][j] = a[i][j] + b[i][j];
}

void nhapmt(float a[][10],int hang,int cot)
{
for(int i = 0;i < hang;i++)
{
for(int j = 0; j < cot; j++)
{
cout<<"Nhap vao phan tu ["<<i<<";"<<j<<"]: ";
cin>>a[i][j];
}
}
}

void inmt(float a[][10],int hang,int cot)
{
for(int i = 0; i < hang; i++)
{
for(int j = 0; j < cot; j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
}

iamvtn
23-06-2007, 10:46 AM
Một ví dụ về sử dụng template và quá tải toán tử Nhập xuất


#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
class sv
{
private :
char ten[100];
float Diem;
public:
sv()
{
Diem=0;
}
sv(char a[],float D)
{
strcpy(ten,a);
Diem=D;
}
sv(sv&a)
{
Diem = a.Diem;
strcpy(ten,a.ten);
}
void set_sv(char a[],float D)
{
strcpy(ten,a);
Diem=D;
}
float get_diem()const
{
return Diem;
}
char* get_ten()
{
return ten;
}
friend ostream&operator <<(ostream&out,sv&);
friend istream&operator>>(istream&in,sv&);
operator float()
{
return float(Diem);
}


};
ostream&operator <<(ostream&out,sv&a)
{
cout<<"\n\n\t\t\tTen "<<a.ten<<endl;
cout<<"\t\t\tDiem "<<a.Diem<<endl;
}
istream&operator>>(istream&in,sv&a)
{
cout<<"\t\t\tNhap ten ";
cin.ignore();
cin.getline(a.ten,50);
cout<<"\t\t\tNhap diem ";
cin>>a.Diem;

}
int ucln(int a,int b)
{
int r;
while(b)
{
r = a%b;
a = b;
b=r;
}
return a;
}

class phanso
{
private:
float tu,mau;
public:
phanso(float a=1,float b=1)
{
if(b)
{
tu = a;
mau = b;
}
else
{
tu =1;
mau=1;
}
}
void set_phanso(float a,float b)
{
tu =a;
mau = b;
}
void nhap()
{
cout<<"\t\t\tNhap du lieu cho phan so "<<endl;
cout<<"\t\t\tTu ";
cin>>tu;
cout<<"\t\t\tMau ";
cin>>mau;
toigian();
}
void toigian()
{
int t=ucln(tu,mau);
tu = tu/t;
mau = mau/t;
}
operator float()
{
return float(tu/mau);
}
friend ostream&operator <<(ostream&out,phanso&a);
friend istream&operator >>(istream&in,phanso&a);

};
ostream&operator<<(ostream&out,phanso&a)
{
out<<a.tu<<"/"<<a.mau<<"->";
}
istream&operator >>(istream&in,phanso&a)
{
cout<<"\t\tTu ";
cin>>a.tu;
cout<<"\t\tMau ";
cin>>a.mau;
}
template <class T,int n>
class set
{
private:
T data[n];
int spt;
public:
set()
{
spt=0;
}
set(const set&a)
{
for(int i=0;i<a.spt;i++)
data[i]=a.data[i];
spt = a.spt;
}
void them(T&a);
bool search(T&a);
friend ostream& operator<<(ostream&out,set<T,n>&a);
friend set operator +(set&a,set&b);
friend set operator *(set&a,set&b);
friend set operator -(set&a,set&b);
set operator =(const set&b)
{
for(int i=0;i<b.spt;i++)
data[i]=b.data[i];
spt=b.spt;
return (*this);
}

};
template <class T,int n>
void set<T,n>::them(T&a)
{
if(spt<n)
data[spt++]=a;
else
cout<<"\t\tMang da day rui khong them duoc nua dau "<<endl;
}
template <class T,int n>
bool set<T,n>::search(T&a)
{
for(int i=0;i<spt;i++)
if(data[i]==a)
return true;
return false;
}
template <class T,int n>
ostream&operator<<(ostream&out,set<T,n>&a)
{
if(a.spt==0)
out<<" rong "<<endl;
for(int i=0;i<a.spt;i++)
{
out<<a.data[i];
if(i<a.spt-1)
cout<<"->";
}
}
template <class T,int n>
set<T,n> operator +(set<T,n>&a,set<T,n>&b)
{
set<T,n> r(a);

for(int i=0;i<b.spt;i++)
if(!a.search(b.data[i]))
r.them(b.data[i]);



return r;
}
template <class T,int n>
set<T,n> operator -(set<T,n>&a,set<T,n>&b)
{
set<T,n> r;
for(int i=0;i<a.spt;i++)
if(!b.search(a.data[i]))
r.them(a.data[i]);
return r;
}
template <class T,int n>
set<T,n> operator *(set<T,n>&a,set<T,n>&b)
{
set<T,n> r;

for(int i=0;i<a.spt;i++)
if(b.search(a.data[i]))

r.them(a.data[i]);

return r;
}
void main()
{
set<float,100> a;
set<float,100> c;
set<float,100> d;
set<float,100> e;
set<float,100> f;
set<sv,100> g;
set<phanso,100> b;
int n,m,l;
float r;
sv A;
phanso s;
cout<<"\t\t\tNhap so luong cac so thu ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<" nhap so thu "<<(i+1)<<":";
cin>>r;
a.them(r);
}clrscr();
cout<<"\t\t\tNhap so luong phan so ";
cin>>m;
for(int i=0;i<m;i++)
{
cout<<"\t\t\tNhap phan so thu "<<(i+1)<<endl;
cin>>s;
b.them(s);
c.them(s);clrscr();
}

clrscr();
cout<<"\t\t\tNhap so luong cac sinh vien ";
cin>>l;
for(int i=0;i<l;i++)
{
cout<<"\t\t\tNhap du lieu cho sinh vien thu "<<(i+1)<<endl;
cin>>A;
g.them(A);
clrscr();
}
clrscr();
textcolor(YELLOW+RED);
cprintf("%s","\t\t\tchuong trinh da gan cac so 1 cach tu dong ta duoc ");
cout<<"\n\nday so thuc vua nhap "<<endl;
cout<<a;
cout<<"\n\nday phan so vua nhap "<<endl;
cout<<b;
cout<<"\n\tDay sinh vien vua nhap "<<endl;
cout<<g;
getch();clrscr();
d = a+c;
cout<<"\n\n hop cua hai tap hop phan so va so thuc la "<<endl;;
cout<<d;
e=a*c;
cout<<"\n\n giao cua hai tap so thuc va phan so la "<<endl;
cout<<e;
cout<<"\n\nhieu cua hai tap so thuc va phan so la "<<endl;
f=a-c;
cout<<f;

getch();
}

iamvtn
23-06-2007, 09:00 PM
Ví dụ về quá tải toán tử



#include <iostream.h>
#include <conio.h>
#include <math.h>
class PS
{
public:
long tu,mau;

PS()
{
tu=0;
mau=0;
}
~PS(){};
int uscln(long a,long b);
void rutgon();
void nhap();
void xuat();
PS operator+(PS &a);
PS operator-(PS &a);
PS operator*(PS &a);
PS operator/(PS &a);

};
int PS::uscln(long a,long b)
{
if(a!=0 && b!=0)
{
a=abs(a);
b=abs(b);
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
return a;
}
else
return 1;
}

void PS::rutgon()
{
int u;
u=uscln(tu,mau);
tu=tu/u;
mau=mau/u;
}

void PS::nhap()
{
Nhap:
cout<<"Nhap tu so ";
cin>>tu;
cout<<"Nhap mau so ";
cin>>mau;
if(mau==0)
{
cout<<"Mau phai khac 0"<<endl;
goto Nhap;
}
}

void PS::xuat()
{
rutgon();
if(mau<0)
{mau=-mau; tu=-tu;}
if(tu==0)
cout<<"0"<<endl;
else
if(mau==1)
cout<<tu<<endl;
else
cout<<tu<<"/"<<mau<<endl;
}

PS PS::operator+(PS &a)
{
a.tu=tu*a.mau+mau*a.tu;
a.mau=mau*a.mau;
return a;
}
PS PS::operator-(PS &a)
{

a.tu=tu*a.mau-mau*a.tu;
a.mau=mau*a.mau;
return a;
}
PS PS::operator*(PS &a)
{
a.tu=tu*a.tu;
a.mau=mau*a.mau;
return a;
}
PS PS::operator/(PS &a)
{
a.tu=tu*a.mau;
a.mau=mau*a.tu;
return a;
}

iamvtn
24-06-2007, 08:29 PM
Đếm số lần xuất hiện của các ký tự trong chuỗi



#include <stdio.h>
#include <ctype.h>

void main()
{
char chuoi[80];
int i = 0, count = 0;

printf("\nNhap vao mot chuoi bat ky : ");
gets(chuoi);

while (chuoi[i] != 0)
{
if (isalpha(chuoi[i++]))
count++;
}

printf("So ky tu trong chuoi = %d", count);
getch();
}



Bài toán Ancarokhi



#include <stdio.h>

void main()
{
int dai, rong;

printf("\nBai toan Ancarokhi : Tim dien tich hinh chu nhat co chieu dai gap hai");
printf("\nchieu rong va dien tich = chu vi");
for (dai = 1; dai < 100; dai ++)
for (rong=1; rong < 100; rong++)
if (dai == 2 * rong && (dai + rong)*2 == dai*rong)
printf("\nDai = %d; Rong = %d", dai, rong);
getch();
}




Chứng minh đẳng thức An Casi



#include <stdio.h>

unsigned long vetrai(unsigned long n)
{
unsigned long tmp=0, i;
for (i=1; i<=n; i++)
tmp += i*i*i*i;
return tmp;
}

unsigned long vephai(unsigned long n)
{
unsigned long tmp;
tmp = (long)6*n*n*n*n*n + (long)15*n*n*n*n + (long)10*n*n*n - n;
tmp = tmp / (long)30 ;
return tmp;
}

void main()
{
unsigned long tong1, tong2, n;

for (n=1; n<=50; n++)
{
tong1 = vetrai(n);
tong2 = vephai(n);
if (tong1 == tong2)
{
printf("\nSo %d thoa man dang thuc An Casi. ", n);
printf("Tong1 = %ld - Tong2 = %ld", tong1, tong2);
}
else
{
printf("\nSo %d khong thoa man dang thuc An Casi. ", n);
printf("Tong1 = %ld - Tong2 = %ld", tong1, tong2);
}
}
getch();
}

iamvtn
24-06-2007, 08:32 PM
Hiện bảng mã ASCII


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

void main()
{
int i, j;

clrscr();
printf(" ");
for (j=0; j<16; j++)
printf("%3d", j);
for (i=2; i<16; i++)
for (j=0; j<16; j++)
{
if (j == 0)
printf("\n%2d ", i);
printf(" %c", i*16+j);
}
getch();
}



In ra năm âm lịch tương ứng với năm nhập vào.



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

void main()
{
unsigned nam;
char can[][5] = {"Giap", "At", "Binh", "Dinh", "Mau", "Ky",
"Canh", "Tan", "Nham", "Quy"};
char chi[][5] = {"Ty", "Suu", "Dan", "Meo", "Thin", "Ty",
"Ngo", "Mao", "Than", "Dau", "Tuat", "Hoi"};

printf("\nNhap nam can biet : ");
scanf("%d", &nam);
printf("Nam am lich cua %d la %s %s", nam, can[(nam+6)%10], chi[(nam+8)%12]);
getch();
}

iamvtn
24-06-2007, 08:36 PM
In ra bảng cửu chương



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

void main()
{
int i, j;
char chuoi[] = "B A N G C U U C H U O N G";
char ten[10][5] = {"","","Hai", "Ba", "Bon", "Nam",
"Sau", "Bay", "Tam", "Chin"};
clrscr();
textcolor(YELLOW);
gotoxy((80 - strlen(chuoi)) / 2, 1);
cprintf("%s\n\n", chuoi);

for (i=2; i<=9; i++)
{
gotoxy(10*(i-2) + (10 - strlen(ten[i]))/2, 4);
textcolor(i);
cprintf("%s", ten[i]);
}
for (j=1; j<=10; j++)
for (i=2; i<=9; i++)
{
gotoxy(10*(i-2) + 1, j+4);
textcolor(i);
cprintf("%dx%2d = %2d", i, j, i*j);
}
getch();
}



Nhập chuỗi và in chuỗi



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

void main()
{
char name[80];

printf("\nXin cho biet ten cua ban : ");
gets(name);

printf("Chao %s\n", name);
getch();
}

iamvtn
24-06-2007, 08:51 PM
Giải hệ phương trình bậc nhất.


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

void main()
{
int a, b, c, d, e, f, dthuc;
float x, y;

printf("\nNhap vao cac he so a,b,c,d,e,f : ");
scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
dthuc = b*d - e*a;
if (dthuc != 0)
{
y = (float)(c*d-a*f)/dthuc;
x = (float)(b*f-c*e)/dthuc;
printf("Nghiem x = %f, y = %f", x, y);
}
else
printf("\nHe phuong trinh vo ngiem.");

getch();
}



Tính thứ của ngày



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

struct date
{
int month;
int day;
int year;
} date_1;

long int funct1 (int y,int m)
{
long int result;
if ( m <= 2 )
y -= 1;
result = y;
return (result);
}

long int funct2 (int m)
{
long int result;
if ( m <= 2 )
result = m + 13;
else
result = m + 1;
return(result);
}

long int day_count (int m, int d, int y)
{
long int number;
number = 1461 * funct1(y,m) / 4 + 153 * funct2(m) / 5 + d;

return (number);
}

void main ()
{
long int number_of_days1;
int day_of_week;

printf ("Nhap vao mot ngay (dd mm yyyy), vd 12 03 1999 \n");
scanf ("%d %d %d", &date_1.day, &date_1.month, &date_1.year);
number_of_days1 = day_count (date_1.month, date_1.day, date_1.year);
printf ("\nNgay la : " );

day_of_week = (number_of_days1 - 621049) % 7;
switch (day_of_week)
{
case 0 :
printf ("Chu Nhat,");
break;
case 1 :
printf ("Thu Hai,");
break;
case 2 :
printf ("Thu Ba,");
break;
case 3 :
printf ("Thu Tu,");
break;
case 4 :
printf ("Thu Nam,");
break;
case 5 :
printf ("Thu Sau,");
break;
case 6 :
printf ("Thu Bay,");
break;
}
getch();
}

iamvtn
26-06-2007, 10:17 AM
Chuyển số La Mã sang số Ả rập
I:1 V:5 X: 10 L: 50 C: 100 D:500 M:1000



#include <iostream>
#include <conio.h>
#include <string.h>
int doigt(char chuoi[],int i);
void loi();

void main()
{
char chuoi[20];
cout<<"Nhap chuoi:";
cin.get(chuoi,20);
int nam=0;
for(int i=0;i<strlen(chuoi);i++)
nam+=doigt(chuoi,i);
cout<<nam<<endl;
getch();
}
int doigt(char chuoi[],int i)
{
if(!(chuoi[i]=='I'||chuoi[i]=='V'||chuoi[i]=='X'||chuoi[i]=='L'||chuoi[i]=='C'||chuoi[i]=='D'||chuoi[i]=='M'))
loi();
if(chuoi[i]==chuoi[i+1]&&chuoi[i]==chuoi[i+2]&&chuoi[i]==chuoi[i+3])
loi();
if(chuoi[i]=='I')
if(chuoi[i+1]=='V'||chuoi[i+1]=='X')
{
if(chuoi[i+2]=='V'||chuoi[i+2]=='X')
loi();
else
return -1;
}
else
return 1;
if(chuoi[i]=='V')
return 5;
if(chuoi[i]=='X')
if(chuoi[i+1]=='L'||chuoi[i+1]=='C')
{
if(chuoi[i+2]=='L'||chuoi[i+2]=='C')
loi();
else
return -10;
}
else
return 10;
if(chuoi[i]=='L')
return 50;
if(chuoi[i]=='C')
if(chuoi[i+1]=='D'||chuoi[i+1]=='M')
{
if(chuoi[i+2]=='D'||chuoi[i+2]=='M')
loi();
else
return -100;
}
else
return 100;
if(chuoi[i]=='D')
return 500;
if(chuoi[i]=='M')
return 1000;
}
void loi()
{
cout<<"Day so tren khong hop le."<<endl;
}

iamvtn
26-06-2007, 10:30 AM
Chuyển năm sang số La Mã



#include <iostream>
#include <math.h>
void viet(char a,char b,char c,int so);
void kytu(char &a,char &b,char &c,int so);
void main()
{
char x,y,z;
int nam;
do
{
cout<<"Nhap nam(nho hon 4000): ";
cin>>nam;
} while(nam>=4000||nam<0);
cout<<"Nam "<<nam<<" viet trong he La Ma la: ";
int tam=nam;
int i=3;
while(tam!=0)
{
tam=tam/pow(10.0,i);
kytu(x,y,z,i);
viet(x,y,z,tam);
tam=fmod(nam,pow(10.0,i));
i--;
}
cout<<endl;
}
void kytu(char &a,char &b,char &c,int i)
{
if(i==0)
{
a='I';b='V';c='X';
}
else if(i==1)
{
a='X';b='L';c='C';
}
else if(i==2)
{
a='C';b='D';c='M';
}
else if(i==3)
a='M';
}
void viet(char a,char b,char c,int so)
{
if(so==1||so==2||so==3)
for(int i=1;i<=so;i++)
cout<<a;
if(so==4)
cout<<a<<b;
if(so==5)
cout<<b;
if(so==6||so==7||so==8)
{
cout<<b;
for(int i=1;i<=so-5;i++)
cout<<a;
}
if(so==9)
cout<<a<<c;
}

iamvtn
26-06-2007, 08:54 PM
Thuật toán sắp xếp bẳng Radix sort



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
////Radix sort
int getMax(int a[],int n)
{
int max=a[0];
for(int i=1;i<n;i++)
if(max<a[i])
max=a[i];
return max;
}
int countDigit(int n)
{
int count=0;
while(n)
{
count++;
n/=10;
}
return count;
}
int getDigit(int n,int t)
{
int tt=1;
for(int i=0;i<t;i++)tt*=10;
return ((n/tt)%10);
}
void send2Box(int a[],int n,int *b[10],int num[10],int t)
{
for(int i=0;i<n;i++)
{
int tt=getDigit(a[i],t);
b[tt][num[tt]++]=a[i];
}
}
void getValue(int a[],int *b[10],int nn[10])
{
int j=0;
for(int i=0;i<10;i++)
{
if(nn[i]!=0)
{
for(int k=0;
k<nn[i];
k++)a[j++]=b[i][k];
nn[i]=0;
}
}
}
void radixsort(int a[],int n)
{
int *Box[10];
int number[10];
for(int i=0;i<10;i++)
{
Box[i]=new int [n];
if(Box[i]==NULL)
{
printf("Not enough");
exit(0);
}
number[i]=0;
}
int nn=countDigit(getMax(a,n));
for(int i=0;i<nn;i++)
{
send2Box(a,n,Box,number,i);
getValue(a,Box,number);
}
}
void xuat(int a[], int n)
{
int i=0;
printf("\n\t");
for (i=0;i<n;i++)
{
printf("%-6d",a[i]) ;
if ((i+1) % 10 == 0)
printf("\n\t");
}
}
void main()
{
clrscr();
int i,n,A[100];
do
{
printf("\n\tNhap so phan tu mang\n\t( n>0 va n<=100) : ");
scanf("%d",&n);
}while (n<0||n>100);
for (i=0;i<n;i++)
{
printf("Nhap A[%d]=",i);
scanf("%d",&A[i]);
}
printf("\n\tMang moi nhap vao:\n");
xuat(A,n);
printf("\n\n\tMang da sap xep :\n");
radixsort(A,n);
xuat(A,n);
getch();
}

iamvtn
27-06-2007, 12:07 AM
Danh sách liên kết đơn (Thuật toán vừa chèn vừa sắp xếp)



#include <iostream.h>
#include <conio.h>

class Node
{
private:
float data;
Node *next;
public:
Node()
{
data = 0;
next = NULL;
}
Node(float x)
{
data = x;
next = NULL;
}
void setnext(Node *p)
{
next = p;
}
Node * getnext()
{
return next;
}
void setdata(float x)
{
data = x;
}
float getdata()
{
return data;
}
};

class List
{
private:
Node *head;
public:
List()
{head = NULL;}
List(Node *x)
{head = x;}

void chensapxep(float x)
Node *p,*q;
p = new Node(x);
q = head;
if(head == NULL)
head = p;
else
{
if(p->getdata() < head->getdata())
{
p->setnext(head);
head = p;
}
else
{
while ( q->getnext()!= NULL)
{
if ((q->getdata()< p->getdata() && q->getnext()->getdata() >p->getdata())
|| (q->getdata()==p->getdata() && q->getnext()->getdata() >=p->getdata()))
{

p->setnext(q->getnext());
q->setnext(p);
break;
}
else
q = q->getnext();
}
if (q->getnext()==NULL)
q->setnext(p);

}
}
}

void show()
{
Node *p = head;
p = p->getnext();
if( head != NULL)
{
while(p != NULL)
{
cout<<p->getdata()<<" ";
p = p->getnext();
}
}
}
};
void main()
{
float so;
List p;
do
{
cout<<"Nhap vao so (nhap 0 de thoat):";
cin>>so;
p.chensapxep(so);
}while(so != 0);
p.show();
getch();
}

iamvtn
27-06-2007, 12:11 AM
Quá tải toàn tử nhập xuất và sử dụng template



/*Chuong trinh nay duoc viet de phuc vu va on tap lai cac kien thuc sau:
qua tai toan tu nhap xuat ,su dung template de nhan moi kieu tra ve duoc
truyen vao ,viet lop tuong trung cho tat ca cac lop can su dung khong can phai goi truc tiep .
To viet duoi dang tong quat va de hinh dung hon .Truoc qua tai toan
tu nhap xuat voi doi tuong mang gia tri thi khong co gi nhung nay qua tai
toan tu nhap xuat voi mot mang ki tu thi lai khac va duoi day la mot bai nhu the . */

#include <iostream.h>
#include <conio.h>

//viet lop cat
class cat
{
private :
char name[20];
int age;
public:
cat ()
{
for (int i=0;i<20;i++)
name[i]='\0';
age=0;
}
cat (char ten[] ,unsigned int tuoi)
{
for (int i=0;i<20;i++)
{
name[i]=ten[i];
if (ten[i]=='\n')
break;
}
age=tuoi;
}
friend ostream & operator << (ostream & ,cat &);
friend istream & operator >> (istream & ,cat &);
};

ostream & operator << (ostream & out ,cat &a)
{
out<<a.age<<endl;
out<<a.name<<endl;
return out;
}
istream & operator >> (istream & in,cat &a)
{
cout<<"nhap tuoi :";
in>>a.age;
in.ignore();
cout<<"nhap ten:";
in.getline(a.name,20);
return in;
}

//viet lop dog
class dog
{
private :
char name[20];
unsigned int age;
public:
dog ()
{
for (int i=0;i<20;i++)
name[i]='\0';
age=0;
}
dog (char ten[],unsigned int tuoi)
{
for (int i=0;i<20;i++)
{
name[i]=ten[i];
if (ten[i]=='\n')
break;
}
age=tuoi;
}
friend ostream & operator << (ostream & ,dog &);
friend istream & operator >> (istream & ,dog &);
};
ostream & operator << (ostream & out ,dog &a)
{
out<<a.age<<endl;
out<<a.name<<endl;
return out;
}
istream & operator >> (istream & in,dog &a)
{
cout<<"moi nhap tuoi:";
in>>a.age;
in.ignore();
cout<<"moi nhap ten:";
in.getline(a.name,20);
return in;
}

//viet lop tuong trung]
//thu qua tai toan tu nhap va xuat cho lop total nay
template <class T>
class total
{
private :
T data;
public:
total (total<T> &b)
{
data=b.data;
}
total (T b)
{
data=b;
}
friend ostream & operator << (ostream & ,total<T> &);
friend istream & operator >> (istream & ,total<T> &);
};

template <class T>
ostream & operator << (ostream & out ,total<T> &x)
{
out<<x.data<<endl;
return out;
}
template <class T>
istream & operator >> (istream & in,total<T> & x)
{
in>>x.data;
return in;
}

//viet phan main() cho chuong trinh

void main()
{
//truong hop 1 : thu truyen mot doi tuong khong thuoc cung lop vao cho lop tuong trung
//va su dung ham in va nhap cho no
//khai bao 1 con cat va nhap du lieu ,truyen cho doi tuong lop tuong trung sau do in ra man hinh
cat a;
cout<<"moi nhap du lieu cho cat :"<<endl;
cin>>a;
total<cat> b(a);
cout<<b;
//OK khong loi
//truong kop 2: truyen vao mot doi la dog cung ra ket qua tuong tu
//truong hop 3: truyen vao cung kieu la total
cat x;
cout<<"moi nhap du lieu cho cat:"<<endl;
cin>>x;
total<cat> c(x);
cout<<"thuc hien phep sao chep :"<<endl;
total<cat> d(c);
cout<<d<<endl;
//OK khong loi vay da thanh cong hoan toan
getch();
}
//Kinh nghiem rut ra tu bai nay la:
/* khi su dung template de dinh nghia toan tu nhap va xuat ta can de y rang luc xuat ra
la xuat du lieu cua doi tuong .Phai nho doi tuong duoc goi den .Khong duoc xuat ra ngay du lieu
du no la ham friend
- Khi su dung qua tai toan tu ta thay bien "in" su dung y het cin o ngoai khi goi duoc ham
get() or getline () de lay ca ki tu trong' ke ca ham ignore() cung the
- Khi qua tai ta van su dung duoc ham cout or cin o trong qua tai toan tu xuat hay nhap
Dac biet la cho nhap ten can phai tao ra mot mang dinh san khong the de mang dong ,khi khai bao mang
dong ta se bi sai khi xuat ra man hinh .Do khi do di lieu ta nhap vao nam o vung nho buffer
khi chay chuong trinh se vet het tat ca va gan cho bien hoac doi tuong khi ta goi do do'
khong lam gi duoc .
*/

iamvtn
27-06-2007, 12:16 AM
Chương trình đếm số ký tự trong một chuỗi ASCII



#include <stdio.h>
#include <ctype.h>
#include<conio.h>
void main()
{
char chuoi[80];
int i = 0, count = 0;

printf("\nNhap vao mot chuoi bat ky : ");
gets(chuoi);

while (chuoi[i] != 0)
{
if (isalpha(chuoi[i++]))
count++;
}

printf("So ky tu trong chuoi = %d", count);
getch();
}


Biểu diễn số dưới dạng bit



#include <stdio.h>
#include <conio.h>
void main()
{
unsigned int mang[24], i;
int bit[16], k, index;
printf("\nNhap vao 23 gia tri nguyen : ");
for (i=0; i<23; i++)
scanf("%d",&mang[i]);
printf(" FEDCBA9876543210");
for (i=0; i<23; i++)
{
k = mang[i];
for (index = 0; index < 16; index++)
bit[index] = 0;
index = 15;
while (k)
{
bit[index--] = k%2;
k /= 2;
}
printf("\n%5d ",mang[i]);
for (index=0; index<16; index++)
if (bit[index] == 1)
printf("*");
else
printf("-");
}
getch()

iamvtn
27-06-2007, 12:20 AM
Đảo chuỗi



char *dnchuoi(char *s)
{
char *tmp, i;

i = 0;
tmp = (char *)malloc(strlen(s)+1);
while (i<strlen(s))
*(tmp+i) = *(s + strlen(s) - i++ - 1);
*(tmp+i) = 0;
return tmp;
}

void main()
{
char hello[] = "Hello World";
char *s;

printf("\nChuoi ban dau = %s", hello);
s = dnchuoi(hello);
printf("\nChuoi dao nguoc = %s", s);
getch();
}




Chương trình xem tập tin

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

void main()
{
FILE *fp;
char filename[50], s[255], *hang[1000], c;
int nline = 0, line = 0, i;

printf("\nNhap ten tap tin muon xem : ");
gets(filename);
if ((fp = fopen(filename,"r")) == NULL)
printf("\nKhong the mo tap tin %s", filename);
else
{
while (!feof(fp))
{
fgets(s, 255, fp);
hang[nline] = (char *)malloc(strlen(s));
strcpy(hang[nline], s+1);
nline++;
}
do {
clrscr();
i = line;
while (i<line+26 && i<nline)
printf("%s", hang[i++]);
c = getch();
if (c == 0)
{
c = getch();
switch(c)
{
case 72 : if (line > 0)
line--;
break;
case 80 : if (line+25 < nline)
line++;
break;
}
}
} while (c != 27);
fclose(fp);
}
}

iamvtn
27-06-2007, 12:28 AM
Giải bài toán trâu ăn cỏ

/* Giai bai toan co :
Tram trau tram co
Trau dung an nam
Trau nam an ba
Trau gia an mot
*/

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

void main()
{
int tdung, tnam, tgia, phuongan=0;

for (tdung = 1; tdung <= 98; tdung ++)
for (tnam = 1; tnam < 99 - tdung; tnam ++)
for (tgia = 1; tgia < 99 - (tdung + tnam); tgia++)
if ((tdung*5 + tnam*3 + tgia) == 100)
{
printf("\nTrau dung : %5d ; Trau nam : %5d ; Trau gia : %5d",
tdung, tnam, tgia);
phuongan++;
}
printf("\nTong cong co %d phuong an.", phuongan);
getch();
}


Loại bỏ khoảng trống thừa trong chuỗi

#include <stdio.h>
#include <string.h>
#include <conio.h>
#pragma warn -pia

char *trim(char *chuoi)
{
char *p;
while (p = strstr(chuoi, " "))
memmove(p, p+1, strlen(chuoi) - (p - chuoi));
if (chuoi[0] == ' ')
memmove(chuoi, chuoi+1, strlen(chuoi) - 1);
if (chuoi[strlen(chuoi)-1] == ' ')
chuoi[strlen(chuoi)-1] = 0;
return chuoi;
}

void main()
{
char chuoi[125];

printf("\nNhap chuoi mau : ");
textattr(0x1e);
gets(chuoi);

trim(chuoi);
printf("\nChuoi sau khi da trim : ");
textattr(0x1e);
cputs(chuoi);
getch();
}

iamvtn
27-06-2007, 12:29 AM
Tìm tất cả các ước của một số N

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

void main()
{
int n, i;

printf("Cho gia tri N = ");
scanf("%d", &n);

printf("Cac uoc so cua %d la :\n", n);
for (i=1; i<n; i++)
if ((n % i) == 0)
printf("%5d", i);
getch();
}


Bội số chung và ước số chung

#include <stdio.h>
#include <conio.h>
unsigned USCLN (unsigned n, unsigned m)
{
while (n != 0 && m != 0)
if (n>m)
n -= m;
else
m -= n;
if (n == 0)
return m;
else
return n;
}

unsigned BSCNN (unsigned n, unsigned m)
{
return n * m / USCLN(n, m);
}

void main()
{
unsigned n, m;

printf("\nNhap hai vao so nguyen duong : ");
scanf("%u%u", &n, &m);
printf("\nUSCLN cua %u va %u = %u", n, m, USCLN(n,m));
printf("\nBSCNN cua %u va %u = %u", n, m, BSCNN(n,m));
getch();
}


Trộn 2 dãy giảm thành một dãy tăng

#include <stdio.h>
#include <conio.h>
#define MAX 10

void main()
{
int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2;

printf("\nCho biet so phan tu cua mang thu nhat : ");
scanf("%d", &n1);
printf("Nhap vao cac phan tu (giam dan) cua mang thu nhat : ");
for (i=0; i<n1; i++)
scanf("%d", &a[i]);
printf("\nCho biet so phan tu cua mang thu hai : ");
scanf("%d", &n2);
printf("Nhap vao cac phan tu (giam dan) cua mang thu hai : ");
for (i=0; i<n2; i++)
scanf("%d", &b[i]);
i1 = n1-1;
i2 = n2-1;
for (i=0; i<n1 + n2; i++)
{
if (i1 < 0 || i2 < 0)
break;
if (a[i1] < b[i2])
{
c[i] = a[i1];
i1--;
}
else
{
c[i] = b[i2];
i2--;
}
}
if (i1 >= 0)
while (i1 >= 0)
c[i++] = a[i1--];
if (i2 >= 0)
while (i2 >= 0)
c[i++] = b[i2--];
printf("\nCac phan tu cua mang tron : ");
for (i=0; i<n1+n2; i++)
printf("%d ", c[i]);
getch();
}

iamvtn
27-06-2007, 12:33 AM
Tính tích 2 ma trận:

#include<conio.h>
#include<stdio.h>
#include<alloc.h>
void main()
{
int *a,*b,*c;
int m,n;
int i,j;
clrscr();
//Nhap so hang so cot
printf("Nhap vao m:");scanf("%d",&m);
printf("Nhap vao n:");scanf("%d",&n);
//Cap phat bo nho
a=(int*)calloc(m*n,sizeof(int));
b=(int*)calloc(m*n,sizeof(int));
c=(int*)calloc(m*n,sizeof(int));
// Nhap so lieu va tinh toan
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
printf("Nhap vao a[%d,%d]=",i,j);scanf("%d",&a[(i-1+j)+((i-1)*(n-1))]);
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
printf("Nhap vao b[%d,%d]=",i,j);scanf("%d",&b[(i-1+j)+((i-1)*(n-1))]);
c[(i-1+j)+((i-1)*(n-1))]=a[(i-1+j)+((i-1)*(n-1))]+b[(i-1+j)+((i-1)*(n-1))];
}
// xuat cac mang a,b,c ra man hinh
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
printf("\t%d",a[(i-1+j)+((i-1)*(n-1))]);
if(j==n)printf("\n");
}
printf("\n===========\n");
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
printf("\t%d",b[(i-1+j)+((i-1)*(n-1))]);
if(j==n)printf("\n");
}
printf("\n===========\n");
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
printf("\t%d",c[(i-1+j)+((i-1)*(n-1))]);
if(j==n)printf("\n");
}
getch();
}


In danh sách các số hoàn hảo nhỏ hơn số N nhập từ user




#include <stdio.h>

int main(void)
{
int i , j , n , tong ;

printf("\n Nhập vào N = "); scanf("%d",&n);

for ( i = 2 ; i <=n ; i++ )
{
tong = 1 ;
for ( j = 2; j <= i / 2 ; j++ )
if ( i % j == 0 ) tong += j;
if ( tong == i ) printf(" %10d ", i );
}
getch();
return 0;
}

iamvtn
27-06-2007, 12:39 AM
Bài in ra lịch của một năm bất kỳ lớn hơn 1700 (Bài này tớ làm đấy :D)

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
int songay(int,int);
bool namnhuan(int nam);
void InLich(int,int);
int ThuDauTien(int,int);
void main()
{
int nam;
char chon;
do
{
do
{
cout<<"Nhap vao nam(> 1700): ";
cin>>nam;
}while(nam < 1700);
for(int i = 1;i <= 12;i++)
{
cout<<"Thang "<<i<<endl;
InLich(i,nam);
cout<<endl;
}
cout<<"\nBan co muon tiep tuc khong(y/n): ";
cin>>chon;
system("cls");
}while(chon == 'y');
cout<<"Thanh Nam cam on ban da su dung chuong trinh {an Enter de thoat)";
getch();
}
int songay(int thang,int nam)
{
switch(thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
if(namnhuan(nam))
return 29;
else
return 28;
case 4:
case 6:
case 9:
case 11:
return 30;
}
return 0;
}
bool namnhuan(int nam)
{
return ((nam % 4 == 0 && nam % 100 != 0)||(nam % 400 == 0));
}
void InLich(int thang,int nam)
{
int ngayd = ThuDauTien(thang,nam);
if(ngayd == 0)
ngayd = 7;
int i;
int sn = songay(thang,nam);
cout<<"\nMon\tTUE\tWED\tTHU\tFRI\tSAT\tSun\n";
for(i = 1;i <= ngayd - 1;i++)
cout<<"\t";
for(i = 1;i <= sn;i++)
{
cout<<i<<"\t";
if((i + ngayd - 1) % 7 == 0)
cout<<endl;
}
}

long int funct1 (int nam,int thang)
{
long int result;
if ( thang <= 2 )
nam -= 1; //
result = nam;
return (result);
}

long int funct2 (int thang)
{
long int result;
if ( thang <= 2 )
result = thang + 13;
else
result = thang + 1;
return(result);
}

long int day_count (int thang, int nam)
{
long int number;
number = 1461 * funct1(nam,thang) / 4 + 153 * funct2(thang) / 5 + 1;
return (number);
}

int ThuDauTien(int thang,int nam)
{
long int number_of_days1;
int day_of_week;
number_of_days1 = day_count (thang, nam);
day_of_week = (number_of_days1 - 621049) % 7;
return day_of_week;
}

iamvtn
27-06-2007, 12:43 AM
Bài tập kiểm tra dấu ngoặc đúng.

Ví dụ: (5*8) + (4*7) có đủ 2 cái ngoặc mở và 2 cái ngoặc đóng,suy ra đây là chuỗi ngoặc đúng, hoặc (6*6)+(7*12 --> đây là chuỗi ngoặc sai.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define max 100
int stack[max],Top=-1;
void push(int stack[],int &Top,int X)
{
if (Top==max-1)
{
puts("Stack day");
exit(3);
}
else
{
Top++;
stack[Top]=X;
}
}
int pop(int stack[],int &Top)
{
int tam;
if (Top==-1) return Top;
else
{
tam=stack[Top];
Top--;
return tam;
}
}
void DauNgoac(char s[],int n)
{
int i;
for(i=0;i<n;i++)
{
if (s[i]=='(') push(stack,Top,1);
if (s[i]==')'&&pop(stack,Top)==-1)
{
Top=-2;
break;
}

}
if (Top==-1) printf("\nDung");
else printf("\nSai");
}
void main()
{
clrscr();
char s[max];
int n=
printf("Nhap chuoi:");
gets(s);
n=strlen(s);
DauNgoac(s,n);
getch();
}

iamvtn
27-06-2007, 12:50 AM
Bài toán Tám Hoàng Hậu


#include <stdio.h>
#include<conio.h>
int dong[8], cot[8], cheoxuoi[15], cheonguoc[15];

void print ()
{
int i;
printf("\n");
for (i=0; i<8; i++)
printf("%3d", dong[i]);
}

void thu(int i)
{
int j;
for (j=0; j<8; j++)
{
if (cot[j] == 1 && cheoxuoi[i+j] ==1 && cheonguoc[i-j+7] == 1)
{
dong[i] = j;
cot[j] = 0;
cheoxuoi[i+j] = 0;
cheonguoc[i-j+7] = 0;
if (i<7)
thu(i+1);
else
print();
cot[j] = 1;
cheoxuoi[i+j] = 1;
cheonguoc[i-j+7] = 1;
}
}
}

void tim()
{
int i, q;

for (i=0; i<8; i++)
{
cot[i] = 1;
dong[i] = -1;
}
for (i=0; i<15; i++)
{
cheoxuoi[i] = 1;
cheonguoc[i] = 1;
}
thu(0);
}

void main()
{
tim();
getch();
}

iamvtn
27-06-2007, 09:07 AM
In ra số Hex tương ứng với một số nguyên dương



#include <stdio.h>
#include <conio.h>
void main()
{
unsigned number;
char hex[] = "0123456789ABCDEF";

printf("\nNhap vao mot gia tri nguyen duong 16 bit : ");
scanf("%u", &number);
printf("Gia tri Hex tuong ung = %c%c%c%c",
hex[number/0x1000], hex[(number/0x100)%0x10],
hex[(number/0x10)%0x10], hex[number%0x10]);
getch();
}



Liệt kê các hoán vị của N phần tử



#include <stdio.h>
#include <conio.h>
#define MAX 10
int mang[MAX], n;

void swap (int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}

void hoanvi(int k)
{
int j;

if (k==1)
{
printf("\n");
for (j=0; j<n; j++)
printf("%d ", mang[j]);
}
else
for (j=k-1; j>=0; j--)
{
swap(&mang[k-1], &mang[j]);
hoanvi(k-1);
swap(&mang[j], &mang[k-1]);
}
}

void main()
{
int i;

printf("\nCho biet so phan tu (N < 10) : ");
scanf("%d", &n);
for (i=0; i<n; i++)
mang[i] = i;
hoanvi(n);
getch();
}

iamvtn
27-06-2007, 09:11 AM
In chuỗi theo các từ mỗi từ một dòng

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char s[50];
int i, len;

printf("\nNhap vao mot chuoi : ");
gets(s);
len = strlen(s);
i = 0;
while (i<len)
{
while (s[i] == ' ' && i<len)
i++;
while (s[i] != ' ' && i<len)
putc(s[i++], stdout);
putc('\n', stdout);
}
getch();
}


In ra chữ số hàng trăm hàng chục hàng đơn vị

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

void main()
{
int n, tram, chuc, donvi;
clrscr();
printf("\nNhap vao mot so tu 100 - 999 : ");
scanf("%d", &n);

tram = n;
donvi = tram % 10;
tram /= 10;
chuc = tram % 10;
tram /= 10;

printf("\nSo hang tram = %d", tram);
printf("\nSo hang chuc = %d", chuc);
printf("\nSo hang don vi = %d", donvi);

getch();
}

iamvtn
27-06-2007, 11:00 AM
Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều


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

void main()
{
int mang[20];

int i, minval, maxval;

/* Khoi tao mang ngau nhien */
randomize();
for (i=0; i<20; i++)
mang[i] = random(100);

/* Tim gia tri lon nhat va nho nhat */
minval = maxval = mang[0];
for (i=1; i<20; i++)
{
if (maxval < mang[i])
maxval = mang[i];
else if (minval > mang[i])
minval = mang[i];
}

/* In mang */
clrscr();
for (i=0; i<20; i++)
{
if (mang[i] == maxval)
textcolor(YELLOW);
else if (mang[i] == minval)
textcolor(RED);
else
textcolor(WHITE);
cprintf("%3d", mang[i]);
}

getch();
}


Tính tổ hợp chập K của N phần tử

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

unsigned long giaithua(int n)
{
unsigned long ketqua = 1;
int i;

for (i=2; i<=n; i++)
ketqua *= i;

return ketqua;
}

unsigned long to_hop_chap(int k, int n)
{
return giaithua(n) / (giaithua(k) * giaithua(n-k));
}

void main()
{
int n, k;

printf("\nNhap vao gia tri N va K : ");
scanf("%d%d", &n, &k);

printf("Top hop chap %d cua %d = %lu", k, n, to_hop_chap(k, n));
getch();
}

iamvtn
27-06-2007, 07:35 PM
Chương trình đọc số có 3 chữ số.



/* Day la chuong trinh doc so co 3 chu so hay mot so co 2 cu so tham chi so co 1 chu so
Duoc viet boi Vu Thanh Nam */
#include<iostream.h>
#include<conio.h>
void main()
{
int a;
cout<<"Nhap vao mot so co 3 hay 2 tham chi 1 chu so: ";
cin>>a;
int hangtram=a/100;
int hangchuc=((a/10)%10);
int hangdonvi=a%10;
switch(hangtram)
{
case 1 :cout<<"Mot tram ";break;
case 2 :cout<<"Hai tram ";break;
case 3 :cout<<"Ba tram ";break;
case 4 :cout<<"Bon tram ";break;
case 5 :cout<<"Nam tram ";break;
case 6 :cout<<"Sau tram ";break;
case 7 :cout<<"Bay tram ";break;
case 8 :cout<<"Tam tram ";break;
case 9 :cout<<"Chin tram ";break;
}
switch(hangchuc)
{
case 0:
if(hangdonvi==0)
cout<<"";
else
{if(hangchuc==0&&hangtram==0)
cout<<"";
else
cout<<"ninh";}
break;
case 1:cout<<"muoi";break;
case 2:cout<<"hai muoi";break;
case 3:cout<<"ba muoi";break;
case 4:cout<<"bon muoi";break;
case 5:cout<<"nam muoi";break;
case 6:cout<<"sau muoi";break;
case 7:cout<<"bay muoi";break;
case 8:cout<<"tam muoi";break;
case 9:cout<<"chin muoi";break;
}
switch(hangdonvi)
{
case 0:cout<<"Khong";break;
case 1:
if(hangchuc==1||(hangtram==0&&hangchuc==0))
cout<<" mot";
else
cout<<" mo't";
break;
case 2:cout<<" hai";break;
case 3:cout<<" ba";break;
case 4:
if(hangchuc==1)
cout<<" bon";
else
{if(hangchuc==0&&hangtram==0)
cout<<"bon";
else
cout<<" tu";}
break;
case 5:
if(hangchuc==0&&hangtram==0)
cout<<" nam";
else
cout<<" lam";
break;
case 6:cout<<" sau";break;
case 7:cout<<" bay";break;
case 8:cout<<" tam";break;
case 9:cout<<" chin";break;
}
getch();
}

iamvtn
27-06-2007, 07:39 PM
Tính số ngày trong một tháng trong một năm bất kỳ.


/* Day la chuong trinh tinh so ngay trong bat ky mot thang trong nam bat ky nao do
Duoc viet boi Vu Thanh Nam */
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
long int thang, nam;
cout<<"Nhap thang va nam: ";
cin>>thang>>nam;
if ((thang>12||thang<1)||(nam<0))
cout<<"Nhap thang hoac nam sai";
else
{
bool namnhuan=((nam%4==0&&nam%100!=0)||(nam%400==0&&nam%100==0));
int songay;
if(thang==4||thang==6||thang==9||thang==11)
songay = 30;
else
{
if(thang==2)
songay = namnhuan?29:28;
else
songay=31;
}
cout<<"So ngay cua thang "<<thang<<" trong nam "<<nam<<" la: "<<songay<<endl;
}
getch();
}

iamvtn
27-06-2007, 07:41 PM
Bài kiểm tra số nguyên tố

/*Ham tinh so nguyen to */
#include<iostream.h>
#include<conio.h>
#include<math.h>
bool LaNguyenTo(int n);
void main()
{
int n;
cout<<"Nhap vao mot so bat ky: ";cin>>n;
if(LaNguyenTo(n))
cout<<"La so nguyen to";
else
{
cout<<"Khong la so nguyen to vi no chia het cho ";
for(int j=2;j<n;j++)
{
if(n%j==0)
cout<<j<<" va ";
}
cout<<"The thoi";
}
getch();
}
bool LaNguyenTo(int n)
{
bool co=true;
if(n<2)
{cout<<"Du lieu nhap sai va so do ";
return !co;}
else
{
for(int i=2;i<=sqrt(n)+1;i++)
{
if(n%i==0)
{
co=false;
break;
}
}
}
return co;
}

iamvtn
28-06-2007, 08:44 AM
Bài tập tìm max min của 4 số.


#include<iostream.h>
#include<conio.h>
#include<math.h>
float max(int a, int b);
float min(int a, int b);
void main()
{
int a,b,c,d;
cout<<"Nhap vao so thu 1: ";cin>>a;
cout<<"Nhap vao so thu 2: ";cin>>b;
cout<<"Nhap vao so thu 3: ";cin>>c;
cout<<"Nhap vao so thu 4: ";cin>>d;
cout<<"max= "<<max(max(max(a,b),max(b,c)),max(c,d))<<" min= "<<min(min(min(a,b),min(b,c)),min(c,d))<<endl;
cout<<"Vay trung binh cong cua 4 so do la: "<<(a+b+c+d)/4;
getch();
}
float max(int a, int b)
{
if(a>b)
return a;
else
return b;
}
float min(int a, int b)
{
if(a>b)
return b;
else
return a;
}




Tìm n số Fibonaci đầu tiên


#include<iostream.h>
#include<conio.h>
#include<math.h>
long Fibonaci(long n);
void main()
{
long n;
cout<<"Nhap vao mot so nguyen duong: ";
cin>>n;
cout<<"Vay "<<n<< " so Fibonaci dau tien la: ";
Fibonaci(n);
getch();
}
long Fibonaci(long n) //sach giao khoa 253
{
int f1=0,f2=1,fi;
fi=f2;
for(int i = 1;i <= n ;i ++)
{
cout<<fi<<" ";
fi=f1+f2;
f1=f2;
f2=fi;
}
return fi;
}

iamvtn
28-06-2007, 08:47 AM
(Ngân hàng)Tìm số tiền nhận trong n tháng khi biết lãi xuất


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
double sotiengui,tienlai,laixuat;
int sothang;
cout<<"Nhap vao so tien gui: ";cin>>sotiengui;
cout<<"Nhap vao lai xuat(%): ";cin>>laixuat;
cout<<"Nhap vao so thang gui: ";cin>>sothang;
for(int i=1;i<=sothang;i++)
{
tienlai=laixuat*sotiengui;
sotiengui=sotiengui+tienlai;
}
cout<<"Vay so tien nguoi do gui trong "<<sothang<<" thang la: "<<sotiengui;
getch();
}




In ra dãy số ngược so với dãy số nhập vào


#include <iostream.h>
#include <conio.h>
void main()
{
long a;
do
{
cout<<"a (Phai la so nguyen duong) = ";
cin>>a;
}while(a<0);
cout<<"Vay "<<a<<" duoc viet nguoc lai la: ";
if (a > 0)
{
while (a > 0)
{
cout<<a%10;
a = a / 10;
}
}
getch();
}

iamvtn
28-06-2007, 08:51 AM
Trò chơi 8 hòn bi


/*tro choi 8 hon bi
vu thanh nam*/
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

void main()
{
char chon;
do
{
cout<<"\nCHUONG TRINH DOAN HON BI KHAC KHOI LUONG TRONG 8 HON BI\n";
cout<<"\n\t-Co 8 hon bi danh so tu 1 den 8\n";
cout<<"\t 1 2 3 4 5 6 7 8\n";
cout<<"\t-Co duy nhat 1 hon bi khac khoi luong khong biet nhe hay nang hon so bi con lai\n";
cout<<"\t-Chi su dung 1 chiec can 2 dia (can thang bang) de phat hien ra hon bi do \n";
cout<<"\t-Ban nghi trong dau va chon 1 trong nhung hon bi do\n";
cout<<"\t-Tra loi trung thuc nhung cau hoi sau, may tinh se doan ra hon bi ma ban da chon \n";
cout<<"\t-Luu y: may tinh chi can toi da 3 lan\n";
cout<<"------------------------------------------------------------------------------------ \n";
cout<<"Chon -1 neu dia 1 nhe, 1 neu dia 1 nang va 0 neu 2 dia can bang \n";
cout<<"-------------------------------------------------------------------\n";
cout<<"1. CAN LAN 1:\n";
cout<<"\t-Dia 1 gom hon 1,2,3\n";
cout<<"\t-Dia 2 gom hon 4,5,6 \n";
int kq1;
cout<<"Moi ban nhap ket qua can: ";
cin>>kq1;
if(kq1==0)
{
cout<<"2. CAN LAN 2:\n";
cout<<"\t-Dia 1 gom qua 1\n";
cout<<"\t-Dia 2 gom qua 7 \n";
int kq2;
cout<<"Moi ban nhap ket qua can: ";cin>>kq2;
if(kq2==0)
{
cout<<"3.CAN LAN 3:\n";
cout<<"\t-Dia 1 gom hon 1 \n";
cout<<"\t-Dia 2 gom hon 8 \n";
int kq3;
cout<<"Moi ban nhap ket qua can: ";cin>>kq3;
if(kq3==1||kq3==-1)
cout<<((kq3==1)?"Hon 8 nhe!!!\n":"Hon 8 nang!!!\n");

else
cout<<"BAN CHUA HIEU LUAT CHOI - AN GIAN KIA\n";

}
else if (kq2==1||kq2==-1)
cout<<((kq2==1)?"Hon 7 nhe!!!\n":"Hon 7 nang!!!\n");

else
cout<<"BAN CHUA HIEU LUAT CHOI - AN GIAN KIA\n";

}
else if (kq1==-1||kq1==1)
{
cout<<"2.CAN LAN 2:\n";
cout<<"\t-Dia 1 gom hon 1,2\n";
cout<<"\t-Dia 2 gom hon 3,4\n";
int kq2;
cout<<"Moi ban nhap ket qua can: ";cin>>kq2;
if(kq2==0)
{
cout<<"3.CAN LAN 3:\n";
cout<<"\t-Dia 1 gom hon 5\n";
cout<<"\t-Dia 2 gom hon 6\n";
int kq3;
cout<<"Moi ban nhap ket qua can: ";cin>>kq3;
if (kq3==1||kq3==-1)
{
if(kq1==1)
cout<<((kq3==1)?"Hon 6 nhe!!\n":"Hon 5 nhe!!!\n");

else
cout<<((kq3==1)?"Hon 5 nang!!\n":"Hon 6 nang!!!\n");

}
else
cout<<"BAN CHUA HIEU LUAT CHOI-AN GIAN KIA\n";

}
else if(kq2==1||kq2==-1)
{
if(kq1!=kq2)
cout<<((kq1==1)?"Hon 3 nang!!!\n":"Hon 3 nhe!!!\n");

else
{
cout<<"3.CAN LAN 3:\n";
cout<<"\t-Dia 1 gom hon 1\n";
cout<<"\t-Dia 2 gom hon 2\n";
int kq3;
cout<<"Moi ban nhap ket qua can: ";cin>>kq3;
if(kq3==0)
cout<<((kq1==1)?"Hon 4 nhe!!!\n":"Hon 4 nang!!!\n");

else if(kq3==1||kq3==-1)
{
if(kq1==1)
cout<<((kq3==1)?"Hon 1 nang!!\n":"Hon 2 nang!!\n");

else
cout<<((kq3==1)?"}Hon 2 nhe!!!\n":"Hon 1 nhe!!!\n");

}
else
cout<<"BAN CHUA HIEU LUAT CHOI-AN GIAN KIA\n";

}
}
else
cout<<"BAN CHUA HIEU LUAT CHOI-AN GIAN KIA\n";

}
else
cout<<"BAN CHUA HIEU LUAT CHOI\n";

cout<<"\nBan co muon choi tiep khong(c/k): ";
cin>>chon;
system("cls");
}while(chon == 'c');
}

iamvtn
28-06-2007, 08:56 AM
Kiểm tra số đối xứng


/*Vu Thanh Nam
Bai tap 43 */
#include<iostream.h>
#include<conio.h>
#include<math.h>
long songuoc(long a);
void main()
{
long n;
do
{
cout<<"Nhap vao mot so bat ky: ";
cin>>n;
}while(n<0);
if(n==songuoc(n))
cout<<"La so doi xung";
else
cout<<"Khong la so doi xung";
getch();
}
long songuoc(long a)
{
int tg;
if (a > 0)
{
while (a > 0)
{
tg= a%10;
a = a / 10;
}
}
return tg;
}



Điền giá trị cho một mảng vuông theo chiều kim đồng hồ


#include <stdio.h>
#include <conio.h>
void main()
{
int n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam;
int matran[12][12], tang, giam;

printf("\n\nChuong trinh in ma tran dac biet.");
do {
printf("\nNhap kich thuoc cua ma tran (3 <= n <= 12) : ");
scanf("%d%*c",&n);
} while (! (n >=3 && n<=12) );
hang = cot = 0;
chanhangtang = chancottang = n-1;
chanhanggiam = chancotgiam = 0;
/*
tang co 4 gia tri :
tang = 0 -> tang cot
tang = 1 -> tang hang
tang = 2 -> giam cot
tang = 3 -> giam cot
*/
tang = 0;
for (w=0; w<n*n; w++)
{
matran[hang][cot]= w + 1;
switch(tang)
{
case 0 : if (cot < chancottang)
cot++;
else
{
tang++; // Chuyen sang tang hang
chanhanggiam++;
hang++;
}
break;
case 1 : if (hang < chanhangtang)
hang++;
else
{
tang++; // Chuyen sang giam cot
chancottang--;
cot--;
}
break;
case 2 : if (cot > chancotgiam)
cot--;
else
{
tang++; // Chuyen sang giam hang
chanhangtang--;
hang--;
}
break;
case 3 : if (hang > chanhanggiam)
hang--;
else
{
tang=0; // Chuyen sang tang cot
chancotgiam++;
cot++;
}
break;
}
}
for (hang=0; hang < n; hang++)
{
printf("\n");
for (cot=0; cot < n; cot++)
printf("%4d", matran[hang][cot]);
}
getch();
}

iamvtn
28-06-2007, 08:58 AM
In hình tam giác


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

void main()
{
int n, i, j;

printf("\nNhap chieu cao cua hinh tam giac : ");
scanf("%d", &n);

for (i=0; i<n; i++)
{
for (j=n-1; j>i; j--)
printf(" ");
for (j=0; j<i*2+1; j++)
printf("*");
printf("\n");
}

getch();
}



Trộn hai mảng tăng dần thành một mảng tăng dần


/* Tron hai mang tang dan thanh 1 mang tang dan */
#include <stdio.h>

#define MAX 10

void main()
{
int a[MAX], b[MAX], c[2*MAX], n1, n2, i, i1, i2;

printf("\nCho biet so phan tu cua mang thu nhat : ");
scanf("%d", &n1);
printf("Nhap vao cac phan tu (tang dan) cua mang thu nhat : ");
for (i=0; i<n1; i++)
scanf("%d", &a[i]);
printf("\nCho biet so phan tu cua mang thu hai : ");
scanf("%d", &n2);
printf("Nhap vao cac phan tu (tang dan) cua mang thu hai : ");
for (i=0; i<n2; i++)
scanf("%d", &b[i]);
i1 = i2 = 0;
for (i=0; i<n1 + n2; i++)
{
if (i1 >= n1 || i2 >= n2)
break;
if (a[i1] < b[i2])
{
c[i] = a[i1];
i1++;
}
else
{
c[i] = b[i2];
i2++;
}
}
if (i1 < n1)
while (i1 < n1)
c[i++] = a[i1++];
if (i2 < n2)
while (i2 < n2)
c[i++] = b[i2++];
printf("\nCac phan tu cua mang tron : ");
for (i=0; i<n1+n2; i++)
printf("%d ", c[i]);
getch();
}

iamvtn
28-06-2007, 09:02 AM
Tìm vị trí đầu và vị trí cuối của một số trong một dãy số


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
int a,n,m,vtdau=0,vtcuoi=0;
cout<<"Nhap vao so luong so: ";
cin>>n;
cout<<"Ban muon kiem tra so nao: ";
cin>>m;
do
{
cout<<"Nhap vao so thu 1: ";
cin>>a;
}while(a<0);
for(int i=2;i<=n;i++)
{
do
{
cout<<"Nhap vao so thu "<<i<<": ";
cin>>a;
}while(a<0);
if(a==m)
{
if(vtdau==0)
vtdau=i;
vtcuoi=i;
}
}
cout<<"Vay vi tri dau cua so "<< m<< "la: "<<vtdau<<endl;
cout<<"Vay vi tri cuoi cua so "<< m<< "la: "<<vtcuoi<<endl;
getch();
}



Tính x^1/1! + x^2/2! + x^3/3! + ... + x^n/n!


#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float x,tong=0.0,n,tg,mu=1.0,gt=1.0;
cout<<"Nhap vao mot so thuc x= ";cin>>x;
cout<<"Nhap vao n= ";cin>>n;
for(int i=1;i<=n;i++)
{
mu=mu*x;
gt=gt*i;
tg=mu/gt;
tong=tong+tg;
}
cout<<"Vay ";
for(int j=2;j<=n;j++)
{
cout<<x<<"^"<<j<<"/"<<j<<"!"<<" + ";
}
cout<<x<<" = "<<(tong);
getch();
}

iamvtn
14-07-2007, 08:12 PM
Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 3 đĩa


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

#define A 0
#define B 1
#define C 2

void hanoi(int from, int to, int dia)
{
int trunggian;
if (dia == 1)
printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to);
else
{
if ((from == A && to == C) || (from == C && to == A))
trunggian = B;
else if ((from == A && to == B) || (from == B && to == A))
trunggian = C;
else if ((from == C && to == B) || (from == B && to == C))
trunggian = A;
hanoi(from, trunggian, dia-1);
hanoi(from, to, 1);
hanoi(trunggian, to, dia-1);
}
}

void main()
{
int n;

printf("\nCho biet so dia ( 3 -> 6 ): ");
do {
scanf("%d", &n);
} while (n < 3 || n > 6);
hanoi(A, C, n);
getch();
}



Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa


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

#define A 0
#define B 1
#define C 2
#define D 3

void hanoi(int from, int to, int dia)
{
int tg1, tg2, dia2;
if (dia <= 1)
printf("\nChuyen 1 dia tu coc %c sang coc %c", 'A'+from, 'A'+to);
else
{
if ((from == A && to == D) || (from == D && to == A))
{
tg1 = B;
tg2 = C;
}
else if ((from == A && to == B) || (from == B && to == A))
{
tg1 = C;
tg2 = D;
}
else if ((from == A && to == C) || (from == C && to == A))
{
tg1 = B;
tg2 = D;
}
else if ((from == B && to == C) || (from == C && to == B))
{
tg1 = A;
tg2 = D;
}
else if ((from == B && to == D) || (from == D && to == B))
{
tg1 = A;
tg2 = C;
}
else if ((from == C && to == D) || (from == D && to == C))
{
tg1 = A;
tg2 = B;
}
dia2 = dia / 2;
if (dia % 2 == 1)
{
hanoi(from, tg1, dia2);
hanoi(from, tg2, dia2);
hanoi(from, to, 1);
hanoi(tg2, to, dia2);
hanoi(tg1, to, dia2);
}
else
{
hanoi(from, tg1, dia2);
if (dia2 > 1)
{
hanoi(from, tg2, dia2-1);
hanoi(from, to, 1);
hanoi(tg2, to, dia2-1);
}
else
hanoi(from, to, 1);
hanoi(tg1, to, dia2);
}
}
}

void main()
{
int n;

printf("\nCho biet so dia ( 3 -> 6 ): ");
do {
scanf("%d", &n);
} while (n < 3 || n > 6);
hanoi(A, D, n);
getch();
}

mylove064
06-04-2008, 08:37 PM
câu 12 trang 3:các ước của số n, với n nhập từ bàn phím :

#include<conio.h>
#include<stdio.h>
void LK_Uoc(int n)//liet ke cac uoc cua n
{
for(int i=1;i<=n;i++)
if(n%i==0)
printf("%4d",i);
}
void main()
{
int n;
printf("\nMoi ban nhap so n bat ky n =");
scanf("%d",&n);
printf("\nCac uoc so cua n la : \n ");
LK_Uoc(n);
getch();
}

mylove064
06-04-2008, 08:52 PM
Tìm vị trí đầu và vị trí cuối của một số trong một dãy số. Bài này mình dùng mảng hai chiều ai có y kiến pm nha:D

#include<conio.h>
#include<stdio.h>
void Nhap_Mang(int A[],int n)
{
for(int i=0;i<n;i++)
{
printf("A[%d=",i);
scanf("%d",&A[i);
}
}
void Xuat_Mang(int A[],int n)
{
for(int i=0;i<n;i++)
printf("%4d",A[i]);
}
int Tim_X_DT(int A[],int n,int X)
{
for(int i=0;i<n;i++)
if(A[i]==X)
return i;
return 0;
}
int Tim_X_CC(int A[],int n,int X)
{
for(int i=n-1;i>=0;i--)
if(A[i]==X)
return i;
return 0;
}
void main()
{
int A[100];
int n,X;
printf("\nMoi ban nhap so phan tu n = ");
scanf("%d",&n);
Nhap_Mang(A,n);
printf("\nMang sau khi nhap :");
Xuat_Mang(A,n);
printf("\nMoi ban nhap gia tri X =");
scanf("%d",&X);
int kq=Tim_X_DT(A,n,X);
if(kq==0)
printf("\n Mang vua nhap ko co gia tri X");
else
printf("\nGia tri X dau tien trong mang =%d",kq);
int kq1=Tim_X_CC(A,n,X);
printf("\nGia tri X cuoi cung trong mang =%d",kq1);
getch();
}

mylove064
06-04-2008, 09:03 PM
bai 16 :In danh sách các số hoàn hảo(hoàn hảo =hoàn thiện) nhỏ hơn số N nhập từ user
bài này xin giải như sau nhé:

#include<conio.h>
#include<stdio.h>
int La_HT(int n)//La_HT=La_HH
{
int tong=0;
for(int i=1;i<n;i++0)
if(n%i==0)
tong=tong+i;
return(tong==n);
}
void LK_HT(int n)
{
for(int i=0;i<=n;i++)
if(La_HT(i)==1)
printf("%4d",i);
}
void main()
{
int n;
printf("\nMoi ban nhap so n = ");
scanf("%d",&n);
printf("\nLiet ke Hoan hao nho hon n :");
LK_HT(n);
getch();
}

mylove064
07-04-2008, 09:59 AM
bài 12 trang 4 kiem tra nguyen to :

#include<conio.h>
#include<stdio.h>
int La_NT(int n)
{
int dem=0;
for(int i=1;i<=n;i++)
if(n%i==0)
dem++;
return(dem==2);
}
void main()
{
int n;
printf("\nMoi ban nhap n =");
scanf("%d",&n);
int kq=La_NT(n);
if(kq==0)
printf("\nso vua nhap ko phai la NT");
else
printf("\nLa NT");
getch();
}

mylove064
07-04-2008, 10:12 AM
bai 13 trang 4 :cách dễ nhất nè dùng tìm trong mảng cho nó dễ tìm ha hihi

#include<conio.h>
#include<stdio.h>
void Nhap_Mang(int A[],int n)
{
for(int i=0;i<n;i++
{
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
}
void Xuat_Mang(int A[],int n)
{
for(int i=0;i<n;i++)
printf("%4d",A[i]);
}
int Tim_Max(int A[],int n)
{
int max=0;
for(int i=1;i<n;i++)
if(A[i]>A[max])
max=i;
return max;
}
void main()
{
int A[100];
int n;
printf("\nMoi ban nhap so pt n = ");
scanf("%d",&n);
Nhap_Mang(A,n);
printf("\nMang sau khi nhap ");
Xuat_Mang(A,n);
int kq=Tim_Max(A,n);
printf("\nSo Lon nhat trong mang tai vi tri =%d, va so do la =%d",kq,A[kq]);
getch();
}

6220119
18-09-2008, 10:17 AM
Kiểm tra ma trận B có là ma trận con của ma trận A hay ko :

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

#define N 2
#define M 5

void search(int b[N][N],int a[M][M])
{
int i,j,k,l,m,x,y,dem,demx,demy;
int timthay=1;

for(k=0;k<=M-N;++k)
{
for(l=0;l<=M-N;++l)
{
dem=demx=demy=0;
x=l;y=k;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(b[i][j]==a[y][x])dem++;
++x;++demx;
if(demx==N){demx=0;x=l;}
}
++y;++demy;
if(demy==N){demy=0;y=k;}
}
if(dem==N*N)break;
}
if(dem==N*N)break;
}

if(dem!=N*N)timthay=0;
if(timthay==0)printf("\nKo tim thay");
else printf("\nTim thay");
}

void main()
{
clrscr();
int a[M][M]={ 1, 2, 3, 4, 5,
6, 7, 8, 9,10,
11,12,13,14,15,
16,17,18,19,20,
21,22,23,24,25};


int b[N][N]={4, 5,
9,10};

search(b,a);
getch();
}

icttrack
14-07-2009, 11:55 PM
ai giúp mình với.
in hình sau ra màn hình(in hình tam giác cân)
-------1
------121
-----12121
----1212121
...
Không biết phải làm thế nào nữa. Các pro giúp mình với

Đây là bài giải


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

void main() {
clrscr();
short d[]={1,2};
printf("Nhap chieu cao tam giac: ");
int i,num,space;
scanf("%d",&i);
num=2*i+1;
for(int n=0;n<i;++n) {
space=(num-(2*n+1))/2;
while(space-->0)
printf(" ");
int index;
for(int j=0;j<2*n+1;++j) {
index=(j%2)?1:0;
printf("%d",d[index]);
}
printf("\n");
}
getch();
}



Nếu dùng visual C++ thì chỉ cần thay getch()= _getch()

sakervista
15-07-2009, 11:50 PM
ai giúp mình với.
in hình sau ra màn hình(in hình tam giác cân)
-------1
------121
-----12121
----1212121
...
Không biết phải làm thế nào nữa. Các pro giúp mình với

thật ra icttrack cũng ổn nhưng nói thật mình nhìn vào đó thấy quá là khó hiểu
cách làm of mình có lẽ là dễ hiểu đối với những người mới học C họ nhìn vào code là có thể hiểu đc ý mình làm gì ngay


#include<conio.h>
#include<iostream.h>
//by sakervista http://th6b.net
main()
{
int i,j,k,h;
printf("Nhap Chieu cao h : "); scanf("%d",&h);
for(i=1;i<=h;i++)
{
for(k=1;k<=h-i+1;k++)
{
printf(" "); // in ra khoảng trắng
}
for(j=1;j<=2*i-1;j++)
{
if(j%2!=0) // nếu j chẵn thì in ra số 2 còn không thì in ra 1
{
printf("1");
}
else
printf("2");
}

printf("\n");

}
getch();
}

sakervista
01-08-2009, 10:28 AM
--------2___3___4___5____6____7____8____9____10
2------4___6___8___10___12___14___16___18____20
3------6___8___12__15___18___21___24____27___30
4------8___12__16__20___24___28___32____36____40
5----- 10__15__20__25___30___35___40____45____50
6------12__18__24__30___36___42___48____54____60
7------14__21__28__35___42___49___56____63____70
8------16__24__32__40___48___56___64____72____80
9------18__27__36__45___54___63___72____81____90
10-----20__30__40__50___60___70___80____90____100
Giúp mình với.........
In ra màn hình bảng cửu chương trên. In ra bảng ấy giống như là khi xem thời khóa biểu ta xem thứ 2 tiết 3 thì học môn gì vậy, chỉ in ra số thôi không phải in những cái gạch chân đâu. Hy vọng là các bạn hiểu đề bài. Không biết in ra thế nào nữa.
Cảm ơn trước nha.

bài của cậu đây bài đơn giản mà :(

#include <stdio.h>
#include <conio.h>
main()
{
int n,i,j;
printf("Nhap n:"); scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=10;j++)
{
printf("%2d ",i*j);
}
printf("\n");
}
getch();
}

langman
02-02-2010, 08:41 AM
Một số hàm thông dụng :

long giaithua(unsigned n)
{
return (n<=0)?1:n*giaithua(n-1);
}
long haicham(unsigned n)
{
return (n<=0||n==1)?1:n*haicham(n-2);
}
int UCLN(int a,int b)
{
return (b==0)?a:UCLN(b, a%b);
}
long BCNN(int a,int b)
{
return long(a)*b/UCLN(a,b);
}
int tohop(unsigned k,unsigned n)
{
if (k>n) return 0;
return (k<=0||k==n)?1:tohop(k-1,n-1)+tohop(k,n-1);
}
long fibonaci(unsigned n)
{
return (n==1||n==2)?1: fibonaci(n-1)+fibonaci(n-2) ;
}
char nguyento(unsigned n)
{
if (n<2) return 0;
for (int i=2; i<= sqrt(n) ; i++ )
if (n%i==0) return 0;
return 1;
}
char hoanhao(unsigned n)
{
int s=0,i;
for (i=1;i<n;i++)
if (n%i==0) s+=i;
if (s==n) return 1;
else return 0;
}
char chinhphuong(unsigned n)
{
if (n==0) return 1;
if (n==int(sqrt(n))*int(sqrt(n))) return 1;
return 0;
}





char doixung(float *mang,int n) //n la so phan tu ( nho nhat la 1)
{
for (int i=0;i<n/2;i++)
if (mang[i]!=mang[n-i-1]) return 0;
return 1;
}
void xapxepngd(int mang[], int n) // xap xep nguyen giam dan
{
int i,j;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
{
if (mang[i]<mang[j])
mang[i]^=mang[j]^=mang[i]^=mang[j];
}
}
void xapxepntd(int mang[], int dodai) // xap xep nguyen tang dan
{
int i,j;
for (i=0;i<=dodai-2;i++)
for (j=i;j<dodai;j++)
{
if (mang[i]>mang[j])
mang[i]^=mang[j]^=mang[i]^=mang[j];
}
}
void xapxeptgd(float mang[], int dodai) // xap xep thuc giam dan
{
int i,j;
float temp;
for (i=0;i<=dodai-2;i++)
for (j=i;j<dodai;j++)
{
if (mang[i]<mang[j])
{
temp=mang[i];
mang[i]=mang[j];
mang[j]=temp;
}
}
}
void xapxepttd(float mang[], int dodai) // xap xep thuc tang dan
{
int i,j;
float temp;
for (i=0;i<=dodai-2;i++)
for (j=i;j<dodai;j++)
{
if (mang[i]>mang[j])
{
temp=mang[i];
mang[i]=mang[j];
mang[j]=temp;
}
}
}





int strlen(char *xau)
{
int i=0;
while (xau[i]!=NULL) i++;
return i;
}
void xoakitu(int vitri , int soluong , char *xau)
{
if (vitri+soluong-1>strlen(xau)) xau[0]=NULL;
else
{
while (xau[vitri+soluong]!=NULL)
{
xau[vitri]=xau[vitri+soluong];
vitri++;
}
xau[vitri]=NULL;
}
}
void chenkitu(int vitri, char *chen , char xau*)
{
int j=0,i=vitri;
char temp[99];
while (xau[i]!=NULL) temp[j++]=xau[i++];
temp[j]=NULL;
j=0;
while (chen[j]!=NULL) xau[vitri++]=chen[j++];
j=0;
while (temp[j]!=NULL) xau[vitri++]=temp[j++];
xau[vitri]=NULL;
}

//viết 1 xâu kí tự : viết từng chữ 1 ra màn hình
void viet(char *xau="Quang",int tre=15);
void viet(char xau[],int tre)
{
int i;
for ( i=0 ; i<strlen(xau) ; ++i)
{ putch(xau[i]);delay(tre);}
}

//cho 1 xâu kí tự chạy từ vị trí x y gốc đến đích
//hiệu ứng giống như trong video studio
//chưa hình thành hết
void PR(int,int,int,int,char *xau="Quang",int tre=15 ,int mau=GREEN,int cach=1);
void PR( int xgoc , int ygoc , int xdich , int ydich , char xau[] , int tre , int mau , int cach)
{
int i,j=0;
textcolor(mau);
if (xgoc==xdich&&ygoc>ydich&&cach==1)
{
for (j=0 ; j<=strlen(xau) ; j++)
{
if (xau[j]!=32)
for (i=ygoc ; i>= ydich ; i--)
{
gotoxy(xgoc,i);putch(xau[j]);
gotoxy(xgoc,i+1);putch(' ');
delay(tre);
}
else {gotoxy(xgoc,ydich);putch(' ');}
xgoc++;
}
}

if (ydich==ygoc&&xgoc>xdich&&cach==1)
{
for (j=0 ; j<=strlen(xau) ; j++)
{
if (xau[j]!=32)
for (i=xgoc ; i>= xdich ; i--)
{
gotoxy(i,ygoc);cprintf("%c ",xau[j]);
delay(tre);
}
else {gotoxy(xgoc,ydich);putch(' ');}
xdich++;
}

}
}

langman
02-02-2010, 08:43 AM
Bài toán giải phương trình bậc nhất và giải phương trình bậc 2

void bai101(void)
{
float a,b;
printf("Nhập vào số (thực) a : ");scanf("%f", &a);
printf("Nhập vào số (thực) b : ");scanf("%f", &b);
if (a==0)
if (b>0) printf("Bất phương trình có nghiệm với mọi x");
else printf("Bất phương trình vô nghiệm");
if (a>0) printf("Bất phương trình có nghiệm là x > %.2f" ,1.0*(-b)/a);
if (a<0) printf("Bất phương trình có nghiệm là x < %.2f" ,1.0*(-b)/a);
}
void bai102(void)

{
float a,b,c,s;
printf("Nhập vào số (thực) a : ");scanf("%f", &a);
printf("Nhập vào số (thực) b : ");scanf("%f", &b);
printf("Nhập vào số (thực) c : ");scanf("%f", &c);
if (a==0)
{ if (b==0) if (c==0) printf("Phương trình có nghiệm với mọi x");
else printf("Phương trình vô nghiệm");
else printf("Phương trình có nghiệm duy nhất là x = %.2f", (-c)/b);
}
else
{
s=b*b-4*a*c;
if (s<0) printf("Phương trình vô nghiệm");
else if (s==0) printf("Phương trình có nghiệm kép %.2f" ,(-b)/(2*a) );
else printf("Phương trình có 2 nghiệm phân biệt là %.2f va %.2f" , ((-b)+sqrt(s))/(2*a) ,1.0*((-b)-sqrt(s))/(2*a) );
}
}

langman
02-02-2010, 08:44 AM
Bài toán nhập a,b,c kiếm tra xem có phải tam giác hay ko

void bai103(void)
{
float a,b,c,s;
printf("Nhập vào số (thực) a : ");scanf("%f", &a);
printf("Nhập vào số (thực) b : ");scanf("%f", &b);
printf("Nhập vào số (thực) c : ");scanf("%f", &c);
if ((a+b>c)&&(a+c>b)&&(b+c>a))
{
printf("Đây là ba cạnh của một tam giác ");
if ((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) printf("vuông ");
if ((a==b)&&(b==c)) printf("đều ");
else if ((a==b)||(b==c)||(c==a)) {printf("cân ");}
s=(a+b+c)/2;printf("có :");
printf("\n\tchu vi là %.2f và diện tích là %.2f", s*2 , sqrt(s*(s-a)*(s-b)*(s-b)) );
}
else printf("Đây không phải ba cạnh của một tam giác");
}

langman
02-02-2010, 08:48 AM
Bài 105: Kiểm tra xem n có phải là số nguyên tố ko ?
Bài 106: Nhập phân số (nhập trực tiếp ví dụ : 3/9 , 4/8 , 1/2 ... ). Đưa ra dạng tối giản của phân số đó.
Bài 107: Tìm ước chung lớn nhất , bội chung nhỏ nhất của 2 số nhập từ bàn phím.
Bài 108: Kiểm tra xem n có phải là số hoàn hảo ko ?
Bài 109: Liệt kê các số Amstrong nhỏ hơn hoặc bằng 999.
Bài 110: Tính tổng cách chữ số của số nguyên n.
Bài 111:Bài18: Tính n! và n!!.
Bài 112: Giải bài toán cổ vừa gà vừa chó.
Bài 113: a. Tìm min max của 2 số b. Nhập chiều cao h, cạnh đáy a . Tính diện tích tam giác
Bài 114: Nhập vào 1 số nguyên từ 0 đến 7 . Viết ra màn hình thứ tương ứng trong tuần
Bài 115: Nhập 2 cạnh 1 hình chữ nhật. Tính S,P
Bài 116: Tinh luy thua n cua x
Bài 117: Giải bài toán cổ 100 trâu 100 cỏ
Bài 118: Nhập R của hình tròn. Tính S , P
Bài 119: Tính tổng các số số lẻ ” n.
Bài 120: Kiểm tra 1 kí tự nhập từ bàn phím
Bài 121: Tính tổ hợp chập k của n phần tử






void bai105(void)
{
int n;
printf("Nhập vào số n : ");scanf("%d", &n);
if (nguyento(n)) printf("Bạn vừa nhập vào 1 số nguyên tố.");
else printf("%d không phải là số nguyên tố",n);
}
void bai106(void)
{
int m,n;

printf("Nhập vào một phân số :\n\tTử số là : ");scanf("%d",&m);
printf("\tMẫu số là : ");scanf("%d",&n);
if (n!=0)
{
int a=UCLN(m,n);
m/=a;n/=a;
printf("Dạng tối giản của phân số đó là %d/%d ",m,n);
}
}
void bai107(void)
{
int m,n;
printf("Nhập vào số (nguyên) m : ");scanf("%d", &m);
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);
printf("Ước chung lớn nhất của 2 số đó là : %d ",UCLN(m,n) );
printf("\nBội chung nhỏ nhất của 2 số đó là : %d ",BCNN(m,n) );
}
void bai108(void)
{
int m;
printf("Nhập vào số m : ");scanf("%d", &m);
if (hoanhao(m)) printf("Bạn vừa nhập vào một số hoàn hảo.");
else printf("%d không phải là số hoàn hảo",m);
}
void bai109(void)
{
int a,b,c;
printf("Các số Amstrong nhỏ 999 là :");
for (a=1 ; a<=9 ; a++)
for (b=1 ; b<=9 ; b++)
for (c=1 ; c<=9 ; c++)
if (a*a*a+b*b*b+c*c*c==a*100+b*10+c)
printf("\n %d%d%d " , a,b,c );
}
void bai110(void)
{
int n,i,j,m;
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);
j=m=0;
for (i=1 ; i<=12 ; i++ )
{if (n==0) break;else {m+=n%10;n/=10;j++;}}
printf("Số các chữ số của n là : %d \n" , j );
printf("Tổng các chữ số của n là : %d" ,m );
}
void bai111(void)
{
int n;
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);
printf(" %d! = %ld\n",n,giaithua(n));
printf("%d!! = %ld",n,haicham(n));
}
void bai112(void)
{
int i;
for (i=1 ; i<=24 ; i++)
if ((4*i+2*(36-i))==100)
printf("Chó %d cho %d gà.", i, 36-i);
}

void bai113(void)
{
float a,b,h;
printf("Nhập vào số (thực) a : ");scanf("%f", &a);
printf("Nhập vào số (thực) b : ");scanf("%f", &b);
printf("Số lớn là : %.2f số bé là : %.2f" ,(a>b)?(a):(b) ,(a<b)?(a):(b));
printf("\nNhập vào chiều cao : ");scanf("%f", &a);
printf("Nhập vào cạnh đấy : ");scanf("%f", &b);
printf("Diện tích tam giác là : %.2f" , a*b/2);
}


void bai114(void)
{
int n;
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);
switch (n)
{ case 1:case 0:printf("Chủ nhật.");break;
case 2:printf("Thứ hai.");break;
case 3:printf("Thứ ba.");break;
case 4:printf("Thứ tư.");break;
case 5:printf("Thứ năm.");break;
case 6:printf("Thứ sáu.");break;
case 7:printf("Thứ bảy.");break;
default :printf("Bạn nhập vào số “ 8 rồi");break;
}

}
void bai115(void)
{
float a,b;
printf("Nhập vào cạnh a : ");scanf("%f", &a);
printf("Nhập vào cạnh b : ");scanf("%f", &b);
printf("Chu vi của hình chữ nhật là : %.2f\n",a+b+a+b);
printf("Diện tích của hình chữ nhật là : %.2f",a*b);
}
void bai116(void)//********************
{
float x;
int n;
printf("Nhập vào số (thực) x : ");scanf("%f", &x);
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);

printf("x^n = %.0lf", pow(x,double(n)));
}
void bai117(void)//********
{
int a,b;
for (a=1 ; a<=20 ; a++)
for (b=1 ; b<=33 ; b++)
if ( a*5 + b*3 + (100-a-b)/3 == 100 )
printf("%d trâu đứng , %d trâu nằm , %d trâu già.\n",a ,b,100-a-b);
}
void bai118(void)
{
float r;
printf("Nhập vào bán kính đường tròn : ");
scanf("%f",&r);
printf("\nChu vi của đường tròn là : %.2f" , 3.14*r);
printf("\nDiện tích của đường tròn là : %.2f" , 3.14*r*r);
}
void bai119(void)
{
int i,m=0,n;
printf("Nhập vào số (nguyên) n : ");
scanf("%d", &n);
for (i=0; i<=n ; i++) if (i&1) m+=i;
gotoxy(5,23);printf("Tổng các số lẻ ” n la %d",m);
}
void bai120(void)
{
char ch;
printf("Nhập vào một kí tự.\n");
ch=getch();
if (ch==32) printf("Bạn vừa nhập vào một dấu cách.");
else if (isalpha(ch)) printf("Bạn vừa nhập vào một chữ cái %c " ,ch);
else if (isdigit(ch)) printf("Bạn vừa nhập vào một chữ số %c " ,ch);
else printf("Bạn vừa nhập vào một kí tự đặc biệt : %c " , ch);
}
void bai121(void)
{
int k,n;
printf("Nhập vào số (nguyên) k : ");scanf("%d", &k);
printf("Nhập vào số (nguyên) n : ");scanf("%d", &n);
printf("Tổ hợp chập k của n phần tử : %d" ,tohop(k,n));
}

while
28-08-2010, 01:39 PM
Một bài ví dụ về Hàm tạo và class
Tính Tổng , Hiệu ,Thương , Tích 2 phân số




#include<iostream>
using namespace std;

class PhanSo
{
public:
PhanSo() // Ham khoi tao gt mac dinh
{
tu = mau = 1;
}
PhanSo(int tu1, int mau1) // Ham tao de nhap vao phan so
{
tu = tu1;
mau = mau1;
}
void rutGon(); // Ham rutgon phan so
PhanSo cong(PhanSo p); // Cong
PhanSo tru(PhanSo p); // Tru
PhanSo nhan(PhanSo p); // Nhan
PhanSo chia(PhanSo p); // Chia

void output() // In ket qua va phan so ra man hinh
{
cout << tu << "/" << mau << endl;
}

private:
int tu;
int mau;
};
PhanSo PhanSo::cong(PhanSo p) // Dinh nghia ham Cong phan so
{
PhanSo kq;
kq.tu = tu * p.mau + mau * p.tu; // Quy dong phan so
kq.mau = mau * p.mau;
kq.rutGon(); // Rut gon phan so Tong
return kq; // Roi tra ve phan so
}
PhanSo PhanSo::tru(PhanSo p)
{
PhanSo kq;
kq.tu = tu * p.mau - mau * p.tu;
kq.mau = mau * p.mau;
kq.rutGon();
return kq;
}
PhanSo PhanSo::nhan(PhanSo p)
{
PhanSo kq;
kq.tu = tu * p.tu;
kq.mau = mau * p.mau;
kq.rutGon();
return kq;
}

PhanSo PhanSo::chia(PhanSo p)
{
PhanSo kq;
kq.tu = tu * p.mau;
kq.mau = mau * p.tu;
kq.rutGon();
return kq;
}

void PhanSo::rutGon() // Ham rut gon Phan so + Tim uoc so chung lon nhat cua tu va mau
{
int a = abs(tu);
int b = abs(mau); // Tim uoc so chung lon nhat
while(a != b) //
if(a > b) a= a - b; //
else b = b - a;
tu = tu / a;
mau = mau / a;
}
int main()
{
PhanSo p1(1, 3), p2(1,6); // Tao 2 phan so p1 (1/3) va p2 (1/6)
cout << "Phan so p1:";
p1.output();
cout << "Phan so p2:";
p2.output();
PhanSo tong, hieu, tich, thuong;
tong = p1.cong(p2);
hieu = p1.tru(p2);
tich = p1.nhan(p2);
thuong = p1.chia(p2);
cout << "Tong hai phan so:";
tong.output();
cout << "Hieu hai phan so:";
hieu.output();
cout << "Tich hai phan so:";
tich.output();
cout << "Thuong hai phan so:";
thuong.output();
system("pause>nul");
return 0;
}

tiendoan1989
09-12-2011, 07:34 PM
Cho phép người dùng nhập vào số nguyên a từ 0 đến 9 cùng chiều dài H và chiều rộng W. Xuất ra màn hình chữ số điện tử của a với chiều dài H và chiều rộng W tương ứng.
Ví dụ: Nhập a = 5, H = 7, W = 5.Xuất ra màn hình số 5 Bằng dấu sao (*).

dangquyduongit
11-12-2011, 08:47 AM
Giải bài toán trâu ăn cỏ

/* Giai bai toan co :
Tram trau tram co
Trau dung an nam
Trau nam an ba
Trau gia an mot
*/

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

void main()
{
int tdung, tnam, tgia, phuongan=0;

for (tdung = 1; tdung <= 98; tdung ++)
for (tnam = 1; tnam < 99 - tdung; tnam ++)
for (tgia = 1; tgia < 99 - (tdung + tnam); tgia++)
if ((tdung*5 + tnam*3 + tgia) == 100)
{
printf("\nTrau dung : %5d ; Trau nam : %5d ; Trau gia : %5d",
tdung, tnam, tgia);
phuongan++;
}
printf("\nTong cong co %d phuong an.", phuongan);
getch();
}


Loại bỏ khoảng trống thừa trong chuỗi

#include <stdio.h>
#include <string.h>
#include <conio.h>
#pragma warn -pia

char *trim(char *chuoi)
{
char *p;
while (p = strstr(chuoi, " "))
memmove(p, p+1, strlen(chuoi) - (p - chuoi));
if (chuoi[0] == ' ')
memmove(chuoi, chuoi+1, strlen(chuoi) - 1);
if (chuoi[strlen(chuoi)-1] == ' ')
chuoi[strlen(chuoi)-1] = 0;
return chuoi;
}

void main()
{
char chuoi[125];

printf("\nNhap chuoi mau : ");
textattr(0x1e);
gets(chuoi);

trim(chuoi);
printf("\nChuoi sau khi da trim : ");
textattr(0x1e);
cputs(chuoi);
getch();
}



cái bài trăm trâu mình thấy nó xuất ra màn hình không có chính xác (đứng + nằm + già = #100 con trâu)

tiendoan1989
12-12-2011, 09:18 PM
Bài 1. Chèn một số bất kỳ vào mảng số nguyên đã có thứ tự giảm dần sao cho mảng vẫn có thứ tự giảm dần
Bài 2. Đảo mảng 1 chiều gồm n phần tử nhập từ bàn phím.

hoahongnhung
18-12-2011, 12:38 AM
Xuất mảng a dạng n*n phần tử theo các hình sau:
1
8
2
3
9
7
6
5
4
a) Tăng dần từ trái sang phải
1
2
8
3
7
9
4
5
6
b) Tăng dần từ trên xuống dưới
1
5
2
3
8
4
6
9
7
c) Tăng dần từ trái sang phải từ trên xuống dưới
1
2
3
4
5
6
7
8
9
d) Tăng dần theo đường xoắn ốc
1
2
3
8
9
4
7
6
5
e) Giảm dần theo đường xoắn ốc
9
8
7
2
1
6
3
4
5
f) Xoay ma trận một góc 900 theo chiều kim đồng hồ
6
3
1
5
9
8
7
2

xuannam2620
10-02-2012, 03:21 PM
GIẢI PHƯƠNG TRÌNH BẬC HAI


#include <stdio.h>
#include <math.h>
void main()
{
float a, b, c, delta;

printf("\nGiai phuong trinh bac hai AXý + BX + C = 0");
printf("\nCho biet ba he so A B C : ");
scanf("%f%f%f", &a, &b, &c);

delta = b * b - 4 * a * c;
if (delta<0)
printf("Phuong trinh vo nghiem");
else if (delta == 0)
printf("Phuong trinh co nghiem kep x1 = x2 = %f", -b/(2*a));
else
{
printf("Phuong trinh co hai nghiem phan biet\nx1 = %f", (-b + sqrt(delta))/(2*a));
printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
}
getch();
}

nếu a,b,c đều bằng không thì không có th vô số nghiệm rùi

thich_it
23-04-2012, 11:23 PM
Mục lục:

Trang 1 (http://forums.congdongcviet.com/showthread.php?t=2556)

MÃ HÓA THÔNG ĐIỆP
GIẢI PHƯƠNG TRÌNH BẬC NHẤT
TÍNH CĂN BẬC HAI THEO PHƯƠNG PHÁP LẶP NEWTON
CẤU TRÚC VÀ CÁC HÀM THAO TÁC TRÊN SỐ PHỨC
DÃY TĂNG DẦN
DÃY TĂNG CÓ TỔNG DÀI NHẤT
QUẢN LÝ SINH VIÊN
GIẢI PHƯƠNG TRÌNH BẬC HAI
MA PHƯƠNG
FILE VÀ HỆ THỐNG


Trang 2 (http://forums.congdongcviet.com/showthread.php?t=2556&page=2)

SẮP XẾP MẢNG
Một ví dụ về Đa hình
Tiếp một ví dụ về Đa hình
Tổng hai ma trận
Một ví dụ về sử dụng template và quá tải toán tử Nhập xuất
Ví dụ về quá tải toán tử
Đếm số lần xuất hiện của các ký tự trong chuỗi
Bài toán Ancarokhi
Chứng minh đẳng thức An Casi
Hiện bảng mã ASCII
In ra năm âm lịch tương ứng với năm nhập vào.
In ra bảng cửu chương
Nhập chuỗi và in chuỗi
Giải hệ phương trình bậc nhất.
Tính thứ của ngày


Trang 3 (http://forums.congdongcviet.com/showthread.php?t=2556&page=3)

Chuyển số La Mã sang số Ả rập
Chuyển năm sang số La Mã
Thuật toán sắp xếp bẳng Radix sort
Danh sách liên kết đơn (Thuật toán vừa chèn vừa sắp xếp)
Quá tải toàn tử nhập xuất và sử dụng template
Chương trình đếm số ký tự trong một chuỗi ASCII
Biểu diễn số dưới dạng bit
Đảo chuỗi
Chương trình xem tập tin
Giải bài toán trâu ăn cỏ
Loại bỏ khoảng trống thừa trong chuỗi
Tìm tất cả các ước của một số N
Bội số chung và ước số chung
Trộn 2 dãy giảm thành một dãy tăng
Tính tích 2 ma trận:
In danh sách các số hoàn hảo nhỏ hơn số N nhập từ user


Trang 4 (http://forums.congdongcviet.com/showthread.php?t=2556&page=4)

Bài in ra lịch của một năm bất kỳ lớn hơn 1700
Bài tập kiểm tra dấu ngoặc đúng.
Bài toán Tám Hoàng Hậu
In ra số Hex tương ứng với một số nguyên dương
Liệt kê các hoán vị của N phần tử
In chuỗi theo các từ mỗi từ một dòng
In ra chữ số hàng trăm hàng chục hàng đơn vị
Tìm phần tử lớn nhất nhỏ nhất trong mảng một chiều
Tính tổ hợp chập K của N phần tử
Chương trình đọc số có 1,2 hoặc 3 chữ số.
Tính số ngày trong một tháng trong một năm bất kỳ
Bài kiểm tra số nguyên tố
Tìm max min của 4 số
Tìm n số Fibonaci đầu tiên


Trang 5 (http://forums.congdongcviet.com/showthread.php?t=2556&page=5)

(Ngân hàng)Tìm số tiền nhận trong n tháng khi biết lãi xuất
In ra dãy số ngược so với dãy số nhập vào
Trò chơi 8 hòn bi
Kiểm tra số đối xứng
Điền giá trị cho một mảng vuông theo chiều kim đồng hồ
In hình tam giác
Trộn hai mảng tăng dần thành một mảng tăng dần
Tìm vị trí đầu và vị trí cuối của một số trong một dãy số
Tính x^1/1! + x^2/2! + x^3/3! + ... + x^n/n!
Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 3 đĩa
Trình bày các bước chuyển n đĩa từ cọc A sang cọc C trong bài toán Tháp Hà Nội dùng 4 đĩa

Cho cái đầu bài đầy đủ đi a ơi, mỗi ngày type một ít cho mấy ku mới nhập môn như em code cho nó vui. Thanks.
Đặc biệt là trang 1 ý.

vietdev
22-07-2012, 05:40 PM
MÃ HÓA THÔNG ĐIỆP


#include <stdio.h>
#include <ctype.h>
#include <alloc.h>

char *crypt(char *tdiep, int column)
{
char tam[255], *result;
int i = 0, k = 0, n, j=0;

while(tdiep[i] != 0)
{
if (isalnum(tdiep[i]))
tam[k++] = tdiep[i];
i++;
}
tam[k] = 0;
result = (char *)malloc(k+1);
for (i=0; i<column; i++)
{
n = 0;
while(n+i < k)
{
result[j++] = tolower(tam[n+i]);
n += column;
}
}
result[k] = 0;
return result;
}

void main()
{
char thongdiep[255], *mahoa;
int col;

printf("\nNhap thong diep can ma hoa : ");
gets(thongdiep);
printf("\nCho biet so cot : ");
scanf("%d", &col);
mahoa = crypt(thongdiep, col);
printf("\nThong diep da duoc ma hoa thanh : %s", mahoa);
getch();
}


GIẢI PHƯƠNG TRÌNH BẬC NHẤT


#include <stdio.h>

void main()
{
float a, b;

printf("\nGiai phuong trinh bac nhat AX + B = 0");
printf("\nCho biet ba he so A B : ");
scanf("%f%f", &a, &b);

if (a==0)
if (b!=0)
printf("Phuong trinh vo nghiem");
else
printf("Phuong trinh co nghiem khong xac dinh");
else
printf("Dap so cua phuong trinh tren = %f", -b/a);
getch();
}

Hi all,
Trong bài mã hóa chuỗi, nhờ mọi người giải thích giúp mình paramater "column" dùng để làm gì vậy nhé :)

redtulipa15
11-08-2012, 10:16 PM
Câu 1.
Trên màn hình một điểm được biểu diễn bởi toạ độ (X,Y) và màu : Mau (int) . Hãy xây dựng một lớp DIEM biểu diễn toạ độ đó và lớp này bao gồm : Phương thức thiết lập (gán các giá trị = 0 ), cài đặt các phép toán trích >> và chèn << dùng để nhập dữ liệu điểm từ bàn phím và xuất điểm đó ra màn hình, các phép toán +, - để cộng trừ toạ độ của 2 điểm đó.
Xây dựng chương trình chính minh hoạ cách sử dụng lớp DIEM vừa xây dựng
Câu 2.
Xây dựng lớp cơ bản là lớp VATTU gồm các dữ liệu: MaVT (Char[20]), TenVT(Char[100]), NoiSX (char[100]), NamSX(int) (Yêu cầu các dữ liệu này chỉ có lớp cơ bản và lớp con của nó được phép truy cập đến)
Từ lớp VATTU này hãy xây dựng lớp SAT_XD là lớp kế thừa từ lớp VATTU và lớp SAT_XD gồm có thêm dữ liệu như : Quycach(Char[100]), Trongluong(float) (số kg/m) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình
Yêu cầu có các phương thức thiết lập của cả 2 lớp vừa xây dựng và chương trình chính nhập vào một danh sách SAT_XD, hãy sắp xếp danh sách đó theo thứ tự tăng dần của năm sản xuất.
Câu 3.
Thông tin về các đầu sách trong thư viện gồm có các dữ liệu: KyHieu(Char[50]), TenSach(Char[100]),NhaXB (Char[10]), Soluong(int).
Hãy xây dựng lớp SACH ứng với dữ liệu trên và cài đặt các phép toán trích >> và phép toán chèn << đối với dữ liệu sách này, dùng để nhập sách từ bàn phím và xuất thông tin về sách ra màn hình .
Yêu cầu ở chương trình chính nhập vào 1 danh sách các đầu sách trong thư viện, rồi đưa ra màn hình danh sách theo thứ tự giảm dần của Soluong.
Câu 4.
Xây dựng lớp PERSON gồm các thông tin sau : Hoten (Char[50]), Ngaysinh (Char[12]), Quequan (Char[100]).
Xây dựng lớp VANDONGVIEN kế thừa từ lớp trên và có thêm dữ liệu : BoMon (Char[30]), Thunhap (float). Từ đó xây dựng lớp CAUTHU kế thừa từ lớp VANDONGVIEN và có thêm các thông tin CLB(Char[100]),Vitri(Char[100]) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình trên lớp CAUTHU.
Yêu cầu cả 3 lớp trên đều có phương thức thiết lập để khởi tạo các dữ liệu là số thì giá trị = 0, dữ liệu là xâu thì giá trị =””. Viết chương trình chính để minh hoạ sử dụng lớp vừa xây dựng.
Câu 5.
Xây dựng lớp NHANSU gồm các thông tin sau : hten(char[50]), gtinh(char[50]), namsinh(char[12]), diachi(char[100]). Hãy xây dựng lớp VANDONGVIEN kế thừa từ lớp trên và có thêm dữ liệu : bomon(char[20]), thanhtich(char[50]), hsluong(float), phcap(float), thuong(float) và các phương thức như nhap()- nhập dữ liệu, xuat()- xuất dữ liệu, thunhap()- trả về thu nhập của VANDONGVIEN ( với thunhap = hsluong * 830 + phcap + thuong).
Câu 6.
Yêu cầu nhập vào một danh sách không quá 50 vận động viên, đưa danh sách vận động viên đó theo chiều giảm dần của họ tên.
Xây dựng lớp BONHO để biểu diễn dung lượng bộ nhớ của máy tính gồm thành phần: bnchinh(int), bnphu(int), có phương thức thiết lập để gán bnchinh và bnphu có giá trị =0, hãy cài đặt các phép toán +, - là các phép toán để cộng và trừ 2 đại lượng bộ nhớ đó, các phép toán >>, << dùng để nhập và xuất thông tin về bộ nhớ. Yêu cầu có chương trình chính để minh hoạ việc sử dụng lớp và các phép toán vừa cài đặt.
Câu 7.
Xây dựng lớp cơ bản là lớp NHANSU gồm các dữ liệu: hoten(char[30]), nsinh(int), gtinh(char[5]). Từ lớp NHANSU này hãy xây dựng lớp NHANVIEN là lớp kế thừa từ lớp NHANSU, lớp NHANVIEN có thêm các dữ liệu như: phongban(char[10]), diachi(char[100]), hsluong(float), hspcap(float), giamtru(float) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình, và các phương thức cần thiết cho bài toán theo yêu cầu sau:
Nhập vào một danh sách gồm n nhân viên (0<n<100). Tính tổng thu nhập của phòng ban có tên là “Hanhchinh” (thunhap=830.000*(hsluong+hsphcap)-giamtru).
Câu 8.
Xây dựng lớp TOADO gồm có các thông tin sau: kinhdo(int), vido(int), docao(int), và có các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình, cài đặt các phép toán trích >> và chèn << dùng để nhập dữ liệu từ bàn phím và xuất ra màn hình, cài đặt các phép toán +, - để cộng trừ đại lượng TOADO. Xây dựng chương trình chính để minh hoạ cách sử dụng lớp TOADO vừa xây dựng đó.
Câu 9.
Xây dựng lớp NHANSU gồm các thông tin sau : hoten(char[50]), gioitinh(char[50]), namsinh(char[12]), diachi(char[100]). Hãy xây dựng lớp CONGCHUC kế thừa từ lớp trên và có thêm dữ liệu : nganhnghe(char[20]), namvaoCQ(int), trinhdo(char[50]), hsluong(float), phcap(float) và các phương thức như nhap()- nhập dữ liệu, xuat()- xuất dữ liệu, thunhap()- trả về thu nhập của CONGCHUC ( với thunhap=hsluong*830+phcap) .
Yêu cầu nhập vào một danh sách không quá 50 công chức, đưa danh sách công chức đó theo chiều giảm dần của họ tên.
Câu 10.
Hãy cài đặt lớp DKXM để biểu diễn thông tin về giấy đăng ký xe máy gồm có các thành phần: soDK(long), chuxe(char[20]), HKTT(char[20]), sokhung(long), somay(long) và các phương thức như: phương thức nhap() dùng để nhập giấy DKXM từ bàn phím và xuat() dùng để xuất thông tin về giấy DKXM ra màn hình. Yêu cầu có chương trình chính để minh hoạ cách sử dụng lớp DKXM vừa xây dựng ở trên.
Câu 11.
Xây dựng lớp TIN_HIEU để biểu diễn tín hiệu của sóng siêu tần gồm thành phần: tancao(int), tanthap(int), trungbinh(int), có phương thức thiết lập để gán các thành phần đó có giá trị =0, hãy cài đặt các phép toán +, - là các phép toán để cộng và trừ 2 đại lượng TIN_HIEU đó, các phép toán >>, << dùng để nhập và xuất thông tin về TIN_HIEU. Yêu cầu có chương trình chính để minh hoạ việc sử dụng lớp và các phép toán vừa cài đặt.
Câu 12.
Xây dựng lớp cơ bản là lớp NHANSU gồm các dữ liệu: hoten(char[30]), nsinh(int), gtinh(char[5]). Từ lớp NHANSU này hãy xây dựng lớp CANBO là lớp kế thừa từ lớp NHANSU, lớp CANBO có thêm các dữ liệu như: phongban(char[10]), diachi(char[100]), hsluong(float), hspcap(float), giamtru(float) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình, và các phương thức cần thiết cho bài toán theo yêu cầu sau:
Nhập vào một danh sách gồm n CANBO với(0<n<100). Tính tổng thu nhập của phòng ban có tên là “TCKT” (Với: thunhap=830.000*(hsluong+hsphcap)-giamtru).
Câu 13.
Xây dựng lớp VP_PHAM gồm các dữ liệu: maVPP(Char[20]), tenVPP(float), ngaySX (là một dữ liệu lớp Ngày gồm ngày, tháng, năm). Từ lớp VP_PHAM này hãy xây dựng lớp PHANVIET là lớp kế thừa từ lớp VP_PHAM và lớp PHANVIET gồm có thêm dữ liệu như: loaiSP(char[20]), noiSX(char[50]), soVien(int – số lượng viên phấn trong hộp) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình. Yêu cầu có các phương thức thiết lập của cả 2 lớp vừa xây dựng.
Trong chương trình chính nhập vào 1 danh sách không quá 100 hộp PHANVIET, đưa ra màn hình tất cả những hộp phấn sản xuất trước ngày 01/01/2010
Câu 14.
Xây dựng lớp cơ sở Person có các thông tin về nhân sự: giới tính, họ tên, địa chỉ và lớp dẫn xuất SinhVien để quản lý sinh viên. Đối với lớp SinhVien bổ sung thêm thông tin về điểm trung bình. Thực hiện cài đặt các lớp trên với các phương thức nhập, xuất dữ liệu, phương thức thông báo về điểm trung bình cho sinh viên.
Trong chương trình chính, nhập dãy n sinh viên và đưa ra màn hình những sinh viên có điểm trung bình cao nhất.
Câu 15.
Xây dựng lớp cơ bản là lớp LOPHOC gồm các dữ liệu: Malop(Char[10]), Tenlop(char[30]), Phonghoc(char[10]), Gvchunhiem(char[30]). Từ lớp LOPHOC này hãy xây dựng lớp SINHVIEN là lớp kế thừa từ lớp LOPHOC và lớp SINHVIEN gồm có thêm dữ liệu như: MaSV(char[10]), TenSV(char[40]), Namsinh(int) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình. Yêu cầu trong chương trình chính nhập vào một danh sách gồm n sinh viên (0<n<100), sắp xếp danh sách sinh viên đó theo chiều giảm dần của namsinh. Đưa danh sách đó ra màn hình.
Câu 16.
Hãy cài đặt lớp SOMOI để biểu diễn một đại lượng số mới trong chương trình gồm 3 thành phần X, Y, Z là các số thực. Hãy cài đặt các phép toán >>, <<, +, - để thực hiện việc nhập, xuất, cộng, trừ hai SOMOI đó. Yêu cầu có chương trình chính để minh hoạ cách sử dụng lớp SOMOI và các phép toán đã cài đặt đó
Câu 17.
Xây dựng lớp cơ bản là lớp PHONGBAN gồm các dữ liệu: maPB(char[10]), tenPB(char[30]), truongphong(char[40]). Từ lớp PHONGBAN này hãy xây dựng lớp NHANVIEN là lớp kế thừa từ lớp PHONGBAN và lớp NHANVIEN gồm có thêm dữ liệu như : maNV(char[10]), tenNV(char[40]), namsinh(int) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình. Yêu cầu trong chương trình chính nhập vào một danh sách gồm n nhân viên (0<n<100), sắp xếp danh sách đó theo chiều giảm dần của namsinh, đưa danh sách ra màn hình.
Câu 18.
Xây dựng lớp THUOC gồm các dữ liệu: ma(Char[20]), tenthuoc(float), ngaySX(là một dữ liệu lớp Ngày gồm ngày, tháng, năm). Từ lớp THUOC này hãy xây dựng lớp TKHANGSINH là lớp kế thừa từ lớp THUOC và lớp TKHANGSINH gồm có thêm dữ liệu như : donvi(int), NoiSX(char[50]) và các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình. Yêu cầu có các phương thức thiết lập của cả 2 lớp vừa xây dựng và chương trình chính để minh hoạ sử dụng lớp TKHANGSINH vừa xây dựng.
Câu 19.
Xây dựng lớp THOIGIAN gồm có các thông tin sau: gio(int), phut(int), giay(int), và có các phương thức nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình, các phương thức thiết lập để khởi tạo các giá trị = 0 cài đặt các phép toán trích >> và chèn << dùng để nhập dữ liệu từ bàn phím và xuất ra màn hình, cài đặt các phép toán +, - để cộng trừ đại lượng thời gian . Xây dựng chương trình chính minh hoạ cách sử dụng lớp THOIGIAN vừa xây dựng.
Câu 20.
Phép cộng hai phân số được định nghĩa như sau:
.
- Hãy xây dựng một lớp Phân số với các thuộc tính Tử số, Mẫu số và các phương thức :
+ Nhập phân số: Nhập các giá trị của tử số và mẫu số.
+ Xuất phân số: đưa phân số ra màn hình (dưới dạng Tử_Số/ Mẫu_số).
+ Toán tử cộng hai phân số (+).
- Viết chương trình chính nhập hai phân số, đưa ra màn hình phân số là tổng của hai phân số vừa nhập.

Câu 21.
Phép nhân hai phân số được định nghĩa như sau:
.
- Hãy xây dựng một lớp Phân số với các thuộc tính Tử số, Mẫu số và các phương thức :
+ Nhập phân số: Nhập các giá trị của tử số và mẫu số.
+ Xuất phân số: đưa phân số ra màn hình (dưới dạng Tử_Số/ Mẫu_số).
+ Toán tử nhân hai phân số ().
- Viết chương trình chính nhập hai phân số, đưa ra màn hình phân số là tích của hai phân số vừa nhập.
Câu 22.
- Xây dựng lớp Nguoi bao gồm các thuộc tính: Họ và tên, Ngày sinh, Quê quán.
- Xây dựng lớp HocVien dẫn xuất từ lớp Nguoi. Lớp HocVien có thêm các thuộc tính: Trường, Lớp, Ngành học và các phương thức:
+ Phương thức nhập: Nhập thông tin của học viên.
+ Phương thức xuất: xuất các thông tin của học viên lên màn hình.
- Viết chương trình chính nhập vào một danh sách n Học viên (n nhập từ bàn phím). In danh sách vừa nhập ra màn hình.
Câu 23.
- Xây dựng lớp Nguoi bao gồm các thuộc tính: Họ và tên, Ngày sinh, Quê quán.
- Xây dựng lớp CanBo dẫn xuất từ lớp Nguoi. Lớp CanBo có thêm các thuộc tính: Tên Cơ quan, Địa chỉ cơ quan, Bậc lương và các phương thức:
+ Phương thức nhập: Nhập thông tin của cán bộ.
+ Phương thức xuất: xuất các thông tin của cán bộ lên màn hình.
- Viết chương trình chính nhập vào một danh sách n Cán bộ (n nhập từ bàn phím). In danh sách vừa nhập ra màn hình.
Câu 24.
Phép Chia hai phân số được định nghĩa như sau:
.
- Hãy xây dựng một lớp Phân số với các thuộc tính Tử số, Mẫu số và các phương thức :
+ Nhập phân số: Nhập các giá trị của tử số và mẫu số.
+ Xuất phân số: đưa phân số ra màn hình (dưới dạng Tử_Số/ Mẫu_số).
+ Toán tử chia hai phân số (:).
- Viết chương trình chính nhập hai phân số, đưa ra màn hình phân số là thương của hai phân số vừa nhập.
Câu 25.
- Xây dựng lớp Nguoi bao gồm các thuộc tính: Họ và tên, Ngày sinh, Quê quán.
- Xây dựng lớp HocSinh dẫn xuất từ lớp Nguoi. Lớp HocSinh có thêm các thuộc tính: Trường, Lớp, Điểm thi và các phương thức:
+ Phương thức nhập: Nhập thông tin của học sinh.
+ Phương thức xuất: xuất các thông tin của học sinh lên màn hình.
- Viết chương trình chính nhập vào một danh sách n Học sinh (n nhập từ bàn phím). In danh sách vừa nhập ra màn hình.
Câu 26.
Để quản lý hàng hoá qua kho người ta dùng phiếu kho (PHIEUKHO) gồm các thông tin sau: Makho(int), TenSP(char[20]), NgayXuat(char[12]), Soluong(int), SoLuongTon (int) (SoLuongTon là tổng số hàng còn trong kho bằng SoLuongTon ban đầu trừ Soluong sau mỗi lần xuất kho.
- Thực hiện cài đặt các phương thiết lập để khởi gán dữ liệu (bằng 0 hoặc “”) cùng các toán tử >>, << (nhập xuất dữ liệu từ bàn phím và ra màn hình cho lớp trên).
- Viết chương trình chính nhập vào một mảng n PHIEUKHO (n bất kỳ nhập từ bàn phím, SoLuongTon khi chưa xuất kho là 2000) và xuất danh sách các phiếu kho trên theo dạng nhật ký và cuối cùng thông báo tổng số hàng tồn kho.
Câu 27.
Để quản lý các các phương tiện giao thông người ta xây dựng lớp XE gồm: serial(char[30], NhanHieu(char[20]), NgaySX(char[12]). Từ lớp XE người ta xây dựng hai lớp dẫn xuất XEKHACH và XETAI, lớp XEKHACH thêm Soghe(int) và XETAI thêm TrongTai(int).
- Thực hiện cài đặt ba lớp trên với các phương thiết lập để khởi gán dữ liệu (bằng 0 hoặc “”) cùng các phương thức nhập xuất dữ liệu từ bàn phím và ra màn hình.
- Cài đặt toán tử != cho lớp XE (Nếu hai xe giống nhau thì mọi thông tin phải giống nhau)

hoangcuongflp
11-09-2012, 09:54 PM
pro ơi nén lại rồi up các bài viết lên mediafire được khộngz?. nhà em không có mạng đành phải ra quán net ngồi. Bác làm ơn up lên mediafire 1 cái rồi cho em cái link em download cho nhạnh thank bác!.

conga2012
16-09-2012, 05:04 PM
Ai có thể giải thích các thuật giải trong sắp xếp mảng trong lập trình C không? Mình cảm ơn!

hochileo
19-09-2012, 04:53 PM
mọi người ơi cho hỏi thuật toán này có nghĩa là gì đây là cuơng trình chát giữa 2 máy những mình không hiểu những cú pháp trong bài mọi người giải thích hộ mình với (D:)>
Process Q:
while(1){
Receive(P,Msg);
Printline(Msg);
Readline(Msg);
Send(P,Msg);
}



Process P:
while(1){
Readline(Msg);
Send(Q,Msg);
Receive(Q,Msg);
Printline(Msg);
}

giacmongmo
21-01-2013, 09:29 PM
Chủ đề 5: Lệnh for; break và continue

Bài 45. Viết chương trình in các kí tự từ ‘A’ đến ‘Z’ xuôi và ngược, chữ hoa và chữ thường.
Bài 46. Viết chương trình nhập n, in cửu chương n.
Bài 47. Viết chương trình nhập số nguyên dương n, kiểm tra xem n có phải là số nguyên tố hay không?
Bài 48. Viết chương trình nhập 2 số nguyên N, M tìm MN
Bài 49. Viết chương trình nhập số nguyên N tìm
T1= 1 + 2 + 3 + 4 +…N
T2= 11 + 22 + 33 + … NN
T3= 1 + 1/2 + 1/3 + 1/4 + … 1/N
T4= 1 - 1/2 + 1/3 - 1/4 + … 1/N
Bài 50. Viết chương trình nhập N. xuất ra hình có dạng sau
Giả sử N = 4
*
***
*****
*******

Bài 51. Viết chương trình nhập N. xuất ra các hình có dạng sau
Giả sử N = 4
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * *
* *
*
Bài 52. Viết chương trình in tam giác Pascal.
Bài 53. Tính P = n! với n nguyên dương nhập từ bàn phím
Ví dụ: nhập x = 5 thì P = 5! = 120
Bài 54. Viết chương trình tìm 100 số nguyên tố đầu tiên.
Bài 55. Viết chương trình in ra dãy Fibonacci
0 1 1 2 3 5 8 13 21 34 55 89 144 233

vihuynh
18-07-2013, 10:44 PM
Chủ đề 5: Lệnh for; break và continue

Bài 45. Viết chương trình in các kí tự từ ‘A’ đến ‘Z’ xuôi và ngược, chữ hoa và chữ thường.
Bài 46. Viết chương trình nhập n, in cửu chương n.
Bài 47. Viết chương trình nhập số nguyên dương n, kiểm tra xem n có phải là số nguyên tố hay không?
Bài 48. Viết chương trình nhập 2 số nguyên N, M tìm MN
Bài 49. Viết chương trình nhập số nguyên N tìm
T1= 1 + 2 + 3 + 4 +…N
T2= 11 + 22 + 33 + … NN
T3= 1 + 1/2 + 1/3 + 1/4 + … 1/N
T4= 1 - 1/2 + 1/3 - 1/4 + … 1/N
Bài 50. Viết chương trình nhập N. xuất ra hình có dạng sau
Giả sử N = 4
*
***
*****
*******

Bài 51. Viết chương trình nhập N. xuất ra các hình có dạng sau
Giả sử N = 4
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * *
* *
*
Bài 52. Viết chương trình in tam giác Pascal.
Bài 53. Tính P = n! với n nguyên dương nhập từ bàn phím
Ví dụ: nhập x = 5 thì P = 5! = 120
Bài 54. Viết chương trình tìm 100 số nguyên tố đầu tiên.
Bài 55. Viết chương trình in ra dãy Fibonacci
0 1 1 2 3 5 8 13 21 34 55 89 144 233
mình có thể giúp bạn vài bài mà mình làm đươc:
46.


#include<stdio.h>
#include<conio.h>
main()
{
int i, n;
puts("nhap n");
scanf("%d",&n);
printf("\nbang cuu chuong %d",n);
for(i=1;i<=10;i++)
{
printf("\n%d * %d = %d",n,i,n*i);
}
getch();
}

bài 47.


#include<stdio.h>
#include<conio.h>
main()
{
int i, n, x;
puts("nhap n");
scanf("%d",&n);
if(n==1)
printf("\n1 khong phai la so nguyen to");
else
for(i=2;i<=n;i++)
{
x=n%i;
if(x==0&&i<n)
{
printf("\n%d k la so nguyen to",n);
break;
}
else
if((x==0)&&(i==n))
printf("\n%d la so nguyen to",n);
}
getch();
}


bai49.


#include<stdio.h>
#include<conio.h>
main()
{
int t1=0, t2=0, i, n, dau=0;
float t3=0, t4=0;
puts("nhap n");
scanf("%d",&n);
while(n==0)
{
printf("\nhay nap 1 so khac 0");
scanf("%d",&n);
}
for(i=1;i<=n;i++)
t1+=i;
printf("\nt1=%d",t1);
for(i=1;i<=n;i++)
t2+=i*10+i;
printf("\nt2=%d",t2);
for(i=1;i<=n;i++)
t3+=1/i;
printf("\nt3=%f",t3);
for(i=1;i<=n;i++)
{
dau++;
t4+=1/dau;
dau=(-dau);
}
printf("\nt4=%f",t4);
getch();
}

bai50.



#include<stdio.h>
#include<conio.h>
main()
{
int n,i,j;
puts("nhap n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<i;j++)
printf("*");
printf("\n");
}
getch();
}

bài 53.


#include<stdio.h>
#include<conio.h>
main()
{
int i,n,p=1;
puts("nhap n");
scanf("%d",&n);
for(i=1;i<=n;i++) // có thể dùng đệ qui nhưng hơi khó hiểu
p*=i;
printf("p=%d",p);
getch();
}

bài 54.


#include<conio.h>
#include<stdio.h>
main()
{
int dem=0,j=1,i,x;
printf("100 so nguyen to dau tien la:");
while(dem!=100)
{
j++;
for(i=2;i<=j;i++)
{
x=j%i;
if(x==0&&i<j)
break;
else
if((x==0)&&(i==j))
{
dem++;
printf("%d",j);
printf(",");
}
}
}
getch();
}


mình sài cfree5 nên code mình vết phù hợp với cfree5 còn trình dịch khác thì mình không biết.
giải thuật của các bài trên là do mình tự nghĩ ra nên có lẽ còn hơi củ chuối mọi người thông cảm. còn vấn đề code của mình có hơi nhiều "()" là do mình chưa thuộc độ ưu tiên của toán tử.
chú ý là các bài trên mình chưa tets trình dịch mình bị hư rồi.

__Furinz__
09-08-2013, 03:55 PM
Một tam giác được xem như một tập hợp gồm 3 điểm trên mặt phẳng . Hãy tổ chức dữ liệu kiểu bản ghi để chứa các tọa độ của tam giác . Lập chương trình thực hiện các việc sau
a. Nhập toạn độ 1 tam giác từ bàn phím
b. kiểm tra tam giác đó có tính chất gì trong các tính chất sau
- tam giác đều
- tam giác tù
- tam giác có 1 góc tù

vihuynh
11-08-2013, 05:52 PM
Một tam giác được xem như một tập hợp gồm 3 điểm trên mặt phẳng . Hãy tổ chức dữ liệu kiểu bản ghi để chứa các tọa độ của tam giác . Lập chương trình thực hiện các việc sau
a. Nhập toạn độ 1 tam giác từ bàn phím
b. kiểm tra tam giác đó có tính chất gì trong các tính chất sau
- tam giác đều
- tam giác tù
- tam giác có 1 góc tù
nó là cái gì vậy?

neverdie20111
25-03-2014, 08:00 AM
Một tam giác được xem như một tập hợp gồm 3 điểm trên mặt phẳng . Hãy tổ chức dữ liệu kiểu bản ghi để chứa các tọa độ của tam giác . Lập chương trình thực hiện các việc sau
a. Nhập toạn độ 1 tam giác từ bàn phím
b. kiểm tra tam giác đó có tính chất gì trong các tính chất sau
- tam giác đều
- tam giác tù
- tam giác có 1 góc tù
Nhập 3 điểm của tam giác
triangle[0].x; triangle[0].y,triangle[1].x; triangle[1].y,triangle[2].x; triangle[2].y;

-tam giác tù
- tam giác có 1 góc tù
Chắc tam giác có tới 2 góc tù :3.
vs tam giác đều : ( L0=L1)&&(L0= L2) vs L là cạnh của tam giác = sqrt(pow((x2-x1),2)-pow((y2-y1))
vs tù thì:c^2 = a^2 + b^2 - 2ab\cos C\,==>Cos C=>acos(C)>90 là tù

canhsang01
31-03-2014, 06:47 PM
cảm ơn a rất nhiều vì những bài tập của a rất hay và ngắn gọn :D

xmendp
11-08-2014, 08:36 AM
Em mới học về struct. các anh hướng dẫn giúp e bài này với ạ ;
Thông tin về thành tích thi đấu của một cầu thủ bóng đá gồm : Tên cầu thủ, Tên đội bóng,( dãy ko quá 30 ký tự)., số bàn thắng ghi được.
Nhập từ bán phím thông tin về kết quả thi đâu cho các cầu thủ và lưu vào một mảng cấu trúc thích hợp
-Quá trình nhập kết thúc khi đã nhập đủ 200 cầu thủ hoặc khi nhập một cầu thủ có tên là “&&&”
-Nhập vòa tên một đội bóng, đưa ra màn hình tổng số bàn thắng mà các cầu thủ trong đội ghi được
-Nếu không tìm thấy đội bóng thì hiện “ không tồn tại đội bóng có tên như vậy !”

itaive123
11-08-2014, 02:42 PM
cảm ơn bác nhé mình lưu lại mới đc

01884822163
19-08-2014, 10:12 PM
Nhờ mọi người giải giúp với ạ !
Trong một lớp ôn thi Cao Học ngành khoa học máy tính có N học viên đến từ các nơi khác nhau.Ban đầu có một số người trong lớp biết nhau,gọi là biết nhau trức tiệp(giả sử a biết b thì b cũng biết a).Trong quá trình ôn tập,một số người cũng có thể biết nhau qua giới thiệu của những người biết nhau trực tiếp, gọi là biết nhau qua trung gian
a) cho biết mọi người trong lớp có thể biết nhau trực tiếp hay khogo
b)liệt kê nhưgx học viên mà học viên a biết trực tiếp hoặc biết qua trung gian