Forum huvudsida -> Programmering -> C++, En övn med funktionsobjekt
Sidor: 1
olle | 19:51 - 30:e Juli 2006 | Post #1 | |
Medlem Inlägg: 57 Skicka PM |
Hej igen! Har en övning där det står: "Definera ett predikat (dvs boolesk funktion) som avgör om ett tecken är en vokal. Definiera även predikatet som ett funktionsobjekt." Har skrivit koden:
Den skriver ut inget. Vet ej vad som är fel? Var tvungen och använda min egen vector.h fil. Annars om jag kör med "#include <vector>" så kan jag ej kompilera vet ej varför. ------------------------- Ingen signatur! |
Nissebosselasse | 21:10 - 30:e Juli 2006 | Post #2 | |
Medlem Inlägg: 490 Skicka PM |
Ta först en titt på rad 14; är det verkligen en korrekt formaterad if-sats? Eller har du skrivit in det precis som om du hade läst upp det högt...? ------------------------- http://pushingcows.se Gula Nallen |
olle | 00:14 - 31:a Juli 2006 | Post #3 | |
Medlem Inlägg: 57 Skicka PM |
hehe snacka om att jag är lite dum. Nu när du nämner det så ser jag felet i if-satsen. Tror jag var lite för snabb med fingrarna på tangentbordet som vanligt
Nu fick jag rätt utskrift.. Hade jag besvarat frågan fullständigt om jag hade bara gjort denna del. tänker på att det står definiera en predikat och även som funktionsobjekt?
För det finns ju redan en funktionsobjekt som man kan använda copy_if. ps: Hur fixar man ö,ä,å utan att få "varning: flerteckens teckenkonstant" ------------------------- Ingen signatur! Senast redigerad 00:51 - 31:a Juli 2006 |
olle | 00:53 - 31:a Juli 2006 | Post #4 | |
Medlem Inlägg: 57 Skicka PM |
godnatt ------------------------- Ingen signatur! |
Nissebosselasse | 18:34 - 31:a Juli 2006 | Post #5 | |
Medlem Inlägg: 490 Skicka PM |
ps: Hur fixar man ö,ä,å utan att få "varning: flerteckens teckenkonstant" Det ska inte vara några krångligheter, bara använda enkla citationstecken som vanligt:
Vilken kompilator kör du? Du har kanske bara använt fel skrivsätt? ------------------------- http://pushingcows.se Gula Nallen Senast redigerad 18:35 - 31:a Juli 2006 |
olle | 18:44 - 31:a Juli 2006 | Post #6 | |
Medlem Inlägg: 57 Skicka PM |
Jag kör Linux och där använder jag en kompilator som har version "g++ (GCC) 4.0.3 ". Tar jag med tex c=='ö' och kompilerar så får jag detta varning: 1.cpp:13:69: varning: flerteckens teckenkonstant 1.cpp: In member function "bool IsVokal::operator()(char)": 1.cpp:13: varning: jämförelsen är alltid falsk på grund av begränsat intervall för datatypen Lite skumt är det. Sen om jag använder include<vector> i min kod så får jag yttligare mer varning: även om jag kör utan c=='ö' 1.cpp: In function "int main()": 1.cpp:48: varning: comparison between signed and unsigned integer expressions 1.cpp: In function "void copy_if(const std::vector<A, std::allocator<_CharT> >&, std::vector<A, std::allocator<_CharT> >&, Condition) [with A = char, Condition = IsVokal]": 1.cpp:46: instantiated from here 1.cpp:25: varning: comparison between signed and unsigned integer expressions Detta får jag inte om jag kör min egen vector.h fil ------------------------- Ingen signatur! |
Nissebosselasse | 18:52 - 31:a Juli 2006 | Post #7 | |
Medlem Inlägg: 490 Skicka PM |
Hmm, testa att använda unsigned char i deklarationen. Det är det enda jag kommer på nu. ------------------------- http://pushingcows.se Gula Nallen |
olle | 18:56 - 31:a Juli 2006 | Post #8 | |
Medlem Inlägg: 57 Skicka PM |
testade med unsigned char och får samma utskrift när jag kör med include<vector> och utan c=='ö'. 1.cpp: In function "int main()": 1.cpp:48: varning: comparison between signed and unsigned integer expressions 1.cpp: In function "void copy_if(const std::vector<A, std::allocator<_CharT> >&, std::vector<A, std::allocator<_CharT> >&, Condition) [with A = char, Condition = IsVokal]": 1.cpp:46: instantiated from here 1.cpp:25: varning: comparison between signed and unsigned integer expressions Tror det är ej så viktigt när jag andå har gjort klar övningen. Tack för hjälpen igen. uppskattas ------------------------- Ingen signatur! |
Nissebosselasse | 19:09 - 31:a Juli 2006 | Post #9 | |
Medlem Inlägg: 490 Skicka PM |
Kan det ha att göra med multibyte-inställning? Tycker det är konstigt... Jag skrev in programmet i Visual Studio och det kompilerade felfritt, utan varningar (vissa smärre ändringar dock). EDIT: testade att kompilera det i Borlands gratiskompilator nu (v. 5.5), utan fel. Min variant av din kod ser ut så här, d.v.s., i princip likadan:
------------------------- http://pushingcows.se Gula Nallen Senast redigerad 19:14 - 31:a Juli 2006 |
olle | 19:46 - 31:a Juli 2006 | Post #10 | |
Medlem Inlägg: 57 Skicka PM |
Verkar som det är min kompilator som är boven. Vet dock inte vad exakt. Testade din kod rakt av, då fick jag massa varning och fel. Snacka om mycket hehe 1.annan.cpp:19:7: varning: flerteckens teckenkonstant 1.annan.cpp:20:7: varning: flerteckens teckenkonstant 1.annan.cpp:21:7: varning: flerteckens teckenkonstant 1.annan.cpp: In member function "bool isVocal::operator()(char)": 1.annan.cpp:19: varning: spill i implicit constant konvertering 1.annan.cpp:20: varning: spill i implicit constant konvertering 1.annan.cpp:21: varning: spill i implicit constant konvertering 1.annan.cpp: In function "void pickVocals(std::vector<T1, std::allocator<_CharT> >&, std::vector<T2, std::allocator<_T2> >&, Condition)": 1.annan.cpp:35: error: expected `;' before "it" 1.annan.cpp:37: error: "it" was not declared in this scope 1.annan.cpp: In function "void printVector(std::vector<T1, std::allocator<_CharT> >&)": 1.annan.cpp:45: error: expected `;' before "it" 1.annan.cpp:46: error: "it" was not declared in this scope 1.annan.cpp: In function "void pickVocals(std::vector<T1, std::allocator<_CharT> >&, std::vector<T2, std::allocator<_T2> >&, Condition) [with T1 = char, T2 = char, Condition = isVocal]": 1.annan.cpp:60: instantiated from here 1.annan.cpp:35: error: dependent-name "std::vector<T1,std::allocator<_CharT> >::iterator" is parsed as a non-type, but instantiation yields a type 1.annan.cpp:35: anm: say "typename std::vector<T1,std::allocator<_CharT> >::iterator" if a type is meant 1.annan.cpp: In function "void printVector(std::vector<T1, std::allocator<_CharT> >&) [with T1 = char]": 1.annan.cpp:61: instantiated from here 1.annan.cpp:45: error: dependent-name "std::vector<T1,std::allocator<_CharT> >::iterator" is parsed as a non-type, but instantiation yields a type 1.annan.cpp:45: anm: say "typename std::vector<T1,std::allocator<_CharT> >::iterator" if a type is meant Ska försöka fixa min kompilator. Men nu vet jag iallfall att det inte är koden som är fel. Tack för hjälpen ps: lite skumt är det när den klagar på iterator när jag andå har använt det innan utan fel. ------------------------- Ingen signatur! |
Sidor: 1
Forum huvudsida -> Programmering -> C++, En övn med funktionsobjekt
Du får inte posta i den här tråden | Till toppen
Datum
2024-05-03 06:20
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.