Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 18:21   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Класс контейнер - работа со строками[C++]

Написал программу по следующему задание:
Класс контейнер - абстракция текста, метод удаления одной, метод добавления строки, метод очистки текста, метод измерения самой длинной строки, метод вывода. Пишу в VS 2008 professional.
У меня возникли две проблемы:
1. Из класса text мне нужно перенести метод string getMaxLenghtRow() в класс Row и реализовать его в файлик Row.cpp, но после переноса мне выдает следующую ошибку, подскажите как ее исправить. Смысл ошибки я понимаю, я не понимаю как правильно организовать в программе чтобы не выбивало эту ошибку, покажите пожалуйста по возможности уже в исправленном коде как должно быть.
Цитата:
Row.cpp
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(15) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(15) : error C2228: left of '.dataRow' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(16) : error C2065: 'amountRows' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(18) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(18) : error C2228: left of '.dataRow' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(18) : error C2228: left of '.length' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(20) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\r ow.cpp(20) : error C2228: left of '.dataRow' must have class/struct/union
2. Нужно добавить метод в text.h, ну и соотвественно text .cpp и чтобы выводилось в main.cpp, который будет удалять символ из сроки, например строка "abcdft" и нужно удалить из нее символ "а", тоже покажите пожалуйста по возможности уже в написанном коде как должно быть. Реализацию метода можно сделать как то так думаю, но как организовать в программе свой не пойму.

Код:
String s = "aljfhwfhgc vwiu";
s.Delete(10, 5)
Код программы:
Код:
//Row.h
#pragma once
#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

class Row
{
public:
    string dataRow;
    Row();
    Row(string);
    string getMaxLenghtRow();
};

//Row.cpp
#include "Row.h"
#include "text.h"

Row::Row()
{
}

Row::Row(string str)
{
	dataRow = str;
}

string Row::getMaxLenghtRow()
{ 
    string max = texte[0].dataRow;
    for (int i = 1; i < amountRows; i++)
    {
        if (texte[i].dataRow.length() > max.length())
        {
            max = texte[i].dataRow;
        }
    }

    return max;
}
//Text.h
class Texts
{
public:
    
    Texts();
    void addRow(string str);
    void removeRow(int numberRow);
    void removeAll();
    
    string ToString();
    Row texte[100];
    int amountRows;
};

//text.cpp
#include "text.h"
#include "stdafx.h"

Texts::Texts()
{
    amountRows = 0;
}
void Texts::addRow(string str)
{

    texte[amountRows].dataRow = str;
    
    amountRows++;
}
void Texts::removeRow(int numberRow)
{
    for (int i = numberRow; i < (countRows - 1); i++)
    {
        texte[i] = texte[i + 1];
    }
    texte[countRows - 1].dataRow = "";
    amountRows--;
}
void Texts::removeAll()
{
    
    for (int i = 0; i < countRows; i++)
    {
        texte[i].dataRow = "";
    }
    amountRows = 0;
}



string Texts::ToString()
{
    string str = "";
    for (int i = 0; i < amountRows; i++)
    {
        str = str + " " + texte[i].dataRow;
    }

    return str;
}

//main.cpp
#include "text.h"
#include "Row.h"


void main()
{
    cout<<"Vvedit kilkist ryatkiv: ";
    
    int countRow;
    
    cin>>countRow;
            
    cout<<"Vvedit ryadki: ";
    
    Texts objText;
    Row objRow;
    
    string temp;

    for (int i = 0; i < countRow; i++)
    {
        
        cin>>temp;
        objText.addRow(temp);
    }
    
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";

    cout<<"\nVvedit nomer ryadka dlya vudalennya: ";
    
    int numberOfRow;
    
    cin>>numberOfRow;
     
    if (numberOfRow < countRow)
    {
        
        objText.removeRow(numberOfRow - 1);
    }

    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";

    cout<<"\nNaydovshiy ryadok v teksti: " + objRow.getMaxLenghtRow();

    

    cout<<"\nOchischennya texty.";
    
    objText.removeAll();
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
}

Последний раз редактировалось ArniLand; 31.03.2010 в 19:04. Причина: Забыл добавить реализацию класса Row
ArniLand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс контейнер - абстракция текста [C++] ArniLand Общие вопросы C/C++ 4 29.03.2010 15:02
Работа со строками (Си) Geremy Помощь студентам 5 04.12.2009 21:46
Работа со строками. tae1980 Microsoft Office Excel 2 18.04.2009 16:38