Beispiel #1
0
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;
}
Beispiel #2
0
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;
    
    
}
Beispiel #3
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);
}
Beispiel #5
0
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);
}