Lập trình C: Cấu trúc dữ liệu điểm 2D

Cho cấu trúc dữ liệu Diem2D được mô tả như sau:
struct Diem2D
{
float iX;
float iY;
};
Thực hiện các yêu cầu sau:
1.  Viết hàm Nhập và Xuất Diem2D
2.  Viết hàm Tính khoảng cách giữa 2 điểm A và B
3.  Viết hàm tính chu vi và diện tích của tam giác được thành từ 3 điểm A, B, C

  • file header


#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MAX 100
typedef struct Diem2D
{
float iX;
float iY;
};
void NhapDiem(Diem2D &A);
void XuatDiem(Diem2D A);
float KhoangCach(Diem2D A, Diem2D B);
int TinhDienTichVaChuVi(Diem2D A, Diem2D B, Diem2D C);


  • Mô tả header

#include "MangBt03.h"
void NhapDiem(Diem2D &A)
{
printf("Nhap hoanh do :"); scanf_s("%f", &A.iX);
printf("Nhap tung do :"); scanf_s("%f", &A.iY);
}
void XuatDiem(Diem2D A)
{
printf("\nToa do diem : (%.2f ; %.2f)\n", A.iX, A.iY);
}
float KhoangCach(Diem2D A, Diem2D B)
{
float a1 = pow(A.iX - B.iX, 2), a2 = pow(A.iY - B.iY, 2);
float a = sqrt(a1 + a2);
return a;
}
int KiemTra(float a, float b, float c)
{
int kt = 1;
if (a + b > c && a + c > b && b + a > a)
kt = 1;
else kt = 0;
return kt;
}
int TinhDienTichVaChuVi(Diem2D A, Diem2D B, Diem2D C)
{
int hi;
float a, b, c;
a = KhoangCach(B,C); b = KhoangCach(A,C); c = KhoangCach(A,B);
if (KiemTra(a, b, c))
{
hi = 0;
float P, S, p;
P = a + b + c; printf("Chu vi tam giac ABC: %f", P);
p = P / 2;
float x = p - a, y = p - b, z = p - c;
S = sqrt(p*x*y*z);
printf("\nDien tich tam giac ABC: %f\n", S);
}
else
{
printf("3 diem da nhap khong phai la 3 dinh cua tam giac. Moi nhap lai 3 diems:\n");
hi = 1;
}
return hi;
}

  • Hàm main

#include "MangBt03.h"
void main()
{
printf("An phim 1: Chon cau 1\nAn phim 2: Chon cau 2\nAn phim 3: Chon cau 3");
int luachon; printf("\nNhap lua chon: "); scanf_s("%d", &luachon);
switch (luachon)
{
case 1:
Diem2D X;
printf("Nhap diem \n");
NhapDiem(X);
XuatDiem(X);
break;
case 2:
Diem2D Y, Z;
printf("Nhap diem A\n");
NhapDiem(Y);
printf("Nhap diem B\n");
NhapDiem(Z);
printf("Khoang cach 2 diem A,B: %f\n", KhoangCach(Y, Z));
break;
case 3:
Diem2D A, B, C;
do
{
printf("Nhap diem A\n");
NhapDiem(A);
printf("Nhap diem B\n");
NhapDiem(B);
printf("Nhap diem C\n");
NhapDiem(C);
} while (TinhDienTichVaChuVi(A, B, C));
break;
}
}

Ngày cắt tóc

Gã chạy xe - đi bộ trên những con đường cũ, nhưng kỷ niệm thổi lùa qua tóc, tất cả đã là quá khứ. Mái tóc gã trổ màu ngổ ngáo sau khi cắt tóc chiều. Bao nhiêu râu tóc “phong trần” đã cuốn trôi theo dao cạo, để lại vài vết rát trên gương mặt già trước tuổi. Bóng chiều in đậm trong mắt gã : đời như bèo dạt mây trôi, người ở bên ấy, tôi đi bên này, không biết có còn gặp lại được chăng?

Lập trình C: Nhập chuỗi kí tự và các thao tác cơ bản

Viết chương trình nhập chuỗi S và thực hiện các thao tác sau:

  • Cho biết số lượng khoảng trắng, số lượng kí tự số,số lượng chữ cái latin, số lượng các kí tự khác Latin
  • Đếm và cho biết số lượng từ của chuỗi,, biết rằng các chữ cách nhau 1 khoảng trắng
  • In hoa kí tự đầu
