PDA

View Full Version : Help !!!! ^_^



rox_rook
11-04-2008, 07:25 AM
#include <iostream>
#include <ctime>
#include <iomanip>
#include <cstdlib>

using namespace std;

const int MAX_NUMBER_LIST = 511;
const int DEFAULT_SEED = 5000;
const int MAX_TEST_VALUE = 50;
const int SEED = 11013;
const int DEFAULT_FILL_IN_NUMBERS = 43;

enum techsType{linear, binary};

void PrintTestValues(const int list[],
const int test[],
int numberOfElements,
techsType method,
int& comparision);

void FillMainList(int list[]);

void PrintNameHeader(ostream& oss);

void FillTestArray(const int list[], int test[]);

void PrintArray(const int ary[], int size);

void SelectionSort(int list[], int size);

int LinearSearch(const int list[], int value, int& comps);

int BinarySearch(const int list[], int value, int& comps);

int SearchForExistingElement(const int list[], int value, int range);

void GenerateRandomNumber(int list[], int numElems);

void SwapTwoItems(int& left, int& right);




void FillMainList(int list[])
{
bool existed;
int scan;
int value;
int index = 0;
while(index < MAX_NUMBER_LIST)
{
value = rand()%5000;
existed = false;
for(scan = 0; scan < index; ++scan)
{
if(value == list[scan])
existed = true;
}
if(existed == false)
{
list[index] = value;
index++;
}
}
}

void PrintTestValues(const int list[],
const int test[],
int numberOfElements,
techsType method,
int& comps)
{
cout << "Test value" << setw(16)
<< "Result" << setw(16)
<< "Number of Comparisons" << endl;

if(method == linear)
{
for(int x = 0; x < numberOfElements; ++x)
{
cout << setw(6);
cout << test[x] << setw(16);
if(LinearSearch(list, test[x], comps) == -1)
cout << "NOT found";
else
cout << "found";
cout << setw(16) << comps;
comps = 0;
cout << endl;
}
}
else
{
for(int x = 0; x < numberOfElements; ++x)
{
cout << setw(6);
cout << test[x] << setw(16);

if(BinarySearch(list, test[x], comps) == -1)
cout << "NOT found";
else
cout << "found";

cout << setw(16) << comps;
comps = 0;
cout << endl;
}
}
}


int BinarySearch(const int list[], int value, int& comps)
{
int first = 0,
last = MAX_NUMBER_LIST - 1,
middle,
position = -1;
bool found = false;

while(!found && first <= last)
{
comps++; //increast the number times searching
middle = (first + last)/2;
if(list[middle] == value)
{
found = true;
position = middle;
}
else if(list[middle] > value)
last = middle - 1;
else
first = middle + 1;
}
return position;
}

void PrintArray(const int ary[], int size)
{
cout << right;
cout << setw(6) << ary[0];
for(int index = 1; index < size; index++)
{
if((index % 12) == 0)
cout << endl;
cout << setw(6) << ary[index];
}
}

void FillTestArray(const int list[], int test[])
{
int index;
int scan;
int value;
bool existed = false;
for(index = 0; index < DEFAULT_FILL_IN_NUMBERS; ++index)
{
test[index] = list[index * 12];
}
do
{
value = rand() % 5000;
for(scan = 0; scan < index; ++scan)
{
if(value == test[scan])
existed = true;
}
if(existed == false)
{
test[index] = value;
index++;
}
}while(index < MAX_TEST_VALUE);
}

int SearchForExistingElement(const int list[], int value, int range)
{
int index = 0;
int position = -1;
bool found = false;
while(index < range && !found)
{
if(list[index] == value)
{
found = true;
position = index;
}
index++;
}
return position;
}

int LinearSearch(const int list[], int value, int &comps)
{
int index = 0;
int position = -1;
bool found = false;
while(index < MAX_NUMBER_LIST && !found)
{
comps++; //increast the number times searching
if(list[index] == value)
{
found = true;
position = index;
}
index++;
}
return position;
}



void SelectionSort(int list[], int numElems)
{
int minIndex, minValue;
for(int start = 0; start < numElems - 1; ++start)
{
minIndex = start;
minValue = list[start];
for(int index = start + 1; index < numElems; ++index)
{
if(list[index] < minValue)
{
minValue = list[index];
minIndex = index;
}
}
list[minIndex] = list[start];
list[start] = minValue;
}
}


void SwapTwoItems(int& left, int& right)
{
int temp = left;
left = right;
right = temp;
}


