Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
13 / 13 / 15
Регистрация: 26.01.2015
Сообщений: 211
1

Массив объектов класса

21.12.2016, 23:03. Просмотров 5461. Ответов 8
Метки нет (Все метки)

Товарищи, доброго времени суток!
Помогите, пож-та, найти ошибку в коде, всё перепроверил, не понимаю всё равно.
Суть проги такая - 5 человек объединены в массив, нужно ввести данные по каждому человеку (имя и возраст), а затем вывести получившуюся информацию на экран. Программа принимает параметры первого человека, а затем вылетает из первого цикла for и печатает результат - данные первого человека и нули по остальным 4-м.
Пробовал отдельно вводить и выводить данные, по индексам, без цикла - то же самое.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include<cstring>
#include<iomanip>
#include<cstring>
using namespace std;
 
class info
{
private:
    char name[20];
    int age;
public:
    info():name(),age(0)
    {}
    info(char* ptr, int* a)
    {
        strcpy_s(name, ptr);
        age = *a;
    }
    void vvod();
    void vyvod()const;
};
 
void info::vvod()
{
    cout << "Name: "; cin.get(name,20);
    cout << "Age: "; cin >> age;
}
 
void info::vyvod()const
{
    cout << name << endl;
    cout << age << endl << endl;
}
int main()
{
    setlocale(LC_ALL, "Rus");
    const int size = 5;
    info Person[size];
    for (int i = 0; i < size; i++)
    {
        Person[i].vvod();
    }
    system("cls");
    
    for (int i = 0; i < size; i++)
    {
        Person[i].vyvod();
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2016, 23:03
Ответы с готовыми решениями:

Передача объектов дочерних классов через массив объектов родительского класса в функцию
Здравствуйте. Возможно, вопрос больше относится к теории ООП, но все же я не решился задавать его в...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив...

Массив объектов класса. Печать строк-членов класса.
подскажите, как распечатать строки? #include &quot;myString.h&quot; #include &lt;iostream&gt; #define stop...

Массив объектов класса как член другого класса
Здравствуйте. У меня тут возникла проблемка #include &quot;main.h&quot; class player { public: ...

8
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 689
21.12.2016, 23:21 2
Зачем так сложно делать?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
#include <vector>
 
class Info
{
  private: 
    std::string name;
    int age;
  public:
    void in()
    {
      std::cout << "Name: ";
        std::cin >> name;
      std::cout << "Age: ";
        std::cin >> age;  
    }
 
    void out() const
    {
      std::cout << "Name: " << name << std::endl;
      std::cout << "Age: " << age << std::endl;
    }
};
 
int main()
{
  const int size = 5;
 
  Info people[size];
 
  for (int i = 0; i < size; i++) {
    people[i].in();
  }
 
  std::cout << "===============" << std::endl;
 
  for (int i = 0; i < size; i++) {
    people[i].out();
  }
 
  return 0;
}
0
13 / 13 / 15
Регистрация: 26.01.2015
Сообщений: 211
21.12.2016, 23:31  [ТС] 3
Цитата Сообщение от Nemovok Посмотреть сообщение
Зачем так сложно делать?)
Ну это я просто тренирую указатели заодно. Твоя прога работает нормально, а вот почему моя завершается преждевременно с выводом некорректного результата?
0
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 689
21.12.2016, 23:39 4
У вас код с 15 по 19 строку ни на что не влияет
0
13 / 13 / 15
Регистрация: 26.01.2015
Сообщений: 211
21.12.2016, 23:45  [ТС] 5
Цитата Сообщение от Nemovok Посмотреть сообщение
У вас код с 15 по 19 строку ни на что не влияет
это кусок от предыдущей программы остался, просто не убрал. Даже если его убрать и убрать нулевой конструктор, чтобы сработал конструктор по умолчанию, результат будет такой же почти - в выводе имён нет, а вместо возраста мусор. Вот почему так?
0
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 689
21.12.2016, 23:57 6
Проблема вот тут :
C++
1
cout << "Name: "; cin.get(name,20);
Вот так работает:
C++
1
cout << "Name: "; cin >> name;
0
13 / 13 / 15
Регистрация: 26.01.2015
Сообщений: 211
22.12.2016, 00:04  [ТС] 7
Цитата Сообщение от Nemovok Посмотреть сообщение
Вот так работает:
C++Выделить код
1
cout << "Name: "; cin >> name;
А почему проблема была в cin.get? Я,например, хочу фамилию и имя ввести, а так только фамилию получится. Как тогда реализовать?
0
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 689
22.12.2016, 00:28 8
Лучший ответ Сообщение было отмечено Ofelion как решение

Решение

Цитата Сообщение от Ofelion Посмотреть сообщение
Как тогда реализовать?
C++
1
2
3
4
5
void info::vvod()
{
    cout << "Name: "; cin.get(name,20);
    cout << "Age: "; (cin >> age).ignore();
}
1
13 / 13 / 15
Регистрация: 26.01.2015
Сообщений: 211
22.12.2016, 10:57  [ТС] 9
Nemovok, спасибо, теперь заработало как надо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2016, 10:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать класс Матрица. Массив объектов класса Массив
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив из предыдущего...

Массив объектов класса
class abc { public: int x,y; }; abc all; int main() { all.x=5; all.x=6;

Массив объектов класса
Всем привет! Я не так давно познакомился с классами в C++, прочитав несколько статей по этой теме...

Массив объектов класса
Привет. подскажите, как правильно сделать массив. Код весь скопировал, только начал писать, на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.