problem with array sorting - urgent responce needed, due tommrow

Discussion in 'C++' started by trs, Mar 4, 2005.

  1. trs

    trs Guest

    thanks for reading this.
    problem:
    logical error is preventing array from sorting right
    code:
    #include <iostream>
    #include <cmath>
    using namespace std;
    struct coords
    {
    int x;
    int y;
    };
    coords smallestNumber(int A[][30], int startr, int startc, int size);
    void GetRandom(int A[][30], int size);
    void SortArray(char major, int A[][30], int size);
    void PrintArray(int A[][30], int size);
    void swapMeet(coords Old, coords n3w, int A[][30]);
    int temp[750];
    int main()
    {

    coords currentSmall;
    int grid1[25][30];

    GetRandom(grid1,25);
    PrintArray(grid1,25);
    currentSmall = smallestNumber(grid1, 0, 0, 25);
    SortArray('c',grid1,25);

    cout << endl << endl << "Sorted array:\n";
    PrintArray(grid1,25);
    cout << endl << endl << "Row Major:\n";
    SortArray('R',grid1,25);
    PrintArray(grid1,25);

    }

    void GetRandom(int A[][30], int size)
    {
    int count = 749;
    for(int i = 0;i <= size -1; i ++)
    {
    for(int ii = 0; ii <= 30 - 1; ii++)
    {
    //A[ii] = rand() % 99;
    A[ii] = count--;
    }
    }
    }

    void SortArray(char major, int A[][30], int size)
    {
    coords currentsmallest, index, temp;
    temp.x = 1;
    temp.y=1;
    if(major == 'R' || major == 'r')
    {
    for (int i = 0; i <= size -1;i++)
    {
    for (int ii = 0;ii <= 30 -1; ii++)
    {
    currentsmallest = smallestNumber(A, i, ii, size);
    index.x = i ;
    index.y = ii;
    swapMeet(index, currentsmallest, A);
    //cout << "(" << currentsmallest.x << "," <<
    currentsmallest.y << "):" << A[currentsmallest.x][currentsmallest.y] <<
    endl;
    //swapMeet(index, temp, A);
    }
    }
    }
    if (major == 'C' || major == 'c' && major != 'R' && major != 'r')
    {
    for (int i = 0;i <= 30 -1; i++)
    {
    for (int ii = 0;ii <= size -1;ii++)
    {
    currentsmallest = smallestNumber(A,ii,i,size);
    index.x = ii;
    index.y = i;
    swapMeet(index, currentsmallest, A);
    }
    }
    major = 's';
    }
    }

    void swapMeet(coords Old, coords n3w, int A[][30])
    {
    int temp = A[Old.x][Old.y];
    //make sure it works
    if(A[Old.x][Old.y] < A[n3w.x][n3w.y])
    {
    cout << "(" << Old.x << ","<< Old.y << ")" << " > (" << n3w.x
    << "," << n3w.y
    << "):" << A[Old.x][Old.y] << " > " << A[n3w.x][n3w.y] << endl;
    }
    A[Old.x][Old.y] = A[n3w.x][n3w.y];
    A[n3w.x][n3w.y] = temp;
    }

    coords smallestNumber(int A[][30], int startr, int startc, int size)
    {
    coords temppoint;
    int min = A[startr][startc], indexr = startr, indexc = startc;
    int count = 0;//take out later
    for ( int i = startr; i <= size -1;i++)
    {
    for (int ii = startc;ii <= 30 -1; ii++)
    {

    if (A[ii] <= min)
    {
    count++;
    min = A[ii];
    temppoint.x = i;
    temppoint.y = ii;
    // cout << "(" << temppoint.x << "," << temppoint.y
    << "):" << min<<endl;
    }
    }
    }
    if (count != 1)
    {
    // cout << "not equal" << count << endl;
    }
    count = 0;
    return temppoint;
    }

    void PrintArray(int A[][30], int size)
    {
    //PrintArray prints out the array on the screen; each row per line
    //also we require each number occupies exactly 3 characters with
    //right alighment
    for (int i = 0;i <= size - 1; i++)
    {
    for (int ii = 0; ii <= 30 -1; ii++)
    {
    cout << A[ii];
    if (A[ii] < 10 )
    cout << " ";
    else
    cout << " ";
    }
    cout << endl;
    }
    }

    output:
    749 748 747 746 745 744 743 742 741 740 739 738 737 736 735 734 733 732
    731 730 729 728 727 726 725 724 723 722 721 720
    719 718 717 716 715 714 713 712 711 710 709 708 707 706 705 704 703 702
    701 700 699 698 697 696 695 694 693 692 691 690
    689 688 687 686 685 684 683 682 681 680 679 678 677 676 675 674 673 672
    671 670 669 668 667 666 665 664 663 662 661 660
    659 658 657 656 655 654 653 652 651 650 649 648 647 646 645 644 643 642
    641 640 639 638 637 636 635 634 633 632 631 630
    629 628 627 626 625 624 623 622 621 620 619 618 617 616 615 614 613 612
    611 610 609 608 607 606 605 604 603 602 601 600
    599 598 597 596 595 594 593 592 591 590 589 588 587 586 585 584 583 582
    581 580 579 578 577 576 575 574 573 572 571 570
    569 568 567 566 565 564 563 562 561 560 559 558 557 556 555 554 553 552
    551 550 549 548 547 546 545 544 543 542 541 540
    539 538 537 536 535 534 533 532 531 530 529 528 527 526 525 524 523 522
    521 520 519 518 517 516 515 514 513 512 511 510
    509 508 507 506 505 504 503 502 501 500 499 498 497 496 495 494 493 492
    491 490 489 488 487 486 485 484 483 482 481 480
    479 478 477 476 475 474 473 472 471 470 469 468 467 466 465 464 463 462
    461 460 459 458 457 456 455 454 453 452 451 450
    449 448 447 446 445 444 443 442 441 440 439 438 437 436 435 434 433 432
    431 430 429 428 427 426 425 424 423 422 421 420
    419 418 417 416 415 414 413 412 411 410 409 408 407 406 405 404 403 402
    401 400 399 398 397 396 395 394 393 392 391 390
    389 388 387 386 385 384 383 382 381 380 379 378 377 376 375 374 373 372
    371 370 369 368 367 366 365 364 363 362 361 360
    359 358 357 356 355 354 353 352 351 350 349 348 347 346 345 344 343 342
    341 340 339 338 337 336 335 334 333 332 331 330
    329 328 327 326 325 324 323 322 321 320 319 318 317 316 315 314 313 312
    311 310 309 308 307 306 305 304 303 302 301 300
    299 298 297 296 295 294 293 292 291 290 289 288 287 286 285 284 283 282
    281 280 279 278 277 276 275 274 273 272 271 270
    269 268 267 266 265 264 263 262 261 260 259 258 257 256 255 254 253 252
    251 250 249 248 247 246 245 244 243 242 241 240
    239 238 237 236 235 234 233 232 231 230 229 228 227 226 225 224 223 222
    221 220 219 218 217 216 215 214 213 212 211 210
    209 208 207 206 205 204 203 202 201 200 199 198 197 196 195 194 193 192
    191 190 189 188 187 186 185 184 183 182 181 180
    179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162
    161 160 159 158 157 156 155 154 153 152 151 150
    149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132
    131 130 129 128 127 126 125 124 123 122 121 120
    119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102
    101 100 99 98 97 96 95 94 93 92 91 90
    89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66
    65 64 63 62 61 60
    59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36
    35 34 33 32 31 30
    29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6
    5 4 3 2 1 0


    Sorted array:
    0 25 49 73 97 121 142 166 191 215 240 257 282 308 333 360 373 399 425
    451 461 488 516 543 570 600 607 633 661 690
    1 26 50 74 98 122 143 167 192 216 241 258 283 309 334 361 374 400 426
    452 480 489 517 544 571 601 630 643 662 691
    2 27 51 75 99 123 144 168 193 217 242 259 284 310 335 362 376 401 427
    453 481 510 518 545 572 602 631 660 668 693
    3 28 52 76 100 124 145 169 194 218 243 261 285 311 336 363 390 402 428
    454 482 511 522 546 573 603 632 663 692 699
    4 29 53 77 101 125 150 170 195 219 244 270 286 312 337 364 391 403 429
    455 483 512 540 547 574 604 634 664 694 720
    5 30 54 78 102 126 151 171 196 220 245 271 287 313 338 365 392 406 430
    456 484 513 541 552 575 605 635 665 695 721
    6 31 55 79 103 127 152 172 197 221 246 272 288 314 339 366 393 420 431
    457 485 514 542 558 577 606 637 666 696 722
    7 32 56 80 104 128 153 173 198 222 247 273 300 315 340 367 394 421 432
    458 486 515 548 576 578 608 638 667 697 723
    8 33 57 81 105 129 154 180 199 223 248 274 301 316 341 368 395 422 437
    459 487 519 549 579 583 609 639 669 698 724
    9 34 58 82 106 130 155 181 200 224 249 275 302 317 342 369 396 423 450
    460 490 520 550 580 588 611 640 670 700 725
    10 35 60 83 107 131 156 182 201 225 250 276 303 321 343 370 397 424 462
    467 492 521 551 581 610 613 641 671 703 727
    11 36 61 84 108 132 157 183 202 226 251 277 304 330 344 371 398 433 463
    472 493 523 553 582 612 618 642 673 704 729
    12 37 62 85 109 133 158 184 206 227 252 278 305 331 345 372 404 434 464
    491 494 524 554 584 614 636 644 674 706 730
    13 38 63 86 110 134 159 185 210 228 253 279 306 332 346 375 405 435 465
    495 497 525 555 585 615 645 672 679 707 732
    14 39 64 87 111 135 160 186 211 229 254 280 307 347 351 377 407 436 466
    496 526 527 556 586 616 646 675 682 709 733
    15 40 65 90 112 136 161 187 212 230 255 281 318 348 378 382 408 438 468
    498 528 533 557 587 617 648 676 701 714 734
    16 41 66 91 113 137 162 188 213 231 256 289 319 349 379 409 412 439 469
    499 529 559 563 589 619 649 677 702 715 735
    17 42 67 92 114 138 163 189 214 236 260 291 320 350 380 410 417 440 470
    502 530 560 590 593 620 650 678 705 726 736
    18 43 68 93 115 139 164 190 232 262 266 292 322 352 381 411 441 442 471
    503 531 561 591 621 623 651 680 708 728 737
    19 44 69 94 116 140 165 203 233 263 290 293 323 353 383 413 443 447 473
    504 532 562 592 622 647 653 681 710 731 739
    20 45 70 95 120 141 174 204 234 264 294 296 324 354 384 414 444 474 500
    505 534 564 594 624 652 654 684 711 738 743
    21 46 71 96 146 175 176 205 235 265 295 325 355 357 385 415 445 475 501
    535 538 565 595 625 655 683 686 712 740 744
    22 47 72 117 147 177 207 237 267 297 326 327 356 386 387 416 446 476 506
    536 566 568 596 626 656 685 713 717 742 745
    23 48 88 118 148 178 208 238 268 298 328 358 388 418 448 477 478 507 508
    537 567 597 598 627 657 687 716 719 746 747
    24 59 89 119 149 179 209 239 269 299 329 359 389 419 449 479 509 539 569
    599 628 629 658 659 688 689 718 741 748 749


    Row Major:
    0 25 49 73 97 121 142 166 191 215 240 257 282 308 333 360 373 399 425
    451 461 488 516 543 570 600 607 633 661 690
    1 26 50 74 98 122 143 167 192 216 241 258 283 309 334 361 374 400 426
    452 480 489 517 544 571 601 630 643 662 691
    2 27 51 75 99 123 144 168 193 217 242 259 284 310 335 362 376 401 427
    453 481 510 518 545 572 602 631 660 668 693
    3 28 52 76 100 124 145 169 194 218 243 261 285 311 336 363 390 402 428
    454 482 511 522 546 573 603 632 663 692 699
    4 29 53 77 101 125 150 170 195 219 244 270 286 312 337 364 391 403 429
    455 483 512 540 547 574 604 634 664 694 720
    5 30 54 78 102 126 151 171 196 220 245 271 287 313 338 365 392 406 430
    456 484 513 541 552 575 605 635 665 695 721
    6 31 55 79 103 127 152 172 197 221 246 272 288 314 339 366 393 420 431
    457 485 514 542 558 577 606 637 666 696 722
    7 32 56 80 104 128 153 173 198 222 247 273 300 315 340 367 394 421 432
    458 486 515 548 576 578 608 638 667 697 723
    8 33 57 81 105 129 154 180 199 223 248 274 301 316 341 368 395 422 437
    459 487 519 549 579 583 609 639 669 698 724
    9 34 58 82 106 130 155 181 200 224 249 275 302 317 342 369 396 423 450
    460 490 520 550 580 588 611 640 670 700 725
    10 35 60 83 107 131 156 182 201 225 250 276 303 321 343 370 397 424 462
    467 492 521 551 581 610 613 641 671 703 727
    11 36 61 84 108 132 157 183 202 226 251 277 304 330 344 371 398 433 463
    472 493 523 553 582 612 618 642 673 704 729
    12 37 62 85 109 133 158 184 206 227 252 278 305 331 345 372 404 434 464
    491 494 524 554 584 614 636 644 674 706 730
    13 38 63 86 110 134 159 185 210 228 253 279 306 332 346 375 405 435 465
    495 497 525 555 585 615 645 672 679 707 732
    14 39 64 87 111 135 160 186 211 229 254 280 307 347 351 377 407 436 466
    496 526 527 556 586 616 646 675 682 709 733
    15 40 65 90 112 136 161 187 212 230 255 281 318 348 378 382 408 438 468
    498 528 533 557 587 617 648 676 701 714 734
    16 41 66 91 113 137 162 188 213 231 256 289 319 349 379 409 412 439 469
    499 529 559 563 589 619 649 677 702 715 735
    17 42 67 92 114 138 163 189 214 236 260 291 320 350 380 410 417 440 470
    502 530 560 590 593 620 650 678 705 726 736
    18 43 68 93 115 139 164 190 232 262 266 292 322 352 381 411 441 442 471
    503 531 561 591 621 623 651 680 708 728 737
    19 44 69 94 116 140 165 203 233 263 290 293 323 353 383 413 443 447 473
    504 532 562 592 622 647 653 681 710 731 739
    20 45 70 95 120 141 174 204 234 264 294 296 324 354 384 414 444 474 500
    505 534 564 594 624 652 654 684 711 738 743
    21 46 71 96 146 175 176 205 235 265 295 325 355 357 385 415 445 475 501
    535 538 565 595 625 655 683 686 712 740 744
    22 47 72 117 147 177 207 237 267 297 326 327 356 386 387 416 446 476 506
    536 566 568 596 626 656 685 713 717 742 745
    23 48 88 118 148 178 208 238 268 298 328 358 388 418 448 477 478 507 508
    537 567 597 598 627 657 687 716 719 746 747
    24 59 89 119 149 179 209 239 269 299 329 359 389 419 449 479 509 539 569
    599 628 629 658 659 688 689 718 741 748 749
     
    trs, Mar 4, 2005
    #1
    1. Advertising

  2. "trs" <> wrote in message
    news:7dRVd.29308$...
    > thanks for reading this.
    > problem:
    > logical error is preventing array from sorting right
    > ...


    Some comments:
    - It would have been nice if you had used some words on what the output
    should have been and where the actual output differ.
    - Have you tried using a debugger ?
    - Have you tried running the algorithm with a smaller data set (which would
    make debugging easier) ?
    - Why dont you use a sort function from a library ? (Is it homework ?)

    Niels Dybdahl
     
    Niels Dybdahl, Mar 4, 2005
    #2
    1. Advertising

  3. Niels Dybdahl wrote:
    > "trs" <> wrote in message
    > news:7dRVd.29308$...
    >
    >>thanks for reading this.
    >>problem:
    >>logical error is preventing array from sorting right
    >>...

    > [...]
    > (Is it homework ?)


    Couldn't "due tomorrow" be a hint?
     
    Victor Bazarov, Mar 4, 2005
    #3
  4. trs

    trs Guest

    Victor Bazarov wrote:
    > Niels Dybdahl wrote:
    >
    >> "trs" <> wrote in message
    >> news:7dRVd.29308$...
    >>
    >>> thanks for reading this.
    >>> problem:
    >>> logical error is preventing array from sorting right
    >>> ...

    >>
    >> [...]
    >> (Is it homework ?)

    >
    >
    > Couldn't "due tomorrow" be a hint?

    yeah it was homework :p i ended up going about it in a completly
    diffrent way, but i would still like to know what i did wrong
     
    trs, Mar 4, 2005
    #4
  5. trs wrote:
    > Victor Bazarov wrote:
    >
    >> Niels Dybdahl wrote:
    >>
    >>> "trs" <> wrote in message
    >>> news:7dRVd.29308$...
    >>>
    >>>> thanks for reading this.
    >>>> problem:
    >>>> logical error is preventing array from sorting right
    >>>> ...
    >>>
    >>>
    >>> [...]
    >>> (Is it homework ?)

    >>
    >>
    >>
    >> Couldn't "due tomorrow" be a hint?

    >
    > yeah it was homework :p i ended up going about it in a completly
    > diffrent way, but i would still like to know what i did wrong


    Hey, if you got time now, it would be beneficial for you to locate your
    mistakes yourself... Divide and conquer. Split your code into sections
    and make sure every section works as you intended it and that they talk
    to each other correctly...
     
    Victor Bazarov, Mar 4, 2005
    #5
  6. trs wrote:
    >
    > Victor Bazarov wrote:
    > > Niels Dybdahl wrote:
    > >
    > >> "trs" <> wrote in message
    > >> news:7dRVd.29308$...
    > >>
    > >>> thanks for reading this.
    > >>> problem:
    > >>> logical error is preventing array from sorting right
    > >>> ...
    > >>
    > >> [...]
    > >> (Is it homework ?)

    > >
    > >
    > > Couldn't "due tomorrow" be a hint?

    > yeah it was homework :p i ended up going about it in a completly
    > diffrent way, but i would still like to know what i did wrong


    The first thing you should do, is:
    cut down the data amount. Instead of debugging with a
    25*25 array, do the very same thing with, lets say,
    4*4. Now you have much more chance to step through with
    your debugger, paper and pencil and figure out what goes wrong.

    PS: For the very same reason, I will not debug your code.
    I see no point in running through hundreds of loop iterations,
    just to get at the one, where things go wrong.

    PS: Up to now, you havn't said why you consider your program
    to be buggy. What is the problem you are facing?

    --
    Karl Heinz Buchegger
     
    Karl Heinz Buchegger, Mar 4, 2005
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Roman Zhovtulya
    Replies:
    5
    Views:
    655
    marcus
    Nov 8, 2004
  2. Replies:
    2
    Views:
    329
    Fred Kleinschmidt
    Dec 18, 2006
  3. Fresh
    Replies:
    2
    Views:
    639
    Bo Persson
    Apr 22, 2008
  4. Nephi Immortal

    vector is slow due to huge array

    Nephi Immortal, Nov 11, 2011, in forum: C++
    Replies:
    3
    Views:
    400
    Jorgen Grahn
    Nov 11, 2011
  5. Rob
    Replies:
    3
    Views:
    440
Loading...

Share This Page