Steinbitglis Skrevet 29. februar 2004 Del Skrevet 29. februar 2004 Heisann, jeg er ganske ny i C++ og jeg har hittil bare kommet meg gjennm boka c++ for dummies. Den bruker en dosbasert kompilator som forøvrig funker greit til mitt bruk, men når jeg skulle til å bruke <windows.h> fikk kompilatoren problemer (står ingenting om windows.h i boka, det leste jeg på forumet). Derfor lastet jeg ned ny kompilator fra Bloodshed.net : Dev-C++ 5.0 beta 8 (4.9.8.0) Denne kompilatoren klarte ikke å lage en fil ut av dette, som funka med den gamle kompilatoren: Kan noen hjelpe meg å komme i gang med Dev-C++ ?? // Conversion - convert temperature from Celsius // degree units into Fahrenheit degree units: // Fahrenheit = Celsius * (212 - 32)/100 + 32 #include <stdio.h> #include <iostream.h> int main(int nNumberofArgs, char* pszArgs[]) { // enter the temperature in Celsius int nCelsius; cout << "Enter the temperature in Celsius:"; cin >> nCelsius; // calculate conversion factor for Celsius // to Fahrenheit int nFactor; nFactor = 212 - 32; // use conversion factor to convert Celsius // into Fahrenheit values int nFahrenheit; nFahrenheit = nFactor * nCelsius/100 + 32; // output the results cout << "Fahrenheit value is:"; cout << nFahrenheit; return 0; } Lenke til kommentar
☀ ❄ Skrevet 29. februar 2004 Del Skrevet 29. februar 2004 (endret) Uff da. Den boka er ikke helt god. Får prøve å rette opp litt her..: For det første er det vanlig høflighet, "by convention", å kalle argumentene til main() for argc og argv. int main(int argc, char* argv[]) For det andre trenger du det strengt tatt ikke argumenter i det programmet i det hele tatt. int main() holder (i dette tilfellet). For det tredje (a) er det nye regler for header-filer. Det betyr at for C++-headere (I Standard C++ Library) skal ikke headeren ha .h Dette gir: #include <iostream> For det tredje (b) er det flere nye regler for header-filer. Det betyr at for C-headere for C++ (I Standard C++ Library) skal ikke headeren ha .h, og den skal ha en c foran. Dette gir: #include <cstdio> For det tredje (c ) bruker du ikke <stdio.h> (eller <cstdio> som den som sagt heter i C++), og derfor kan du like gjerne ta den bort. For det fjerde bruker du "Hungarian notation" (n foran variabel-navnet til tall, osv). Usj. Feilen er sannsynligvis at Dev-C++ er oppmerksom på at headere har bytta navn. Prøv dette: // Conversion - convert temperature from Celsius // degree units into Fahrenheit degree units: // Fahrenheit = Celsius * (212 - 32)/100 + 32 // Nytt header-navn #include <iostream> // Dette vil du lære mer om senere. Foreløpig // er det nok å vite at du skal bruke det. using namespace std; int main(int argc, char* argv[]) { // enter the temperature in Celsius int nCelsius; cout << "Enter the temperature in Celsius:"; cin >> nCelsius; // calculate conversion factor for Celsius // to Fahrenheit int nFactor; nFactor = 212 - 32; // use conversion factor to convert Celsius // into Fahrenheit values int nFahrenheit; nFahrenheit = nFactor * nCelsius/100 + 32; // output the results cout << "Fahrenheit value is:"; cout << nFahrenheit; return 0; } Håper dette hjelper litt EDIT: Tenkte bare jeg skulle understreke at siden <windows.h> ikke er i Standard C++ Library, heter den fortsatt <windows.h>. Siden den ikke er i Standard C++ Library er den heller ikke portable. EDIT 2: ( c ) ble til ©. Fikset. Endret 29. februar 2004 av Myubi Lenke til kommentar
Steinbitglis Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 Tusen takk, skal prøve meg litt igjen i morgen! Lenke til kommentar
<BøNilzen> Skrevet 1. mars 2004 Del Skrevet 1. mars 2004 Må bare få sagt at den boka der er utrolig dårlig. Den er skrevet på en vannvittig tungvinn måte, og ting er fryktelig vanskelige å få med seg. Med Deitel&Deitel sin bok gikk det tre ganger så fort, og har skjønt MYE mer, spesielt om pekere enn jeg gjorde med C++ for dummies. C++ for dummies kan du like godt bare kaste. Lenke til kommentar
Steinbitglis Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 Sorry, men koden fungerte ikke, denne gangen på en annen maskin og under xp (samme kompilator). Samme dumme feil oppstod. Jeg har ikke gjort noen innstillinger. Kompilatorlogg: Kompilator: Default compiler Kjører g++.exe... g++.exe "E:\Kompilator\Ny.cpp" -o "E:\Kompilator\Ny.exe" -I"E:\Kompilator\include\c++" -I"E:\Kompilator\include\c++\mingw32" -I"E:\Kompilator\include\c++\backward" -I"E:\Kompilator\include" -L"E:\Kompilator\lib" Kjøring avbrutt Eneste jeg gjorde var å velge ny kildefil, lime inn koden, lagre med navnet Ny.cpp og trykke på kompile. Har ikke snøring på hva som er feil, har prøvd mange koder og to operativsystemer 98 og XP. Har noen som bruker DEV-C++ opplevd det samme? Lenke til kommentar
Steinbitglis Skrevet 1. mars 2004 Forfatter Del Skrevet 1. mars 2004 funker nå, fikk instalert på nytt, denne gangen var det en større installfil, men fikk ikke norsk språk da Lenke til kommentar
Steinbitglis Skrevet 5. mars 2004 Forfatter Del Skrevet 5. mars 2004 Skal ikke følgende kode vente på inndata før det avslutter? ved cin.get(); gjør ikke det i min dev-c++ #include <iostream> using namespace std; int main() { int hexer; cout.flags(ios_base::hex); cin >> hexer; cout << hexer; char heis[128]; cin.getline(heis, 128); cout << heis; cin.get(); return 0; } Lenke til kommentar
Steinbitglis Skrevet 5. mars 2004 Forfatter Del Skrevet 5. mars 2004 funker når jeg tar bort: cin >> hexer; setter inn: hexer = 15; hvorfor det? Lenke til kommentar
☀ ❄ Skrevet 5. mars 2004 Del Skrevet 5. mars 2004 Problemet er trolig at det "henger igjen informasjon i cin", for å si det sånn. Du kan lese mer om problemet, pluss få en løsning (jeg orker ikke skrive den inn) her: Cprogramming.com FAQ (Det kan være at det ikke er det som er problemet. Vanligvis ville jeg sjekka for å få det bekrefta, forklart litt osv, men jeg er ikke helt i form akkurat nå. Sorry, mac.) Lenke til kommentar
Steinbitglis Skrevet 6. mars 2004 Forfatter Del Skrevet 6. mars 2004 prøv å kompiler følgende : #include <iostream> using namespace std; int main() { int hexer; cout.flags(ios_base::hex); cin >> hexer; cout << hexer; char heis[128] = "lol"; cin.getline(heis, 128); cout << heis; system("pause"); cin >> hexer; return 0; } jeg får masse feil skjønner ingen ting skriver inn: 100,i,100 100 64Trykk en tast for å fortsette... 100 dette skulle ikke skje?? Lenke til kommentar
A_N_K Skrevet 6. mars 2004 Del Skrevet 6. mars 2004 Kallet til getline vil ikke funke som forventet fordi at et linjeskift vil ligge i bufferen til cin, og cin.getline vil bryte straks det ser dette tegnet (altså med en gang). Det du kan gjøre er å kalle cin.ignore() etter å ha lest inn i hexer, dermed kaster du det neste tegnet (linjeskift) i strømmen. Lenke til kommentar
Steinbitglis Skrevet 6. mars 2004 Forfatter Del Skrevet 6. mars 2004 Tusen takk, det virka, men hvorfor kommer det et linjeskift dit? har aldri hendt meg før Lenke til kommentar
A_N_K Skrevet 6. mars 2004 Del Skrevet 6. mars 2004 Som sagt, det henger igjen etter cin >> hexer; lesingen avsluttes etter at du har trykket Enter (cin avslutter ved linjeskift, men linjeskiftet blir igjen). Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå