Ignore:
Timestamp:
Jan 15, 2019, 4:16:15 PM (7 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
c802eb88
Parents:
5e49e47 (diff), c9aba81 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into jenkins-sandbox

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/searchsort.cfa

    r5e49e47 rd0c91a6  
    1010// Created On       : Thu Feb  4 18:17:50 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov  6 18:00:38 2018
    13 // Update Count     : 102
     12// Last Modified On : Thu Dec 20 22:49:46 2018
     13// Update Count     : 108
    1414//
    1515
    1616#include <fstream.hfa>
    17 #include <stdlib.hfa>                                                                           // bsearch, qsort
     17#include <stdlib.hfa>                                                                   // bsearch, qsort
    1818#include <stdlib.h>                                                                             // C version of bsearch
    1919
     
    2121
    2222int main( void ) {
    23         const unsigned int size = 10;
     23        const int size = 10;
    2424        int iarr[size];
    2525
    26         for ( i; 0u ~ size ) {
     26        sout | nlOff;                                                                           // turn off auto newline
     27
     28        for ( i; 0 ~ size ) {
    2729                iarr[i] = size - i;
    2830                sout | iarr[i] | ", ";
    2931        } // for
    30         sout | endl | endl;
     32        sout | nl | nl;
    3133
    3234        // ascending sort/search by changing < to >
    3335        qsort( iarr, size );
    34         for ( i; 0u ~ size ) {
     36        for ( i; 0 ~ size ) {
    3537                sout | iarr[i] | ", ";
    3638        } // for
    37         sout | endl;
    38         for ( i; 0u ~ size ) {          // C version
     39        sout | nl;
     40        for ( i; 0 ~ size ) {           // C version
    3941                int key = size - i;
    4042                int * v = bsearch( &key, iarr, size, sizeof( iarr[0] ), comp );
    4143                sout | key | ':' | *v | ", ";
    4244        } // for
    43         sout | endl;
     45        sout | nl;
    4446
    45         for ( i; 0u ~ size ) {
     47        for ( i; 0 ~ size ) {
    4648                int * v = bsearch( size - i, iarr, size );
    4749                sout | size - i | ':' | *v | ", ";
    4850        } // for
    49         sout | endl;
    50         for ( i; 0u ~ size ) {
     51        sout | nl;
     52        for ( i; 0 ~ size ) {
    5153                unsigned int posn = bsearch( size - i, iarr, size );
    5254                sout | size - i | ':' | iarr[posn] | ", ";
    5355        } // for
    54         sout | endl | endl;
     56        sout | nl | nl;
    5557
    5658        // descending sort/search by changing < to >
    57         for ( i; 0u ~ size ) {
     59        for ( i; 0 ~ size ) {
    5860                iarr[i] = i + 1;
    5961                sout | iarr[i] | ", ";
    6062        } // for
    61         sout | endl;
     63        sout | nl;
    6264        {
    63                 int ?<?( int x, int y ) { return x > y; }
    64                 qsort( iarr, size );
    65                 for ( i; 0u ~ size ) {
     65                // redefinition of ?<? can't overlap the loop controls:
     66                {
     67                        int (*?<?)(int, int) = ?>?;
     68                        qsort( iarr, size );
     69                }
     70                for ( i; 0 ~ size ) {
    6671                        sout | iarr[i] | ", ";
    6772                } // for
    68                 sout | endl;
    69                 for ( i; 0u ~ size ) {
     73                sout | nl;
     74                for ( i; 0 ~ size ) {
     75                        int (*?<?)(int, int) = ?>?;
    7076                        int * v = bsearch( size - i, iarr, size );
    7177                        sout | size - i | ':' | *v | ", ";
    7278                } // for
    73                 sout | endl;
    74                 for ( i; 0u ~ size ) {
     79                sout | nl;
     80                for ( i; 0 ~ size ) {
     81                        int (*?<?)(int, int) = ?>?;
    7582                        unsigned int posn = bsearch( size - i, iarr, size );
    7683                        sout | size - i | ':' | iarr[posn] | ", ";
    7784                } // for
    7885        }
    79         sout | endl | endl;
     86        sout | nl | nl;
    8087
    8188        double darr[size];
    82         for ( i; 0u ~ size ) {
     89        for ( i; 0 ~ size ) {
    8390                darr[i] = size - i + 0.5;
    8491                sout | darr[i] | ", ";
    8592        } // for
    86         sout | endl;
     93        sout | nl;
    8794        qsort( darr, size );
    88         for ( i; 0u ~ size ) {
     95        for ( i; 0 ~ size ) {
    8996                sout | darr[i] | ", ";
    9097        } // for
    91         sout | endl;
    92         for ( i; 0u ~ size ) {
     98        sout | nl;
     99        for ( i; 0 ~ size ) {
    93100                double * v = bsearch( size - i + 0.5, darr, size );
    94101                sout | size - i + 0.5 | ':' | *v | ", ";
    95102        } // for
    96         sout | endl;
    97         for ( i; 0u ~ size ) {
     103        sout | nl;
     104        for ( i; 0 ~ size ) {
    98105                unsigned int posn = bsearch( size - i + 0.5, darr, size );
    99106                sout | size - i + 0.5 | ':' | darr[posn] | ", ";
    100107        } // for
    101         sout | endl | endl;
     108        sout | nl | nl;
    102109
    103110        struct S { int i, j; } sarr[size];
    104111        int ?<?( S t1, S t2 ) { return t1.i < t2.i && t1.j < t2.j; }
    105112        ofstream & ?|?( ofstream & os, S v ) { return os | v.i | ' ' | v.j; }
    106         for ( i; 0u ~ size ) {
     113        for ( i; 0 ~ size ) {
    107114                sarr[i].i = size - i;
    108115                sarr[i].j = size - i + 1;
    109116                sout | sarr[i] | ", ";
    110117        } // for
    111         sout | endl;
     118        sout | nl;
    112119        qsort( sarr, size );
    113         for ( i; 0u ~ size ) {
     120        for ( i; 0 ~ size ) {
    114121                sout | sarr[i] | ", ";
    115122        } // for
    116         sout | endl;
    117         for ( i; 0u ~ size ) {
     123        sout | nl;
     124        for ( i; 0 ~ size ) {
    118125                S temp = { size - i, size - i + 1 };
    119126                S * v = bsearch( temp, sarr, size );
    120127                sout | temp | ':' | *v | ", ";
    121128        } // for
    122         sout | endl;
    123         for ( i; 0u ~ size ) {
     129        sout | nl;
     130        for ( i; 0 ~ size ) {
    124131                S temp = { size - i, size - i + 1 };
    125132                unsigned int posn = bsearch( temp, sarr, size );
    126133                sout | temp | ':' | sarr[posn] | ", ";
    127134        } // for
    128         sout | endl | endl;
     135        sout | nl | nl;
    129136        {
    130                 unsigned int getKey( const S & s ) { return s.j; }
    131                 for ( i; 0u ~ size ) {
     137                int getKey( const S & s ) { return s.j; }
     138                for ( i; 0 ~ size ) {
    132139                        sout | sarr[i] | ", ";
    133140                } // for
    134                 sout | endl;
    135                 for ( i; 0u ~ size ) {
     141                sout | nl;
     142                for ( i; 0 ~ size ) {
    136143                        S * v = bsearch( size - i + 1, sarr, size );
    137144                        sout | size - i + 1 | ':' | *v | ", ";
    138145                } // for
    139                 sout | endl;
    140                 for ( i; 0u ~ size ) {
     146                sout | nl;
     147                for ( i; 0 ~ size ) {
    141148                        unsigned int posn = bsearch( size - i + 1, sarr, size );
    142149                        sout | size - i + 1 | ':' | sarr[posn] | ", ";
    143150                } // for
    144                 sout | endl | endl;
     151                sout | nl | nl;
    145152        }
    146153} // main
Note: See TracChangeset for help on using the changeset viewer.