int main()
{
int list[MAX_NUMBER_LIST];
int test[MAX_TEST_VALUE];
char answer;
int numberTest;
int comparision = 0;

cout << "Do you want to use random values (versus default values)? [y/n] ";
cin >> answer;

if(answer == 'Y' || answer == 'y')
{
srand(static_cast<unsigned>(time(0)));
}
else
{
srand(static_cast<unsigned>(SEED));
}

FillMainList(list);

cout << "How many values do you want to test ? [1-50] ";
cin >> numberTest;

FillTestArray(list, test);

cout << "\n\nOriginal array : " << endl;
PrintArray(list, MAX_NUMBER_LIST);

cout << "\n\nOriginal test-arry : " << endl;
PrintArray(test, numberTest);

//cout << "\n\nBefore sort linear search performance : " << endl;
//PrintTestValues(list, test, numberTest, linear, comparision);


cout << "\n\nBefore sort binary search performance : " << endl;
PrintTestValues(list, test, numberTest, binary, comparision);


/*
SelectionSort(list, MAX_NUMBER_LIST);


cout << "\n\nAfter sort linear search performance : " << endl;
PrintTestValues(list, test, numberTest, linear, comparision);


cout << "\n\nAfter sort binary search performance : " << endl;
PrintTestValues(list, test, numberTest, binary, comparision);
*/

return 0;
}
Bác nào nhìn ra tại sao cái Binary search nó in ra NOT FOUND thì chỉ giúp r2 với T_T, nhìn nãy h hoa cả mắt T_T ! không thể tin code trên sai :D !

darkan
11-04-2008, 07:53 AM
Lạy chúa ^^!
Code dài thế này mà ko có compiler thì làm sao mà biết được ^^!

rox_rook
11-04-2008, 07:58 AM
Nãy h em debug mà không hiểu nó sai chỗ nào :D, potay ngu không chịu nổi haha T_T, test ra vài test thì đúng y bóc, để vào sai be bét, hàm Binarysearch cỡ nào nó cũng cho ra -1. Trong khi em đã test rất kĩ T_T, em mà tìm ra em hứa mua 3 chai Ken tự thưởng :D haha !

sieuphuong
11-04-2008, 08:31 AM
tại sao cái Binary search nó in ra NOT FOUND

Anh nhập cái mảng để tìm kiếm như thế nào vậy ?

