Qsort – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Qsort – C / C++ – Fórum – Programujte.comQsort – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
xXx
~ Anonymní uživatel
54 příspěvků
22. 11. 2010   #1
-
0
-

#include <stdlib.h>

#include <string.h>
#include <stdio.h>
#include <iostream>
#include "CPole.h"
#include "CError.h"
using namespace std;

CPole::CPole(int pocet,int dolnyindex) : aPocet(pocet), aDolnyIndex(dolnyindex),
aPole(aPocet>0 ? new double[aPocet] : NULL)
{
printf("CPole()\n");
}

CPole::CPole(const CPole &src) : aPocet(src.aPocet), aDolnyIndex(src.aDolnyIndex),
aPole(aPocet>0 ? new double[aPocet] : NULL)
{
if(aPole != NULL) {
memmove(aPole,src.aPole,aPocet*sizeof(double));
}
}

CPole &CPole::operator = (const CPole &src)
{
if(this != &src) {
if(aPole!=NULL) {
delete[] aPole;
aPocet = 0;
aDolnyIndex = 0;
}
if(src.aPole!=NULL) {
aPocet = src.aPocet;
aDolnyIndex = src.aDolnyIndex;
aPole = new double[aPocet];
memmove(aPole,src.aPole,aPocet*sizeof(double));
}
}
return *this;
}

CPole::~CPole(void)
{
printf("~CPole()\n");
if(aPole!=NULL)
delete[] aPole;
}

double CPole::operator[](int index)
{
if(index<aDolnyIndex || index>aDolnyIndex+aPocet-1) throw CError("Zly index!\n",aDolnyIndex);
else return aPole[index-aDolnyIndex];
}

void CPole::Set(int index, double hodnota)
{
aPole[index-aDolnyIndex] = hodnota;
}

int compare( const void *a, const void *b)
{
int cislo1 = *((int*)a);
int cislo2 = *((int*)b);
if (cislo1 < cislo2) return -1;
if (cislo1 == cislo2) return 0;
return 1;
}

void CPole::AplikujQsort(CPole pole[], int ArraySize)
{
// qsort(pole, ArraySize, sizeof(CPole),Compare);
}



Nevedel by niekto pomoct s qsortom s tym, ze nejde o klasicke pole ale o obalovu triedu pola realnych cisel?
Ak to klasicky qsort qsort((void *)table, TableSize, sizeof(table[0]), sortFunction); tak mi hadze vzdy chybu ... Vopred vdaka

Nahlásit jako SPAM
IP: 158.193.98.–
Reklama
Reklama
zdenda
~ Anonymní uživatel
257 příspěvků
23. 11. 2010   #2
-
0
-

int compare(const void *a, const void *b) 

{
double cislo1 = *((double*)a);
double cislo2 = *((double*)b);
if (cislo1 < cislo2) return -1;
if (cislo1 == cislo2) return 0;
return 1;
}

void CPole::AplikujQsort()
{
qsort(aPole, aPocet, sizeof(double), compare);
}

Nahlásit jako SPAM
IP: 213.211.51.–
xXx
~ Anonymní uživatel
54 příspěvků
23. 11. 2010   #3
-
0
-

O nazvy atributov samozrejme neslo, ide iba o tuto chybu:

c:\documents and settings\administrator\my documents\visual studio 2008\projects\pole2\pole\cpole.cpp(70) : error C3867: 'CPole::compare': function call missing argument list; use '&CPole::compare' to create a pointer to member


Nahlásit jako SPAM
IP: 158.193.98.–
KIIV+42
God of flame
23. 11. 2010   #4
-
0
-

To xXx : a proc tedy nepouzijes navrhovane reseni?
vyslovene ti to rika: pouzij &CPole::compare pokud chces dostat pointer na metodu tridy..
mimo to je docela rozdil mezi compare a Compare - ac se to zda ci ne, C a i vetsina jazyku od nej odvozenych jsou case sensitive (tj. na velikosti zalezi :))

Mimo to, jak mohl vedet ze slo o nejakou chybu - si k tomu nic moc nenapsal?

Nahlásit jako SPAM
IP: 212.136.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
zdenda
~ Anonymní uživatel
257 příspěvků
23. 11. 2010   #5
-
0
-

http://www.youtube.com/watch?v=UNsT5URhLDM&t=0m8s

Nahlásit jako SPAM
IP: 213.211.51.–
KIIV+42
God of flame
23. 11. 2010   #6
-
0
-

To zdenda : jedna nula :D

Nahlásit jako SPAM
IP: 212.136.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 72 hostů

Podobná vlákna

Zmena parametra v Qsort — založil ArcaneBeam13

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý