Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строка - Перегрузка оператора << [C++] 
:(
    Опции темы
ArniLand
Дата 28.4.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Написал программу которая подсчитывает количество символов 'z' и заменяет каждый третий символ, символом '=', также перегружал оператор <<. Во время компиляции выдает такие ошибки. Помогите исправить пожалуйста.
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2433: 'ostream' : 'friend' not permitted on data declarations
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2061: syntax error : identifier 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2805: binary 'operator <<' has too few parameters
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(23) : error C2039: 'CountOfSymbols' : is not a member of 'Row'
        d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(2) : see declaration of 'Row'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(26) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(26) : error C3861: 'srtlen': identifier not found
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(28) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(31) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(37) : warning C4018: '<=' : signed/unsigned mismatch
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(38) : error C2228: left of '.insert' must have class/struct/union
        type is 'char *'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(41) : error C2143: syntax error : missing ';' before '}'
main.cpp
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2433: 'ostream' : 'friend' not permitted on data declarations
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2061: syntax error : identifier 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2805: binary 'operator <<' has too few parameters
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2086: 'int ostream' : redefinition
        d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : see declaration of 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'stream' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'Straight' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'obj' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : fatal error C1903: unable to recover from previous error(s); stopping compilation


Код программы:
Код

//Row.h
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);
};

//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}

int Row::CountOfSymbols()
{
    int sum = 0;
    for (int i = 0; i < srtlen(MyRow); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0
}

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Straight &obj)
{
    stream <<"Dlina stroki :" << obj->LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj->CountofSymbols() << "\n";
    stream <<"Zamena :" << obj->Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}










PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Код

#include<iostream>
using namespace std;

в Row.h
и про стражи включение не забывай.
Код

#ifndef ROW_H
#define ROW_H

...

#endif // ROW_H

либо 
Код

#pragma once

в самом начале, либо и то и другое.

PM   Вверх
toxx
Дата 28.4.2010, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Вы бы не лог ошибок выводили, а строки где ошибка...
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, я прокомментировал строки на которые жалуется компилятор
Код

//Row.h
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);//жалуется на эту строку
};
//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
using namespace std;
Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}
Row::~Row()
{}
int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}
int Row::CountOfSymbols()//жалуется на эту строку
{
    int sum = 0;
    for (int i = 0; i < srtlen(MyRow); ++i)//жалуется на эту строку
    {
        if (MyRow[i]=='z')//жалуется на эту строку
            sum++;
    }
    cout<< MyRow;//жалуется на эту строку
    return 0;
}
int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)//жалуется на эту строку
    MyRow.insert(i,"=");//жалуется на эту строку
    cout<<"\nRow = "<< MyRow;
    return 0
}//жалуется на эту строку

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
using namespace std;
ostream &operator<<(ostream &stream, Straight &obj)//жалуется на эту строку
{
    stream <<"Dlina stroki :" << obj->LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj->CountofSymbols() << "\n";
    stream <<"Zamena :" << obj->Change() << "\n";
    return stream;
}
int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}

PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand

т.е. ответы ты принципиально не читаешь?
PM   Вверх
toxx
Дата 28.4.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
похоже что так...
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



извините, что я не так сделал? Стражи порядка сейчас добавлю и проверю как поведет себя программа. Строки ошибок вы хотите чтобы каждою отдельно строку вывел?
PM MAIL   Вверх
toxx
Дата 28.4.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
да не в строках щас дело, просто если вы бы сделали, то что вам сказали, ошибки возможно исчезли бы совсем..
пробуйте..

Это сообщение отредактировал(а) toxx - 28.4.2010, 20:54
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ArniLand @  28.4.2010,  20:50 Найти цитируемый пост)
Стражи порядка 

 smile  smile  smile не надо...ну пожжжжалуйста, только не их smile 

ArniLand
Я же подробно описал что делать, продублировать пост? Не только стражи включения, про include и using тоже забыл.

PM   Вверх
toxx
Дата 28.4.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
а я еще помню с предыдущей темы вот такое...=)
Код

friend ostream &operator<<(ostream &stream, const Row& obj);

PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



azesmcar, извините оговорился smile  Стражи включения))

toxx, все исправился. Но осталась одна ошибка, жалуется на цикл где каждый третий символ заменяется на '='
Ошибка:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(39) : error C2228: left of '.insert' must have class/struct/union
        type is 'char *

Код программы:
Код

//Row.h
#include<iostream>
#pragma once
using namespace std;
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);
};

//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
#pragma once

using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < strlen(MyRow); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)
    MyRow.insert(i,"=");//жалуется на эту строку
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
#pragma once

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}








Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:03
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



toxx

Ну сам код я не смотрел, если приглядеться там все менять надо будет smile 
PM   Вверх
ArniLand
Дата 28.4.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



все, подправил выше
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand

Код

#pragma once

поставь в первой строке.

