_Ferrari_ Skrevet 24. september 2009 Del Skrevet 24. september 2009 Det der går vel ikke. Fordi min float tid, inneholder tiden i sekunder inkludert hundredeler. Slik: float tid = 74.56 som da selvfølgelig er 74 sekunder og 56 hundredeler. Da kan jeg vel ikke gjøre om floaten til en int? Lenke til kommentar
GeirGrusom Skrevet 24. september 2009 Del Skrevet 24. september 2009 (endret) Hvorfor ikke? Husk at casting til int runder ikke av, den fjerner kun desimaltallene. ((int)74.56) = 74 Endret 24. september 2009 av GeirGrusom Lenke til kommentar
_Ferrari_ Skrevet 24. september 2009 Del Skrevet 24. september 2009 (endret) Akkurat Det visste jeg ikke. Så de er der fremdeles på en måte? EDIT1: Det går ikke helt som det skal. Hundredelen blir femsifra hvis totaltiden overskrider ett minutt! EDIT2: Nå har jeg fiksa overnevnte problem.. Nå er det et nytt: s = (int) loper1.tid_hittil; //Konverter totaltiden til int m = s / 60; //Skiller ut minuttene h = (loper1.tid_hittil - s) * 100; //hunderedelene s %= 60; //og sekundene cout << "\nLøper nr.1 ble parets vinner med tiden: "; cout << m << ':' << s << ':' << h << '\n'; Nå blir hundredelene alltid én for lite... Hvorfor i alle dager?! Endret 24. september 2009 av _Ferrari_ Lenke til kommentar
[kami] Skrevet 24. september 2009 Del Skrevet 24. september 2009 float tid_hittil = 61.12; int s = (int) tid_hittil; //Konverter totaltiden til int int m = s / 60; //Skiller ut minuttene int h = int(tid_hittil * 100.0f) % 100; //hunderedelene s %= 60; //og sekundene cout << "\nLøper nr.1 ble parets vinner med tiden: "; cout << m << ':' << s << ':' << h << '\n'; cout << "org: " << tid_hittil << endl; return 0; Gir: Løper nr.1 ble parets vinner med tiden: 1:1:12 org: 61.12 Grunnen til at dette skjer er float avrundinger. Du bør ikke bruke float om du trenger presise tallgengivninger. Lenke til kommentar
Slush1 Skrevet 24. september 2009 Del Skrevet 24. september 2009 Løser oblig ser jeg. Lenke til kommentar
_Ferrari_ Skrevet 25. september 2009 Del Skrevet 25. september 2009 (endret) Løser oblig ja.. Hva i all verden skal jeg bruke til desimaltall i stedene for float da? EDIT:Hvorfor datamaskina så inni *elvetes dum? Regnestykket: (244,04 - 244) * 100 = 4. Det tar da 3.klassinger i hodet.. I følge datamaskina så er: (244,04 - 244) * 100 = 3.99933 MEN: I regnetykket: (48,68 - 48) * 100 = 68 der klarer den faktisk å spytte ut 68.. WTF? I mitt tilfelle, der jeg skal putte sistnevnte tall inn i en int, så det jo ikke rart at vinnertiden alltid blir en hundredel raskere enn det den skulle ha vært! Endret 25. september 2009 av _Ferrari_ Lenke til kommentar
NevroMance Skrevet 25. september 2009 Del Skrevet 25. september 2009 Det er ikke dataen som er dum, men desimaltall som er unøyaktig. Flyttall/desimaltall har bare en viss pressisjon, noe som kan gi resultater som du går med 244.04 - 244. Hvis du vil bruke noe annet enn float kan du jo se på double, som har en bedre pressisjon enn float. Eventuelt kan du bruke to int. En som er desimaltallene, og en som er heltallene. Lenke til kommentar
GeirGrusom Skrevet 25. september 2009 Del Skrevet 25. september 2009 Jeg hadde en lignende java oblig, og da måtte en definere strictfp for at det skulle fungere. Visual C++ har ihvertfall en switch for å få til noe lignende. Lenke til kommentar
_Ferrari_ Skrevet 25. september 2009 Del Skrevet 25. september 2009 Oppgaveteksten hindrer meg foråvidt i å bruke en int for hver, og å bruke double i stedet for float. Structen skal inneholde en float tid_hittil som inneholder totaltid i sekunder, med hundredelene som desimaler. Men nå spurte jeg foreleseren, og han sa at det bare fikk være slik. Og helt riktig som dere sier, det har med nøyaktigheten av flyttall å gjøre. Svært lite å få gjort med det, iht oppgaveteksten. Takk for hjelpen :-) Lenke til kommentar
Kagee Skrevet 26. september 2009 Del Skrevet 26. september 2009 Lurer på om jeg har den obligen et sted, så jeg kan se hvordan jeg løste den oppgaven i fjor Lenke til kommentar
Kagee Skrevet 26. september 2009 Del Skrevet 26. september 2009 (endret) Noen ganger så er jeg en perfeksjonist. Jeg husker ikke hvor lenge jeg jobbet for å få den utregningen til å bli perfekt, men dette er løsningen jeg kom fram til: (jeg hadde en ekstra float i main som jeg la tid*100 inn i) http://codepad.org/qzCVmNun Endret 26. september 2009 av Kagee Lenke til kommentar
Slush1 Skrevet 28. september 2009 Del Skrevet 28. september 2009 jeg vil at en løkke skal kjøre så lenge ikke 500, 1000, 1500, 3000, 5000 eller 10000 tastes inn. har klart det samme med array og en bool, men det har vi jo ikke lov til i denne obligen. burde ikke dette her virke? while(a != 500 || a != 1000 || a != .... osv} hvis jeg har flere betingelser i while-løkka så virker ingenting. hva gjør jeg feil? må jeg ha parenteser? Lenke til kommentar
Slush1 Skrevet 28. september 2009 Del Skrevet 28. september 2009 Høhø.. && og ikke || ja . Jaja, sånn kan det gå Lenke til kommentar
GeirGrusom Skrevet 29. september 2009 Del Skrevet 29. september 2009 Hei, bare et kjapt spørsmål: Er wmain(int argc, wchar_t** argv) microsoft spesifikk? I mitt program har jeg skrevet følgende: #ifdef WIN32 // Declare wmain as it is used in the windows entry point int wmain(int argc, wchar_t** argv); // Wrapper for WinMain entry-point used by Windows int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int count = 0; LPWSTR* cmdline = CommandLineToArgvW(GetCommandLineW(), &count); wmain(count, cmdline); LocalFree(cmdline); } #endif For å wrappe WinMain til en vanlig main funksjon, men så plutselig falt det meg inn at wmain kunne være Visual C++ spesifikk, og det finnes ikke noen CommandLineToArgvA funksjon etter det jeg kan se. Noen som vet? Grunnen til at jeg la inn dette forresten var fordi x64 ikke ville kompilere uten (dog 32-bit funket av ukjente grunner) og dette er et SDL program uten noen bruk av console. Lenke til kommentar
[kami] Skrevet 30. september 2009 Del Skrevet 30. september 2009 Bare litt mer om floats, og hvorfor de ikke bør brukes i regnestykker der du trenger presise tall (slik som tidtagning) Doubles er hakket bedre, men også der mister man presisjon om tallene blir store nok, eller man får for mange desimaler. #include <iostream> using namespace std; int main () { for (int i = 16777217; i < 16777227; i++) cout << "Real : "<< i << " Float ftw: " << int(float(i)) << endl; return 0; } Real : 16777217 Float ftw: 16777216 Real : 16777218 Float ftw: 16777218 Real : 16777219 Float ftw: 16777220 Real : 16777220 Float ftw: 16777220 Real : 16777221 Float ftw: 16777220 Real : 16777222 Float ftw: 16777222 Real : 16777223 Float ftw: 16777224 Real : 16777224 Float ftw: 16777224 Real : 16777225 Float ftw: 16777224 Real : 16777226 Float ftw: 16777226 Lenke til kommentar
_Ferrari_ Skrevet 30. september 2009 Del Skrevet 30. september 2009 Jeg fikk ikke den outputen der, min output stemmer faktisk. Visual C++ 2008 express edition Lenke til kommentar
GeirGrusom Skrevet 30. september 2009 Del Skrevet 30. september 2009 Det er fordi "floating point model" er satt til Precise (/fp:precise) Setter du den til Fast (/fp:fast) så gjetter jeg at du får samme resultat. Lenke til kommentar
Akidon Skrevet 27. november 2009 Del Skrevet 27. november 2009 Kjapt spørsmål. Hvordan single steppe i visual studio? Lenke til kommentar
GeirGrusom Skrevet 27. november 2009 Del Skrevet 27. november 2009 F10 (step over) F11 (step into) Lenke til kommentar
Cynon Skrevet 6. desember 2009 Del Skrevet 6. desember 2009 Program: MS Visual Studio 08 Deklarasjon: Når jeg skal debugge programmer omdagen så får jeg meldingen: Unable to start program C:\Documents and Settings\Administrator\Mine dokumenter\Visual Studio 2008\Projects\Project1\test\debug\test.exeSystemet finner ikke angitt fil. Selvfølgelig finner ikke system den filen fordi debug mappa er helt tom. Jeg har ikke peiling om det er egentlig meningen om programmet skal lage en .exe fil eller om hva da det er men det får jeg spørsmål om nå. Senere hvis jeg velger å lage nytt prosjekt så kan jeg brøt ikke lenger add'e et ny item på prosjekt som jeg vanligvis gjorde for å lange en ny .cpp fil. Spørsmål: Er det noen, med forhåpentligvis mer erfaring enn meg med Visual Studio, som kan kan forstå hva problemet/problemene er for no? På forhånd takk 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å