Clustering an array of words

Hi, I have a large array of over 5000 words. I need to take all these words and re list them by groups--e.g. have words like 'fire', 'flame', 'burn' and 'combustible' listed next to each other.
Is there a thesaurus I can use to perform this operation? I would like to be able to use the thesaurus in SQL Server 2005. Is this possible?
I appreciate any help or comments that are given--thanks in advance!

I wonder if a list is really the data structure you want. This sounds more like a mesh structure to me...
But I have no idea how you would program that. I can think of a number of annoying implementation problems, like: is there any way to search through such a mesh?
You should check the algorithm forum for that.

Similar Messages

  • NXT Flatten to String Not Working with Clusters and Arrays

    Hello,
    My name is Joshua and I am from the FIRST Tech Challenge Team 4318, Green Machine. We are trying to write a program that will write to a configuration file and read it back. The idea is that we will be able to write to a config file from our computer that will be read by our autonomous program when it runs. This will define what the autonomous program does.
    The easiest way to do this seems to be flattening a data structure to a string, saving it to a file, and then reading back and unflattening it. The issue is that the flatten to string and unflatten from string VIs don't seem to work with arrays and clusters on the NXT. It does work when running on the computer. We've tried arrays, clusters, clusters in arrays and arrays in clusters, none seem to work. Thinking it was something to do with reading the string from a file, we tried bypassing the file functionality, still not working. It does work with basic data types though, such as strings and numbers.
    No error is thrown from what we can tell. All you get is a blank data structure out of the unflatten VI.
    The program attached is a test program I've been working on to get this functionality to work. It will display the hex content of what is going into the file, coming out of the file, and then the resulting data from the unflatten string, as well as any errors that have been thrown. The data type we are using simulates what we would like to store. There is also a file length in and out counter. The out file is a little larger because the NXT write file VI adds a new line character on to the end (thus the use of the strip white space VI). This character was corrupting even basic data types saved to file.
    I would like to know if there is a problem with what we are doing, or if it is simply not possible to flatten arrays on the NXT. Please ask if you have any questions about the code. Thank you in advanced!
    Joshua
    Attachments:
    ReadableTest.vi ‏20 KB

    Hi jfireball,
    This is a very interesting situation. Take a look at what kbbersch said. I also urge you to post in the FTC Forums. You posted your question to the general LabVIEW forums, but by posting to the FTC Forums, you will have access to others that are using the NXT hardware.
    David B.
    Applications Engineer
    National Instruments

  • Sentence input to array of words

    I'm supposed to read an input of a sentence from the user, and then use an array to view each word separately....I'm getting an out of bounds error for the following two lines and can't figure out why or how to fix it....any help would be greatly appreciated....
    import java.util.Scanner;
    public class Project7A2
         public static void main(String[] args)
              String sentence, words[], result[];
              Scanner scan = new Scanner (System.in);
              System.out.print("Please enter a sentence: ");
              sentence = scan.nextLine();
              words = methods.translate (sentence);
              System.out.println(words);
    import java.util.Scanner;
    public class methods
    public static String[] translate (String sentence)
              String temp;
              String methods[] = new String[10];
              int i=0;
              Scanner scan = new Scanner (sentence);
              temp = scan.next();
              do
                   methods[i] = temp;
                   i++;
              while (scan.hasNext());
              return methods;
    }

    I'm going to take a guess here and let me know if I'm way off base...instead of translating the sentence into an array of words should I translate the sentence into individual words and then use a loop (in the main program or a separate method) to assign each word to an array index?

  • Call library function node with array of clusters using array data pointer

    Hello all.
    I am writing a LabVIEW wrapper for an existing DLL function.
    The function has, as one of its parameters, an array of structs.  The struct is very simple, containing two integers.  I am using the call library function node to access it.
    In Labview I created an array of clusters, where the cluster has two 32-bit integers as its members.  So far, so good.
    Now I have to pass this in to the Call Library Function Node.  Here I am running into trouble.
    I have used The topic in LAVA and The topic in the knowledge base as my primary sources of information, though I have read a bunch of forum topics on the subject too.
    I do understand that I could write a new function which takes as a parameter a struct with the size as the first member and an array as the second, and I might just do this and have it call the regular function, but I was hoping to do it more simply.
    According to the C file which LabVIEW generates for me from the CLFN when I choose "Adapt to Type" and "Array Data Pointer", the prototype it is expecting is:
    int32_t myFunc(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, void data[], int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex);
    And the prototype of the function in my DLL is
    int borland_dll myFunc(DWORD handle, usint channel,
    int FIFOnumber, struct mStruct *data, int numWords, int *actualLoaded, int *actualStartIndex);
    This looks like a match to me, but it doesn't work (I get garbage in data).  From the topic in LAVA referenced above, I understood that it would work.  It does not.
    If I cast data to the pointer-to-pointer I get when I generate c code by wiring my struct to a CIN and generating, then I seem to get what I expect. But this seems to work when I choose "pointers to handles" too, and I would expect array data pointer to give a different result.
    Is there any way to get this to work directly, or will I have to create a wrapper?  (I am currently using LabVIEW 2011, but we have customers using 2009 and 2012, if not other versions as well).
    Thank you.
    Batya
    Solved!
    Go to Solution.

    OK, here is more detailed information.
    I have attached the VI.
    This is the code from the  "C" file created by right-clicking the CLN and creating a "C" file. 
    When the parameter in the CLN is set to "array data pointer":
    /* Call Library source file */
    #include "extcode.h"
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, void data[], int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex);
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, void data[], int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex)
    /* Insert code here */
     When the parameter is "pointers to handles":
    /* Call Library source file */
    #include "extcode.h"
    /* lv_prolog.h and lv_epilog.h set up the correct alignment for LabVIEW data. */
    #include "lv_prolog.h"
    /* Typedefs */
    typedef struct {
    int32_t control;
    int32_t data;
    } TD2;
    typedef struct {
    int32_t dimSize;
    TD2 data[1];
    } TD1;
    typedef TD1 **TD1Hdl;
    #include "lv_epilog.h"
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, TD1Hdl *data, int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex);
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, TD1Hdl *data, int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex)
    /* Insert code here */
     When the parameter is set to "handles by value":
    /* Call Library source file */
    #include "extcode.h"
    /* lv_prolog.h and lv_epilog.h set up the correct alignment for LabVIEW data. */
    #include "lv_prolog.h"
    /* Typedefs */
    typedef struct {
    int32_t control;
    int32_t data;
    } TD2;
    typedef struct {
    int32_t dimSize;
    TD2 data[1];
    } TD1;
    typedef TD1 **TD1Hdl;
    #include "lv_epilog.h"
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, TD1Hdl *data, int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex);
    int32_t Load_Transmit_FIFO_RTx(uint32_t handle, uint16_t channel,
    int32_t FIFOnumber, TD1Hdl *data, int32_t numWords, int32_t *actualLoaded,
    int32_t *actualStartIndex)
    /* Insert code here */
    As to the DLL function, it is a bit more complicated than I explained above, in the current case.  My VI calls the function by this name in one DLL, and that DLL loads a DLL and calls a function (with the same name) in the second DLL, which does the work. (Thanks Rolfk, for helping me with that one some time back!)
    Here is the code in the first ("dispatcher") DLL:
    int borland_dll Load_Transmit_FIFO_RTx(DWORD handle, usint channel, int FIFOnumber, struct FIFO_DATA_CONTROL *data, int numWords, int *actualLoaded, int *actualStartIndex)
    t_DispatchTable *pDispatchTable = (t_DispatchTable *) handle;
    int retStat = 0;
    retStat = mCheckDispatchTable(pDispatchTable);
    if (retStat < 0)
    return retStat;
    if (pDispatchTable->pLoad_Transmit_FIFO_RTx == NULL)
    return edispatchercantfindfunction;
    return pDispatchTable->pLoad_Transmit_FIFO_RTx(pDispatchT​able->handlertx, channel, FIFOnumber, data, numWords, actualLoaded, actualStartIndex);
    borland_dll is just "__declspec(dllexport)"
    The current code in the DLL that does the work is:
    // TEMP
    typedef struct {
    int control;
    int data;
    } TD2;
    typedef struct {
    int dimSize;
    TD2 data[1];
    } TD1;
    typedef TD1 **TD1Hdl;
    // END TEMP
    int borland_dll Load_Transmit_FIFO_RTx(int handlertx, usint channel, int FIFOnumber, struct FIFO_DATA_CONTROL *data, int numWords, int *actualLoaded, int *actualStartIndex){
    struct TRANSMIT_FIFO *ptxFIFO; //pointer to transmit FIFO structure
    usint *pFIFOlist; //pointer to array of FIFO pointers to FIFO structures
    int FIFOentry, numLoaded;
    usint *lclData;
    usint nextEntryToTransmit;
    // TEMP
    FILE *pFile;
    int i;
    TD1** ppTD = (TD1**) data;
    TD1 *pTD = *ppTD;
    pFile = fopen("LoadFIFOLog.txt", "w");
    fprintf(pFile, "Starting Load FIFO with %d data words, data pointer 0x%x, with the following data&colon; \n", numWords, data);
    for (i = 0; i < numWords; i++) {
    fprintf(pFile, "%d: control--0x%x, data--0x%x \n", i, data[i].control, data[i].data);
    fflush(pFile);
    fprintf(pFile, "OK, using CIN generated structures: dimSize %d, with the following data&colon; \n", pTD->dimSize);
    for (i = 0; i < numWords; i++) {
    fprintf(pFile, "%d: control--0x%x, data--0x%x \n", i, pTD->data[i].control, pTD->data[i].data);
    fflush(pFile);
    // END TEMP
    if ((handlertx) <0 || (handlertx >= NUMCARDS)) return ebadhandle;
    if (cardrtx[handlertx].allocated != 1) return ebadhandle;
    pFIFOlist = (usint *) (cardrtx[handlertx].segaddr + cardrtx[handlertx].glob->dpchn[channel].tr_stk_ptr​);
    pFIFOlist += FIFOnumber;
    ptxFIFO = (struct TRANSMIT_FIFO *)(cardrtx[handlertx].segaddr + *pFIFOlist);
    //use local copy of ptxFIFO->nextEntryToTransmit to simplify algorithm
    nextEntryToTransmit = ptxFIFO->nextEntryToTransmit;
    //on entering this routine nextEntryToLoad is set to the entry following the last entry loaded
    //this is what we need to load now unless it's at the end of the FIFO in which case we need to wrap around
    if ( ptxFIFO->nextEntryToLoad >= ptxFIFO->numEntries)
    *actualStartIndex = 0;
    else
    *actualStartIndex = ptxFIFO->nextEntryToLoad;
    //if nextEntryToLoad points to the last entry in the FIFO and nextEntryToTransmit points to the first, the FIFO is full
    //also if nextEntryToLoad == nextEntryToTransmit the FIFO is full and we exit without loading anything
    if (( (( ptxFIFO->nextEntryToLoad >= ptxFIFO->numEntries) && (nextEntryToTransmit == 0)) ||
    ( ptxFIFO->nextEntryToLoad == nextEntryToTransmit)) && (ptxFIFO->nextEntryToLoad != INITIAL_ENTRY)){
    *actualLoaded = 0; //FIFO is full already, we can't add anything
    return 0; //this is not a failure, we just have nothing to do, this is indicated in actualLoaded
    numLoaded = 0;
    lclData = (usint *)data; //must use 16 bit writes to the module
    //conditions are dealt with inside the for loop rather than in the for statement itself
    for (FIFOentry = *actualStartIndex; ; FIFOentry++) {
    //if we reached the end of the FIFO
    //if the module is about to transmit the first element of the FIFO, the FIFO is full and we're done
    //OR if the module is about to transmit the element we're about to fill in, we're done - the
    //exception is if this is the first element we're filling in which means the FIFO is empty
    if ((( FIFOentry >= ptxFIFO->numEntries) && (nextEntryToTransmit == 0)) ||
    ((FIFOentry == nextEntryToTransmit) && (FIFOentry != *actualStartIndex) )){
    *actualLoaded = numLoaded;
    //set nextEntryToLoad to the end of the FIFO, we'll set it to the beginning next time
    //this allows us to distinguish between full and empty: nextEntryToLoad == nextEntryToTransmit means empty
    ptxFIFO->nextEntryToLoad = FIFOentry;
    return 0;
    //we reached the end but can continue loading from the top of the FIFO
    if ( FIFOentry >= ptxFIFO->numEntries)
    FIFOentry = 0;
    //load the control word
    ptxFIFO->FifoData[FIFOentry * 3] = *lclData++;
    //skip the high of the control word, the module only has a 16 bit field for control
    lclData++;
    //now put in the data
    ptxFIFO->FifoData[(FIFOentry * 3) + 2] = *lclData++;
    ptxFIFO->FifoData[(FIFOentry * 3) + 1] = *lclData++;
    numLoaded++;
    //we're done because we loaded everything the user asked for
    if (numLoaded >= numWords) {
    *actualLoaded = numLoaded;
    ptxFIFO->nextEntryToLoad = FIFOentry+1;
    return 0;
    //if we reached here, we're done because the FIFO is full
    *actualLoaded = numLoaded;
    ptxFIFO->nextEntryToLoad = FIFOentry;
    fclose (pFile);
    return 0;
     As you can see, I added a temporary diagnostic with the structures that were created in the "Handles by value" case, and print out the data.  I see what is expected, whichever of the options I pick in the CLN!  
    I understood (from the information in the two links I mentioned in my original post, and from the name of the option itself) that "array data pointer" should pass the array of data itself, without the dimSize field.  But that does not seem to be what is happening.
    Batya
    Attachments:
    ExcM4k Load Transmit FIFO.vi ‏15 KB

  • Check variable against an array of words

    Hi,
    I wish to check a variable for a number of words that are in
    a array.
    Not sure if this is the best way to do it, but this is what i
    have.
    I have my own counter system that counts every visitor, but
    some of these visits are from BOTS, spiders..
    So i wish to have a method of searching the HTTP_USER_AGENT
    for certain words i put in a array.
    What i am after is how i get the words in an array and how i
    then get the script to check the HTTP_USER_AGENT for a word in the
    array and if so it will not complete the script. (not add to the
    counter)
    if none of the words are in the HTTP_USER_AGENT then it will
    add to the counter.
    so something like?
    <?
    // do array
    // check if HTTP_USER_AGENT contains a word from array
    if () {
    // increase counter if none of the words are in
    HTTP_USER_AGENT
    include(increase.php);
    ?>
    its the bit between the if () that i have no idea about, any
    help would be great.
    cheers in advance for your help.
    Jason

    not very clever wrote:
    > this is a bit more about what i am trying to do.
    >
    > <?
    > // do array
    > array(1)="something";
    > array(2)="something else";
    > array(3)=..
    > ..
    > ..
    >
    >
    > $HTTP_USER_AGENT = contants of the HTTP_USER_AGENT
    > // check if HTTP_USER_AGENT contains a word from array
    > if (array(x) is in the string $HTTP_USER_AGENT) {
    > // increase counter if none of the words are in
    HTTP_USER_AGENT
    > include(increase.php);
    > }
    >
    > ?>
    >
    >
    $myArray = array('blip','blop','glup',...);
    $counter = 0;
    foreach($myArray as $mA){
    if(preg_match('/'.$mA.'/',$HTTP_USER_AGENT)){
    $counter++;
    seb ( [email protected])
    http://webtrans1.com | high-end web
    design
    Downloads: Slide Show, Directory Browser, Mailing List

  • Help with converting array of sentences in to array of words.

    Hi! I'm having a problem with converting an array of sentences (about 50) into 1000 separate words into an word array. No use of tokenizers, classes (pre-made) just clear proggramming.
    Thanks in advance!

    Until you come up with a question, check these out:
    http://java.sun.com/docs/books/tutorial/
    http://java.sun.com/learning/new2java/index.html
    http://javaalmanac.com
    http://www.jguru.com
    http://www.javaranch.com
    Bruce Eckel's Thinking in Java
    Joshua Bloch's Effective Java
    Bert Bates and Kathy Sierra's Head First Java

  • Concatenate clusters to array with enums

    Hi I am trying to concatenate three 1D arrays filled with an i32 and an enum.
    When i look at my concatenated array i lose my enum information... It makes 0,1,2,3,4 etc... instead of the channel names??
    Does anyone have a solution for this?
    Best regards,
    Thijs
    Solved!
    Go to Solution.

    How exactly did you 'look' at the concatenated array? If you use a numeric indicator instead of enumerated, the VI will execute, but you will lose the enum names.
    However, if you probe the wire, and/or Right Click > Create Indicator... you should not encounter the problem, in which case the problem must lie somewhere else.

  • Array Of Clusters Not Initializing or Possible Race Conditions

    Hi all,
    I've been working on a fairly complex project for work, and I haven't worked with Labview before. Unfortunately nobody in my office really has experience with it so I'm on my own. I've mostly got the project working, and it might be a little cumbersome, but if it works that's fine.
    Essentially it's a temperature control device and I made it so it's expandable, thus the clusters and arrays everywhere.
    My question is this. I've got an array of clusters indicating the status of all the plates in the system. When I start up the VI for the first time they do not initialize. They just stay grey, but when I stop it and start it once, it will work every time. I think this is kind of strange behavior. I've heard of race conditions and while I've tried to make sure t hat's not happening, it might be without me noticing.
    I've tried putting an initialize array block in the first call while loop and that doesn't do anything, and if I remove the initializer from the shift register in the top while loop that stops them being initalized altogether.
    I guess I was hoping someone might have an idea what's causing it, or could possible give my code the once over. The main bulk of it is in the very top of the code, but there are a lot of smaller events taking care of GUI type stuff.
    I've included all source code. It might be a little much but I didn't want to start pulling it apart if I don't know what's happening.
    Thanks in advance.
    Chris.
    Solved!
    Go to Solution.
    Attachments:
    Error During Cycle Controls.zip ‏3107 KB
    Stop Cycle Controls.zip ‏2115 KB
    Stop Cycle Controls.zip ‏4975 KB

    Chris Johnson wrote:
    So just to confirm, I can have one event structure with say 10 events happening? In this case could an event happen simultaneously with another? I thought I read something about each event having it's own event structure and while loop to make sure this works out.
    Each event case must complete before it can handle the next event, but many events will complete so quickly that this is not an issue (such as your "pause chart" button).  In general you should have only one event loop.  If you expect an event to take a long time to process, use a queue to hand that task off to another dedicated-purpose loop, so that the event structure can go back to waiting.  This is one example of the producer-consumer structure often mentioned on this forum: the producer is the loop containing the event structure, and it queues (produces) items to process.  A separate loop dequeues (consumes) those items and handles them appropriately.
    As GerdW mentioned, you have race conditions all over the place.  You'll never know whether the Plate Info Cluster Array is properly updated because it's being written and read simultaneously in so many places.  I'm assuming that is also where you're seeing the issue that inspired the post, and, in fact, one of those race conditions could explain what you're seeing.
    Chris Johnson wrote:
    Also, again, to confirm what I think I already know. When the event completes it outputs whatever data you output from the structure and then you can place it in a shift register. Where does this go until the next event takes place?
    I don't understand what you're asking.  Where does what go until the next event?  If by this you mean the data in the shift register - it stays in the shift register, accessible at the corresponding terminal on the left side of the loop.

  • Working with word arrays in a game

    In my spelling game, I have arrays of words that is added to a text field one at a time (through a loop). They are also split into letters so that the player can click on a corresponding letter tile to copy the word. The active letter would be 100% visible (alpha setting )and the other letters would be set to 80%.
    Splitting each word works well it you just want the entire word broken into individual letters, BUT I want my game to be phonics based - so sometimes the sound in a word will have more than one letter e.g. for the word "elephant" the array would be: activeWord:Array = ["e","l","e","ph","a","nt"] and there would of cause be letter tiles with the sound -ph- and -nt- on them to click on too.
    I guess this is where arrays within arrays gets the job done? I have 10 words per level and 30 levels. I will break each word into it's sounds and hardcode each word like I did elephant above.
    How do I rewrite the loop below to accomodate the 10 word loop within a level. After each level I want a score to appear with the option to click next for the next level.
    public var  wordsL1:Array = ["elephant","has","of","off","on","not","got","in","is","it"];
                    private var tf:TextField;
                    public var letterArray:LetterArray;
                    public var tileTimer = new Timer(500,384);
                    // ***constructor code
                    public function WordArray(_tf:TextField)
                        tf = _tf;
                        nextWordF();
                        //**Run letter Tiles Start**//
                        letterArray = new LetterArray();
                        addChild(letterArray);
                        tileTimer.addEventListener(TimerEvent.TIMER, gameLoop);
                        tileTimer.start();
                        public function gameLoop(timerEvent:TimerEvent):void
                            trace("Tile Timer Started");
                            letterArray.gameLoop();
                        //**end**//   
                    function nextWordF():void
                        if(wordsL1.length>0)
                            activeWordF();
                            populateMyWordBox();
                        else
                                //quiz is complete
                        private function activeWordF():void
                            activeWordArray = wordsL1.shift().split("");
                             // this array needs to be passed to the class that checks which letters are clicked (or used in this class if that's where the clicked letters are handled) so the clicked letters                               can be compared to activeWordArray's elements.   
                            // when the clicked letters are completed for this word, call nextWordF().

    There's always a better way to do things but ultimately it comes down to if what you're doing works for your audience. If it does, the majority would say you did it correct. After you did it correctly you can spend time optimizing it however you like. If you get down to those specific questions be sure to provide a sample and some code that you think needs optimization and I'm sure we'll be able to help. You're welcome and good luck!

  • How to delete string from an array

    I just want to know that what changes i can do to delete the string if contains any extra characters like digits and punctuation marks in the middle or begining of the string but not at the end of the string, i've already tried to delete only the punctuation marks at the end of the string and keep that word. Please dont forget that i m a beginer
    import java.io.*;
    import java.util.*;
    class Project
    public static void main()throws IOException
    // set up input stream
    File finput = new File("C:\\f1.txt");
    FileReader fr = new FileReader(finput);
    BufferedReader fin = new BufferedReader (fr);
    // set up output stream
    File foutput = new File("C:\\f3.txt");
    FileWriter fw = new FileWriter (foutput);
    PrintWriter fout = new PrintWriter (fw);
    String nextLine; // a line read from the file
    StringTokenizer t; // the words within the line
    ArrayList words = new ArrayList(); // an array of words
    //String n = {0,1,2,3,4,5,6,7,8,9};
    System.out.println("Reading file.\n");
    // start
    while (true)
    nextLine =fin.readLine(); // read from input file
    if (nextLine==null) break; // if no more lines, get out
    t = new StringTokenizer(nextLine); // identify words
    while (t.hasMoreTokens())
    String str = (String)t.nextToken();
    str = str.toLowerCase(); // Converting all uppercase to lowercase.
    // Replacing all punctuation marks.
    str=str.replace(',',' ');
    str=str.replace('?',' ');
    str=str.replace('!',' ');
    str=str.replace('.',' ');
    str=str.replace(':',' ');
    str=str.replace(';',' ');
    str=str.replace('"',' ');
    str=str.replace('"',' ');
    str=str.trim(); // Removing empty spaces after words
    words.add(str); // add them to array
    String z; // Declaring string z for sorting.
    for (int i=0; i<words.size(); i++)
    for (int j=i+1; j<words.size(); j++)
    // Sorting the Array list.
    if (((String)words.get(j)).compareTo((String)words.get(i))<0)
    z=(String)words.get(i);
    words.remove(i);
    words.add(i,(String)words.get(j-1));
    words.remove(j);
    words.add(j,z);
    // To replacing word which have got "'".
    if ((String)words.get(i)).indexOf("'")!=-1)
    a="";
    int count[]=new int[words.size()]; //Creating int array for counting the repetition.
    for (int i=0;i<=words.size()-1;i++)
    for (int j=i+1;j<=words.size()-1;j++)
    //Counting the repetition of the string.
    //if (((String)words.get(j)).compareTo((String)words.get(i))==0)
    if (((String)words.get(j)).equals((String)words.get(i))==true)
    count[i]++;
    words.remove(j);
    j=j-1;
    System.out.println("Dictionary\t|\tRepetition");
    System.out.println("==========\t \t==========\n");
    for (int i=0; i<words.size(); i++)
    count[i]++; // initialinzing the value with 1
    // Printing result on the output file.
    fout.println((String)words.get(i));
    // Printing result on the screen with histogram.
    System.out.println((String)words.get(i)+ "\t\t|\t" +count[i]);
    fout.close();
    System.out.println();
    System.out.println("Finished");
    } //end of main.

    The code that you pasted does not seem like written by a beginner. So, did you write the code?
    If so, you should have no problem solving this simple thing.
    If not, then copy and pasting a block of program that you don't understand will keep you as a beginner all the time, so can't help you if you are willing to stay at beginner.
    --lichu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Is it possible to/how can I create an array of arrays in Labview 6i?

    I am trying to create a data structure based on a tree where each limb is an array of arrays and each of those arrays is an array of arrays...etc. My ultimate purpose of this is for multidimensional (infinite) data saving/data recovery.

    I suspect it won't work for your intended application, but here is an answer to your question:
    You can't create an array of arrays, because that would be the same as increasing the number of dimensions of the array. However, you can store an array in a cluster, then have an array of clusters with arrays in them. So, indirectly it is possible. This gives you the possibility of each array being a different size.
    Bruce
    Bruce Ammons
    Ammons Engineering

  • Array of variable-length lists in Action Engine

    I'm starting work on a application that consists of multiple sub-panels which each present a specific subset of the hardware functionality.  The hardware appears to the host mostly as memory-mapped registers.  I'm considering implementing the hardware interface in an Action Engine (AE) so that LV will automatically arbitrate among the hardware access requests from the sub-panels and because it (seems to me) to make the data flow more clear than the current implementation that uses a veritable plethora of queues, notifiers, and rendezvous to send requests and results between the sub-panels and the hardware interface at the top-level.
    The challenge is this, though:  Certain hardware addresses need to be modeled in multiple sub-panels -- maybe data at a certain address changes the functionality of some other addresses, or maybe different bit-fields within an address are part of different functional groups.   
    So any of sub-panel can request a read or write to the hardware, but often several of them need to see the resulting data.
    In order to keep the design modular and expandable I don't want to hard-code anything in the hardware AE that is specific to the sub-panels.   Instead, I intend to have the sub-panels "register" with the hardware AE indicating for which addresses they need to receive updates when some hardware address is read or written to.  This means the AE will have to keep the "registration" data in an un-initialized shift-register (USR).  But I want the hardware accesses to run as fast as possible, so I would like to ask for some suggestions how to implement this as efficiently as possible (avoiding, for example, clusters of arrays...)
    I imagine the sub-panel registration info might consist of a user-defined event reference (created inside the sub-panel VI) and a list of hardware addresses that the sub-panel is modeling.   Then when the hardware AE gets a request to read or write at some address it will also generate events to broadcast the data to the sub-panels that have registered for that address.   This will probably include 20-25 subpanels registering for a collective total of about 700 hardware addresses.  
    I'm less concerned about memory than speed.
    So, a few possibilities come to mind for how to implement the registration data in the AE USR:
    A) Have one 2-D array where the array contains one row per hardware address (~320), and columns contain the event refs for all the sub-panels registered for that address.   The width of the array would depend on whichever address has the greatest number of sub-panels registered for it (maybe 4-5?), but that still means the array would be pretty large (about 6.5 kbytes if a reference is a 32-bit value?)
    On the other hand, indexing into this array to look up the sub-panel references for the current address would be relatively quick and easy since the hardware address is the row number.
    B) Have two arrays where the array size is the number of sub-panels:  One 1D array for the registered event refs and one 2-D array for the addresses.  But different sub-panels will have different quantity of addresses registered, so that means the "width" of the address array would be as big as the largest number of addresses registered by one sub-panel (maybe 20?).   This would use a total of only about 1.5 kbytes, but I would have to search through all 25 address arrays to see if the current address is registered.
    C) or, some other way that I have not though of.   
    Once the "registration" data is received from the sub-panels during program initialization it is never changed, only read.   So at first glance it would seem (A) would be the faster implementation.  But I don't know what, if any, performance hit there would be from having such a large array in a USR, which is why I'm asking here.
    Any thoughts or suggestions would be greatly appreciated.
    Thank you and Best Regards,
    -- J.

    JeffBuckles wrote:
    Any thoughts or suggestions would be greatly appreciated.
    Thank you and Best Regards,
    -- J.
    Quick thought (hardly!)...
    I have used a "Self-Addressed Stamped Envelope" architectrure for those type os apps.
    DAQ device has a queue it monitors for subscription requests (Think of a in-box for Marketing deparetment).
    When client is created it submits a request via the queue for the subscription request that included a ref to its update queue and a list of teh channels it wants to watch. The clients then wait for updates.
    The Marketing department pass the request for updates (in-box of marketing department) to the production department (I used an AE to pass the mailing list) who picks through the acquired data and passes updates as requested to all of teh subscribing clients.
    Just sharing ideas,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Saving data clusters

    Hi,
    I've just got a question concerning the best way to save my data. I'm using LV 7.0 and Vision 7.1 on a 2P Microscope.
    I'm acquiring images, heartbeat of the animal and a stimulation signal which all depend on the same internal clock.
    Now, for each image, I record simultaneously the heartbeat and the signal from the stimulation apparatus. (This equals about 50 values for each signal per image)
    Saving clusters including two arrays of data is not possible. Knowing that I would like to open and work on the files easily afterwards and play all of it back simultaneously (the film showing the cells should run above the waveforms showing the heartbeat and the stimulation signals) wht would be the best way to save this large data files?
    Converting all images into arrays and saving a set of arrays, saving everything one by one images, heartbeat and stimulation and then using a VI to open everything at once, ...
    I know this is probably not vey complicated but if anyone has some experience, I would be grateful. As we will use it to record and exmaine films lasting abour ten minutes to half an hour, acquiring images at 10-20Hz, the amount of data becomes overwhelming very quickly...
    Thanks

    But you can indeed save and read data in form of clusters( containing arrays, strings, numerics , boolean etc)
    Look at attached VI's
    regards
    Dev
    Message Edited by devchander on 01-16-2006 06:05 AM
    Attachments:
    write cluster.vi ‏27 KB
    read cluster.vi ‏29 KB

  • Event structure to detect value change of a control within a cluster in an array

    I have 1D array that contains a cluster. The cluster contains a numeric and a boolean control.
    If the user starts to edit the numeric control value i would like to call one subVI, and if the boolean control value is changed, call a different subVI.
    The array control on the front panel allows the user to edit a number of the array elements. 
    I would like to use an event structure to detect a value change in the cluster. When editing the Events, in the Event Sources panel i get the option to select only the array, not the cluster within the array or the controls within the cluster. Can the Event structure be opened up to show controls within clusters and arrays?
    The solution i am using is to detect a mouse up event on the array and then use property nodes to  determine if the key focus is on the numeric, and  a case structure to determine which subVI to call. This works, but is there a better (simpler) way?
    Thanks, Blue.

    Thanks for the responses guys.
    The tricky bit was that i wanted the numeric control values to flag they were going to be edited, so i could call a subVI, before their values were changed by the user. This is done by using the key focus property node, - i need to detect changes on the fly rather than post the event.  Probably didn't make this clear enough in my original post. 
    The array is of variable size depending on if the user decides to insert or delete elements. The user also has the option to click and edit the array without having to do to much scrolling through the array index, as the FP shows several elements at a time. The Event Structure does a good job of automatically determining which element in the array is being edited, and returning those values to the property nodes. Turned out simpler than i thought it might be at one point!
    Cheers, Blue. 
    Message Edited by BlueTwo on 01-15-2009 06:52 AM
    Attachments:
    evstrct1.jpg ‏63 KB

  • Keeping Unique 1D Size in 2D array

    Is there a way to force Labview to maintain the original array dimension independently from one another when creating 2D or even possibly 3D arrays?  It appears to be autosized every set of inputs to the maximum size.  But I want to maintain each set of array size independent from one another.  How do I do that?
    Attachments:
    2D Array.vi ‏9 KB

    Sure.  Here is a screenshot showing buffer allocations.  Note the extra copy of the cluster using the traditional extraction of a single element from the array of clusters of arrays.  It is not there if using the In Place Element.  Code is is LabVIEW 8.5 (when the In Place Element was introduced).
    Note that in LabVIEW 2009, the buffer viewer will show a buffer on the output of the index array in the In Place Element.  This buffer is not a full copy, but a static allocation to handle indexing an out-of-bounds element.
    Message Edited by DFGray on 04-06-2010 08:38 AM
    This account is no longer active. Contact ShadesOfGray for current posts and information.
    Attachments:
    1DArrayOfClustersOf1DArrays.vi ‏15 KB

Maybe you are looking for

  • Reading file names in the unix box

    Hello, I did the following to read the files from the local directory. String s1 = "c:\samplefiles" File dir = new File(s1); if(dir.isDirectory()) String listoffiles [] = dir.list(); for(int i = 0; i <listoffiles.length ; i++) System.out.println(list

  • StartInstGui.sh error - exception thrown

    OS ver: HP-UX 11.23 NW ver: 7.0 SR2 I am trying to kick off the installation process for WebAS ABAP 7.0 SR2 on the HP-UX server. In the first terminal session, I have While inside tmp/sapinst_instdir: # /usr/sap/sapcds/Bussuite2005installmaster/IM_HP

  • Contract item text to be transferred in PO --Need help

    Hi, Need help. Is there any BADI for the following? Classic Scenario. Sourced shopping cart. Referring to service contract. When PO is created upon approval of sourced SC, then need to have the item text in contract to be copied in PO line item. Exam

  • ARD not active.

    I have enabled Apple Remote Management sharing in my Mac OSX Server Leopard, and i can control it from my machine and everything works fine, but when i restart the machine and when it leads to the login window, the apple remote desktop shows me "ARD

  • E-Commerce : Download Music

    Dreamweaver 8 Mac OSX I'm looking to add a paypal account to a client's website. He wants to be able to have customers download music for a fee. Any recommendations on how I should handle the downloading part of this? or is this something I need to t