Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задача на строки, помогите найти ошибку 
:(
    Опции темы
pharao2n
Дата 27.12.2011, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.12.2011

Репутация: нет
Всего: нет



короче есть текст, есть массив разделителей, считываем текст, пока не найдем строку, в которой кол-во одниковых слов больше N, потом найти слова, которые оканчиваются подстрокой А, заменить их на заданное слово С, если меняли все меньше T раз - встасить строку B перед строкой текста. Массив разделителей - строка символов-разделителей, введенных без пробелов, пробел - разделитель, если указан в этом массиве.

начал писать, пытаюсь реализовать ввод и проверку окончания ввода, но где-то упираюсь в незарезервированую память, вобщем вот код
Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
    char *space,*substr,*zamstr,*forwardstr,tmp[256],**text,**words;
    int nword,nswap,i;
    //razddeliteli
    gets(tmp);
    space=(char*)malloc((strlen(tmp)+1)*sizeof(char));
    strcpy(space,tmp);

    //kol-vo slov v stroke
    scanf("%d",&nword);

    //substr
    gets(tmp);
    substr=(char*)malloc((strlen(tmp)+1)*sizeof(char));
    strcpy(substr,tmp);

    //slovo-zamena
    gets(tmp);
    zamstr=(char*)malloc((strlen(tmp)+1)*sizeof(char));
    strcpy(zamstr,tmp);

    //kol-vo zamen
    scanf("%d",&nswap);

    //stroka kotory pihaem pered etim vsem
    gets(tmp);
    forwardstr=(char*)malloc((strlen(tmp)+1)*sizeof(char));
    strcpy(forwardstr,tmp);

    //vvod teksta
    text=(char**)malloc(sizeof(char*));
    words=(char**)malloc(sizeof(char*));
    int eoi=0,numword=0;
    for (i=0;!eoi;i++)
    {
        //vvod i-oi str
        gets(tmp);
        text[i]=(char*)malloc((strlen(tmp)+1)*sizeof(char));
        strcpy(text[i],tmp);

        //proverka okonchania vvoda
        int k,j,count,lenword;
        char *b,*e,*word;
        while (*b != '\0')
        {

            while ( strchr(space, *b) && *b != '\0' )
            {
                ++b;
            }

            e=b;

            while ( !strchr(space, *e) && *e != '\0')
            {
                ++e;
            }

            words=(char**)realloc(words,(numword+1)*sizeof(char*));
            word=(char*)malloc((e-b)*sizeof(char));
            numword++;lenword=e-b;

            for (;b<=e;b++)
            {
                strcat(word,b);
            }

            words[numword-1]=(char*)malloc((lenword+1)*sizeof(char));
            strcat(words[numword-1],word);
        }

        for (k=0;k<numword;k++)
        {
            for (j=k;j<=numword;j++)
            {
                if (strcmp(words[k],words[j])==0) count++;
            }
        }
        if (count>nword) eoi=1;
    }
}

помогите найти ошибку, еще лучше была бы помощь в написании все программы, я немного не догоняю, как сделать замену слов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.