Задача на обработку строк символов, С++,

Тема в разделе "C/C++/C#", создана пользователем -, 7 апр 2010.

  1. Гость

    Проверьте пожалуйста - первое задание


    1)Обработка исходной строки. Задана строка символов, состоящая из слов, разделенных символами «пробел». При этом между двумя словами может находиться более одного символа-разделителя. Также символы-разделители могут находиться в начале и/или конце строки. Слова состоят из букв латинского алфавита.
    Необходимо определить количество слов, входящих в строку (этот алгоритм реализуется в виде отдельной функции). Затем необходимо создать новый массив строк, элементы которого содержат слова данной строки и массив целых чисел, первый элемент которого содержит количество разделительных символов, стоящих перед первым словом, второй элемент – количество таких символов перед вторым словом и т.д. Последний элемент этого массива должен содержать количество разделительных символов, стоящих в строке между концом последнего слова и концом строки (для реализации этого алгоритма необходимо модифицировать функцию разбиения строки на слова, приведенную в рабочем материале).

    2)Реализуйте один из быстрых алгоритмов поиска подстроки (Рабина-Карпа или Кнута-Морриса-Пратта).


    вот что у меня получилось:

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    #include "stdafx.h"
    #include <string.h>
    #include <stdlib.h>

    char s[255]="Hello my world";

    int WordsDontComeEasy(char *ss){
    int k=0;
    for(int i=0;i<=strlen(ss);i++){k+=( (ss[i]==' ')&&(ss[i+1]!=' ') )?1:0;}
    return ++k;
    }

    void cpy(char *ss, int wnum, char *t){
    int i=0;
    for(;(i<=strlen(ss))&&(wnum>0);i++){ if( (ss[i]==' ')&&(ss[i+1]!=' ') ){--wnum;}}
    printf("%d\t",i);
    int k;
    for(k=0;(i<=strlen(ss))&&(ss[i]!=' ');i++,k++){
    t[k]=ss[i];
    }
    t[k]=0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    int k=WordsDontComeEasy(s);
    char **a= new char*[k];
    printf("%s - Words Count= %d\n",s,k);
    for(int i=0;i<k;i++){
    a[i]=new char[255];
    cpy(s,i,a[i]);
    }
    printf("\n");
    for(int i=0;i<k;i++){
    printf("%s\n",a[i]);
    }

    getchar();
    return 0;
    }

    результат

    Hello my world - Words Count= 3
    0 7 10
    Hello
    my
    world
     
Загрузка...
Похожие Темы - Задача на обработку
  1. elzim
    Ответов:
    0
    Просмотров:
    932
  2. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.128
  3. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.107
  4. MonteCristo
    Ответов:
    1
    Просмотров:
    852
  5. bort
    Ответов:
    1
    Просмотров:
    1.181

Поделиться этой страницей