» »

napaka v c++

napaka v c++

kretze ::

zdravo folk malo se obračam na vas ker mi compailer javi to napako(Error1 error C3861: 'ordered': identifier not found) in nevem kaj je narobe

class person
{
protected:
	string name;
public:
	void setName()
	{
		cout << "enter name "<<endl;
		cin >> name;
	}

	void putname()
	{
		cout << "\nName is " << name;
	}

	string getname()
	{
		return name;
	}
};

void Bsort(person **pp, int n)
{
	for (int i = 0; i < n - 1;i++)
	for (int j = i + 1; j < n; j++)
		ordered(pp + i, pp + j);
	
	
	

}


void ordered(person **pp1, person **pp2)
{
	if ((*pp1)->getname() > (*pp2)->getname())
	{
		person*temptr = *pp1;
		*pp1 = *pp2;
		*pp2 = temptr;
	}
}

int main()
{
	
	person *ptrper[100];
	int n = 0;
	char choice;

	do
	{
		ptrper[n] = new person;
		ptrper[n]->setName();
		n++;
		cout << "enter another [y/n] ";
		cin >> choice;
	} while (choice == 'y');


	cout << "\nUsorted list ";
	for (int i = 0; i < n; i++)
		ptrper[i]->putname();

	Bsort(ptrper, n);

	cout << "\nsorted list";
	for (int i = 0; i < n; i++)
		ptrper[i]->putname();
	cout << endl;

mijav7 ::

Funkcijo ordered napiši nad funkcijo Bsort?

smacker ::

V vrstici 27 kličeš funkcijo ordered, ki je compiler še ne pozna, ker še ni prišel do vrstice 35, kjer jo definiraš ;) Lahko pa rešiš tako, da na vrhu deklariraš funkcijo (poveš da obstaja), spodaj pa jo definiraš(napišeš kodo ki se izvaja v funkciji).
Tutorial: http://www.cplusplus.com/doc/tutorial/f...
Glej odsek "Declaring functions" čisto spodaj.

Zgodovina sprememb…

  • spremenil: smacker ()

kretze ::

hvala obema

kretze ::

hej ena vprašanje še mama kak bi naredil to funkcijo buble sort da bi delovala??
void buble_sort(person **pp, int n)
{
	
	person* temp;
	

	for (int i = 0; i < n - 1; i++)
	{
	
	for (int j = i + 1; j < n; j++)
		
	{
		if ((*pp + i)->getname()>(*pp + j)->getname())
		{
			temp = *(pp + i);
			*(pp + i) = *(pp + j);
			*(pp + j) = temp;
		}
		}
		
	}
}

mijav7 ::

Kaj ti ne deluje?

kretze ::

ven me vrže s programa

smacker ::

Kristalna krogla mi danes ne dela najbolje... napiši celo kodo + kak error ti izpiše ;)

kretze ::

error: Unhandled exception at 0x7551C54F in OOPI25(1) person pointer,buble sort.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0039E9D0.



class person
{
private:
	string name;
public:
	void setname()
	{
		cout << "\nEnter name ";
		cin >> name;
	}

	void printname()
	{
		cout << "name is " << name << endl;
	}

	string getname()
	{
		return name;
	}

};

void buble_sort(person **pp, int n)
{
	
	person* temp;
	

	for (int i = 0; i < n - 1; i++)
	{
	
	for (int j = i + 1; j < n; j++)
		
	{
		if ((*pp + i)->getname()>(*pp + j)->getname())
		{
			temp = *(pp + i);
			*(pp + i) = *(pp + j);
			*(pp + j) = temp;
		}
		}
		
	}
}
int main()
{
	
	person *per[10];
	char choice;
	int n = 0;
	do
	{
		per[n] = new person;
		per[n]->setname();
		n++;

		cout << "enter another [y/n] ";
		cin >> choice;


	} while (choice == 'y');

	cout << "\nUnsorted list ";
	for (int i = 0; i < n; i++)
		per[i]->printname();
	buble_sort(per, n);

	cout << "\nsorted list ";
	for (int i = 0; i < n; i++)
		per[i]->printname();

mijav7 ::

void buble_sort(person **pp, int n)
{

    person* temp;


    for (int i = 0; i < n - 1; i++)
    {

    for (int j = i + 1; j < n; j++)

    {
        if (pp[i]->getname()>pp[j]->getname())
        {
            temp = pp[i];
            pp[i] = pp[j];
            pp[j] = temp;
        }
        }
    }
}

Uranij ::

Problem je v if stavku, metode bubble sort. Problem je, da
*pp + i 
in
*(pp + i)

nista enaki zadevi.

Poskusi na praktičnem primeru ugotoviti razliko.

LP

kretze ::

hvala obema mi je zelo pomagalo :)

mojca ::

Predlagam uporabo smart pointerjev iz standarda C++11.

Zgornji program ima sicer memory leak. Kar inicializiraš z new, moraš tudi pobrisati, razen če prepustiš programskemu jeziku, da to naredi zate, in 'new' sploh nikjer ne uporabiš.

marjan_h ::

Eno vprašanje, ali je pomnilniški naslov ki ga dobiš v C/C++
&spr
, fizični ali virtualni?

Randomness ::

marjan_h je izjavil:

Eno vprašanje, ali je pomnilniški naslov ki ga dobiš v C/C++
&spr
, fizični ali virtualni?

Od kje vlačiš ta vprašanja? Ko boš vedel, kaka je razlika med obema, ti ne bo potrebno spraševati takih vprašanj.

marjan_h ::

Ja, fizični je dejanski naslov v pomnilniku, virtualnega pa generira CPU.

čuhalev ::

Večina modernih operacijskih sistemov na modernih procesorjih ti poda navidezni naslov.

marjan_h ::

Aja, ja se mi je zdelo. Kaj pa če se vrnemo v čase MS-DOS?

čuhalev ::

Tam živiš v realnem načinu in takrat procesor izvaja le en program, ki nima omejitev (razen širine vodila) pomnilnika. Tam je edini naslov absoluten, skratka fizičen.

MrStein ::

Pozabil si segmente. ;)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

čuhalev ::

To je zgodovina omejitev, ki prinese še omejitev na pomilnik. Malo manj kot 1 MB. To, kar bi potreboval je flat mode, vendar s tem nimam izkušenj.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java skeniranje map in podmap

Oddelek: Programiranje
61072 (961) nightrage
»

c++ enum

Oddelek: Programiranje
71049 (883) Bistri007
»

[C++] Insertion sort - problem

Oddelek: Programiranje
191034 (873) Thomas
»

Pomoč z C++ nalogo

Oddelek: Programiranje
101342 (1149) denis123
»

vprasanje c++

Oddelek: Programiranje
422382 (2381) Volk|

Več podobnih tem