Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - набрал пример по книге, но он не работает

Ответить
Настройки темы
C/C++ - набрал пример по книге, но он не работает

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Изменения
Автор: котвася
Дата: 22-06-2010
программа многоцелевой сортировки использующая указатели на функции
(mvs2008)
Код: Выделить весь код
//-------------------------------------------------------

#include <iostream>
#include <iomanip>

void bubble(int *, const int, int(*)(int,int));
int ascending(const int,const int);
int descending(const int, const int);

int main()
{
	setlocale(LC_ALL,".1251");

	const int arraySize=10;

	int order, a[arraySize]={2,3,4,5,8,12,10,89,86,45};

	std::cout<<"Введите 1 для сортировки в возрастающем порядке, \n Введите 2 для сортировки в убывающем порядке: ";
	std::cin>>order;

	std::cout<<"\nЭлементы в исходном порядке"<<std::endl;

	for(int i=0; i<arraySize; i++)
		std::cout<<std::setw(4)<<a[i];
	std::cout<<std::endl;

	if(order==1)
	{
		bubble(a,arraySize, ascending);
		std::cout<<"Элементы данных в возрастающем порядке"<<std::endl;
	}
	else
	{
		bubble(a,arraySize,descending);
		std::cout<<"Элементы данных в убывающем порядке"<<std::endl;
	}

	for(int i=0; i<arraySize; i++)
		std::cout<<std::setw(4)<<a[i];
	std::cout<<std::endl;

	system("pause");
	return 0;
}

void bobble(int *work, const int size, int (*compare)(int,int))
{
	void swap(int *, int *);

	for(int pass=1; pass<size; pass++)
		for(int count=0; count<size-1; count++)
			if((*compare)(work[count],work[count+1]))
				swap(&work[count], &work[count+1]);
}

void swap(int *element1Ptr, int *element2Ptr)
{
	int temp;

	temp=*element1Ptr;
	*element1Ptr=*element2Ptr;
	*element2Ptr=temp;
}
int ascending(const int a, const int b)
{
	return b<a;
}
int descending(const int a, const int b)
{
	return b>a;
}

1>------ Построение начато: проект: программа_многоцелевой_сортировки, Конфигурация: Debug Win32 ------
1>Компиляция...
1>unit.cpp
1>Компоновка...
1>unit.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl bubble(int *,int,int (__cdecl*)(int,int))" (?bubble@@YAXPAHHP6AHHH@Z@Z) в функции _main
1>C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\программа_многоцелевой_сортировки\Debug\программа_многоцелевой_сортировки.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\программа_многоцелевой_сортировки\программа_многоцелевой_сортировки\Debug\BuildLog.htm "
1>программа_многоцелевой_сортировки - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

в чем ошибка?

Отправлено: 00:50, 22-06-2010

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


котвася, Помню этот пример в книге Дейтелов.

Код: Выделить весь код
void bubble(int *, const int, int(*)(int,int));
void bobble(int *work, const int size, int (*compare)(int,int))

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:15, 22-06-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


именно из нее

Отправлено: 22:39, 23-06-2010 | #3


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


раз тут есть знающие люди, спрошу еще один вопрос. По этой книге .
Пример снова не работает:

Код: Выделить весь код
//FIG6_5.CPP
//Драйвер класса Time1
//ЗАМЕЧАНИЕ: компилируется вместе с TIME1.CPP

#include <iostream>
//определение абстрактного типа данных Time

class Time
{
public:
	Time();//конструктор
	void setTime(int, int, int);
	void printMilitary();
	void printStandard();
private:
	int hour;
	int minute;
	int second;
};
//Конструктор Time присваивает нулевые начальные значания каждому
//элементу данных. Обеспечивает согласованное начальное состояние
//всех объектов Time

Time::Time(){hour=minute=second=0;}

