Permalänk
Medlem

c++ jämna tal

Tjena

Håller på lite med c++ på skoj och försöker nu göra ett while loop som skriver ut jämna tal mellan 0 och 10, spelar ingen roll mellan vilka siffror. Iaf har lyckats få det att räkna 0-10 men inte jämna tal.
Så här lång har jag kommit
{
int counter1=0;
while(counter1<10)
{
cout<<counter1<<endl;
counter1++;
}

Om jag har fattat det rätt ska man ha tal%2==0 någon stans va?
Tacksam för hjälp

Visa signatur

|i5 2500k 4ghz| H100 PnP | 32GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |K70 RGB|NAOS 8200||Acer 120hz|

Permalänk
Medlem

Ja exakt, tal%2 kommer ge resultatet 0 eller 1 beroende på om det är jämt eller ojämt (mod retunerar det som blir över vid en delning)

Så om du t ex kollar det du sa, tal%2 == 0 innan du skriver ut talet, så kommer ditt program att fungera

Permalänk
Medlem
Skrivet av Reyintaz:

Ja exakt, tal%2 kommer ge resultatet 0 eller 1 beroende på om det är jämt eller ojämt (mod retunerar det som blir över vid en delning)

Så om du t ex kollar det du sa, tal%2 == 0 innan du skriver ut talet, så kommer ditt program att fungera

Tack så mycket, jag tror att man ska ha if innan jag förstår dock inte var någonstans i koden jag ska lägga den :/ har försökt länge nu. Du skulle inte kunna visa?

Visa signatur

|i5 2500k 4ghz| H100 PnP | 32GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |K70 RGB|NAOS 8200||Acer 120hz|

Permalänk

if(tal%2 == 0){
cout<<counter1<<endl;
}

Visa signatur

Asbra.

Permalänk
Medlem
Skrivet av Pannkakspajjas:

if(tal%2 == 0){
cout<<counter1<<endl;
}

Tack, men när jag gör detta blir det fel på det fet textade här nedanför.
{
int counter1=0;
while(counter1<11)
if(tal%2 == 0)
{
cout<<counter1<<endl;
counter1++;
}

Visa signatur

|i5 2500k 4ghz| H100 PnP | 32GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |K70 RGB|NAOS 8200||Acer 120hz|

Permalänk
Medlem
Skrivet av QviW:

Tack så mycket, jag tror att man ska ha if innan jag förstår dock inte var någonstans i koden jag ska lägga den :/ har försökt länge nu. Du skulle inte kunna visa?

Självklart, du har i princip hela koden färdigt (Med det du sa själv hur du löste de)

int counter1=0; while(counter1<10) { if(counter1%2 == 0) { cout<<counter1<<endl; } counter1++; }

{} runt ifsatsen är inte nödvändigt, då vi endast ska utföra en rad i satsen. Men la till det för man ska se vad man gör exakt

Permalänk
Medlem

Det är finare att använda en for-loop i ditt fall. Annars används counter1 på lite väl många ställen.

Permalänk
Medlem
Skrivet av Reyintaz:

Självklart, du har i princip hela koden färdigt (Med det du sa själv hur du löste de)

int counter1=0; while(counter1<10) { if(counter1%2 == 0) { cout<<counter1<<endl; } counter1++; }

{} runt ifsatsen är inte nödvändigt, då vi endast ska utföra en rad i satsen. Men la till det för man ska se vad man gör exakt

TACK TACK TACK TACK, äntligen
Tråden kan låsas nu

Visa signatur

|i5 2500k 4ghz| H100 PnP | 32GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |K70 RGB|NAOS 8200||Acer 120hz|

Permalänk
Medlem
Skrivet av QviW:

Tjena

Håller på lite med c++ på skoj och försöker nu göra ett while loop som skriver ut jämna tal mellan 0 och 10, spelar ingen roll mellan vilka siffror. Iaf har lyckats få det att räkna 0-10 men inte jämna tal.
Så här lång har jag kommit
{
int counter1=0;
while(counter1<10)
{
cout<<counter1<<endl;
counter1++;
}

Om jag har fattat det rätt ska man ha tal%2==0 någon stans va?
Tacksam för hjälp

Det finns ett annat sätt att kolla om ett tal är udda eller jämnt som är effektivare, nämligen att kontrollera om första biten är satt.

Det vill säga:

if (tal & 1 == 1) // talet är udda if (tal & 1 == 0) // talet är jämnt

För att generera jämna tal inom ett spann kan du multiplicera med två.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av QviW:

Tjena

Håller på lite med c++ på skoj och försöker nu göra ett while loop som skriver ut jämna tal mellan 0 och 10, spelar ingen roll mellan vilka siffror. Iaf har lyckats få det att räkna 0-10 men inte jämna tal.
Så här lång har jag kommit
{
int counter1=0;
while(counter1<10)
{
cout<<counter1<<endl;
counter1++;
}

Om jag har fattat det rätt ska man ha tal%2==0 någon stans va?
Tacksam för hjälp

Du fick ett exempel på en lösning, en annan är att göra counter += 2 i stället... if-satser och tester är bra, i just det här fallet är det enklare att bara öka med 2 i stället för 1.

Visa signatur

Corsair Vengeance LPX 4x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Permalänk
Avstängd

Byt ut "counter1++;" till "counter1 = counter1 + 2;"

Visa signatur

Gigabyte GA-MA790FX-DQ6 | AMD Phenom 9950 @ 2,6 Ghz | Sapphire Radeon HD 4850 512MB GDDR3 | Samsung 400 GB | Corsair Dominator TWIN2X8500C5DF 4096MB | Tagan 400W

Permalänk
Medlem

Hej hej igen, vill nu göra en miniräknare som tar emot 2 tack och ett tecken (+,-,/,*) och har gjort en miniräknare som räknar ut allt detta automatisk men lyckas inte få till det så att man själv ska trycka in (+,-,/,*)

Visa signatur

|i5 2500k 4ghz| H100 PnP | 32GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |K70 RGB|NAOS 8200||Acer 120hz|

Permalänk
Medlem
Skrivet av Crippa90:

Byt ut "counter1++;" till "counter1 = counter1 + 2;"

Han helt rätt det du säger, men han kanske vill att programmet ska kolla igenom alla siffror? ^^

Visa signatur

CPU:AMD 7950X3D UV (Noctua NH-D15) GPU: Powercolor 7900XTX Red Devil UV MINNE:32gb 6000mhz CL 32-36-36-72 MODERKORT:ASUS x670e PRIME NÄTAGG:Gigabyte 1000w SSD: Samung 980 PRO 2TB m.2, SK hynix PC401 512gb m.2, Samsung 860 EVO 500GB, Samsung SM871b 512GB, Samsung 830 256GB, Samsung 840 PRO 256GB CHASSI: Fractal Design Define R5 Titanium LJUDKORT: Creative Sound Blaster X4 HÖRLURAR: Beyerdynamics MMX300 V2OS: Windows 11 Pro

Permalänk
Medlem

Alltså för att lära dig att programmera, BRYT ner problemen till mindre problem. Avsevärt mycket lättare att koda..

Permalänk

Någon annan som inte fattar ett skit vad som sägs här?

Visa signatur

Chassi: Fractal Design R4. CPU:Intel Core i5 3570K @ 3,6 Ghz Moderkort: Z77 Asrock Extreme 4 GPU: XFX 6870. PSU: OCZ 600w 80+ Bronze HDD: Seagate 1TB RAM: Corsair 8GB CL9 1600Mhz VENGEANCE LP
CPU Kylare: Cooler Master Hyper 212 EVO

Permalänk
Skrivet av Teknocide:

Det finns ett annat sätt att kolla om ett tal är udda eller jämnt som är effektivare, nämligen att kontrollera om första biten är satt.

Det vill säga:

if (tal & 1 == 1) // talet är udda if (tal & 1 == 0) // talet är jämnt

För att generera jämna tal inom ett spann kan du multiplicera med två.

De flesta kompilatorerna jag har använt kommer att kompilera x%2 och x&1 till samma maskininstruktion.

Visa signatur

i5 2500k@stock ** P67A-GD65 ** AMD 6950 ** 1TB F3 ** Lian-Li PC-FI8

Permalänk
Medlem

i "couten" borde han väl kunna skriva "cout<<counter1++<<endl;" istället? Om han nu vill gå igenom varje tal istället för att hoppa två steg till nästa jämna tal?

Permalänk
Medlem
Skrivet av QviW:

Hej hej igen, vill nu göra en miniräknare som tar emot 2 tack och ett tecken (+,-,/,*) och har gjort en miniräknare som räknar ut allt detta automatisk men lyckas inte få till det så att man själv ska trycka in (+,-,/,*)

Om jag inte är helt vilse borde du kunna skriva något i stil med:

char täcken
cin>>täcken

och sedan massa if satser beroende på vad täcken är?

edit: Tänk på bra variabel namn jag orkade inte tänka så mkt!

Permalänk
Medlem
Skrivet av Eowii:

Om jag inte är helt vilse borde du kunna skriva något i stil med:

char täcken
cin>>täcken

och sedan massa if satser beroende på vad täcken är?

edit: Tänk på bra variabel namn jag orkade inte tänka så mkt!

lol