c++ nybörjare - loopa ekvation där en variable ökar med 1 tills uppnått en viss summa

Permalänk
Medlem

c++ nybörjare - loopa ekvation där en variable ökar med 1 tills uppnått en viss summa

Hej, försöker göra följande

Medans x < 50000
så vill jag att den loopar
5000(1,1^y-1)/(1.1-1)=x
Där y börjar på 1 och ökar med en tills att x är 50000 eller mer och skriver ut vilken siffra y blev till slut

hur behöver jag skriva in detta för att det skall fungera?

Permalänk
Medlem

int y = 1
int x = 0
while(x<50000){
y = y + 1
5000(1,1^y-1)/(1.1-1)=x
}

Inte säker på syntaxen i c++ men i stort sätt så bör du skriva

Visa signatur

In the end what separates a man from a slave?
Money? Power? No... A man chooses, a slave obeys.
ASUS Z170M-PLUS || Intel Core i7 6700k @ 4,7GHz || 64GB 2133MHz Corsair RAM || MSI NVIDIA RTX 2070 Gaming Z 8GB || Bifenix Prodigy M || 2x CZ TR150 480GB RAID 0 || BeQuiet DarkRock Pro

Permalänk
Medlem

Tror att en while-loop eller "do while"-loop är vad du behöver här.

exempel:
initiera x och y här
while(testa x här)
{
kör din formel här (glöm inte att öka y med ett)
}

visa vad y är

Permalänk
Skrivet av albing:

Hej, försöker göra följande

Medans x < 50000
så vill jag att den loopar
5000(1,1^y-1)/(1.1-1)=x
Där y börjar på 1 och ökar med en tills att x är 50000 eller mer och skriver ut vilken siffra y blev till slut

hur behöver jag skriva in detta för att det skall fungera?

double y=1; double x=0; while(x < 50000){ x = 5000*(1.1^y-1)/(1.1-1); } printf("%d ",y);

Visa signatur

(Asus Z87-A && i7-4770K && ASUS Strix GTX 970 && Fractal Design Define R4 && Corsair CX500M && Samsung 840 Evo 500GB && Noctua NH-U9B SE2 && (Arch Linux 4.2.3-1 || Windows 10 Pro))

Permalänk
Medlem
Skrivet av krillekernel:

double y=1; double x=0; while(x < 50000){ x = 5000*(1.1^y-1)/(1.1-1); } printf("%d ",y);

Tack för alla svaren, får detta error meddelandet http://i.imgur.com/hrIp1pV.png

Permalänk
Medlem

borde vara

pow(1.1, y-1)

Permalänk
Medlem
Skrivet av albing:

Tack för alla svaren, får detta error meddelandet http://i.imgur.com/hrIp1pV.png

"," anges som separering av argument till pow(), ex: pow(x,y)
"." är decimaltecken, ex 1.1

Vad jag tror att du vill ha om jag försöker tolka din kod:

x = 5000*(pow(1.1,y)-1)/(1.1-1);

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Hedersmedlem

x = 0; for (y = 1; x < 50000; y++) { }

Borde också funka.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem
Skrivet av Leedow:

"," anges som separering av argument till pow(), ex: pow(x,y)
"." är decimaltecken, ex 1.1

Vad jag tror att du vill ha om jag försöker tolka din kod:

x = 5000*(pow(1.1,y)-1)/(1.1-1);

Tack, det går igenom nu dock får jag inget svar hur kan jag göra så att den skriver ut vilket tal y blev efter att den räknat ut det

Permalänk

I bilden så ökar du aldrig värdet på y.
Såhär

while(x < 50000){ x = 5000*pow... // Kopiera in ditt vilkor y++; // alt y = y + 1; } printf("%d",y);

Permalänk
Medlem
Skrivet av xxstaticz:

I bilden så ökar du aldrig värdet på y.
Såhär

while(x < 50000){ x = 5000*pow... // Kopiera in ditt vilkor y++; // alt y = y + 1; } printf("%d",y);

Får error: Format specifies type 'int- but the argument has type 'double'

edit: bytte ut %d mot %f så går det igenom, dock med fel resultat

Permalänk

Testa ändra y till en int då den är en räknare och alltså inte ska vara ett float tal utan ett heltal. Vad får du för resultat?

Permalänk
Medlem
Skrivet av xxstaticz:

Testa ändra y till en int då den är en räknare och alltså inte ska vara ett float tal utan ett heltal. Vad får du för resultat?

fungerar inte med int, får samma meddelande som jag skrev ovan

Permalänk
Medlem
Skrivet av albing:

fungerar inte med int, får samma meddelande som jag skrev ovan

Om y är en int så ska du använda %d när du skriver ut

Posta hela koden igen om det inte fungerar.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

int är för heltal och double är för decimaltal. Jag skulle gissa på att du har sagt att y ska vara ett decimaltal, vilket helt enkelt gör att du inte kan skriva ut värdet med %d som gäller för heltal. Det är därför det funkar med %f. Testa att sätta x till att vara double och y till att vara int så gissar jag att det funkar.

Annars får du som sagt posta din kod, för det är svårt att hitta felet utan att se den.

Permalänk
Skrivet av albing:

Tack för alla svaren, får detta error meddelandet http://i.imgur.com/hrIp1pV.png

Varför vill du printa y?? y är 7 då x är 47435.855, då y är 8 blir x >50000
Vad vill du uppnå?? formatspecifier för double är %f eller %lf om jag minns rätt.

y= 0 ,x=0
y= 1; x=5000
y= 2, x=10500
y= 3, x=16550
y= 4, x=23205
y= 5, x=30525.5
y=6, x=38578.05
y=7, x=47435.855

Skrivet av krillekernel:

int y=1; double x=0; while(x < 50000){ x = 5000*(1.1^y-1)/(1.1-1); } printf("%lf ",x);

Visa signatur

(Asus Z87-A && i7-4770K && ASUS Strix GTX 970 && Fractal Design Define R4 && Corsair CX500M && Samsung 840 Evo 500GB && Noctua NH-U9B SE2 && (Arch Linux 4.2.3-1 || Windows 10 Pro))

Permalänk
Medlem

double x = 0; int y = 1; while(x <= 50000) { x = 5000 * ((pow(1.1, y++)-1) / 0.1); } std::cout << y << std::endl;

Permalänk

qwerty95,

Kommer inte y ha ett värde som är "off by one" i din lösing?

Permalänk
Medlem
Skrivet av Ingetledigtnamn:

qwerty95,

Kommer inte y ha ett värde som är "off by one" i din lösing?

double x = 0; int y = 0; while(x <= 50000) { x = 5000 * ((pow(1.1, ++y)-1) / 0.1); } std::cout << y << std::endl;

Något sådan tänkte du på istället?