void main()
{
char chuoi[max];
NhapChuoi(chuoi);
printf("An so 1: chon cau 1\nAn so 2: chon cau 2\nAn so 3: chon cau 5\n");
int luachon; printf("Nhap lua chon: "); scanf_s("%d", &luachon);
switch (luachon)
{
case 1:
printf("Cau 1: So luong cac kieu ky tu trong chuoi vua nhap.\n");
DemCackieukitu(chuoi); break;
case 2:
printf("Cau 2: Tim so luong chu trong chuoi.\n");
DemSoChu(chuoi); break;
case 3:
printf("Cau 5: Bien ky tu dau trong chuoi thanh ky tu in hoa\n");
InHoaKyTuDau(chuoi);
}
}
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#define max 100
void NhapChuoi(char *chuoi);
void DemCackieukitu(char chuoi[]);
void DemSoChu(char *chuoi);
void InHoaKyTuDau(char *chuoi);
#include "MangBt01.h"
void NhapChuoi(char *chuoi)
{
printf("Nhap chuoi:");
gets(chuoi);
}
void DemCackieukitu(char *chuoi)
{
int k1 = 0, k3 = 0, k4 = 0, k5 = 0;
int dem = strlen(chuoi);
for (int i = 0; i<dem; i++)
{
if (chuoi[i] == ' ')
k1++;
else if ((chuoi[i] >= '0') && (chuoi[i] <= '9'))
k3++;
else if ((chuoi[i] >= 'a' && chuoi[i] <= 'z') || (chuoi[i] >= 'A' && chuoi[i] <= 'Z'))
k4++;
else
k5++;
}
printf("So luong khoang trang: %d\n", k1);
printf("so luong chu so: %d\n", k3);
printf("so luong ky tu Latin: %d\n", k4);
printf("so luong ky tu khac: %d\n", k5);
}
void DemSoChu(char *chuoi)
{
int dem = 0, k = strlen(chuoi);
if (chuoi[0] != ' ')
{
dem++;
for (int i = 1; i < k; i++)
{
if (chuoi[i] != ' ' && chuoi[i - 1] == ' ')
dem++;
}
}
else
{
for (int i = 1; i < k; i++)
{
if (chuoi[i] != ' ' && chuoi[i - 1] == ' ')
dem++;
}
}
printf("So luong chu trong day la: %d\n", dem);
}
void InHoaKyTuDau(char *chuoi)
{
int k = strlen(chuoi);
for (int i = 0; i < k; i++)
{
if (chuoi[i] >= 'a' && chuoi[i] <= 'z')
{
chuoi[i] = chuoi[i] - 32;
break;
}
}
printf(" Chuoi vua nhap la : % s\n ", chuoi);
}

Lập trình C: Mảng một chiều

Trộn 2 mảng 1 chiều a, b (đã sắp xếp không giảm) thành một mảng một chiều c, cũng có thứ tự không giảm.

#include <stdio.h>
#include <conio.h>
#include <math.h>
#define max 100
void NhapMang(int a[], int &n);
void XuatMang(int a[], int n);
void HoanVi(int &a, int &b);
void SapTang(int a[], int n);
void NoiMang(int a[], int &n, int b[], int m, int c[], int &k);

#include "MangBt07.h"
void NhapMang(int a[], int &n)
{
printf("Nhap so phan tu: "); scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
printf("a[%d] = ", i);
scanf_s("%d", &a[i]);
}
}
void XuatMang(int a[], int n)
printf("\nNoi dung mang: "); 
for (int i = 0; i < n; i++) 
printf(" %d \t ", a[i]); 
}
void HoanVi(int &a, int &b)
int tam = a;
a = b; b = tam; 
void SapTang(int a[], int n)
for (int i = 0; i < n - 1; i++) 
for (int j = i + 1; j < n; j++) 
if (a[i] > a[j]) 
HoanVi(a[i], a[j]); 
}
void NoiMang(int a[], int &n, int b[], int m, int c[], int &k)
int i = 0, j = 0; k = 0; 
while (i<n&&j<m) 
{
c[k++] = a[i++];
c[k++] = b[j++];
while (i<n)
c[k++] = a[i++];
while (j<m) 
c[k++] = b[j++];
}

#include "MangBt07.h"
void main()
{
int a[max], b[max], c[max]; int m, n, k;
printf("Nhap vao mang a[]:\n"); NhapMang(a, n); SapTang(a, n);
printf("Nhap vao mang b[]:\n"); NhapMang(b, m); SapTang(b, m);
k = m + n;
NoiMang(a, n, b, m, c, k); XuatMang(c, k);
}