Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 23:58   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Что не так делаю?

Уже голову сломал, но реализовать в полной мере не получается.
И так, по условиям задачи мне необходимо: Создать программу в которой будет структура "car"(марка, год), а начинается данная программа с запроса сколько машин в котологе должно быть, далее при помощи оператора "new" создать динамический массив который соотвествует числу машин. Далее прога должна спросить марку и год. Под конец программа должна выдать список всех введенных машин.

Подмагните, в чем проблема ?

Код:
#include <iostream>

using namespace std;

struct car
{
	char name[20];
	int year;
};

int main()
{
	cout << "How many cars do you wish to catalog: ";
	int list = 0;
	cin >> list;

	car *ps = new car[list];

	for (int i = 0; i < list; i++)
	{
		cout << "\nCar #"<< i+1 << endl;
		cout << "Please enter the make: ";
		cin >> ps->name;
		cout << "Please enter the year made: ";
		cin >> ps->year;
	}

	cout << "\nHere is your collection:" << endl;
	cout << ps->year << " " << ps->name;

	delete [] ps;

	int x = 0;
	cin >> x;

	return 0;
}
L6go1as вне форума Ответить с цитированием
Старый 28.10.2011, 00:20   #2
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

для начала ps[i].name и ps[i].year
без этого все, что вы вводите пишется в первый элемент массива на каждой итерации цикла.

потому вам так же нужно в цикле вывести все, что вы навводили.

Код:
for (int i = 0; i < list; ++i)
  cout << ps[i].year << " " << ps[i].name;

Последний раз редактировалось Stilet; 28.10.2011 в 08:21.
_Ч_ вне форума Ответить с цитированием
Старый 28.10.2011, 00:44   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

_Ч_, благодарю, видать уже устал, ибо очевидные вещи не видел %(
Только вот вопрос, в учебнике ж пишут мол когда с дим.структурами, то обращаться к конкретной строке через (*.) или -> ... А вы используете "просто так".
L6go1as вне форума Ответить с цитированием
Старый 28.10.2011, 00:58   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Не просто так, а через []. Этот оператор тоже осуществляет разыменовывание указателя.
Код:
int* pInt;
//Эти строки делают абсолютно одно и то же!
*pInt=8;
pInt[0]=8;
Abstraction вне форума Ответить с цитированием
Старый 28.10.2011, 00:58   #5
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

// ссылаемся на 5-й элемент в массиве
car& c = ps[4];
c.name = "xxx";
c.year = 666;

аналог:
car* c = &(ps[4]);
c->name = "xxx";
c->year = 666;

еще аналог:
car* c = ps + 4;
c->name = "xxx";
c->year = 666;


результат выражения ps[i] - это ссылка. если не знаете что это, то посмотрите в книжках.


продолжаем аналогии:
int x = 0;
int* px = &x;
int& rx1 = x;
int& rx2 = *px;

*px = 4; // x == 4
rx1 = 5; // x == 5
rx2 = 6; // x == 6

Последний раз редактировалось _Ч_; 28.10.2011 в 01:04.
_Ч_ вне форума Ответить с цитированием
Старый 28.10.2011, 07:54   #6
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от L6go1as Посмотреть сообщение
Только вот вопрос, в учебнике ж пишут мол когда с дим.структурами, то обращаться к конкретной строке через (*.) или -> ... А вы используете "просто так".
То обращаться надо через указатель, а не индекс !
Код:
car *ps = new car[list];
for (car *p = ps; p < ps+list; ++p)
{
   cout << "\nCar #"<< p-ps+1 << endl;
   cout << "Please enter the make: ";
   cin >> p->name;
   cout << "Please enter the year made: ";
   cin >> p->year;
}
An1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что я делаю не так rj-45 Microsoft Office Excel 7 22.11.2011 10:21
Установка Gecko - что делаю не так? spamer Работа с сетью в Delphi 0 27.09.2010 23:49
Объсните что не так делаю Crudelis Общие вопросы C/C++ 4 10.06.2010 00:26
не пойму что не так делаю Crudelis Общие вопросы C/C++ 3 23.04.2010 11:09
Visual C++: Что не так делаю? N!ckeL Помощь студентам 8 19.05.2008 11:28