Beispiel #1
0
int maxstring(char *a,int low,int high)
{
    int mid=0,leftstring=0,rightstring=0,midstring=0,sum=0;
    if(high-1<=low)
        return (high-1==low?2:1);
    
    else if(high-1>low)
    {
        mid=(high+low)/2;
        leftstring=maxstring(a,low,mid);
        rightstring=maxstring(a,mid+1,high);
        midstring=crossmax(a,low,mid,high);
        sum=(leftstring>rightstring?leftstring:rightstring);
    }
    return (sum>midstring?sum:midstring);
};
Beispiel #2
0
/*
 * Modify this in part B to accept command-line arguments.
 */
int main(int argc, char* argv[]) {
    char* strings[] = {"hello world!", "", "welcome to cs61c", "good day"};
    printf("If the char is 'd', maxstring() should return 'good day'. Result:\n%s\n", maxstring(strings, 4, 'd'));
    printf("If the char is ' ', maxstring() should return 'welcome to cs61c'. Result:\n%s\n", maxstring(strings, 4, ' '));
    printf("If the char is 'b', maxstring() should return ''. Result:\n%s\n", maxstring(strings, 4, 'b'));
    printf("If the char is 'o', maxstring() should return 'hello world!'. Result:\n%s\n", maxstring(strings, 4, 'o'));
    return 0;
}
Beispiel #3
0
int main(){

   //tmp value
   char* str1 = "garbage!";
   char* str2 = "dog";

   printf("The final string is: %s\n", maxstring(str1, str2));

   return 0;
}
Beispiel #4
0
int main(void)
{
    int n=0,largest=0,largest1=0;
    FILE *fr=fopen("beads.in","r"),*fw=fopen("beads.out","w");
    fscanf(fr,"%d",&n);
    char arr[n+1],arr1[2*n+1];
    fscanf(fr,"%s",arr);
    //fread(arr,sizeof(arr),1,fr);
    largest=maxstring(arr,0,n-1);
    strcpy(arr1,arr);
    strcat(arr1,arr);
    largest1=crossmax(arr1,0,n-1,2*n-1);
    //fprintf(fw,"%d",largest);
    largest=(largest>largest1?largest:largest1);
    largest=(largest>n?n:largest);
    fprintf(fw,"%d\n",largest);
    return 0;
}
Beispiel #5
0
void add_buffer(BufferInfo *infoptr, char *str, int partial)
{
    char *q;
    Buffer *p;
    int len;

    /* Partial lines so append incoming data */
    if(infoptr->partial) {
        if(partial) {
            debug(2, "add_buffer (partial): adding to line. This line is: partial");
        }
        else {
            debug(2, "add_buffer (partial): adding to line. This line is: done");
        }

        len = strlen(infoptr->tail->buf) + strlen(str);
        q = (char *)malloc(len + 1);

        if(!q) {
            msg("-- Malloc: Could not allocate socket output!");

            return;
        }

        strcpy(q, infoptr->tail->buf);
        strcat(q, str);
        q[len] = '\0';
        strfree(infoptr->tail->buf);
        infoptr->tail->buf = q;

        /* Are we newline terminated yet? */
        infoptr->partial = partial;

        return;
    }

    /* New data coming in, set up linked list */
    p = (Buffer *)malloc(sizeof(Buffer));

    if(!p) {
        msg("-- Malloc: Could not allocate socket output!");

        return;
    }

    if(!infoptr->tail) {
        infoptr->tail = p;
        infoptr->head = p;
        p->next = NULL;
        p->prev = NULL;
    }
    else {
        p->next = infoptr->tail;
        infoptr->tail->prev = p;
        p->prev = NULL;
        infoptr->tail = p;
    }
    
    ++info.lines_read;
    p->buf = maxstring(str);
    infoptr->partial = partial;

    if(partial) {
        debug(2, "add_buffer (newline): adding to line. This line is: partial");
    }
    else {
        debug(2, "add_buffer (newline): adding to line. This line is: done");
    }
}