Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

У меня такая беда. Причин две, собсно или я идиот || компелятор тупит (или настроен криво).

Юзаю борланд С++ билдер 6.0

 

Нужно написать прогу, в которой есть БД организованная списком.

В прилагаемом далее коде мои начинания.

 

В чём собсна моя проблема...

Не могу инициализировать первый эелемент списка, компелятор ругается.

Пишет вот чего:

Multiple declaration for 'Header'

Earlier declaration of 'Header'

 

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

В функцию add в таком случае надо передать указатель на следующий элемент списка, но простым параметром он не передаётся - ругается компелятор :(

де я туплю?

 

//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>

#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused

int id=0;
struct TRegTable {
				 TRegTable *pNext;
				 int ID;
				 char *Name;
				 char *Surname;
				 bool sex;				// false - female, true - male;)
				 unsigned short age;
				 char *Tel;
				 };

#	 TRegTable Header;
#	 Header.pNext = new TRegTable;
#	 Header.ID = id;
#	 Header.Name = "Maxim";
#	 Header.Surname = "Ikonnikov";
#	 Header.sex = true;
#	 Header.age = 17;
#	 Header.Tel = "7913410";

void print(int number);
int add();
void del();

int main()
{

int n;

cout << "Welcome to your little database!\n";
cout << "\nPush 'a' to add record to your database\n";
cout << "Push 'p' to print your database\nPush 'q' to close your database\n";
switch(getch()) // getch() - <conio.h>
		{
		case 'a' : cout<<"\nThis function adds records to your db\n";
				   add();
				   break;
		//case 'p' : cout<<"\nThis function print all your db\n";
		  //		 for(int a=0; a<ID; a++){print();}
			//	   break;
		case 'e' : cout<<"\nThis function print element by ID\nEnter ID:\n";

						cin>>n;

						print(n);
				   break;
		case 'l' : cout<<"\nThis function print your last element\n";
		case 'q' : return 0;
		default: cout<<"\t\t\tPush correct button!\n";
		}


getch();
return 0;
}
//---------------------------------------------------------------------------
void print(int number)
{
//for(; number;)
//cout<<;
}

//---------------------------------------------------------------------------
int add(Header.pNext)
{
id++;
//pNext.
(*pNext).ID = id;
cout<<"\nEnter the name:\n";
cin>>Header.Name;
cout<<"\nEnter the surname:\n";
cin>>Header.Surname = "Ikonnikov";
cout<<"\nEnter the sex:\n";
cin>>Header.sex;
cout<<"\nEnter the age:\n";
cin>>Header.age;
Header.Tel = "7913410";
return 0;
}
//---------------------------------------------------------------------------
void del()
{

}
//---------------------------------------------------------------------------

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

  • 2 недели спустя...
Опубликовано

...
int add();
...

int add(Header.pNext)
{
...
}
Crus, у тебя декларация функции add отличается от ее определения. Если необходимо передавать в add указатель на TRegTable, то функция должна быть продекларирована так:

 

int add(TRegTable *pNext);
а ее описание должно быть таким:

int add(TRegTable *pNext)
{
id++;
pNext->ID = id;
...
return 0;
}
Потом, add должна создавать новый объект используя оператор new, а твоя функция add не создает нового объекта. Даже если она будет правильно описана, первое же обращение к ней вызовет Exception.

Со списками у тебя не лады, рекомендую почитать книгу - Уильям Топп, Уильям Форд "Структуры данных в C++". Отличная книга по организации структур данных, есть и про списки, и про стеки, очереди и многое другое, и все с примерами.

Я сам программирую на Билдере, так что если что - пиши, попробуем разобраться.

E = mc2

Опубликовано

Круз, решил стать программистом - учись и добивайся своих результатов сам. В этом деле каждый пишет свой алгоритм. И чем меньше машинного времени ты потратишь, в этом деле, если ты понимаешь о чем речь - тем лучше. Ни один уважающий себя программист не будет копаться в твоём коде, если он не преподаватель, а напишет свою процедуру, свою функцию... Это намного проще и меньше занимает времени поиска ошибок в чужих программах... Это так сказать, тебе на будущее... Никогда не ищи помощи, разбирайся и достигай цели сам. Или озвучивай задачу, проект целиком и готовся делиться. :(

Опубликовано

Круз, решил стать программистом - учись и добивайся своих результатов сам. В этом деле каждый пишет свой алгоритм. И чем меньше машинного времени ты потратишь, в этом деле, если ты понимаешь о чем речь - тем лучше. Ни один уважающий себя программист не будет копаться в твоём коде, если он не преподаватель, а напишет свою процедуру, свою функцию... Это намного проще и меньше занимает времени поиска ошибок в чужих программах... Это так сказать, тебе на будущее... Никогда не ищи помощи, разбирайся и достигай цели сам. Или озвучивай задачу, проект целиком и готовся делиться. :(

Добавлю... Я в свое время, на 3 курсе проходил произвотсвенную практику на одном КБ... Ты думаешь со мной делись знаниями? Фиг там! Дали задание написать процуру такого то процесса - справишься - молодец! Нет - ну и не очень то и нужно, 4 получишь за то что посещал и проявлял интерес... Я лично всегда до всего доходил сам. Хотя и бывало что как зациклишся... Не н а том чем нужно - и некому в мою голову нажать резет :(
Опубликовано

что то понесло меня )))))) Ну да ладно... )))))) С тех пор как закончил институт, и утроился на работу... Асемблер, и Си, использовал пару раз... Всё можно сделать на этих языках. Но утомительно и долго...

Опубликовано

К стате, Круз, а куда ты поступил? Где учишься? Я заканчивал Новочеркасский политех, кафедра ЭВМКСиС. специальность 60.... Непомню цифры... Расшифровываеться как Электронно Вычислительные Машины Комплексы Системы и Сети. На первом курсе я писал программы на перфокартах... Ты наверно и не знаешь что это такое :(

Опубликовано

Нда уж - понесло, не то слово. Знаем мы что такое перфокарты, перфоленты... Ты их рассыпать не пробовал? )))

Высота - залог здоровья!

БН 94

10years_for.jpg

Опубликовано

Нда уж - понесло, не то слово. Знаем мы что такое перфокарты, перфоленты... Ты их рассыпать не пробовал? )))

А у нас, например, было принято 'кропить колоду' - перфокарты нумеровались , особенно в дипломных 'колодах' :(

E = mc2

Опубликовано

Когда приперло,пришлось завести подругу на ИВЦ.Приносил только прогу на фортране на бумаге,забирал распечатку,колоду и результат в уютной обстановке. :(

12310years_for.jpg

Опубликовано

Когда приперло,пришлось завести подругу на ИВЦ.Приносил только прогу на фортране на бумаге,забирал распечатку,колоду и результат в уютной обстановке. :)

...распечатку,колоду и результат... Про результат отдельно? :(

 

А колоду резиночкой связывал? :(

Высота - залог здоровья!

БН 94

10years_for.jpg

Опубликовано

У нас препод С++ по перфокартам преподаёт... :(:(

 

Поступил я в Челябинский Гос. Университет.

Мат. фак.

Специальность - Информационные технологии (it-технологии)

 

 

to Airom

СПасибо большое.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Опубликовано

Когда приперло,пришлось завести подругу на ИВЦ.Приносил только прогу на фортране на бумаге,забирал распечатку,колоду и результат в уютной обстановке. :)

...распечатку,колоду и результат... Про результат отдельно? :(

 

А колоду резиночкой связывал? :(

 

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

12310years_for.jpg

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...