int* mergeAlgo(char* filepath1, char* filepath2) { char* data1 = readFileAsString(filepath1); char* data2 = readFileAsString(filepath2); int count1 = countCommas(data1)+1; int count2 = countCommas(data2)+1; int* arr1 = (int*) calloc(sizeof(int),count1); int* arr2 = (int*) calloc(sizeof(int),count2); splitStringIntoArray(data1, arr1, count1); splitStringIntoArray(data2, arr2, count2); int arraySize = count1 + count2; int* arr3 = (int*)calloc(sizeof(int), arraySize); int i = 0; int index1 = 0; int index2 = 0; for(i = 0; i < arraySize; ++i){ if((arr1[index1] >= arr2[index2])||(index2==count2)){ arr3[i] = arr1[index1]; ++index1; } else if ((arr2[index2] > arr1[index1])||(index1==count1)){ arr3[i] = arr2[index2]; ++index2; }; }; return arr3; }
int main(){ char originalstr[] = "USA,Canada,Mexico,Bermuda,Grenada,Belize"; char* string9 = malloc((strlen(originalstr)+1)*sizeof(char)); string9 = strcpy(string9, originalstr); // need a copy because calls to strtok(through wordCount and splitStringIntoArray) destroy the original string const char* delimiter = ","; int ct = wordCount(string9, delimiter); assert(ct>0); // crashes the program if assertion is not true char* resultarr[ct]; // declares array of appropriate size string9 = strcpy(string9, originalstr); splitStringIntoArray(string9, resultarr, delimiter); printf("\nAnswer #9 is\n"); for (int i = 0; i < ct; i++) { printf("Token %d is %s\n",i,resultarr[i]); } free(string9); return 0; }
int main(void) { int numOfThreads = 5; int i; int count = 0; char* data = readFileAsString("data.in"); count = countCommas(data) + 1; int chunkCount = initArrayAndChuckTbl(count); splitStringIntoArray(data, sortArray, count); pthread_barrier_init(&sortSync, NULL, numOfThreads + 1); pthread_t threads[numOfThreads]; writeTimestamp(); printf("Create %d threads\n", numOfThreads); for (i = 0; i < numOfThreads; i++) { pthread_create(&threads[i], NULL, sorting_thread, (void *)i); } pthread_barrier_wait(&sortSync); puts("All Threads Done"); puts("\nStart of merge\n"); merge(chunkCount); puts("End of merge\n"); return EXIT_SUCCESS; }
InputDeviceVRPNButton::InputDeviceVRPNButton(const std::string name, const ConfigMapRef map) { std::string vrpnname = map->get( name + "_InputDeviceVRPNButtonName", "" ); std::string events = map->get( name + "_EventsToGenerate","" ); MinVR::Logger::getInstance().log(std::string("Creating new InputDeviceVRPNButton (") + vrpnname + ")", "Tag", "MinVR Core"); _eventNames = splitStringIntoArray( events ); _vrpnDevice = new vrpn_Button_Remote(vrpnname.c_str()); if (!_vrpnDevice) { std::stringstream ss; ss << "Can't create VRPN Remote Button with name " + vrpnname; MinVR::Logger::getInstance().assertMessage(false, ss.str().c_str()); } _vrpnDevice->register_change_handler(this, buttonHandler); }
void ICubeXDevice::init() { for (int i=0;i<32;i++) _channelData[i] = 0.0; Array<std::string> channelList = splitStringIntoArray(_activeChannelsStr); for (int i=0;i<channelList.size();i++) { int channel = stringToInt(channelList[i]); debugAssert(channel <= 32); debugAssert(channel >= 1); _activeChannels.append(channel-1); } if (_debug) { printMidiDevices(); cout << "ICubeX:: Active Channels = [ "; for (int i=0;i<_activeChannels.size();i++) cout << intToString(_activeChannels[i]+1) << " "; cout << "]" << endl; } // Open Midi Out device _out = MidiOutDevice::fromMidiDeviceNumber(_outDevNum); // Send config messages to Midi-Out // Reset the device each time to avoid bad initial data unsigned char resetMsg[] = {0xF0, 0x7D, 0x00, 0x22, 0xF7}; _out->sendMessage(resetMsg, sizeof(resetMsg)); if (_mode == STAND_ALONE_MODE) { // Set device to stand-alone mode unsigned char setStandAloneModeMsg[] = {0xF0, 0x7D, 0x00, 0x5A, 0x01, 0xF7}; _out->sendMessage(setStandAloneModeMsg, sizeof(setStandAloneModeMsg)); } else { // Set device to host mode unsigned char setHostModeMsg[] = {0xF0, 0x7D, 0x00, 0x5A, 0x00, 0xF7}; _out->sendMessage(setHostModeMsg, sizeof(setHostModeMsg)); // Set the resolution for each channel to 12-bit rather than the 7-bit default unsigned char hiResMsg[] = {0xF0, 0x7D, 0x00, 0x02, 0x40, 0xF7}; for (int i=0;i<32;i++) { hiResMsg[4] = 0x40 + i; _out->sendMessage(hiResMsg, sizeof(hiResMsg)); } } // Set the sampling interval, hardware default is 100ms unsigned char msb = _samplingInterval / 128; unsigned char lsb = _samplingInterval % 128; unsigned char setIntervalMsg[] = {0xF0, 0x7D, 0x00, 0x03, 0x00, 0x64, 0xF7}; setIntervalMsg[4] = msb; setIntervalMsg[5] = lsb; _out->sendMessage(setIntervalMsg, sizeof(setIntervalMsg)); // Send the STREAM command to each active channel, turn off streaming for non-active channels unsigned char enableChannelMsg[] = {0xF0, 0x7D, 0x00, 0x01, 0x40, 0xF7}; for (int i=0;i<32;i++) { if (_activeChannels.contains(i)) { enableChannelMsg[4] = 0x40 + i; } else { enableChannelMsg[4] = 0x00 + i; } _out->sendMessage(enableChannelMsg, sizeof(enableChannelMsg)); } // Open MidiIn for listening _in = MidiInDevice::fromMidiDeviceNumber(_inDevNum); }