Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55

Нужно переделать массив под строки

17.04.2010, 21:08. Показов 2881. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вводится по одному символу, а надо, чтобы вводилось строкой для работы фильтра:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class FilteredArray : virtual public Array
{
 
public:
    
    FilteredArray(long size):Array(size) { }
    bool Filter(char * string)
    {
        if (strlen(string) % 2 == 0)
        {
            return true;
        }
 
        return false;
    }
};
Добавление элементов:

C++
1
2
3
4
5
6
7
void Array::add(char x) 
{
   if(count < size)
   {
      p[count++] = x;
   }
}
пытаюсь вызвать таким образом:
C++
1
2
FilteredArray arr(size);
arr.Filter()
пишет, что error C2660: FilteredArray::Filter: функция не принимает 0 аргументов
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.04.2010, 21:08
Ответы с готовыми решениями:

Нужно переделать под 2х мерный массив
задача следующая, используя функции сортировки масcива, отсортировать строки матрицы есть вот такая прога, не пойму как переделать ее под...

Нужно переделать код под функции (одномерный массив)
«Однoмерные маcсивы», оформить каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве...

Под С++ нужно переделать
while pos(' ',s)&gt;0 do{пока есть пробелы} begin s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово} k:=0; for i:=1 to...

22
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
17.04.2010, 21:34
пишет, что error C2660: FilteredArray::Filter: функция не принимает 0 аргументов
Так функция, реально, не принимает 0 аргументов! она принимает указатель на char
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
17.04.2010, 21:53  [ТС]
FireNovel, а как под строки сделать не подскажете?
когда я добавляю:

C++
1
2
3
char *t;
FilteredArray arr(size);
arr.Filter(t);
то вылетает с этим:
Run-Time Check Failure #3 - The variable 't' is being used without being initialized.

как мне правильно сделать?
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
17.04.2010, 22:06
напиши так:
C++
1
2
3
char *t = "bla-bla-bla";
FilteredArray arr(size);
arr.Filter(t);
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
17.04.2010, 22:39  [ТС]
Цитата Сообщение от FireNovel Посмотреть сообщение
напиши так:
C++
1
2
3
char *t = "bla-bla-bla";
FilteredArray arr(size);
arr.Filter(t);
теперь не вылетает, но и ничего не делает.
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
17.04.2010, 23:07
теперь не вылетает, но и ничего не делает.
Что тебе нужно, чтоб она делала?
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 00:23  [ТС]
Цитата Сообщение от FireNovel Посмотреть сообщение
Что тебе нужно, чтоб она делала?
осуществляла фильтрацию по приведенному фильтру на четность вводимых строк
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 11:03
Цитата Сообщение от gvenog Посмотреть сообщение
осуществляла фильтрацию по приведенному фильтру на четность вводимых строк
это как?
функция bool FilteredArray::Filter(char * string) как я вижу проверяет четность длины строки, переданной ей в качестве параметра.
и все.

напиши русским языком, что ты хочешь получить.
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 13:10  [ТС]
Цитата Сообщение от Patch Посмотреть сообщение
это как?
функция bool FilteredArray::Filter(char * string) как я вижу проверяет четность длины строки, переданной ей в качестве параметра.
и все.

напиши русским языком, что ты хочешь получить.
Фильтр - правильный. Дело в том, что я не знаю как передать эту самую строку в качестве параметра, так как у меня задан массив символов и я хочу переделать, чтобы был массив строк.
Вот задание:
создать 2 различных класса, производные от класса динамической структуры, позволяющие сортировать и фильтровать выходные данные. Для этого вводятся виртуальные функции: для сортировки - функция сравнения двух строк, для фильтрации - предикат, определяющий будет ли строка присутствовать в выборе фильтра. Также создать класс, осуществляющий одновременно сортировку и фильтрацию.
Сортировка - по возрастанию целого значения, содержащегося в строке.
Фильтр - строки четной длины.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 13:32
Цитата Сообщение от gvenog Посмотреть сообщение
создать 2 различных класса, производные от класса динамической структуры
индус задание писал... или доцент, как минимум.
Цитата Сообщение от gvenog Посмотреть сообщение
позволяющие сортировать и фильтровать выходные данные
это я вообще не понял.
что есть выходные данные для объекта такого класса?
входные, допустим, строка.
а выходные?
ну, и самое главное, как эти данные будут оттуда выходить?
Цитата Сообщение от gvenog Посмотреть сообщение
для фильтрации - предикат, определяющий будет ли строка присутствовать в выборе фильтра.
надо все-таки переводить на русский.
по этому описанию можно написать десяток принципиально по-разному работающих классов.
с разными результатами, естественно.

пиши все-таки по-нашему, чего тебе надобно...
0
 Аватар для broDiaga_cpp
24 / 14 / 2
Регистрация: 20.02.2010
Сообщений: 181
18.04.2010, 13:45
Вот ссылка на университетские лабораторные. Там полные, работающие коды. Всё от простого вывода на экран в консоли до использования файлов. Лабораторные с первого курса. Пользуйтесь) Кому помог, нажмите кнопочку "сказать спасибо")
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 13:46  [ТС]
Patch, мне в первую очередь надо преобразовать массив под ввод строк. Я ввожу так:
C++
1
2
3
4
SortedArray arr1(size);
arr1.add('p');
arr1.add('r');
arr1.add('o');
и т.д. по одному символу. а, если ввожу так:
C++
1
arr1.add("pora");
error C2664: Array::add: невозможно преобразовать параметр 1 из 'const char [5]' в 'char'
Функция добавления написана выше. Как мне её переделать, чтобы вводилось строками? или что не так я делаю?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 14:20
тогда уж так.
C++
1
2
3
4
5
6
7
8
9
10
void Array::add(char * x) 
{
 
          while(*x != 0)
          {
                  if(count >= size) return;
                  p[count++] = *x;
                  x++;
          }
}
а лучше оставь обе функции.
пусть будут перегруженные, в зависимости от типа параметра.