Цитата(ArniLand @  28.4.2010,  21:01 Найти цитируемый пост)
char *MyRow;

замени на
Код

string MyRow;

и добавь 
Код

#include <string>

PM   Вверх
toxx
Дата 28.4.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
у тебя MyRow char*, а insert не для string случайно?
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



azesmcar, сделал. Теперь выдает такое


Цитата

d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(21) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(28) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(39) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called


Код программы:
/
Код

/Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);//жалуется на эту строку
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < strlen(MyRow); ++i)//жалуется на эту строку
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)//жалуется на эту строку
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}











Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:13
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
да...менять..
а вы не могли бы посмотреть мою тему в общих вопросах?
не хочу навязываться, просто хочется сдвинуться в деле.. а никто не отвечает, если бред сделал так и напишите=)

Добавлено через 58 секунд
ArniLand 
аналог strlen у string это .size()
Код

MyRow.size()

PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



подправил так, но выдает такое:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(12) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::string *' (or there is no acceptable conversion)
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(19) : error C2075: 'L' : array initialization needs curly braces

Код программы:
Код

//Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(string* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(string* pMyRow)
{
    MyRow = pMyRow;//жалуется на эту строку
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = MyRow.size();
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= MyRow.size(); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    string L[40] = ("abdcezztyyuazyytztasaz");//жалуется на эту строку
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}










Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:22
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ArniLand @  28.4.2010,  21:21 Найти цитируемый пост)
 Row(string* pMyRow);


Цитата(ArniLand @  28.4.2010,  21:21 Найти цитируемый пост)
Row::Row(string* pMyRow)

замени string* на const string&
PM   Вверх
toxx
Дата 28.4.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand 
Код

Row::Row(string pMyRow)
{
    MyRow = pMyRow;//жалуется на эту строку
}


Код

string L("abdcezztyyuazyytztasaz");//жалуется на эту строку

azesmcar
так и забыл ... про const
Код

Row::Row(const string& pMyRow)


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:31
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



заменил. Теперь такое выдает:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(19) : error C2075: 'L' : array initialization needs curly braces
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(20) : error C2664: 'Row::Row(const std::string &)' : cannot convert parameter 1 from 'std::string [40]' to 'const std::string &

Код

//Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(const string& pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(const string& pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = MyRow.size();
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= MyRow.size(); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main,cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    string L[40] = ("abdcezztyyuazyytztasaz");//жалуется на эту строку
    Row *obj = new Row(L);//жалуется на эту строку
    cout << obj;
    return 0;
}










Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:28
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
уберите вы уже ваши[40] нет такого у стринг...
Код

string L("abdcezztyyuazyytztasaz");


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:31
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, подправил так. Программа работает, но выдает не правильно выдает результат. Какие то странные цифры.
user posted image
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
замените
Код

Row *obj = new Row(L);//жалуется на эту строку

на
Код

Row obj(L);


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:46
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, исправил.
Теперь не совсем правильно выдает результат, не выдает количество символов 'z'
user posted image

Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:49
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



мдэ, так вы его и не возвращаете даже.. smile 
Код

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:51
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, подскажите пожалуйста как правильно будет?
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Странно вы как-то классы изучаете, если возвратить значение функции не можете =(
Код

return sum;


PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand, 

может сразу обратиться в центр помощи? все равно сам ничего не делаешь smile 
какова твоя цель? научиться или сдать домашнее задание?

Это сообщение отредактировал(а) azesmcar - 28.4.2010, 21:59
PM   Вверх
toxx
Дата 28.4.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
Не научиться точно=) но думаю имя(Маша) в заголовке скрина проясняет ситуацию =)
Я понимаю конечно, что своими подсказками я волей не волей сделал эту лабу... но что ж поделаешь =)
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



azesmcar, спасибо вам за помощь конечно. Моя цель научиться, но пока не сильно выходит что то вижу меня учится. Согласен послушать вашу критику и советы насчет этого. Хоть книги и читаю по C++, не всегда удается реализовать что то правильно или понять почему у меня не правильно работает.
Маша это меня попросила ей сделать, просто попалась лабораторная такая и чего то я на ней застрял, свою аналогичную я сделал вроде более удачно.


Это сообщение отредактировал(а) ArniLand - 28.4.2010, 22:51
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ArniLand @  28.4.2010,  22:49 Найти цитируемый пост)
Согласен послушать вашу критику и советы насчет этого. Хоть книги и читаю по C++, не всегда удается реализовать что то правильно или понять почему у меня не правильно работает.

Читать надо хорошие книги, внимательно читать, понимать написанное, пробовать, запускать примеры. А так - какой смысл в решении этой задачи, все равно это ничего не научит, так не учатся, надо самому делать, пробовать находить ошибки, я когда учился у меня под рукой не то что форума, интернета не было..приходилось самому выкручиваться, но выкручивался ведь, значит реально.
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.