Форум программистов, компьютерный форум CyberForum.ru

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
27.11.2011, 17:04     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
using namespace std;
 
void obr1(char **s, char **mas, int n, int m)
{
    int i;
    int k;
    char *tm;
    for(i = 0; i < n; i++)
    {
        k = -1;
        tm = s[i];
        for(i = 0; i < n; i++)
        {
            if (strcmp(tm,s[i])==0)
            {
                k++;
            }
        }
        if(k > 0)
        {
            m++;
            mas = new char *[m]();
            mas[m-1]=tm;
        }
    }
    for(i = 0; i < m; i++)
    {
        cout << mas[i] << "\n";
    }
}
s-массив слов.
mas - массив в который надо записать все слова встречающиеся более одного раза.
n - размер массива s.
m - размер массива mas.

собственно , не могу понять ошибку , по идее должен записывать слова встречающиеся в массиве несколько раз , но не записывает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 17:04     Найти слова, повторяющиеся более одного раза, не могу найти ошибку
Посмотрите здесь:

найти максим знаение, встречающееся более одного раза C++
Найти максимум, который встречается более одного раза. C++
Найти максимально из чисел, встречающегося в матрице более одного раза C++
Найти минимальное число, встречающееся в заданном векторе более одного раза C++
Найти и напечатать числа, которые встречаются в массиве более одного раза C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lupus
 Аватар для Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 319
27.11.2011, 18:28     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #2
Цитата Сообщение от Skip Посмотреть сообщение
C++
1
2
3
4
5
6
if(k > 0) 
{ 
     m++; 
     mas = new char *[m](); 
     mas[m-1]=tm; 
}
Смотрится не очень, особенно запись в ячейку с индексом равному размеру массива
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
27.11.2011, 18:38  [ТС]     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #3
ну это же динамический массив и заранее я не знаю , сколько повторяющих слов будет
Lupus
 Аватар для Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 319
27.11.2011, 18:48     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #4
но если в цикле каждый раз создавать новый массив, данные о старом(ых) будут утрачены...
или я чего-то не догоняю
да и delete не хватает
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
27.11.2011, 19:46  [ТС]     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #5
Цитата Сообщение от Lupus Посмотреть сообщение
но если в цикле каждый раз создавать новый массив, данные о старом(ых) будут утрачены...
или я чего-то не догоняю
да и delete не хватает
да это я уже догнал , щас проблема в другом ,
я создал 2ой массив в который переношу на время , но проблема в том что когда я удаляю первый массив , то значение во втором тоже затирается. тк значение из первого я переношу во 2ой через указатель
Lupus
 Аватар для Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 319
27.11.2011, 19:48     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #6
Цитата Сообщение от Skip Посмотреть сообщение
да это я уже догнал , щас проблема в другом ,
я создал 2ой массив в который переношу на время , но проблема в том что когда я удаляю первый массив , то значение во втором тоже затирается. тк значение из первого я переношу во 2ой через указатель
Я вообще по указателям не силен, но здесь скорее всего нужен еще один указатель.
А так, вообще, если это не лаба по массивам, я бы смотрел в сторону STL-контейнеров, листа в частности
Skip
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
27.11.2011, 20:04  [ТС]     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #7
эх если бы -__-
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2011, 20:48     Найти слова, повторяющиеся более одного раза, не могу найти ошибку
Еще ссылки по теме:

C++ найти максимальное из чисел, встречающееся в заданном целочисленном массиве более одного раза
Найти максимальное число из, встречающихся в матрице более одного раза C++
Найти максимальное из чисел встречающихся в массиве более одного раза C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
27.11.2011, 20:48     Найти слова, повторяющиеся более одного раза, не могу найти ошибку #8
Skip, что вообще надо из текста перепсать слова несколько раз в нём встречающиеся в другой 2-х мерный массив?Язык Си/С++?Вообще я бы рекомендовал использовать std::string но это так. Основное - что нужно сделать в программе + ввод текста с клавиатуры или файла, пишем!

Добавлено через 1 минуту
Цитата Сообщение от Skip Посмотреть сообщение
if(k > 0)
* * * * * * * * {
* * * * * * * * * * * * m++;
* * * * * * * * * * * * mas = new char *[m]();
* * * * * * * * * * * * mas[m-1]=tm;
* * * * * * * * }
- это концептуально неверный подход - нужно добавлять к уже имеющемся массиву а не создавать новый, данные о предыдущих словах просто будут уничтожены...
Yandex
Объявления
27.11.2011, 20:48     Найти слова, повторяющиеся более одного раза, не могу найти ошибку
Ответ Создать тему
Опции темы

Текущее время: 17:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru