Класс контейнер - абстракция текста [c++]

Тема в разделе "Общие вопросы по С и С++", создана пользователем ArniLand, 29 мар 2010.

Статус темы:
Закрыта.
  1. ArniLand

    ArniLand Гость

    Написал программу которая представляет собой абстракцию текста с классом контейнером. Писал в VS 2008 professional, при компиляции выдает 4 ошибки, помогите пожалуйста разобраться что не правильно.

    Список ошибок:
    Код (Text):
    //[B]Row.h[/B]
    #include <string>
    #include <iostream>
    using namespace std;
    class Row
    {
    public:
    string dataRow;
    Row();
    Row(string);
    };

    //[B]text.h[/B]
    #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;
    }

    //[B]text.cpp[/B]
    #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";
    }
     
  2. eReS

    eReS Гость

    1) попробуй создать чистый консольный проект и уже в нем добавлять хедер и срр файлы, так как у тебя создано по шаблону, и мусор типа "#include "stdafx.h"" лучше избегать если незнаешь зачем он тебе.
    2) В функции string Texts::getMaxLenght() нет открытой скобки в начале - {
    3) void main() - насколько помню визуал требует чтобы функция main была всегда типа int (int main()). gcc считает это за ошибку
    4) ну и последняя ошибка: Row.cpp:9: error: ‘ataRow’ was not declared in this scope // не обьвил переменную
     
  3. ArniLand

    ArniLand Гость

    По исправлял ошибки выше указанные ошибки, теперь на счет этого кода
    Код (Text):
    #include "stdafx.h"
    #include "Row.h"

    Row::Row()
    {
    }

    Row::Row(string str)
    {
    dataRow = str;
    }
    если напишу тип char dataRow=str;, выдаст ошибку
    а напишу string dataRow = str;
    выдает следующую ошибку:
     
Загрузка...
Похожие Темы - Класс контейнер абстракция
  1. Maxim32
    Ответов:
    2
    Просмотров:
    1.026
  2. swyatogor
    Ответов:
    0
    Просмотров:
    66
  3. Corexis
    Ответов:
    0
    Просмотров:
    90
  4. rrrFer
    Ответов:
    0
    Просмотров:
    133
  5. Sander
    Ответов:
    1
    Просмотров:
    512
Статус темы:
Закрыта.

Поделиться этой страницей