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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2012, 18:46   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию С++ Visual динамические структуры

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

Надо динамически записывать, считывать и выводить на консоль работников, их адрес (из вложенной структуры) и зарплата.

К сожалению, в Интернете примеров на вложенную структуру и динамику не так много и я не очень хорошо понимаю, как получать доступ к вложенной структуре через указатель.

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

Нужна консультация и добрый совет.
Пока наброски

Код:

#include "stdafx.h"
#include <conio.h>
#include <iostream>


struct address {
	char[20] city;
	char[50] street;
};

struct man {
	char[10] name;
	struct address; // Vlozennaja structura
	float wage;
};


man *next;// ukazatel  na structuru



using namespace std;


int main()
{
next = new man; // Videlaem pamat
next->name='Vasja';
next->address.city='Moskva';
next->address.street='Lomonosova';
next->wage=100.00;


cout<<"Controlmiy test"<<endl;
cout<<next->name<<endl;
cout<<next->city<<endl;
cout<<next->street<<endl;
cout<<next->wage<<endl;




	getch();
	return 0;
}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 01.03.2012, 19:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Си под рукой нет но: *next->address->city='Moskva';
Цитата:
man *next;// ukazatel na structuru
Єто ИМХО не нуна, ты все равно его через new делаешь.
И еще:
Код:
man *next = new man; // Videlaem pamat
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.03.2012, 19:18   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Сто лет за Си не садилась, поэтому могу ошибаться во всем...
Итак, не
Код:
struct man {
	char[10] name;
	struct address; 
	float wage;
};
Код:
struct man {
	char name[10];
	address a;
	float wage;
};
Заметьте, не char[20] name, а char name[20].
Далее, в одинарные кавычки заключаются символы. Если же вам надо ввести слово, то оно должно быть в двойных, например "Vasya".
И присваивание строк идет не через =, а через какую-то команду. Сейчас вспомню, допишу.

Код:
strcpy(next1->a.city, "Moskva");
Для этого надо подключить библиотеку string.h или Cstring

А это вывод:
Код:
cout<<"Controlmiy test"<<endl;
cout<<next1->name<<endl;
cout<<next1->a.city<<endl;
cout<<next1->a.street<<endl;
cout<<next1->wage<<endl;
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 01.03.2012 в 19:25.
ACE Valery вне форума Ответить с цитированием
Старый 01.03.2012, 19:27   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Valery, мне бы еще по поводу вложенной структуры уточнить. Вот у Вас написано
Код:
address a;
А как я могу это связать с вложенной структурой address? И получать из нее город и улицу?
И еще вопрос про двойные кавычки - нас учили, что если у переменой тип string тогда двойные кавычки, а если char - одинарные. Или я просто не правильно поняла...
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 01.03.2012, 19:34   #5
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
А как я могу это связать с вложенной структурой address?
как раз по переменной а
Код:
next1->a.city
Кстати, насчет названия next - оно конфликтует с пространством имен std, поэтому ее лучше переобозвать как-то.
Цитата:
И еще вопрос про двойные кавычки - нас учили, что если у переменой тип string тогда двойные кавычки, а если char - одинарные. Или я просто не правильно поняла...
Скорее всего, преподаватель имел в виду одинарный символ. А у вас массив символов (char[10]), и туда кладется целая строка, а строка должна быть в двойных. Впрочем, если заполнять посимвольно, то каждый символ будет в одинарных, например,
Код:
name[0] = 'V';
name[1] = 'a';
name[2] = 's';
name[3] = 'y';
name[4] = 'a';
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 01.03.2012, 19:46   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Да, все работает, спасибо большое!

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

Значит, теперь, если сделать изменения в способе прочтения (не с кода, а с клавиатуры или из файла) можно будет (с помощью созданных функций) считывать людей из заранее подготовленного текстового файла (скажем по имени выводить данные) и также добавлять новых людей в текстовый файл? Я просто пока себе слабо представляю, как работают динамические структуры, тем более вложенные....

PS Valery, я пока, к сожалению, не могу Вам добавить нажатия на весы, при всем моем желании - не работают весы((((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 01.03.2012 в 19:51.
Blondy вне форума Ответить с цитированием
Старый 01.03.2012, 23:20   #7
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
Значит, теперь, если сделать изменения в способе прочтения можно будет считывать людей из заранее подготовленного текстового файла и также добавлять новых людей в текстовый файл?
Ага, вполне. Тем более, если брать не текстовый файл, а бинарный, то можно считывать вообще массив структур, не нужно будет каждую переменную инициализировать (это насколько я помню, а также не могу с уверенностью сказать, действует ли это для вложенных структур или только для простых).

Вложенные структуры являются для главной структуры обычной переменной, с той только разницей, что у переменной одно значение, а у структуры множество полей, поэтому после имени вложенной структуры через точку идет конкретное обращение к полю, как например, тут:
Код:
next1->a.city
А вообще структура - это по сути создаваемый вами новый тип, поэтому, объявляя переменную типа address мы не пишем слово struct, address теперь является таким же типом данных, как и int, например, поэтому пишем
Код:
address a;
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 02.03.2012, 00:25   #8
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Да, Valery, спасибо еще раз.. у нас тут что-то типа пожара в джунглях, все срочно надо делать, и все бегом-бегом, на спокойное осмысление времени вообще не остается..Мне мальчики показывали свои наработки вложенной структуры, но у каждого было все по-разному, никто ни в чем не был уверен, все всё по крупицам собирали и, в итоге, ни у кого ничего толком не работало.

Я теперь по крайней мере с Вашей помощи поняла идею.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 02.03.2012, 02:09   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

не за что Я хоть сама что-то вспомнила из С
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры danilqa Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 12:16
динамические структуры mego4el Помощь студентам 4 13.02.2011 00:30
динамические структуры Елена Лапуля Помощь студентам 3 04.05.2010 08:57
Динамические структуры!!!! Oooooleg Помощь студентам 4 22.05.2009 14:15