//Задание нового значения Time в виде военного времени.
//Проверка правильности значений данных. Обнуление неверных значений.
Time::setTime(int h, int m, int s)
{
	hour = (h >= 0 && h < 24) ? h : 0;
	minute = (m >= 0 && m < 60) ? m : 0;
	second = (s >= 0 && s < 60) ? s : 0;
}

//Печать времени в военном формате
void Time::printMilitary()
{
	std::cout << (hour < 10 ? "0" : "") << hour << ":"
		<< (minute < 10 ? "0" : "") << minute << ":"
		<< (second < 10 ? "0" : "") << second;
}
 //Печать времени в стандартном формате
void Time::printStandard()
{
	std::cout << ((hour == 0 || hour == 12) ? 12 : hour%12)
		<< ":" << (minute < 10 ? "0" : "") << minute
		<< ":" << (second < 10 ? "0" : "") <<second
		<< (hour <12 ? "AM" : "PM");
}

//Драйвер проверки простого класса Time

int main()
{
	setlocale(LC_ALL,".1251");
	Time t;// определение зкземпляра объекта t класс Time
	std::cout<<"Начальное значение военного времени равно ";
	t.printMilitary();
	std::cout << std::endl << "Начальное значение стандартного времени равно ";
	t.printStandard();

	t.setTime(13,27,6);

	std::cout << "\n\n" << "Военное время после setTime равно ";
	t.printMilitary();
	std::cout << "\n" <<"Стандартное время после setTime равно ";
	t.printStandard();

	system("pause");
	return 0;
}
1>------ Построение начато: проект: драйвер_класса_Time, Конфигурация: Debug Win32 ------
1>Компиляция...
1>FIG6_5.cpp
1>c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(29) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(29) : error C2556: int Time::setTime(int,int,int): перегруженная функция отличается от 'void Time::setTime(int,int,int)' только возвращаемым типом
1> c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(12): см. объявление 'Time::setTime'
1>c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(29) : error C2371: Time::setTime: переопределение; различные базовые типы
1> c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(12): см. объявление 'Time::setTime'
1>c:\$p\mvs\{как программировать на с++}\драйвер_класса_time\драйвер_класса_time\fig6_5.cpp(62) : error C2264: Time::setTime: ошибка в определении или объявлении функции; функция не вызвана
1>Журнал построения был сохранен в "file://c:\$p\mvs\{как программировать на с++}\драйвер_класса_Time\драйвер_класса_Time\Debug\BuildLog.htm"
1>драйвер_класса_Time - ошибок 4, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

О ЭВРИКА, САМ ДОКУМЕКАЛ!!

вот:
Код: Выделить весь код
void Time::setTime(int h, int m, int s)
{
	hour = (h >= 0 && h < 24) ? h : 0;
	minute = (m >= 0 && m < 60) ? m : 0;
	second = (s >= 0 && s < 60) ? s : 0;
}

Последний раз редактировалось котвася, 04-07-2010 в 00:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:01, 04-07-2010 | #4


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Еще один пример, если можно:
Код: Выделить весь код
//MAIN.CPP
//Перегрузка операций поместить в поток и взять из потока 

#include <iostream>

#if !defined(__USING_STD_NAMES__) && defined(__cplusplus)
using namespace std;
#endif 



class PhoneNumber
{
	friend ostream &operator << (ostream &, const PhoneNumber &);
	friend istream &operator >> (istream &, PhoneNumber &);
private:
	char areaCode[4];
	char exchange[4];
	char line[5];
};

ostream &operator << (ostream &output, const PhoneNumber &num)
{
	output << "(" << num.areaCode << ")"
		<< num.exchange << "-" << num.line;
	return output;
}
istream &operator >> (istream &input, PhoneNumber &num)
{
	input.ignore();
	input.getline(num.areaCode, 4);
	input.ignore(2);
	input.getline(num.exchange, 4);
	input.ignore();
	input.getline(num.line, 5);
	return input;
}

