Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
Verwijderd
ff stringetje of getal omdraaien en sorteren, 't is niet zo moelijk
Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO
Move SA -> P&W
Aannames zijn fataal.
Dit is meer iets voor [PW]
ik typ traag
Who is John Galt?
Ofzoiets.....
He who knows only his own side of the case knows little of that.
Maar ff serieus, de mod zou goed moeten gaan hoor. Misschien doe je wat anders fout?
danku
titel gefixt
Doet iets met Cloud (MS/IBM)
Verwijderd
2. je keert die strings om met deze functie:
1
| char * _strrev (char *); |
3. je vergelijkt het eerste karakter van elke string met de volgende eerste karakters van de strings eronder. Indien nodig, wissel je de 2 strings van plaats, en zo ga je verder tot het einde.
Zo zou ik het doen?
Ik ook denk ikOp dinsdag 19 februari 2002 15:38 schreef DiEana het volgende:
1. je zet je array van getalletjes om naar een array van strings
2. je keert die strings om met deze functie:
code:
1 char * _strrev (char *);
3. je vergelijkt het eerste karakter van elke string uit je nieuwe array met de strcmp functie
Zo zou ik het doen?
Steam | SXQncyBhbGwgZ29vZCwgbWFuISDwn5iO
Verwijderd
Op dinsdag 19 februari 2002 15:39 schreef LiquidSilver het volgende:
[..]
Ik ook denk ik
He who knows only his own side of the case knows little of that.
1. integers omzetten naar strings
2. strings inverteren (achterstevoren zetten, dus '12345' wordt '54321')
3. strings sorteren.
4. strings weer terug inverteren
5. strings weer terug omzetten naar integers.
DiEana was me voor
For it is the doom of men that they forget... Huidige en vroegere hardware specs The Z80 is still alive!
Verwijderd
laatste getalletje, daarom dat we het ook gaan omkeren.Op dinsdag 19 februari 2002 15:41 schreef RickN het volgende:
Waar hebben we het nou over, sorteren van het eerste of van het laatste getal, I'm confused...
23454 % 10 = 4
12456 % 10 = 6
244433 % 10 = 3
Dus volgens mij doet hij iets fout.
dat mocht dus niet!! jammer heOp dinsdag 19 februari 2002 15:25 schreef LiquidSilver het volgende:
ff stringetje of getal omdraaien en sorteren, 't is niet zo moelijk
Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
THANX!!Op dinsdag 19 februari 2002 15:38 schreef DiEana het volgende:
1. je zet je array van getalletjes om naar een array van strings
2. je keert die strings om met deze functie:
code:
1 char * _strrev (char *);
3. je vergelijkt het eerste karakter van elke string met de volgende eerste karakters van de strings eronder. Indien nodig, wissel je de 2 strings van plaats, en zo ga je verder tot het einde.
Zo zou ik het doen?
Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
hij sorteerde alleen de laatste maar hij moest dan ook de een na laatste en die daarvoor enzo
ik heb er een loop van gemaakt die elke keer een getal eerder neemt en zo de juiste getallen sorteerd!
Thanx
Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
Verwijderd
ywOp dinsdag 19 februari 2002 15:47 schreef GaveGozer het volgende:
[..]
THANX!!
Vergeet niet bij het uitprinten (of als je het terug in je eerste array wilt stoppen), dat je de integers terug omkeert en dan weer naar een string zet, voor de duidelijkheid
Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
maar iets zegt me dat je hiermee niet bij je prof aan kan komen
allemaal bedankt voor de info!
ik red me nu wel weer :-)
Ik was hier en ai 't nie geleuf dan maak ik ow so wat anders wies!
Verwijderd
Hij bedoelt het stukje STL code dat ik ondertussen al heb weggehaald. Overigens zijn function-objects (zoals die comparator uit mijn code) een fundament van "moderne" STL-based C++, je komt er maar met veel moeite en onelegant gestoei omheen. (Operators overloaden zodat < true geeft terwijl de programmeur false verwacht is sowieso verwarrend).Op dinsdag 19 februari 2002 15:52 schreef GaveGozer het volgende:
hoe bedoel je een wrapper class ??!?!??
Het ging om deze code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
#include <algorithm>
#include <iterator>
class IntReverseComparator {
public:
bool operator () (int a, int b) const { return b < a; }
};
int tabel[] = { 3, 7, 2, 6, 8, 1, 4, 9, 5, 0 };
int main() {
// sorteren
std::sort(tabel, tabel + sizeof(tabel) / sizeof(tabel[0]),
IntReverseComparator());
// printen
std::copy(tabel, tabel + sizeof(tabel) / sizeof(tabel[0]),
std::ostream_iterator<int>(std::cout, "\n"));
return 0;
} |
En om die verwarring te voorkomen heb je dus de standaard comparision function-objects std::more<int> en std::less<int>. Zelf iets schrijven dat dat doet is idd verwarrend.Op dinsdag 19 februari 2002 16:00 schreef mietje het volgende:
[..]
Hij bedoelt het stukje STL code dat ik ondertussen al heb weggehaald. Overigens zijn function-objects (zoals die comparator uit mijn code) een fundament van "moderne" STL-based C++, je komt er maar met veel moeite en onelegant gestoei omheen. (Operators overloaden zodat < true geeft terwijl de programmeur false verwacht is sowieso verwarrend).
Overigens is het IIRC triviaal om een string om te keren:
[code]std::string keerom ( std::string const& str )
{
return std::string( str.rbegin(), str.rend() );
}
en als je die strings sort ( std::more<std::string> )
en vervolgens weer omdraait dan ben je er.
1
2
3
4
5
| // uit m'n hoofd, niet gecompileerd
std::vector<std::string> tabel;
std::transform( tabel.begin(), tabel.end(),
tabel.begin(),
&keerom ) ; |
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
?Op woensdag 20 februari 2002 14:07 schreef OlafvdSpek het volgende:
Maar dan doe je veel meer werk dan nodig volgens mij. Een custom compare functie is efficienter.
Het is huiswerk; dan meet je efficientie door te kijken hoeveel library code je kunt gebruiken ipv custom code.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Omdat:
• String-conversie/vergelijking == traaaaaag
• Modulo == ook traag, maar al iets minder
• AND == fokking snel
Dus:
1
| getal & 0xa // 0xa == 10 |
Wat moeilijk zeg. Om daar nou meer dan vijf posts aan te besteden...
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
dat gaat dus niet werkenOp donderdag 21 februari 2002 13:36 schreef Xenophage het volgende:
Zucht. Het is misschien makkelijk om met bitwise AND te werken.
Omdat:
• String-conversie/vergelijking == traaaaaag
• Modulo == ook traag, maar al iets minder
• AND == fokking snel
Dus:
code:
1 getal & 0xa // 0xa == 10
Wat moeilijk zeg. Om daar nou meer dan vijf posts aan te besteden...
werken met de AND operator als modulo werkt alleen bij machten van 2 (logisch ook, aangezien je met AND kijkt naar de achterste bits. Je kunt niet kijken naar de achterste decimalen, omdat de computer de getallen niet opslaat in het decimale stelsel, maar in het binaire stelsel)
als voorbeeldje een aantal willekeurige getallen die je AND met 10:
1
2
3
4
5
6
| 5 & 10 = 0 13 & 10 = 8 18 & 10 = 2 24 & 10 = 8 26 & 10 = 10 33 & 10 = 0 |
okee, dan kun je natuurlijk zeggen: "ow wat stom, ik bedoelde natuurlijk met 9" (want bij machten van 2 and je ook met een_macht_van_2 - 1)
zelfde verhaal
1
2
3
4
5
6
| 5 & 9 = 1 13 & 9 = 9 18 & 9 = 0 24 & 9 = 8 26 & 9 = 8 33 & 9 = 1 |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Crap. Hoe erg ik het vind, xal toch moeten toegeven dat je gelijk hebtOp donderdag 21 februari 2002 13:43 schreef OiSyN het volgende:
[..]
dat gaat dus niet werken
werken met de AND operator als modulo werkt alleen bij machten van 2 (logisch ook, aangezien je met AND kijkt naar de achterste bits. Je kunt niet kijken naar de achterste decimalen, omdat de computer de getallen niet opslaat in het decimale stelsel, maar in het binaire stelsel)
als voorbeeldje een aantal willekeurige getallen die je AND met 10:
code:
1 2 3 4 5 6 5 & 10 = 0 13 & 10 = 8 18 & 10 = 2 24 & 10 = 8 26 & 10 = 10 33 & 10 = 0
okee, dan kun je natuurlijk zeggen: "ow wat stom, ik bedoelde natuurlijk met 9" (want bij machten van 2 and je ook met een_macht_van_2 - 1)
zelfde verhaal
code:
1 2 3 4 5 6 5 & 9 = 1 13 & 9 = 9 18 & 9 = 0 24 & 9 = 8 26 & 9 = 8 33 & 9 = 1
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
juist, maar als je AND met 0xf (15), dan bereken je modulo 16, en 16 is een macht van 2Op donderdag 21 februari 2002 14:01 schreef Xenophage het volgende:
[..]
Crap. Hoe erg ik het vind, xal toch moeten toegeven dat je gelijk hebt![]()
. Je kunt wel anden met F, dan is 8 & 0xf wél 8, maar 13 & 0xf óók. Niet de bedoeling. Dus modulo 10 is de enige redelijke optie.
Het werkt trouwens wel bij BCD strings (binary coded decimals), aangezien je dan per 4 bits een decimaal definieert, waardoor ANDen met 15 hetzelfde is als naar de achterste decimaal kijken, want 0xb t/m 0xf worden niet gebruikt
erg off-topic trouwens
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Nogal. Niet dat deze post niet off-topic is...Op donderdag 21 februari 2002 14:05 schreef OiSyN het volgende:
erg off-topic trouwens
.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| #include <strstream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
template <class Type> std::string to_string(const Type& val)
{ std::ostrstream trans;
trans << val;
return std::string(trans.str());
}
inline std::string revert_string(const std::string& orig)
#if 0
{ std::string ret;
ret.resize(orig.size());
std::reverse_copy(orig.begin(), orig.end(), ret.begin());
return ret;
}
#else
{ return std::string(orig.rbegin(), orig.rend()); }
#endif
const int invoer[]= { 13, 27, 42, 66, 78, 10, 84, 109, 75, 11 };
int main() {
std::vector<std::string> tabel(sizeof(invoer) / sizeof(invoer[0]));
// vul de vector met stringrepresentaties van de input tabel.
std::transform(invoer, invoer + sizeof(invoer) / sizeof(invoer[0]),
tabel.begin(), &to_string<int>);
// keer de strings in de vector om.
std::transform(tabel.begin(), tabel.end(), tabel.begin(), &revert_string);
// sorteren.
std::sort(tabel.begin(), tabel.end());
// keer de strings in de vector opnieuw om.
std::transform(tabel.begin(), tabel.end(), tabel.begin(), &revert_string);
// printen.
std::copy(tabel.begin(), tabel.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
return 0;
} |
<edit>MSalters revert_string() is eleganter ;)</edit>
Kom je niet uit de opdracht van DataStructuren op de HTS in Arnhem???
Daar hebben we nl dezelfde opdracht....;)
Luc
Trying is the first step towards faillure...
Verwijderd
Hoezo dat dan?Op dinsdag 19 februari 2002 15:25 schreef GaMeOvEr het volgende:
Mja, dit moet in P&W maar ik ben bang dat je daar snel op een slotje getrakteerd gaat worden als ik dit topic zo bekijk...
Move SA -> P&W
KLAP KLAP KLAP KLAP.Op donderdag 21 februari 2002 15:21 schreef mietje het volgende:
Ok, ik zat me te vervelen, dus hier een volledige oplossing:
code:
1{SNIP}
Da's een 9+
1/2 puntje aftrek voor ostrstream ipv ostringstream,
1/4 puntje aftrek voor string::resize & reverse_copy
ipv string::string( orig.rbegin(), orig.rend() )
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Verwijderd
/me buigtOp donderdag 21 februari 2002 17:18 schreef MSalters het volgende:
KLAP KLAP KLAP KLAP.
Tja, de meeste compilers zijn nog niet van de modernste STL met stringstream classes voorzien.1/2 puntje aftrek voor ostrstream ipv ostringstream,
Damn, you're right1/4 puntje aftrek voor string::resize & reverse_copy
ipv string::string( orig.rbegin(), orig.rend() )