John Keats Skrevet 28. mars 2008 Del Skrevet 28. mars 2008 (endret) #include <iostream>#include <conio.h> using namespace std; int main() { int ammount = 0; double percent; double mainValue; double value = 1800; double count; /////////////////// double testing = 50; /////////////////// mainValue = value; while ( mainValue =! 0 & mainValue > 180 ) { while ( value != 0 & value >= 180 ) { value = value - 180; ammount = ammount + 1; } percent = ammount * 0.01; count = testing * percent; value = value + ( count * ( 180 * 0.6 )); percent = 0; count = 0; mainValue = value; } cout << count << endl << ammount; getch(); return 0; } Har en loop som starter med en valgfri verdi ( her 1800 ). Inne i loopen er det en ekstra loop som trekker fra 180 hver gang den kjører helt til det ikke er mer å trekke fra. Da skal den gi tilbake en verdi som er i den bolde delen av koden før den setter verdien som bestemmer om hovedloopen skal gå til det nye tallet den kommer fram til og dette skal den fortsette med til verdien blir for lav. Problemet er at hver gang jeg setter variablene som heter testing til noe som er høy nok for at den skal kunne fortsette så henger programmet seg. Muligens elendig forklart men håper noen kan hjelpe uansett. Får ingen feilmeldinger eller warnings i compileren. Endret 28. mars 2008 av Smeagoldfish Lenke til kommentar
................... Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 (endret) ... Endret 9. juli 2010 av b82rez Lenke til kommentar
Nano- Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Jeg tror ikke jeg skjønte helt hva du mente, men her er et forsøk på et enkelt program som trekker fra en bestemt verdi (180) fra et bestemt tall (1800) og returnerer hvor mange ganger den trakk ifra og restverdien. #include <iostream> using namespace std; int main() { int value = 1800; int count = 0; for ( ; value >= 180 ; value -= 180, count++ ) { cout << value << endl; } cout << "Rest: " << value << endl; cout << "Teller: " << count << endl; return 0; } Lenke til kommentar
GeirGrusom Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 du gjør det litt tumlete, for å finne ut hvor mange ganger du kan trekke 180 fra 1800 må du egentlig bare dividere 1800 på 180, så count er egentlig ubrukelig her. for(int value = 1800; value >= 180; value -= 180) cout << value << endl; cout << "Rest : " << (1800 % 180) << endl; cout << "Teller: " << (1800 / 180) << endl; Lenke til kommentar
Zethyr Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Problemet ditt her ser ut til å være at du bruker Bitwise And (&). Det du er ut etter er sikkert (&&) som betyr og. Bare bytt om (&) med (&&) i uttrykkene til hver av while-løkkene dine så tipper jeg programmet ditt vil funke. Det er fullt lovlig å skrive & i logiske uttrykk også. Det er da bare en ikke-shortcircuited and, så begge sider vil bli evaluert garantert.. samme med | og ||. Eksempel: (f(x) & g(x)) <- begge kjører alltid. (f(x) && g(x)) <- g(x) kjøres bare hvis f(x) returerer true. (f(x) | g(x)) <- begge kjører alltid. (f(x) || g(x)) <- g(x) kjøres bare hvis f(x) returerer false. Lenke til kommentar
GeirGrusom Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 (endret) Menneh, det er en viss forskjell på logisk og binær AND vel? slik trodde jeg det funket: 0010 & 0110 = 0010 = true 0010 && 0110 = 0000 = false er ikke dette korrekt da? edit: glem det, jeg tar feil 0010 && 0110 = 0010 = true, fordi true er alt annet en null og false er null. Endret 29. mars 2008 av GeirGrusom Lenke til kommentar
Zethyr Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Man bruker aldri && til bitwise and. Det brukes kun &, og den fungerer slik du beskriver. For logisk and, bruker man både & og &&, ettersom man vil ha short-circuited eller ikke. Hvertfall _tror_ jeg det er slik, er ikke 100% sikker på alt her nå. Lenke til kommentar
Mr.Garibaldi Skrevet 29. mars 2008 Del Skrevet 29. mars 2008 Jo, det stemmer ihvertfall overens med Stroustrups bok... 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å