rox_rook
11-04-2008, 08:49 AM
List gồm 511 phần tử, test[] gồm 50 phần tử để test coi nó có trong list[] không T_T, mới vừa về nhà, làm ko ra thì không ngủ T_T, nóng quá đi :(( !

sieuphuong
11-04-2008, 10:37 AM
int BinarySearch(const int list[], int value, int& comps)
{
int first = 0,
last = MAX_NUMBER_LIST - 1,
middle,
position = -1;
bool found = false;

while(!found && first <= last)
{
comps++; //increast the number times searching
middle = (first + last)/2;
if(list[middle] == value)
{
found = true;
position = middle;
}
else if(list[middle] > value)
last = middle - 1;
else
first = middle + 1;
}
return position;
}

Em thấy nếu chỉ xét cái thuật toán này thì có gì sai đâu nhỉ . Hay anh sai ở chỗ nào đó trong hàm main .

rox_rook
11-04-2008, 10:55 AM
Anh cũng chịu, anh thử cả chục lần, không hiểu sao pass vào function nó lại ra quái lạ thế, T_T. !

Forlorn_hope
11-04-2008, 12:04 PM
int main()
{
int list[MAX_NUMBER_LIST];
int test[MAX_TEST_VALUE];
char answer;
int numberTest;
int comparision = 0;

cout << "Do you want to use random values (versus default values)? [y/n] ";
cin >> answer;

if(answer == 'Y' || answer == 'y')
{
srand(static_cast<unsigned>(time(0)));
}
else
{
srand(static_cast<unsigned>(SEED));
}

FillMainList(list);

cout << "How many values do you want to test ? [1-50] ";
cin >> numberTest;

FillTestArray(list, test);

cout << "\n\nOriginal array : " << endl;
PrintArray(list, MAX_NUMBER_LIST);

cout << "\n\nOriginal test-arry : " << endl;
PrintArray(test, numberTest);

//cout << "\n\nBefore sort linear search performance : " << endl;
//PrintTestValues(list, test, numberTest, linear, comparision);


cout << "\n\nBefore sort binary search performance : " << endl;
PrintTestValues(list, test, numberTest, binary, comparision);
...........


anh này chơi kỳ quá
Chưa sắp xếp mà đã tìm kiếm nhị phân thì tìm đến khi nào ra.
Bó tay anh rook đó. hihi

rox_rook
11-04-2008, 12:20 PM
T_T thanks em yêu :* KISSSSSS^_9 !

Forlorn_hope
11-04-2008, 12:29 PM
ý trời, nghe từ "em yêu" thấy sợ ông anh quá. Lại còn kiss nữa
Hihi

sieuphuong
11-04-2008, 02:57 PM
Ý trời , ko lẽ anh ROK ko biết là phải sắp xếp trước khi tìm sao ??? ...*.*

iamvtn
11-04-2008, 03:18 PM
ý trời, nghe từ "em yêu" thấy sợ ông anh quá. Lại còn kiss nữa
Hihi

Thế giới của người giới thứ 3 đang nổi lên

rox_rook
11-04-2008, 03:24 PM
Ý trời , ko lẽ anh ROK ko biết là phải sắp xếp trước khi tìm sao ??? ...*.* r2 = ngu lâu khó đào tạo T_T, dạo này học toàn kĩ thuật, hèn gì giải thuật như phò á, phải kiểm điểm thui :(( !

Thế giới của người giới thứ 3 đang nổi lên Người thứ 4 vào ăn ké à b-( !!Haha !

Forlorn_hope
11-04-2008, 03:48 PM
Thế giới của người giới thứ 3 đang nổi lên

Anh bạn người thứ 4 này nõi xấu ht hả?

sieuphuong
11-04-2008, 06:41 PM
Ko , nói xấu cả 2 người luôn đó , ai kêu người tung người hứng làm chi ^_^

langman
11-04-2008, 06:45 PM
ủa tưởng thư giãn vào nhòm code mà hoa mắt chóng mặt luôn. !! ( đang ở we^ cái màn nó mờ quá đi )

Kevin Hoang
11-04-2008, 08:32 PM
R_R là girl đó, có phải là boy đâu? Để ý kỹ xem nhé, nữ tính rõ ràng mà lại gán cho các mác "MEN" là sao? ha.... ha, ....

iamvtn
11-04-2008, 10:09 PM
R_R là girl đó, có phải là boy đâu? Để ý kỹ xem nhé, nữ tính rõ ràng mà lại gán cho các mác "MEN" là sao? ha.... ha, ....

Nhìn gà hóa cuốc chắc giới thứ 3 nốt, nhìn men thành girls => đích thị giới thứ 3. Ha.... ha ..... ha .... :D

Forlorn_hope
11-04-2008, 10:29 PM
Nhìn gà hóa cuốc chắc giới thứ 3 nốt, nhìn men thành girls => đích thị giới thứ 3. Ha.... ha ..... ha .... :D

Chỉ châm chọc là hay

R_R là girl đó, có phải là boy đâu? Để ý kỹ xem nhé, nữ tính rõ ràng mà lại gán cho các mác "MEN" là sao? ha.... ha, ....

Mà rook đích thực là boy hay girl thì chịu, chẳng biết được. Chat với rook hoài có thấy nữ tính gì đâu, xưng anh mỏi cả tay.

rox_rook
11-04-2008, 10:53 PM
sieuphuong đâu rùi please confirm, cứ bão là girl hoài, hồi đó mở WC cho sieuphuong xem rùi cơ mà. T_T vào khẳng định dùm đi T_T !

Forlorn_hope
11-04-2008, 11:21 PM
sieuphuong đâu rùi please confirm, cứ bão là girl hoài, hồi đó mở WC cho sieuphuong xem rùi cơ mà. T_T vào khẳng định dùm đi T_T !

Ái chà, cho Wc cho sieuphuong ha. Thế chứ, cẩn thận kẻo bà chị biết là gây đó ông anh
Chỗ này bắt đầu chuyển sang 8 rồi

Kevin Hoang
11-04-2008, 11:50 PM
Chà, coi bộ là ...

@SP: Em nhận được wc của R_R ah, hôm gửi wc cho anh là một cô gái khá xinh đó. Em không được bênh nhé!

Forlorn_hope
12-04-2008, 12:05 AM
@SP: Em nhận được wc của R_R ah, hôm gửi wc cho anh là một cô gái khá xinh đó. Em không được bênh nhé!

Coi bộ Dr có vẻ để ý đến các bạn gái nhiều quá ha

Kevin Hoang
12-04-2008, 01:05 AM
Tất nhiên rồi, bởi vì các bạn gái cũng để ý tới Dr nhiều mà. hì hì

Forlorn_hope
12-04-2008, 06:36 AM
Tất nhiên rồi, bởi vì các bạn gái cũng để ý tới Dr nhiều mà. hì hì

Không phải là để ý tới Dr, mà chỉ để ý tới admin xấu trai thôi.
Coi bộ Dr tự tin quá nên cứ hoang tưởng, hihihihihi (:#)

sieuphuong
12-04-2008, 09:32 AM
@ R_R : Em nhận được webcam của một cô gái trẻ ( nhưng ko đẹp ) cơ mà . Hà...hà...

rox_rook
12-04-2008, 10:13 AM
Ặc, T_T sieuphuong tại sao em :(( !

Forlorn_hope
12-04-2008, 10:19 AM
Ặc, T_T sieuphuong tại sao em :(( !

Ý, có phải ko đó rook, nếu mà đúng vậy thì rook ở bên Mỹ luôn đi, về VN là ăn đòn với ht đó

rox_rook
12-04-2008, 12:15 PM
Ý, có phải ko đó rook, nếu mà đúng vậy thì rook ở bên Mỹ luôn đi, về VN là ăn đòn với ht đó Really :D ?

sieuphuong
12-04-2008, 01:55 PM
Một vụ lừa tình tiền chăng ? Sao lại đe doạ nghe ghê thế chứ :)

Forlorn_hope
12-04-2008, 01:59 PM
Một vụ lừa tình tiền chăng ? Sao lại đe doạ nghe ghê thế chứ :)

ý, hiểu nhầm đó. Chứ rook có về VN thì ht cũng biết đường nào mà mò ra anh ta
Trời ạ