Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

C++ CHƯƠNG 8 : TRUYỀN SỐ LIỆU CHO HÀM

1/ Truyền đối số cho hàm main( ) :

- Ví dụ : ta muốn viết một chương trình có tên là Hello.că hello.exe khi chạy trên MS-DOS ta nhập các đối số vào chương trình. Ví dụ : c:> Tom and Jerry ( enter) máy sẽ in ra câu :

Chào Tom and Jerry.

- Viết chương trình trên như sau :

Void main ( int argc, char*argv[ ])

{

......

}

Trong đó :

+ argc : cho biết tổng số đối số truyền vào tính cả tên chương trình đối với ví dụ trên argc = 4. Mỗi đối số truyền vào được xem như là xâu ký tự.

+ mãng argv [ ] sẽ là con trỏ , trỏ lần lượt đến các đối số.

argv[0] -->"Hello"

argv[1] --> "Tom"

argv[2] --> "and"

argv[3] --> "Jerry"

void main ( int argc, char *argv[ ])

{ int i ;

printf("Chào !");

for ( i=1 ; i < argc ; i++)

printf("%s", argv[ i]);

}

2/ Truyền cấu trúc cho hàm - Hàm trên các cấu trúc :

- Chương trình gọi nhập học viên(HV).

- Chương trình bị gọi void nhap ( struct Kiểu HV HV[ ])

Hoặc void nhập (Kiểu HV HV[ ])

- Ví dụ : nhập danh sách lớp :

#include<stdio.h>

#include<conio.h>

#include<string.h> #define N 100

typedef struct

{ char ten[20] ; int tuoi ; float diem ; } kieu HV

/* khai báo hàm nhập dữ liệu*/

void nhap ( int n , Kieu HV HV [ ] )

{int i ; float t;

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

{ printf ( " Nhập hv thử %d ", i++); scanf(....) }

/* chương trình chính */

main ( )

{ Kieu HV hv[n];

nhap ( n, hv);

}

* Hàm có thể trả về giá trị cấu trúc hoặc con trỏ cấu trúc :

+ Ví dụ : Hàm Kieu HV *ptim ( char*ten, KieuHV HV[ ] , int n) : có tác dụng tìm trong danh sách n học viên trong mãng HV[ ] người có tên và hàm trả về con trỏ, trỏ tới người tìm được hoặc trả về NULL nếu không tìm thấy .

+ Hàm Kieu HV tim( char*ten, KieuHV HV[ ], int n); : cũng với mục đích như hàm trên nhưng trả về giá trị của một cấu trúc.

+ Ví dụ :

#include"stdio.h"

#include"conio.h"

#include"string.h"

typedef struct

{ char ten[20] ; int tuổi ; float điểm } Kieu HV ;

Kieu HV *ptim ( char*ten, KieuHV HV[ ] , int n );

Kieu HV tim ( char *ten, Kieu HV hv[ ] , int n );

main( )

{ Kieu HV *p, ds[100],h ; int i, h, n ; char ten[20] ; float diem;

clrscr ( );

printf("

Số người n = " ) ; scanf ("%d *c ",&n);

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

{ printf("\họ tên "); gets(h.Tên) ; /* tự viết lấy*/

ds[i] = h ;

}

/* tìm kiếm 1 theo ten dùng hàm ptim*/

while (1)

{ printf ("

Họ tên người cần tìm"); gets (tên);

if ((p =ptim ( ten, ds, n)) = = NULL)

printf("

không tìm thấy ");

else

indanhsach(*p);

}

/* tìm kiếm theo tên dùng hàm tim*/

while(1)

{ printf("

Họ tên cần tìm "); gets(ten);

if ( tim ( ten, ds, n).ten[0] = = 0 )

printf("

Không tìm thấy");

else indanhsach ( tim ( ten, ds, n));

}

Kieu HV *ptim ( char*ten, Kieu HV hv[ ] , int n)

{ int i ;

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

if ( strcmp ( ten, hv[i].ten= = )return (&hv[ i]);

return (NULL);

}

Kieu HV tim (char*ten, Kieu HV hv[ ] , int n)

{ int i ; HV tam ;

tam.ten[0]=0;

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

if(strcmp(ten,hv[i].ten = = )) return (hv[i]);

return ( tam);

}

void indanhsach (Kieu HV p)

{ printf("

Họ tên % tuổi % điểm %f", p.ten, p.tuổi, p.diêm);

}

vns3curity(HCE)

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: