Помогите с ошибкой плиз...

Текст файла main.h

class Person //класс персона
{
//закрытые члены класса
    int number; //номер персоны
    char familia[100]; //фамилия персоны
    bool pol; //пол персоны
    float age; //возраст персоны
    char group[10];//группа персоны
public:
//открытые члены класса
    Person(int numb, const char *famil, bool po, float ag, const char *gr);//конструктор с параметрами
    Person();//конструктор без параметров (по умолчанию)
    void Print();//вывод всех данных
    void Input();//ввод данных
};

Текст файла main.cpp

#include <string.h>
#include <iostream.h>
#include <stdlib.h>
#include <main.h>

Person::Person(int numb, const char *famil, bool po, float ag, const char *gr)//конструктор с параметрами
{
    number=numb;//переменная класса number принимает значение параметра numb
    strcpy(familia,famil);//переменная класса familia принимает значение параметра famil
    pol=po;//переменная класса pol принимает значение параметра po
    age=ag;//переменная класса age принимает значение параметра ag
    strcpy(group,gr);//переменная класса group принимает значение параметра gr
}

Person::Person()//конструктор без параметров (по умолчанию)
{
    number=1;//по умолчанию 1
    strcpy(familia,"Knyazev");//по умолчанию Knyazev
    pol=1;//по умолчанию 1
    age=24;//по умолчанию 24
    strcpy(group,"z-434-a");//по умолчанию z-434-a
}

void Person::Print()//вывод всех данных
{
    cout<<"No     :\t"<<number<<endl//вывод номера
        <<"Familia:\t"<<familia<<endl//вывод фамилии
        <<"Pol    :\t"<<pol<<endl//вывод пола
        <<"Vozrast:\t"<<age<<endl//вывод возраста
        <<"Gruppa :\t"<<group<<endl;//вывод группы
}

void Person::Input()//ввод значений переменных
{
    cout<<"No     :\t";
    cin>>number; //ввод номера
    cout<<"Familia:\t";
    cin>>familia; //ввод фамилии
    cout<<"Pol    :\t";
    int i;
    cin>>i;//ввод пола
    if (i==0) pol=0; else pol=1;
    cout<<"Vozrast:\t";
    cin>>age;//ввод возраста
    cout<<"Gruppa :\t";
    cin>>group;//ввод возраста
}

int main()//главная функция
{
    Person Pers1(1,"Melnikov",0,30,"z-434-a");//объявление переменной типа Person с присвоением начальных значений
    Pers1.Print();//вывод значений полей
    cout<<endl;//пустая строка - отступ
    Person *Pers2;//ссылка на объект
    Pers2=new Person;// создание объекта
    Pers2->Print();//вывод значений полей
    cout<<endl;
    delete(Pers2);//освобождение памяти
    Person Pers3;//объявление переменной типа Person
    Pers3.Input();//ввод значений полей
    cout<<endl;
    Pers3.Print();//вывод значений переменных
    cout<<endl;
    return 0;
}

Что бы просто компилировалось и мало-мало работало, то так:

#include <string.h>
#include <iostream>
#include <stdlib.h>

class Person //класс персона
{
    //закрытые члены класса
    int number; //номер персоны
    char familia[100]; //фамилия персоны
    bool pol; //пол персоны
    float age; //возраст персоны
    char group[10];//группа персоны
public:
    //открытые члены класса
    Person(int numb, const char *famil, bool po, float ag, const char *gr); //конструктор с параметрами
    Person();//конструктор без параметров (по умолчанию)
    void Print();//вывод всех данных
    void Input();//ввод данных
};

using namespace std;

Person::Person(int numb, const char *famil, bool po, float ag, const char *gr)//конструктор с параметрами
{
    number=numb;//переменная класса number принимает значение параметра numb
    strcpy(familia,famil);//переменная класса familia принимает значение параметра famil
    pol=po;//переменная класса pol принимает значение параметра po
    age=ag;//переменная класса age принимает значение параметра ag
    strcpy(group,gr);//переменная класса group принимает значение параметра gr
}

Person::Person()//конструктор без параметров (по умолчанию)
{
    number=1;//по умолчанию 1
    strcpy(familia,"Knyazev");//по умолчанию Knyazev
    pol=1;//по умолчанию 1
    age=24;//по умолчанию 24
    strcpy(group,"z-434-a");//по умолчанию z-434-a
}

void Person::Print()//вывод всех данных
{
    cout<<"No :\t"<<number<<endl//вывод номера
    <<"Familia:\t"<<familia<<endl//вывод фамилии
    <<"Pol :\t"<<pol<<endl//вывод пола
    <<"Vozrast:\t"<<age<<endl//вывод возраста
    <<"Gruppa :\t"<<group<<endl;//вывод группы
}

void Person::Input()//ввод значений переменных
{
    cout<<"No :\t";
    cin>>number; //ввод номера
    cout<<"Familia:\t";
    cin>>familia; //ввод фамилии
    cout<<"Pol :\t";
    int i;
    cin>>i;//ввод пола
    if (i==0) pol=0; else pol=1;
    cout<<"Vozrast:\t";
    cin>>age;//ввод возраста
    cout<<"Gruppa :\t";
    cin>>group;//ввод возраста
}

int main()//главная функция
{
    Person Pers1(1,"Melnikov",0,30,"z-434-a");//объявление переменной типа Person с присвоением начальных значений
    Pers1.Print();//вывод значений полей
    cout<<endl;//пустая строка - отступ
    Person *Pers2;//ссылка на объект
    Pers2=new Person;// создание объекта
    Pers2->Print();//вывод значений полей
    cout<<endl;
    delete(Pers2);//освобождение памяти
    Person Pers3;//объявление переменной типа Person
    Pers3.Input();//ввод значений полей
    cout<<endl;
    Pers3.Print();//вывод значений переменных
    cout<<endl;
    return 0;
} 

По ходу дела, я избавился от файла main.h, включив его содержимое в основной cpp-файл. Если же хочется «по-взрослому», то текст надо разбивать на три файла: person.h — с описанием класса Person, person.cpp — с реализацией класса Person и main.cpp — с головной программой (функцией main()).

Ещё было бы неплохо сделать следующее:

  1. «Магические» числа 10 и 100 описать как константы.
  2. Вместо strcpy() использовать более безопасный аналог strncpy().
  3. Либо сделать «пол» типа int (как недавно выяснилось, кроме «эм» и «жо» имеется ещё куча вариантов) и переделать соотв. фрагмент метода Input(), либо в методе Input() пол определять как pol = i == 1;, дабы избежать неявного приведения типа int к типу bool.
  4. Для возраста тип float смотрится странно. Обычно (в делопроизводстве) возраст указывают целым количеством исполнившихся лет. Впрочем, дело твоё.
  5. Оператор delete(Pers2); конечно работает, но лучше его оформить как delete Pers2; — привычнее выглядит.
  6. Code-style отвратительный.
  7. Комментарии должны быть информативными, а не комментарии ради комментариев.

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

напиши мне stas_dolinka@mail.ru это мой mail.ru

Следите за выводом компилятора. У вас простые синтаксические ошибки из-за невнимательности.

main.cpp:

#include <cstring>
#include <iostream>
#include <cstdlib>
#include "main.h"

using std::cout;
using std::endl;
using std::cin;

Person::Person(int numb, const char *famil, bool po, float ag, const char *gr)//конструктор с параметрами
{
    number=numb;//переменная класса number принимает значение параметра numb
    strcpy(familia,famil);//переменная класса familia принимает значение параметра famil
    pol=po;//переменная класса pol принимает значение параметра po
    age=ag;//переменная класса age принимает значение параметра ag
    strcpy(group,gr);//переменная класса group принимает значение параметра gr
}

Person::Person()//конструктор без параметров (по умолчанию)
{
    number=1;//по умолчанию 1
    strcpy(familia,"Knyazev");//по умолчанию Knyazev
    pol=1;//по умолчанию 1
    age=24;//по умолчанию 24
    strcpy(group,"z-434-a");//по умолчанию z-434-a
}

void Person::Print()//вывод всех данных
{
    cout<<"No     :\t"<<number<<endl//вывод номера
        <<"Familia:\t"<<familia<<endl//вывод фамилии
        <<"Pol    :\t"<<pol<<endl//вывод пола
        <<"Vozrast:\t"<<age<<endl//вывод возраста
        <<"Gruppa :\t"<<group<<endl;//вывод группы
}

void Person::Input()//ввод значений переменных
{
    cout<<"No     :\t";
    cin>>number; //ввод номера
    cout<<"Familia:\t";
    cin>>familia; //ввод фамилии
    cout<<"Pol    :\t";
    int i;
    cin>>i;//ввод пола
    if (i==0) pol=0; else pol=1;
    cout<<"Vozrast:\t";
    cin>>age;//ввод возраста
    cout<<"Gruppa :\t";
    cin>>group;//ввод возраста
}

int main()//главная функция
{
    Person Pers1(1,"Melnikov",0,30,"z-434-a");//объявление переменной типа Person с присвоением начальных значений
    Pers1.Print();//вывод значений полей
    cout<<endl;//пустая строка - отступ
    Person *Pers2;//ссылка на объект
    Pers2=new Person;// создание объекта
    Pers2->Print();//вывод значений полей
    cout<<endl;
    delete(Pers2);//освобождение памяти
    Person Pers3;//объявление переменной типа Person
    Pers3.Input();//ввод значений полей
    cout<<endl;
    Pers3.Print();//вывод значений переменных
    cout<<endl;
    return 0;
}

main.h:

class Person //класс персона
{
    //закрытые члены класса
    int number; //номер персоны
    char familia[100]; //фамилия персоны
    bool pol; //пол персоны
    float age; //возраст персоны
    char group[10];//группа персоны
public:

    //открытые члены класса
    Person(int numb, const char *famil, bool po, float ag, const char *gr);//конструктор с параметрами
    Person();//конструктор без параметров (по умолчанию)
    void Print();//вывод всех данных
    void Input();//ввод данных
};

Ну блин ну всё равно ошибку одну выдаёт....

main.h

class Person //класс персона
{
    //закрытые члены класса
    int number; //номер персоны
    char familia[100];//фамилия персоны
    bool pol; //пол персоны
    float age; //возраст персоны
    char group[10];//группа персоны
    Person;//конструктор с параметрами 
public:

    //открытые члены класса
    Person(int numb, const char *famil, bool po, float ag, const char *gr);// конструктор с параметрами
    Person();//конструктор без параметров (по умолчанию)
    void Print();//вывод всех данных
    void Input();//ввод данных
    system("pause");
}

main.cpp

#include <cstring>
#include <iostream>
#include <cstdlib>
#include <main.h>

using std::cout;
using std::endl;
using std::cin;

Person::Person(int numb, const char *famil, bool po, float ag, const char *gr)//конструктор с параметрами
{
    number=numb;//переменная класса number принимает значение параметра numb
    strcpy(familia,famil);//переменная класса familia принимает значение параметра famil
    pol=po;//переменная класса pol принимает значение параметра po
    age=ag;//переменная класса age принимает значение параметра ag
    strcpy(group,gr);//переменная класса group принимает значение параметра gr
}

Person::Person()//конструктор без параметров (по умолчанию)
{
    number=1;//по умолчанию 1
    strcpy(familia,"Jagovtsev");//по умолчанию Jagovtsev
    pol=1;//по умолчанию 1
    age=20;//по умолчанию 20
    strcpy(group,"z-434-a");//по умолчанию z-434-a
}

void Person::Print()//вывод всех данных
{
    cout<<"No     :\t"<<number<<endl//вывод номера
        <<"Familia:\t"<<familia<<endl//вывод фамилии
        <<"Pol    :\t"<<pol<<endl// вывод пола
        <<"Vozrast:\t"<<age<<endl//вывод возраста
        <<"Gruppa :\t"<<group<<endl;//вывод группы
}

void Person::Input()//ввод значений переменных
{
    cout<<"No     :\t";
    cin>>number; //ввод номера
    cout<<"Familia:\t;
    cin>>familia; //ввод фамилии
    cout<<"Pol  :\t";
    int i;
    cin>>i;//ввод пола
    if (i==0) pol=0; else pol=1;
    cout<<"Vozrast:\t";
    cin>>age;//ввод возраста
    cout<<"Gruppa :\t";
    cin>>group;//ввод возраста
}

int main()//главная функция
{
    Person Pers1(1,"Melnikov",0,30,"z-434-a");//объявление переменной типа Person с присвоением начальных значений
    Pers1.Print();//вывод значений полей
    cout<<endl;//пустая строка - отступ
    Person *Pers2;//ссылка на объект
    Pers2=new Person;// создание объекта
    Pers2->Print();//вывод значений полей
    cout<<endl;
    delete(Pers2);//освобождение памяти
    Person Pers3;//объявление переменной типа Person
    Pers3.Input();//ввод значений полей
    cout<<endl;
    Pers3.Print();//вывод значений переменных
    cout<<endl;
    return 0;
}

он выдает одну ошибку....

Какую ошибку? Оформляйте код в соответствии с правилами разметки.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.