int main()
{
	setlocale(LC_ALL,".1251");

	PhoneNumber phone;

	cout << "Введите номер телефона в "
		<< "виде (123) 456-7890:" << endl;
	cin >> phone;

	cout << "Был введен номер телефона:" << endl << phone << endl;
	system("pause");
	return 0;
}
Пример компилируется, но не правильно работает. Не могу разобраться в чем дело. Помогите.

Отправлено: 16:14, 25-07-2010 | #5


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата котвася:
но не правильно работает »
Не могу понять, но попробуй собрать такой, я этот пример когда-то тоже набирал.

Код: Выделить весь код
// ГЛАВА 8. рисунок 8.3
// перегруженные операторы, помещённые в поток
// и извлечение из потока
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;

#include <iomanip>
using std::setw;

class PhoneNumber{
    friend ostream &operator<<(ostream &, const PhoneNumber &);
    friend istream &operator>>(istream &, PhoneNumber &);

private:
    char areaCode[4];     // трехцифровой код местности и нулевой символ
    char exchange[4];     // трехцифровой комутатор и нулевой символ
    char line[5];         // четырехцифровая линия и нулевой символ
 };

// перегруженная операция, помещённая в поток
// ( не может быть функцией-членом, если только нам
// не понадобилось бы активизировать её с cout<<somePhoneNumber; ).
ostream &operator<<(ostream &output, const PhoneNumber &num)
{
  output<< "("<<num.areaCode<<") "
        <<num.exchange<<"-"<<num.line;
  return output;             // разрешает вывод из потока <<a<<b<<c;
}

istream &operator>>(istream &input, PhoneNumber &num)
{
  input.ignore();               // пропуск (
  input>>setw(4)>>num.areaCode; // ввод кода местности
  input.ignore(2);              // пропуск ( и пробела
  input>>setw(4)>>num.exchange; // ввод коммутатора
  input.ignore();               // пропуск дефиса
  input>>setw(5)>>num.line;     // ввод линии
  return input;                 // разрешает ввод в поток >>a>>b>>c;
}

int main()
{
  int z;
  PhoneNumber phone;       // создание объекта phone

  cout<<"   ENTER NUMBER TELEFON V FORME (123) 456-7890:\n  ";

  // cin>>phone активизирует функцию operator>>
  // путем вызова operator>>(cin, phone)
  cin>>phone;

  // cout<<phone активизирует функцию operator<<
  // путем вызова operator<<(cout, phone)
  cout<<"   BIL VVEDEN NUMBER TELEFONA:  "<<phone<<endl;

  cin>>z;
        return 0;
}
//---------------------------------------------------------------------------

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:40, 25-07-2010 | #6


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Ха
работает!
тему закрывать не буду, может еще какие-нибудь вопросы будут.

Отправлено: 16:48, 25-07-2010 | #7


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата котвася:
Ха
работает! »
Ещё бы

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 18:58, 25-07-2010 | #8


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


я был просто удивлен, когда увидел:
Код: Выделить весь код
.....................
input>>setw(5)>>num.line;
.....................
думал что setw используют только для вывода.

Отправлено: 20:06, 25-07-2010 | #9


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


котвася, Так одну ж книгу читаем, чего ж ты пропустил-то?

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 11:55, 26-07-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - набрал пример по книге, но он не работает

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [Outlook] Отсортировать список контактов в Адресной книге Gangabass Microsoft Office (Word, Excel, Outlook и т.д.) 0 18-08-2009 08:28
Exchenge-дубликаты в адресной книге IV@one Microsoft Exchange Server 2 31-10-2007 09:50
MS Exchange Формат Записей в Адресной Книге Loki3D Microsoft Exchange Server 1 27-11-2006 12:37
[решено] C/C++ | Задание в книге по С Grekalov Программирование и базы данных 2 13-08-2006 13:58
Пример документа Umka Вебмастеру 2 25-11-2005 23:03




 
Переход