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

Компьютерный форум 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

 

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

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


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

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


Drongo, вроде не упоминалось про вывод.

Отправлено: 22:38, 27-07-2010 | #11



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

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


Аватара для 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


Отправлено: 23:18, 27-07-2010 | #12


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

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


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

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


Drongo нашел, но дальше по тексту. На то время еще не дочитал

Отправлено: 00:15, 28-07-2010 | #13


Аватара для 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


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


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

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


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

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


Вот еще бы один пример.
Код: Выделить весь код
//TSTACK.H
//Простой шаблон класса Stack

#ifndef TSTACK_H
#define TSTACK_H

#include <iostream>
using namespace std;

template <class T>
class Stack
{
public:
	Stack(int = 10);
	~Stack(){delete [] stackPtr;}
	int push(const T&);
	int pop(T&);
	int isEmpty()const {return top == -1;}
	int isFull() const {return top == size - 1;}
private:
	int size;
	int top;
	T *stackPtr;
};
#endif
Код: Выделить весь код
//TSTACK.CPP
//Определение функций-элементов класса Stack

#include "TStack.h"

template <class T>
Stack<T>::Stack(int s)
{
	size = s > 0 && s < 1000 ? s : 10;
	top = -1;
	stackPtr = new T[new];
}

template <class T>
int Stack<T>::push(const T &item)
{
	if(!isFull())
	{
		stackPtr[++top] = item;
		return 1;
	}
	return 0;
}

template <class T>
int Stack<T>::pop(T &popValue)
{
	if(!isEmpty())
	{
		popValue = stackPtr[top--];
		return 1;
	}
	return 0;
}
Код: Выделить весь код
//MAIN.CPP


#include <iostream>
#include "TStack.h"

int main()
{
	setlocale(LC_ALL, ".1251");
	Stack<float> floatStack(5);
	float f = 1.1;
	cout << "Размещение элементов в floatStack" << endl;

	while(floatStack.push(f))
	{
		cout << f << ' ';
		f +=1.1;
	}
	
	cout << endl << "Стек заполнен. Невозможно разместить "
		 << f << endl << endl
		 << "Выталкивание элементов из floatStack" << endl;

	while(floatStack.pop(f))
		cout << f << ' ';

	cout << endl << "Стек пуст. Больше нечего вытолкнуть невозможно" << endl;


	Stack<int> intStack(5);
	int i = 1;
	cout << "Размещение элементов в floatStack" << endl;

	while(intStack.push(i))
	{
		cout << i << ' ';
		i++;
	}
	
	cout << endl << "Стек заполнен. Невозможно разместить "
		 << i << endl << endl
		 << "Выталкивание элементов из floatStack" << endl;

	while(intStack.pop(i))
		cout << i << ' ';

	cout << endl << "Стек пуст. Больше нечего вытолкнуть невозможно" << endl;
	system("pause");
	return 0;
}
А самое главное, я сначала все это пропустил и начала после прочтения выполнять задания. Выполнил, вроде все правильно, но компилятор выдает ошибки. Решил вернутся и набрать примеры, может что упустил. Но тут снова ошибки да еще и такие же как у меня. В чем причина?

1>------ Построение начато: проект: Stack, Конфигурация: Debug Win32 ------
1>Компиляция...
1>main.cpp
1>c:\$p\mvs\{как программировать на с++}\сотировка_пузырек_сlass\сотировка_пузырек_сlass\main.cpp(11) : warning C4305: инициализация: усечение из 'double' к 'float'
1>c:\$p\mvs\{как программировать на с++}\сотировка_пузырек_сlass\сотировка_пузырек_сlass\main.cpp(17) : warning C4305: +=: усечение из 'double' к 'float'
1>Создание кода...
1>Пропуск... (изменения не обнаружены)
1>TStack.cpp
1>Компоновка...
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<int>::pop(int &)" (?pop@?$Stack@H@@QAEHAAH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<int>::push(int const &)" (?push@?$Stack@H@@QAEHABH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack<int>::Stack<int>(int)" (??0?$Stack@H@@QAE@H@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<float>::pop(float &)" (?pop@?$Stack@M@@QAEHAAM@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<float>::push(float const &)" (?push@?$Stack@M@@QAEHABM@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack<float>::Stack<float>(int)" (??0?$Stack@M@@QAE@H@Z) в функции _main
1>C:\$p\mvs\{как программировать на с++}\Сотировка_пузырек_Сlass\Debug\Stack.exe : fatal error LNK1120: 6 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\$p\mvs\{как программировать на с++}\Сотировка_пузырек_Сlass\Сотировка_пузырек_Сlass\Debug\BuildLog.htm"
1>Stack - ошибок 7, предупреждений 2
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Отправлено: 22:59, 10-08-2010 | #15


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

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


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

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


странно но решил

Отправлено: 12:40, 11-08-2010 | #16



Компьютерный форум 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




 
Переход