banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Các bạn xem giùm mình bài C++ này với nha ??  XML
  [Programming]   Các bạn xem giùm mình bài C++ này với nha ?? 10/11/2008 06:55:39 (+0700) | #1 | 158270
netbusxx
Member

[Minus]    0    [Plus]
Joined: 21/06/2008 00:59:17
Messages: 35
Offline
[Profile] [PM]
Đề :
a) Viết định nghĩa template hàm
template < typename T>
T sumAll(T * first, T * last);
trả về tổng các phần tử trong mảng kiểu T với first và last là các con trỏ trỏ tới phần tử đầu và cuối mảng.
b) Viết hàm void sumInts(); trong đó gọi tới thể hiện của sumAll với T là kiểu int.


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

template <typename T>

T sumAll(T *first, T *last)
{
	T tong=0,a[last-first+1];
	for (int i=0; i<last-first+1; i++)
	{
		a[i] = *(first+i);	
		tong = tong + a[i];
	}		
	return tong;
}

void sumInts(int *first, int *last)
{
	sumAll(first , last);
}

main()
{
	int n;
	cout<<"Can nhap bao nhieu phan tu cua mang:  ";	cin>>n;

	int i;
	int a[n];
	cout<<"Nhap mang:  ";
	for (i=0; i<n; i++)
		cin>>a[i];
	cout<<"\nTong cac phan tu cua mang :  "<<sumInts(&a[0],&a[n-1]);	

	
	getch ();	
}


Các bạn sửa giùm mình đoạn code trên với nha !!!!!
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 10/11/2008 21:39:11 (+0700) | #2 | 158314
[Avatar]
huynhfxvn
Member

[Minus]    0    [Plus]
Joined: 21/07/2005 11:09:35
Messages: 456
Location: UET.VNU
Offline
[Profile] [PM] [Email] [Yahoo!]
cout<< giá tri void ?
KHÔNG CÓ GÌ quý hơn tự do !
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 11/11/2008 04:12:51 (+0700) | #3 | 158370
kohonen
Member

[Minus]    0    [Plus]
Joined: 27/06/2008 01:06:35
Messages: 30
Location: myself
Offline
[Profile] [PM]
Lỗi nhiều quá:

1. Không thể khai báo như thế này được : a[last-first+1]; và int a[n];
Vì last, first, n đều là các biến không phải hằng.

2. Hàm sumInt không có trả về cái gì hết thì làm sao cout được.
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 11/11/2008 04:36:33 (+0700) | #4 | 158375
[Avatar]
60487
Member

[Minus]    0    [Plus]
Joined: 08/07/2008 21:37:31
Messages: 33
Offline
[Profile] [PM] [Email] [Yahoo!]
Mình cũng không rành lắm nhưng lỗi cout hàm void thì nhận ra ngay.
- chỉ có thể cout một hàm có giá trị trả về.
- hàm void không có giá trị trả về mà chỉ thực hiện một số thao tác cho mình thôi nên không thể cout được.
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 11/11/2008 06:22:22 (+0700) | #5 | 158387
[Avatar]
huynhfxvn
Member

[Minus]    0    [Plus]
Joined: 21/07/2005 11:09:35
Messages: 456
Location: UET.VNU
Offline
[Profile] [PM] [Email] [Yahoo!]

kohonen wrote:
Lỗi nhiều quá:

1. Không thể khai báo như thế này được : a[last-first+1]; và int a[n];
Vì last, first, n đều là các biến không phải hằng.

 

bạn dựa vào tài liệu nào mà bảo không thể khai báo như vậy được ?

bạn chỉ cần sửa lại này là ok
int sumInts(int *first, int *last)
{
return sumAll(first , last);
}
KHÔNG CÓ GÌ quý hơn tự do !
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 11/11/2008 06:49:41 (+0700) | #6 | 158390
[Avatar]
secmask
Elite Member

[Minus]    0    [Plus]
Joined: 29/10/2004 13:52:24
Messages: 553
Location: graveyard
Offline
[Profile] [PM] [WWW]

huynhfxvn wrote:

kohonen wrote:
Lỗi nhiều quá:

1. Không thể khai báo như thế này được : a[last-first+1]; và int a[n];
Vì last, first, n đều là các biến không phải hằng.

 

bạn dựa vào tài liệu nào mà bảo không thể khai báo như vậy được ?

bạn chỉ cần sửa lại này là ok
int sumInts(int *first, int *last)
{
return sumAll(first , last);


theo tớ nhớ thì bạn ấy nói đúng đó, khai báo một mảng tĩnh cần chỉ ra kích thước của mảng tại thời điểm compile, nếu muốn mảng có kích thước thay đổi tại runtime thì sài malloc, new ...
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 11/11/2008 10:28:35 (+0700) | #7 | 158398
[Avatar]
huynhfxvn
Member

[Minus]    0    [Plus]
Joined: 21/07/2005 11:09:35
Messages: 456
Location: UET.VNU
Offline
[Profile] [PM] [Email] [Yahoo!]
nếu chương trình dịch của bản là TC++ 3.0 (chuẩn ANSI C cũ ) thì đùng như kohonen nói "1. Không thể khai báo như thế này được : a[last-first+1]; và int a[n];
Vì last, first, n đều là các biến không phải hằng. "

(sorry nha);

Nếu chương trình dịch của bạn là mới ,ví dụ DEVC++ chẳng hạn ,thì khai báo một mảng không nhất thiết phải là một hằng ,mảng sẽ được tạo ra vào thời gian chạy ; Nó chỉ lỗi khi không còn đủ bộ nhở để cấp phát một mảng mới;

int n;
cin>>n;
int a[n];
là hoàn toàn hợp lệ.
KHÔNG CÓ GÌ quý hơn tự do !
[Up] [Print Copy]
  [Question]   Re: Các bạn xem giùm mình bài C++ này với nha ?? 12/11/2008 22:46:27 (+0700) | #8 | 158594
netbusxx
Member

[Minus]    0    [Plus]
Joined: 21/06/2008 00:59:17
Messages: 35
Offline
[Profile] [PM]
Cảm ơn các bác đã góp ý cho bài tập của mình, Mình dùng Dev-C++. Nhưng đề bài nó lại yêu cầu là:

Viết hàm void sumInts(); trong đó gọi tới thể hiện của sumAll với T là kiểu int

Do đó mà không thể sửa được thành int sumInts(); Thanks....
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|