1. Trang chủ
  2. » Thể loại khác

Đáp án bài tập Kĩ thuật lập trình Viện Điệntrường Đại Học Bách Khoa Hà Nội

81 1,5K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 81
Dung lượng 49,84 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mình là SV khóa K58 trường ĐHBKHN. Đây là toàn bộ lời giải kĩ thuật lập trình Viện Điện trường ĐH BKHN của thầy Tùng do mình biên tập lại. Lời giải gồm 9 chương theo chương trình dạy của thầy, chúc các bạn có 1 cái nhìn tổng thể về môn học và đạt kết quả cao trong học tập đặc biệt trong môn học này. Chúc các bạn thành công Thân

Trang 1

Đáp án KTLT thầy Tùng MADE BY TẠ TUẤN MINH-K58 ĐHBKHN

return 0;

}

Trang 3

gets(oto.mau_son);

printf("Nhap du lieu cho cac banh:\n");

for (i=0; i<4; i++) {

printf("Banh thu %d:\n", i+1);

oto.banh[i].chung_loai,oto.banh[i].ban_kinh,oto.banh[i].khoi_luong);

}

return 0;

}

Trang 6

int n,i;

double x, s;

printf("Nhap so phan tu cua day so: ");scanf("%d", &n);

for (i=0, s=0.; i<n; i++) {

printf("Nhap phan tu thu %d: ", i+1);scanf("%lf", &x);

for (i = 0; i<n; i++)

printf("%d %s\n", i+1, menu[i]);printf("Lua chon: ");

scanf("%d", &lua_chon);

if (lua_chon<1 || lua_chon>n)

printf("Lua chon khong co!\n");

Trang 7

else printf("Ban da chon \"%s\"\n", menu[lua_chon-1]);return 0;

Trang 8

return 0;

Trang 10

printf("Nhap N: ");

scanf("%d", &N);

p = (int*)malloc(N*sizeof(int));

for (i=0; i<N; i++) {

printf("Nhap phan tu thu %d: ", i+1);

scanf("%d", p+i); /* &p[i] */

}

printf("Mang da nhap theo thu tu nguoc: \n");

for (i=N-1; i>=0; i )

/* Copy dữ liệu cũ sang vùng nhớ mới */

for (i=0; i<N-1; i++)

p2[i] = p[i];

free(p); /* Giải phóng vùng nhớ cũ */

Trang 11

}/* p trỏ sang vùng nhớ mới */

printf("Mang ban da nhap: ");

for (i=0; i<N; i++)

Trang 12

const char* s1 = "footballer";

const char* s2 = "football";

Trang 13

int main(int argc, const char* argv[]) {

const char* s; /* Chuỗi nhập từ dòng lệnh */

const char *s1, *s2; /* Các con trỏ duyệt chuỗi s */

char** p = NULL, **p2; /* p: mảng các từ, p2: biến tạm để cấp phát bộ nhớ */int i, n, len; /* n: số phần tử của mảng */

/* Kiểm tra xem đã nhập chuỗi ở tham số chưa */

if (*s1==0) break; /* Nếu đã tới cuối chuỗi s thì dừng */

/* Khi tới đây thì s1 trỏ tới ký tự đầu tiên của một từ */

/* Tìm tới vị trí kết thúc từ bằng cách tìm ký tự trắng tiếp theo sau s1 */for (s2=s1; *s2!=0 && *s2!=' '; s2++) ;

/* Khi tới đây thì s2 trỏ tới ký tự trắng hoặc vị trí kết thúc chuỗi s *//* Mở rộng mảng p thêm một phần tử mới */

p2 = (char**)malloc((n+1)*sizeof(char*)); /* Cấp phát vùng nhớ mới */

if (p!=NULL) {

/* Copy mảng cũ sang mảng mới */

for (i=0; i<n; i++)

Trang 14

len = (int)(s2-s1); /* len = độ dài của từ mới */

p[n] = (char*)malloc(len+1); /* Cấp phát bộ nhớ cho từ mới */

memcpy(p[n], s1, len); /* Copy từ */

Trang 15

else c[k] = b[j++];}

printf("Mang da tron: \n");for (k=0; k<nc; k++)

printf("%g ", c[k]);free(c);

Trang 16

for (i=0; i<*n; i++) {

printf("Nhap phan tu thu %d: ", i+1);scanf("%d", a+i);

Trang 17

printf("x = %d, y = %d\n", x, y);return 0;

}

int* prime(int n, int* m)

{

int* z = (int*)malloc(n*sizeof(int));int i;

for (i = 1, *m = 0; i < n; i++)

if (is_prime(i)) {

Trang 18

printf("%d ", a[i]);printf("\n");

Trang 19

int tinh_sin()

{

printf("sin(x) = %g\n", sin(x));return 0;

}

int tinh_cos()

{

printf("cos(x) = %g\n", cos(x));return 0;

}

int tinh_tan()

{

printf("tan(x) = %g\n", tan(x));return 0;

int i, n = sizeof(m)/sizeof(m[0]);

Trang 20

for (;;) {

printf("\nx = %g\nMENU:\n", x);

for (i=0; i<n; i++)

printf("%d %s\n", i+1, m[i].name);printf("Lua chon: ");

Trang 21

printf("s1 = %s, s2 = %s\n", s1, s2);huy_chuoi(&s1);

Trang 22

typedef char* String;

void khoi_tao_chuoi(String* s, const char* s1);void copy_chuoi(String* s1, const String s2);void huy_chuoi(String* s);

case Square:

x = *(double*)s.data;

Trang 23

for (i=0; i<3; i++)

printf("Dien tich hinh thu %d: %g\n", i+1, area(s[i]));free(s[0].data);

free(s[1].data);

free(s[2].data);

return 0;

}

Trang 25

s[0].area = area_circle;

s[1].data = (double*)malloc(sizeof(double));(*(double*)s[1].data) = 10.;

s[1].area = area_square;

s[2].data = (double*)malloc(2*sizeof(double));((double*)s[2].data)[0] = 10.;

((double*)s[2].data)[1] = 20.;

s[2].area = area_rect;

for (i=0; i<3; i++)

printf("Dien tich hinh thu %d: %g\n",

i+1, s[i].area(s[i].data));free(s[0].data);

free(s[1].data);

free(s[2].data);

return 0;

}

Trang 26

for (eof = 0; !eof; ) {

num = fread(buf, 1, sizeof(buf), f);eof = feof(f);

for (i = 0; i < num; i++)

buf[i] = toupper(buf[i]);

fseek(f, -num, SEEK_CUR);

Trang 28

int cat_file(const char* src, const char* dst) {

FILE *fs = NULL, *fd = NULL;

char buf[1024];

int num;

if ((fs = fopen(src,"rb")) == NULL) return -1;

if ((fd = fopen(dst,"ab")) == NULL) { fclose(fs); return -1; }

}

Trang 30

const char* line10){

Trang 31

gets(sv.ten);

printf("Nam sinh: ");scanf("%d", &sv.nam_sinh);printf("Khoa: ");

scanf("%d", &sv.khoa);printf("Du lieu da nhap:\n"

" Ten: %s\n"

" Nam sinh: %d\n"

" Khoa: %d\n",sv.ten,

sv.nam_sinh,sv.khoa);

Trang 33

Chương 7: Cấu Trúc Dữ Liệu (BT T21) Bài 1:

Trang 34

PDLELEM e = (PDLELEM)malloc(sizeof(DLELEM));e->data = data;

Trang 35

l = dllDeleteHead(l);for (i=1; i<=5; i++)

l = dllInsertHead(l, i*10);printf("Duyet xuoi: ");

for (p=l.head; p!=NULL; p=p->next)

printf("%d ", p->data);printf("\n");

printf("Duyet nguoc: ");

for (p=l.tail; p!=NULL; p=p->prev)

printf("%d ", p->data);printf("\n");

l = dllDeleteAll(l);

Trang 36

void stPush(STACK* s, int data){

*s = llInsertHead(*s, data);}

}

void quEnqueue(QUEUE* q, int data)

Trang 38

printf("%d phan tu: ( ", llLength(l));

llForEach(l, llsum, (void*)&s);

printf("Gia tri trung binh: %g\n", (double)s/llLength(l));/* cách 2: duyệt */

Trang 42

printf("%d ", l->data);

printf(") \n");

}

/* chèn l2 vào sau p ở trong l1 */

LLIST llInsertListAfter(LLIST l1, LLIST l2, PELEM p){

Trang 43

/* không huỷ l2 nữa vì l2 thuộc l1 */return 0;

Trang 44

l = llInsertHead(l, &d, sizeof(d));printList_double(l);

l = llDeleteAll(l);

/* chứa chuỗi */

l2 = llInit();

l2 = llInsertHead(l2, "abc", 4);l2 = llInsertHead(l2, "2134", 5);l2 = llInsertHead(l2, "32423", 6);printList_string(l2);

Trang 45

PELEM e = (PELEM)malloc(sizeof(ELEM));assign_data(e, data, size);

Trang 46

PELEM llSeek(LLIST l, int i) {

for (; i>0 && l; i )

Trang 47

LLIST llInsertHead(LLIST l, void* data, int size);

LLIST llInsertTail(LLIST l, void* data, int size);

Trang 48

LLIST llDeleteHead(LLIST l);

LLIST llDeleteTail(LLIST l);

LLIST llDeleteAfter(LLIST l, PELEM a);

LLIST llDeleteAll(LLIST l);

PELEM llSeek(LLIST l, int i);

void llForEach(LLIST l, LLCALLBACK func, void* user);int llLength(LLIST l);

#endif

Trang 49

Chương 8: Cơ bản về C++ (BT T23) Bài 1:

}

String(char c)

{

str = new char[2];str[0] = c;

String(const String& s)

{

Trang 50

str = new char[n+1];strcpy_s(str, n+1, s.str);}

void copy(const String& s){

copy(s.str);

}

void concat(const char* s) {

Trang 51

int n = int(strlen(str) + strlen(s));char* ss = new char[n+1];strcpy_s(ss, n+1, str);

cout << "s1 = " << s1.c_str() << endl

<< "s2 = " << s2.c_str() << endl

<< "s3 = " << s3.c_str() << endl;s1.copy(s2);

Bài 2:

#include <iostream>

Trang 53

if (f) fclose(f);}

bool IsOpen()

{

return f != NULL;}

bool Eof()

{

return feof(f) != 0;}

int Write(const void* buf, int size)

Trang 54

return (int)fwrite(buf, 1, size, f);

// copy file 1 sang file 2

static bool Copy(const char* fname1, const char* fname2)

{

File f1, f2;

if (!f1.Open(fname1, "rb")) return false;

if (!f2.Open(fname2, "wb")) return false;

Trang 55

const char* fname2 = "D:\\tmp\\New Folder\\aaaa\\aaaa\\ReadMe2.txt";

if (File::Copy(fname1, fname2))

cout << "Da copy thanh cong\n";

else cout << "Copy co loi\n";

Trang 56

void InsertHead(int data)

{

l = llInsertHead(l, data);}

void InsertTail(int data)

{

l = llInsertTail(l, data);}

void InsertAfter(int i, int data){

PELEM p = llSeek(l, i);

l = llInsertAfter(l, p, data);}

void DeleteHead()

{

l = llDeleteHead(l);}

void DeleteTail()

{

l = llDeleteTail(l);}

void DeleteAfter(int i)

{

PELEM p = llSeek(l, i);

l = llDeleteAfter(l, p);}

void DeleteAll()

{

l = llDeleteAll(l);}

int Length()

Trang 59

Fraction div(const Fraction& f) const{

return Fraction(a*f.b, b*f.a);}

string asString() const

};

Trang 60

Fraction f1(3, 5), f2(2);

cout << "f1 = " << f1.asString().c_str() << ", "

<< "f2 = " << f2.asString().c_str() << endl;Fraction f3 = f1.add(f2);

f2 = f1.mul(f3);

cout << endl;

cout << "f1 = " << f1.asString().c_str() << ", "

<< "f2 = " << f2.asString().c_str() << ", " << "f3 = " << f3.asString().c_str() << endl;double d1 = f1.asDouble(),

d2 = f2.asDouble(),d3 = f3.asDouble();

Trang 61

Circle(double r)

{

this->r = r;count++;}

Circle(const Circle& c){

r = c.r;count++;}

~Circle()

{

count ;}

void setR(double r){

this->r = r;}

double getR() const{

return r;}

double area() const{

return 3.14*r*r;}

double peri() const{

return 3.14*2*r;}

Trang 62

return count;}

friend class Ellipse;};

Ellipse(double rx, double ry){

this->rx = rx;this->ry = ry;count++;}

Ellipse(const Ellipse& e){

rx = e.rx;

ry = e.ry;count++;}

Ellipse(const Circle& c){

rx = ry = c.r;count++;

Trang 64

cout << "Ban kinh: " << c.getR() << "; "

<< "Dien tich: " << c.area() << "; "

<< "Chu vi: " << c.peri() << endl << endl;Ellipse e(c);

e.setRx(3.1);

cout << "Ban kinh: " << e.getRx() << ", " << e.getRy() << "; "

<< "Dien tich: " << e.area() << "; "

<< "Chu vi: " << e.peri() << endl << endl;cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;Circle c1;

Ellipse e1;

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;Circle& c2 = c1;

Ellipse& e2 = e1;

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;Circle* c3 = &c1;

Ellipse* e3 = &e1;

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;Circle c4[10];

Ellipse e4[20];

Trang 65

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;Circle* c5 = new Circle[10];

Ellipse* e5 = new Ellipse[20];

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;delete[] c5;

delete[] e5;

cout << "So hinh tron: " << Circle::getCount() << ", "

<< "So hinh elip: " << Ellipse::getCount() << endl;}

Trang 67

char s[100];

sprintf(s, "(%.3lf, %.3lf, %.3lf)", x,y,z);return s;

Trang 69

Vector v = v1.crossProduct(v2).sub(v3).neg(); // v = -(v1.v2 - v3)cout << v.asString().c_str() << endl;

// - Complex

-Complex c1(6, 5.3),

c2(6.67, 3.2),c3(5.7, 3.3);

Complex c = c2.add(c1).mul( c3.div(c1).neg() ); // c = (c2+c1)*(-c3/c1)cout << c.asString().c_str() << endl;

Trang 70

PELEM e = (PELEM)malloc(sizeof(ELEM));e->data = data;

Trang 71

for (p = l; p->next->next; p = p->next) ;free(p->next);

PELEM llSeek(LLIST l, int i) {

for (; i>0 && l; i )

Trang 72

LLIST llInsertHead(LLIST l, int data);

LLIST llInsertTail(LLIST l, int data);

LLIST llInsertAfter(LLIST l, PELEM a, int data);LLIST llDeleteHead(LLIST l);

LLIST llDeleteTail(LLIST l);

LLIST llDeleteAfter(LLIST l, PELEM a);

LLIST llDeleteAll(LLIST l);

PELEM llSeek(LLIST l, int i);

void llForEach(LLIST l, LLCALLBACK func, void* user);int llLength(LLIST l);

#endif

Trang 73

Chương 10: Định nghĩa chồng hàm (T21) Bài 6:

Trang 75

Iterator& operator ++(){

p = p->next;return *this;}

Iterator& operator ++(int){

p = p->next;return *this;}

bool operator !() const{

return p!=NULL;}

int& operator *()

{

return p->data;}

~LinkedList(void){

Trang 76

void InsertHead(int data)

{

l = llInsertHead(l, data);}

void InsertTail(int data)

{

l = llInsertTail(l, data);}

void InsertAfter(int i, int data){

PELEM p = llSeek(l, i);

l = llInsertAfter(l, p, data);}

void DeleteHead()

{

l = llDeleteHead(l);}

void DeleteTail()

{

l = llDeleteTail(l);}

void DeleteAfter(int i)

{

PELEM p = llSeek(l, i);

l = llDeleteAfter(l, p);}

void DeleteAll()

{

l = llDeleteAll(l);}

int Length() const

Trang 78

LLIST llInsertTail(LLIST l, int data) {

PELEM p;

PELEM e = (PELEM)malloc(sizeof(ELEM));e->data = data;

Trang 79

PELEM llSeek(LLIST l, int i) {

for (; i>0 && l; i )

Trang 80

LLIST llInsertHead(LLIST l, int data);

LLIST llInsertTail(LLIST l, int data);

LLIST llInsertAfter(LLIST l, PELEM a, int data);LLIST llDeleteHead(LLIST l);

LLIST llDeleteTail(LLIST l);

LLIST llDeleteAfter(LLIST l, PELEM a);

LLIST llDeleteAll(LLIST l);

PELEM llSeek(LLIST l, int i);

void llForEach(LLIST l, LLCALLBACK func, void* user);int llLength(LLIST l);

#endif

Ngày đăng: 26/12/2015, 18:02

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w