С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.73
Алексей...
0 / 0 / 0
Регистрация: 06.02.2009
Сообщений: 6
#1

Вывод структуры - C++

05.07.2011, 14:44. Просмотров 5655. Ответов 19
Метки нет (Все метки)

Необходимо создать структуру car которая хранит след инф наименование, год выпуска.написать прогр которая запросить пользователя сколько авто необходимо включить в каталог,затем программа должна выделить динамический массий new.далее должна пригласить пользователя ввести значения и отобразить содержимое каждой структуры что в общем то не получается:
поясните как вывести всё содержимое.


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
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
struct car
{
    string name;
    int god;
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int catalog;
    cout<<"skolko avto vkl v catalog? ";
    cin>>catalog;
    cin.get();
    car *ps=new car;
    for(int i=0;i<catalog;i++)
    {
        cout<<"VVedite proizvoditelya: ";
        getline(cin,ps->name);
        //cin.get();
        cout<<"Ukazhite god vypuska: ";
        cin>>ps->god;
        
        cin.get();
    }
    cout<<"Vasha colleczia: "<<endl;
    
    
        cout<<ps->god<<" "<<ps->name<<endl;
            
 
    cin.get();
    return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2011, 14:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод структуры (C++):

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

вывод структуры - C++
В одномерном массиве, элементами являются записи структуры: фамилия, имя, возраст, средняя зарплата.Нужно найти и вывести фамилии и возраст...

Вывод структуры в файл - C++
Здравствуйте, у меня есть вопрос. У меня есть структура с большим количеством переменных. Работа с этой структурой происходит в...

Вывод структуры в файл C++ - C++
Необходимо предоставить возможность сохранения таблицы в файл и чтения её из файла. #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...

Вывод данных из структуры - C++
Доброй ночи:) Возникла проблема вывода данных из структуры. То бишь совсем ничего не выводится,программа просто зависает и все. #pragma...

Вывод значения из структуры - C++
Никак не могу додуматься как вывести определенные фамилии, если удовлетворяют условию: if ((strcmp(mag.social, soc) == 0) &amp;&amp; mag.vklad &lt;...

19
Bers
Заблокирован
05.07.2011, 14:56 #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
44
45
46
47
48
[quote=Алексей...;1819400]
 
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
struct car
{
    string name;  //марка машины
    int god;         //год выпуска
};
int _tmain(int argc, _TCHAR* argv[])
{
   int catalog;  //здесь храним количество наименований в каталоге.
   cout<<"Введите количество марок автомобилей в каталоге:  ";
   cin>>catalog;
   
   //car *ps=new car;  //вот здесь ваша ошибка. Вам стоит подучить работу с дин. массивами.
 
   car* ArrayCar = new [catalog];  //создадим дин. массив.
 
   //создадим каталог 
   for( int i=0; i<catalog; ++i )
   {
       cout<<"введите марку автомобиля: ";
       cin >> ArrayCar[i].name;
       cout<<"введите год выпуска: ";
       cin>>ArrayCar[i].god;
   }
 
   //отобразим содержимое каждой структуры.
   cout<<"Содержимое каталога: "<<endl;
   
   for( int i=0; i< catalog; ++i)
   {
       cout << i<< ") ";
       cout << ArrayCar[i].name;
       cout << " год выпуска ";
       cout << ArrayCar[i].god << endl;
   }
   //правда просто?
 
  delete [] ArrayCar; ArrayCar=NULL; //не забываем освобождать память!!
 
   cin.get();
   return 0;
}
[/quote]
12345676
1
An1ka
66 / 71 / 2
Регистрация: 30.06.2011
Сообщений: 176
05.07.2011, 14:59 #3
Цитата Сообщение от Алексей... Посмотреть сообщение
отобразить содержимое каждой структуры
Самое простое, это сделать перегрузку оператора <<
C++
1
2
3
4
5
6
7
8
9
struct car
{
    string name;
    int god;
    friend ostream& operator << ( ostream& s, car& my )
    {
        return cout << "name= " << my.name << " god= " << my.god << endl;
    }
};
0
diagon
05.07.2011, 15:00
  #4

Не по теме:

Цитата Сообщение от An1ka Посмотреть сообщение
my.god
omg =)

6
Bers
Заблокирован
05.07.2011, 15:01 #5
An1ka, стандартные потоки разве со стандартным стрингом работать не умеют? ))
0
An1ka
66 / 71 / 2
Регистрация: 30.06.2011
Сообщений: 176
05.07.2011, 15:13 #6
Цитата Сообщение от Bers Посмотреть сообщение
An1ka, стандартные потоки разве со стандартным стрингом работать не умеют? ))
С нашими структурами не умеют !
Код
	car my_car;
	cout << my_car;
