int do_sum(TreeNode *root, int cur_sum)
    {
        if(!root)
            return 0;
        cur_sum = cur_sum * 10 +  root->val;
        if(!root->left && !root->right)
            return cur_sum;
        return do_sum(root->left, cur_sum) 
                + do_sum(root->right, cur_sum);

    }
示例#2
0
文件: add.c 项目: maxrenke/snippets
int main(int argc, char *const argv[])
{
    int ret = EXIT_SUCCESS;
    unsigned int err;
    unsigned int n;
    double *ary;

    if (argc < 2)
	usage();

    err = read_number_of_values(stdin, &n);
    if (err)
	return EXIT_SUCCESS;

    ary = malloc(n * sizeof(*ary));
    if (!ary) {
	perror("malloc failed");
	goto out;
    }

    err = read_doubles(stdin, ary, n);
    if (err)
	goto out;

    err = do_sum(stdout, argv[1], ary, n);
    if (err)
	goto out;

  out:
    if (ary)
	free(ary);

    return ret;
}
int main(int argv, char **args) {
    int k = do_sum(10, 20);

    printf("output: %d\n", k);

    return 0;
}
示例#4
0
static void
server_callback (SoupServer *server, SoupMessage *msg,
		 const char *path, GHashTable *query,
		 SoupClientContext *context, gpointer data)
{
	char *method_name;
	SoupXMLRPCParams *params;
	GError *error = NULL;

	if (msg->method != SOUP_METHOD_POST) {
		soup_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED);
		return;
	}

	soup_message_set_status (msg, SOUP_STATUS_OK);

	method_name = soup_xmlrpc_parse_request (msg->request_body->data,
						 msg->request_body->length,
						 &params, &error);
	if (!method_name) {
		soup_xmlrpc_message_set_fault (msg, SOUP_XMLRPC_FAULT_PARSE_ERROR_NOT_WELL_FORMED,
				       "Could not parse method call: %s", error->message);
		g_clear_error (&error);
		return;
	}

	if (!strcmp (method_name, "sum"))
		do_sum (msg, params);
	else if (!strcmp (method_name, "countBools"))
		do_countBools (msg, params);
	else if (!strcmp (method_name, "md5sum"))
		do_md5sum (msg, params);
	else if (!strcmp (method_name, "dateChange"))
		do_dateChange (msg, params);
	else if (!strcmp (method_name, "echo"))
		do_echo (msg, params);
	else if (!strcmp (method_name, "ping"))
		do_ping (msg, params);
	else {
		soup_xmlrpc_message_set_fault (msg, SOUP_XMLRPC_FAULT_SERVER_ERROR_REQUESTED_METHOD_NOT_FOUND,
				       "Unknown method %s", method_name);
	}

	g_free (method_name);
	soup_xmlrpc_params_free (params);
}
示例#5
0
int process(unsigned nframes, void *v)
{
    (void) v;
    float seq_sqr[nframes];
    float seq_noise[nframes];
    float sqr[nframes];
    float noise[nframes];
    float lfo_f_out[nframes];
    float filter_in[nframes];
    float *output = (float*) jack_port_get_buffer(port, nframes);
	
    void *josc_buf = jack_port_get_buffer(josc, nframes);
    jack_midi_event_t in_event;
	jack_nframes_t event_count = jack_midi_get_event_count(josc_buf);
    // tag::buf-read[]
	if(event_count)
	{
		for(unsigned i=0; i<event_count; i++)
		{
			jack_midi_event_get(&in_event, josc_buf, i);
            assert(*in_event.buffer == '/');
            RtDataImpl d;
            ports.dispatch((char*)in_event.buffer+1, d);
		}
	}

    while(uToB.hasNext())
    {
        RtDataImpl d;
        d.matches = 0;
        ports.dispatch(uToB.read()+1, d);
        if(d.matches == 0)
            fprintf(stderr, "Unknown Port '%s'\n", uToB.peak());
    }
    // end::buf-read


    gen_seq(seq_sqr, seq_noise, &seq, nframes);
    gen_noise(noise, seq_noise, nframes);
    gen_square(sqr, seq_sqr, &osc, nframes);
    gen_lfo(lfo_f_out, &lfo, nframes);
    do_sum(filter_in, noise, sqr, nframes);
    do_filter(output, filter_in, lfo_f_out, &filter, nframes);
    return 0;
}
 int sumNumbers(TreeNode *root) {
     return do_sum(root, 0);
 }