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

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

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

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

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

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

Написал программу по такому заданию
1.Описание контейнерного класса:
Цитата:
Класс-контейнер, который является абстракцией текста и состоит из объектов класса-строки и методов добавления строки к тексту, удаление строки из текста, очистка текста, получения длины самой длинной строки, выведение текста.
Выдает ошибки при компиляции, не могу понять что не правильно. Пишу в компиляторе VS 2008 professional. Вот код программы:
Код:
//text.h
#include "Row.h"

const int countRows = 100;

class Texts
{
public:
	Texts();
	void addRows(string str);
	void removeAll();
	void removeRow(int numberRow);
	string getMaxLenght();
	string ToString();

	Row texte[100];
	int amountRows;
};

//Row.h
#include <string>
#include <iostream>

using namespace std;

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

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

Row::Row()
{
}

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

//laba3.cpp


#include "stdafx.h"
#include "text.h"

void Texts::addRows(string str)
{
	texte[amountRows].dataRow = str;
    amountRows++;
}

void Texts::removeRow(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::getMaxLenght()
	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
}

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 "stdafx.h"
void main()
{
	cout<<"Введите количество строчек: ";
	int countRow;
	cin>>countRow;
	cout<<"Введите строчку: ";
	Texts objText;
	string temp;
	
	for (int i=0; i < countRow; i++)
	{
		cin>>temp;
		objText.addRows(temp);
	}

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

	cout<<"\nВведите номер строчки: ";
	int numberOfRow;
	cin>>numberOfRow;

	if (numberOfRow < countRow)
	{
		objText.removeRow(numberOfRow - 1);
	}

    cout<<"----\n\n"<<objText.ToString()<<"\n----"\n;
	
	cout<<"\nСамая длинная строчка в тексте: "<<objText.getMaxLenghtRow();

	cout<<"\nОчистка текста.";
	objText.removeAll();
	cout<<"----\n\n"<<objText.ToString()<<"\n----"\n;
}
ArniLand вне форума Ответить с цитированием
Старый 28.03.2010, 22:09   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
   return max;
Само в глаза бросилось когда проматывал. А вообще - пишите, какие выдает ошибки и где!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 28.03.2010, 22:40   #3
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию

Прикрепляю список ошибок к сообщению, так как он превышает лимит символов сообщения
Вложения
Тип файла: txt errors.txt (6.6 Кб, 121 просмотров)
ArniLand вне форума Ответить с цитированием
Старый 29.03.2010, 12:34   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

row.h(10) : error C2146: syntax error : missing ';' before identifier 'Row'
написано что нехватает ";" перед идентификатором Row
Отсчитываем 10 строк от начала в файле row.h
видим:
Код:
public:
	string dataRow
		Row();
Интересно, куда же вставить ";" ?
rrrFer вне форума Ответить с цитированием
Старый 29.03.2010, 15:02   #5
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию

немного поковыряв программу уменьшил количество ошибок до 4, но уже не знаю что не так, помогите их исправить пожалуйста
Вот список ошибок:
Цитата:
d:\мои документы\visual studio 2008\projects\laba3_class_conteiner _cpp\laba3_class_conteiner_cpp\laba 3_class_conteiner_cpp.cpp(32) : error C3646: 'string' : unknown override specifier
d:\мои документы\visual studio 2008\projects\laba3_class_conteiner _cpp\laba3_class_conteiner_cpp\laba 3_class_conteiner_cpp.cpp(32) : error C3646: 'max' : unknown override specifier
d:\мои документы\visual studio 2008\projects\laba3_class_conteiner _cpp\laba3_class_conteiner_cpp\laba 3_class_conteiner_cpp.cpp(32) : error C2761: 'std::string Texts::getMaxLenght(void)' : member function redeclaration not allowed
d:\мои документы\visual studio 2008\projects\laba3_class_conteiner _cpp\laba3_class_conteiner_cpp\laba 3_class_conteiner_cpp.cpp(32) : fatal error C1903: unable to recover from previous error(s); stopping compilation
И не много подправленный код:
Код:
//Row.h
#include <string>
#include <iostream>
using namespace std;
class Row
{
public:
    string dataRow;
        Row();
        Row(string);
};

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

const int countRows = 100;

class Texts
{
public:
	Texts();
	void addRows(string str);
	void removeAll();
	void removeRow(int numberRow);
	string getMaxLenght();
	string ToString();

	Row texte[100];
	int amountRows;
};

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

Row::Row()
{
}

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

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

void Texts::addRows(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::getMaxLenght()
	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;
}

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 "stdafx.h"
void main()
{
	cout<<"Введите количество строчек: ";
	int countRow;
	cin>>countRow;
	cout<<"Введите строчку: ";
	Texts objText;
	string temp;
	
	for (int i=0; i < countRow; i++)
	{
		cin>>temp;
		objText.addRows(temp);
	}

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

	cout<<"\nВведите номер строчки: ";
	int numberOfRow;
	cin>>numberOfRow;

	if (numberOfRow < countRow)
	{
		objText.removeRow(numberOfRow - 1);
	}

    cout<<"----\n\n"<<objText.ToString()<<"\n----\n";
	
	cout<<"\nСамая длинная строчка в тексте: "<<objText.getMaxLenght();

	cout<<"\nОчистка текста.";
	objText.removeAll();
	cout<<"----\n\n"<<objText.ToString()<<"\n----\n";
}

Последний раз редактировалось ArniLand; 29.03.2010 в 15:14.
ArniLand вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контейнер ! curtcobain Общие вопросы Delphi 3 04.02.2009 20:27
OLE-контейнер Flyer БД в Delphi 6 28.08.2007 16:27
ассоциативный контейнер SERGOO Общие вопросы C/C++ 4 17.06.2007 11:05