Для этого и нужна перегрузка оператора, чтобы выводить сразу все данные по нашей структуре.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2011, 15:19 #7
An1ka,
Цитата Сообщение от An1ka Посмотреть сообщение
friend ostream& operator << ( ostream& s, car& my )
{
return cout << "name= " << my.name << " god= " << my.god << endl;
}
C++
1
2
3
4
friend ostream& operator << ( ostream& s, car& my )
{
    return s << "name= " << my.name << " god= " << my.god << endl;
}
1
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
05.07.2011, 15:23 #8
а почему имя по-английки, а где по-русски?
либо одно, либо другое! а то смотрится как-то дико. типо ID бога машины
0
Алексей...
0 / 0 / 0
Регистрация: 06.02.2009
Сообщений: 6
05.07.2011, 15:46  [ТС] #9
спасибо! да стоит подучить работу с динамический массивом.
0
Bers
Заблокирован
05.07.2011, 15:52 #10
Цитата Сообщение от An1ka Посмотреть сообщение
С нашими структурами не умеют !
Код
	car my_car;
	cout << my_car;
Для этого и нужна перегрузка оператора, чтобы выводить сразу все данные по нашей структуре.
Идея понятна, но я бы так делать не стал. Слишком не гибко...

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

Структура должна только быть. Хранить свои поля и все.

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

То есть, структура поставляется с набором неких функций-манипуляторов, которые умеют выполнять какие то типовые задачи.

/зы а для френдов должна быть оч весская причина.
0
Алексей...
0 / 0 / 0
Регистрация: 06.02.2009
Сообщений: 6
05.07.2011, 16:00  [ТС] #11
C++
1
car* ArrayCar = new [catalog];
здесь всё таки может так надо
C++
1
car* ArrayCar = new car[catalog];
0
Bers
Заблокирован
05.07.2011, 16:01 #12
ага))
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2011, 16:08 #13
Цитата Сообщение от Bers Посмотреть сообщение
о более гибким решением будит манипулятор.
Bers, пример можете привести? пожалуйста
0
Bers
Заблокирован
05.07.2011, 16:22 #14
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "stdafx.h"
#include <iostream>
#include <string>
 
using name std;
 
struct car
{
    string name;  //марка машины
    int god;         //год выпуска
};
 
void ViewCar( car &Cource)
{
      using name std;     
      cout << Cource.name  <<  " год выпуска: " <<  Cource.god;
}
 
void ViewArrayCar( car *ArrayCource)
{
    //отобразим содержимое каждой структуры.
   cout<<"Содержимое каталога: "<<endl;
   
   for( int i=0; i< catalog; ++i)   
   {    
         cout << i<< ") ";   
         ViewCar(  ArrayCource[i]  );   
         cout << endl;   
    }
}
 
 FreeCar( car *ArrayCource ) {   delete [] ArrayCource ; ArrayCource =NULL;   }
 
void CreateArrayCar(car *ArrayCource , unsigned int Kol)
{
    FreeCar( ArrayCource );     ArrayCource = new car[Kol];  
 
   //создадим каталог 
   for( int i=0; i<Kol; ++i )
   {
       cout<<"введите марку автомобиля: ";
       cin >> ArrayCource [i].name;
       cout<<"введите год выпуска: ";
       cin>>ArrayCource [i].god;
   }
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
   int catalog;  //здесь храним количество наименований в каталоге.
   cout<<"Введите количество марок автомобилей в каталоге:  ";
   cin>>catalog;
 
  car * ArrayCar = NULL;
  
  CreateArrayCar(ArrayCar  , catalog);
 
  ViewArrayCar(ArrayCar);
 
  FreeCar(ArrayCar ); 
 
   cin.get();
   return 0;
}
0
An1ka
66 / 71 / 2
Регистрация: 30.06.2011
Сообщений: 176
05.07.2011, 16:26 #15
Bers, а почему бы не сделать эту функцию внутри структуры ? Внешние функции - это нарушение инкапсуляции
1
05.07.2011, 16:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 16:26
Привет! Вот еще темы с ответами:

Красивый вывод структуры - C++
Здравствуйте, хотелось бы узнать, можно ли избежать такого вывода текста? (вложение) Пытался использовать setw, printf, cout(&quot;\t&quot;), текст...

Структуры, некорректный вывод - C++
Задание: 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость...

Вывод структуры в файл C++ - C++
Необходимо предоставить возможность сохранения таблицы в файл и чтения её из файла с помощью типа данных FILE (FILE *f =...

Вывод данных из структуры - C++
Как сделать чтобы выводились данные заданного дня пользователем из структуры?


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

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

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