Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблема с функциями


Автор: Alexandr507 1.8.2009, 16:33
Код

#include<iostream>

using namespace std;





class Pryamougolnik 

{
public:

    
    

    Pryamougolnik(int x, int y)
    {
        dlina=x;
        shirina=y;
    }
    
    ~Pryamougolnik(){}

    int vivDlina(){return dlina;}
    void oprDlina(int dl){dlina=dl;}

    int vivShirina(){return shirina;}
    void oprShirina(int sh){shirina=sh;}


    int plosad() {return dlina*shirina;}
    int perimetr() {return (dlina+shirina)*2;}



    void newParametri (int dl, int sh)
    {
        dlina=dl;
        shirina=sh;
    }

    
    
    



private:

int dlina;
int shirina;
};





int vvodMeny();
void vivPlosad(Pryamougolnik);
void vivPerimetr(Pryamougolnik);
void figura(Pryamougolnik);









int main ()  

{

Pryamougolnik Objekt(5,4);



    int vihod=0;

while (vihod==0)


{

    
int key=vvodMeny();
switch (key)

{
case 1:
    figura(Objekt);

break;



case 2:
    vivPlosad(Objekt);
break;

case 3:
    vivPerimetr(Objekt);
break;







case 4:  
    
    
    int x;
    int y;
    cout<<"Vvedite novie znacheniya storon"<<endl;
    cin>>x;
    cin>>y;


    Objekt.newParametri(x,y);


figura(Objekt);

break;











case 5: 
    vihod=1;
    break;

default: 
    cout<<"Error!!!"<<endl;
    vihod=1;
    break;

}
}



return 0;
}





  int vvodMeny()

{
    int key;

cout<<"***MENY***"<<endl;
cout<<"1 - Vivod na ekran"<<endl;
cout<<"2 - Plosad"<<endl;
cout<<"3 - Perimetr"<<endl;
cout<<"4 - Nov Parametri"<<endl<<endl;
cout<<"5 - Vihod"<<endl;


cin>>key;

return key;
}






void figura(Pryamougolnik Objekt)

{    
    int a=Objekt.vivDlina();
    int b=Objekt.vivShirina();

    for(int i=0; i<a; i++)
    {    
    
    for (int j=0; j<b; j++)
    cout<<"x";
    cout<<endl;
}



void vivPlosad(Pryamougolnik Objekt)

{
    cout<<"Plosad ravna "<<Objekt.plosad()<<endl;
}


void vivPerimetr(Pryamougolnik Objekt)

{
    cout<<"Perimetr raven "<<Objekt.perimetr()<<endl;
}



компилятор высветил такие ошибки

C:\Program Files\Microsoft Visual Studio\MyProjects\Class13\Class13.cpp(202) : error C2601: 'vivPlosad' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\Class13\Class13.cpp(209) : error C2601: 'vivPerimetr' : local function definitions are illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\Class13\Class13.cpp(212) : fatal error C1004: unexpected end of file found
Error executing cl.exe.


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

долго пытался найти ошибку, пробежался глазами весь код несколько раз, но так и не нашел , подскажите пожалуйста уважаемые программисты

Автор: mes 1.8.2009, 16:50
проверьте внимательно присутствие всех закрывающих фигурных скобок.

Добавлено через 1 минуту и 5 секунд
Цитата(Alexandr507 @  1.8.2009,  15:33 Найти цитируемый пост)

долго пытался найти ошибку, пробежался глазами весь код несколько раз, но так и не нашел , подскажите пожалуйста уважаемые программисты 

приведите в порядок код, чтоб его легко было читать и все недостающие детали сами всплывут smile

Автор: Gordon 1.8.2009, 16:56
Цитата(mes @  1.8.2009,  17:50 Найти цитируемый пост)
проверьте внимательно присутствие всех закрывающих фигурных скобок.


да...

Код

void figura(Pryamougolnik Objekt)
{    
    int a=Objekt.vivDlina();
    int b=Objekt.vivShirina();

    for(int i=0; i<a; i++)
    {    
    
    for (int j=0; j<b; j++)
    cout<<"x";
    cout<<endl;
}

Автор: Alexandr507 1.8.2009, 17:08
Так и думал что в какой то мелочи ошибка была. 
От долгого сидения  перед монитором, все сливается, ничего не получается, и чем больше сижу тем больше   не получается

Спасибо более опытные товарищи программисты)

Автор: Леопольд 1.8.2009, 23:55
Цитата(Alexandr507 @  1.8.2009,  17:08 Найти цитируемый пост)
все сливается, ничего не получается


Цитата(mes @  1.8.2009,  16:50 Найти цитируемый пост)
приведите в порядок код, чтоб его легко было читать и все недостающие детали сами всплывут


Автор: bsa 2.8.2009, 18:40
Alexandr507, код нужно правильно форматировать (ставить отступы, размещать фигурные скобки с новой строки):
Код
void figura(Pryamougolnik Objekt) //зачем передаешь объект по значению? по ссылке быстрей!
{    
    int a=Objekt.vivDlina();
    int b=Objekt.vivShirina();

    for(int i=0; i<a; ++i)
    {    
       for (int j=0; j<b; ++j) //префиксная форма операторов ++ и -- предпочтительней, если не нужна функциональность постфиксной
          cout<<"x";
       cout<<endl;
    }
}

Автор: Alexandr507 2.8.2009, 19:43
Обязательно учту.

Автор: bsa 2.8.2009, 23:39

M
bsa
Alexandr507, если ответ на вопрос получен, то пометь тему решенной


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)