Programming Resources
For Fun and Learning
Charles Cusack
Computer Science
Hope College
main

Python
C++
JAVA
PHP
SQL

Assignments


QuickSortProject


listGenerator.cpp

//--------------------------------------------------------------------
// listGenerator.cpp
// Generate various types of lists
// Chuck Cusack, September 2003
//--------------------------------------------------------------------
#include "listGenerator.h"
//--------------------------------------------------------------------
int random(int mod) {
//if(mod==0)
    //return rand()+rand()*32768;
//else
    //return (rand()+rand()*32768)%mod;
if(mod==0)
    return rand();
else
    return rand()%mod;
}
//--------------------------------------------------------------------
// Generate an array of size elements consisting of 0 through size-1,
//  in order, but then mess a few up.
int *almostInorder(int size) {
    int *A=new int[size];
    for(int i=0;i<size;i++) 
       A[i]=i;
    // Mess up a couple of elements.
    for(int j=0;j<10;j++) {
	    int i1=random(size);
	    int i2=random(size);
            int temp = A[i1];
            A[i1]=A[i2];
            A[i2]=temp;
    }
    return A;
}
//--------------------------------------------------------------------
// Generate an array of size elements consisting of 0 through size-1,
//  out of order, but then mess a few up.
int *almostOutorder(int size) {
    int *A=new int[size];
    for(int i=0;i<size;i++) 
       A[i]=size-i-1;
    // Mess up a couple of elements.
    for(int j=0;j<10;j++) {
	    int i1=random(size);
	    int i2=random(size);
            int temp = A[i1];
            A[i1]=A[i2];
            A[i2]=temp;
    }
    return A;
}
//--------------------------------------------------------------------
// Generate an array of size elements consisting of 0 through size-1,
//  in order
int *inorder(int size) {
    int *A=new int[size];
    for(int i=0;i<size;i++) 
       A[i]=i;
    return A;
}
//--------------------------------------------------------------------
// Generate an array of size elements consisting of 0 through size-1,
//  in reverse order
int *outorder(int size) {
    int *A=new int[size];
    for(int i=0;i<size;i++) 
       A[i]=size-i-1;
    return A;
}
//--------------------------------------------------------------------
// Generate a random list of numbers from 0 to 2^30.
int *randomlist(int size) {
    int *A=new int[size];
    for(int i=size-1;i>-1;i--) 
       A[i]=random(0);
    return A;
}
//--------------------------------------------------------------------
// Generate a random list of numbers from 0 to mod, shifted up by shift.
int *randomlistMod(int size,int mod,int shift) {
    int *A=new int[size];
    for(int i=size-1;i>-1;i--) 
       A[i]=shift + random(mod);
    return A;
}
//--------------------------------------------------------------------
// Create a list of size size where each entry is between 
// shift-1 and mod-shift-1,
// percent percent of the elements are between start and end.
//
int *clump(int size,int mod,int shift,int percent,int start,int end) {
    if(start<shift || start>shift+mod-1) 
          start=shift;               // make sure start is in range
    if(end>mod+shift-1 || end < shift)
          end=mod+shift-1;    // Make sure end is in range

    int *A=new int[size];

    for(int i=0;i<size;i++)  {
       int number=shift + random(mod);
       if(rand()%100<percent)
         number=number%(end-start)+start;
       A[i]=number;
    }
    return A;
}
//--------------------------------------------------------------------