только вот, как я понимаю, p - массив с вполне определенным размером.
это не динамический массив.
или я опять чего-то не понял?
1
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 14:35  [ТС]
Patch, спасибо! код работает. Да, массив не динамический.
Как мне теперь вызвать этот фильтр?
C++
1
2
FilteredArray arr(size);
arr.Filter();
Что задать в качестве аргумента? И как объявить этот аргумент не подскажете?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 14:43
Цитата Сообщение от gvenog Посмотреть сообщение
Что задать в качестве аргумента? И как объявить этот аргумент не подскажете?
я не понял, что должен делать фильтр.
вызвать можно
C++
1
2
if(arr.Filter("pora"))
               MessageBox(TEXT("В строке четное число символов!"));
но в результате ничего дельного не получится.
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 14:56  [ТС]
Фильтр должен находить чётные по длине строки и убирать их, оставляя нечетные и вывести на экран только нечетные строки.
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 15:38
Цитата Сообщение от gvenog Посмотреть сообщение
Фильтр должен находить чётные по длине строки и убирать их, оставляя нечетные и вывести на экран только нечетные строки.
где находить?
у тебя одна строка в классе.
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 15:47  [ТС]
В этом и вопрос. Как создать ещё строки для сравнения?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
18.04.2010, 16:00
вот мы и перешли к главному вопросу, который меня с самого начала смущал.
вопросу внятной формулировки задачи на русском языке.

судя по всему, класс должен хранить неопределенное количество строк неопределенной длины.
так?
и какими-то функциями обрабатывать то, что в нем там уже есть.

но все равно неясно, что означает фраза в задаче "создать 2 различных класса, производные от класса динамической структуры"
каков базовый класс, от которого они наследуются?
и неясно, что за "предикат", определяющий "будет ли строка присутствовать в выборе фильтра".
0
 Аватар для gvenog
1 / 1 / 0
Регистрация: 17.04.2010
Сообщений: 55
18.04.2010, 16:12  [ТС]
Так как массив у меня не динамический, то количество строк - определенное надо и определенной длины.
Базовый класс - Array - от него и наследуются.
Насчет предиката и сама не поняла - просто должен быть фильтр, как я раньше писала.
вот что у меня есть:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#pragma once
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class Container
{
    virtual void add(char x) = 0;
    virtual void remove(char a) = 0;
    virtual long length() const {return count;} = 0; //не реализована
};
 
class Array : public Container
{
    protected:
    long size;        //max size  of array
    long count;       //count of elements
    char* p;          //pointer to the beginning of the array
 
public:
    //constructors
    Array(long s=10) 
    {
       count =0;
       size=s;
       p = new char[size];
    }
 
    Array(const Array& cp)
    {
        count=cp.count;
        size=cp.size;
        p=new char[size];
        for(unsigned i=0;i<count;++i)
        {
            p[i]=cp.p[i];
        }
    }
    //destructor
    ~Array()
    {
       if(p) delete[] p;
    }
    //member functions
    virtual void add(char x);
    virtual void add(char * x);
    virtual void remove(char a);
    void print() const; 
    long find (char);
    virtual bool Filter(char *); // фильтрация
    virtual void Sort(); // сортировка
    //operators
    Array operator=(Array cp);
    Array operator+(const char*);
    Array operator-(const char*);
    bool operator <(Array&);
    bool operator >(Array&);
    bool operator ==(Array&);
    bool operator !=(Array&);
    char operator [](int k);
    friend ostream& operator <<(ostream& out, Array& a);
};
 
// класс, осуществляющий фильтрацию
class FilteredArray : virtual public Array
{
    // в этом классе перегрузим метод Filter базового класса
 
public:
    
    FilteredArray(long size):Array(size) { }
    bool Filter(char * string)
    {
        if (strlen(string) % 2 == 0)
        {
            return true;
        }
 
        return false;
    }
};
 
// класс, осуществляющий сортировку
class SortedArray : virtual public Array
{
    // в этом классе перегрузим метод Sort базового класса
 
public:
 
    SortedArray(long size):Array(size) { }
    void Sort()
    {
        for (unsigned i = 0; i < count; i++)
        {
            for (unsigned j = count - 1; j > i; j--)
            {
                if (p[j-1] > p[j])
                {
                    char t = p[j];
                    p[j] = p[j-1];
                    p[j-1] = t;
                }
            }
        }
 
    }   
};
 
// класс, осуществляющий и сортировку, и фильтрацию
class SortedFilteredArray : public SortedArray, public FilteredArray
{
    // класс будет пустым, так как всё реализовано в базовых классах
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2010, 16:12
Помогаю со студенческими работами здесь

Нужно переделать под С
Нужно код с++ переделать на с #include &lt;stdio.h&gt; #include &lt;locale.h&gt;//для языка #include &lt;iostream&gt;//для cout и cin #include...

Нужно переделать программу с С++ под С
Доброе утро форумчани! Есть программа написанная на С++ #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; ...

Нужно переделать под БИХ фильтр
Привет, задача такая: нужно переделать цикл в этом коде под БИХ фильтр, сейчас он сделан под КИХ, и почему то вообще не хочет пропускать...

нужно компонент переделать под XE5
имеется компонент на делфи 7 ну там кнопки чекбоксы,вот их нужно переделать под xe5 кто возьмется?буду очень благодарен

Нужно переделать программа под Pascal ABC
label n1,n2; var A : arrayof integer; b, t : arrayof integer; n,l,x,c,i,j : integer; Begin writeln('vvedite koli4estvo vershin...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru