Trädvy Permalänk
Medlem
Registrerad
Nov 2012

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

|i5 2500k 4ghz| H100 PnP | 8GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |Logitech G19|MX518||Acer 120hz|

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Okt 2011

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

Trädvy Permalänk
Medlem
Registrerad
Nov 2012
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?

|i5 2500k 4ghz| H100 PnP | 8GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |Logitech G19|MX518||Acer 120hz|

Trädvy Permalänk
Medlem
Plats
Luleå
Registrerad
Jan 2010

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

Asbra.

Trädvy Permalänk
Medlem
Registrerad
Nov 2012
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++;
}

|i5 2500k 4ghz| H100 PnP | 8GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |Logitech G19|MX518||Acer 120hz|

Trädvy Permalänk
Medlem
Plats
Norrköping
Registrerad
Okt 2011
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

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Sep 2006

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

Trädvy Permalänk
Medlem
Registrerad
Nov 2012
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

|i5 2500k 4ghz| H100 PnP | 8GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |Logitech G19|MX518||Acer 120hz|

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
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å.

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Okt 2011
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.

Corsair XMS3 - 16 GB : 4 x 4 GB - DIMM 240-pin - DDR3 | INTEL Core i5 2400 / 3.1 GHz | ASUS P8Z68-V Pro | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Seagate Barracuda 7200.14 2 TB | Samsung Writemaster | Corsair TX750 V2 750 W | Gigabyte GeForce GTX 660 2048MB OC Version| Fractal Design Define R3 USB3

Trädvy Permalänk
Avstängd
Registrerad
Nov 2007

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

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

Trädvy Permalänk
Medlem
Registrerad
Nov 2012

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 (+,-,/,*)

|i5 2500k 4ghz| H100 PnP | 8GB CORSAIR| Powercolor 7970 1100/1500 |IN WIN DRAGON|
|Western Digital 500GB|Seagate 2TB|Corsair SSD 128GB| |Logitech G19|MX518||Acer 120hz|

Trädvy Permalänk
Medlem
Plats
Strängnäs
Registrerad
Aug 2011
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? ^^

CPU:Intel core i7 3770K @ 4.4 ghz, 1.245 vcore (Cooler master hyper 212+@ 2 fans) GPU: MSI GTX 970 Gaming @ 1372/8000mhz MINNE:Corsair Vengeance 1866mhz @ 10-10-10-24, 1.5v 16gb MODERKORT:Asus P8z77-V PRO NÄTAGG:Antec High Current Gamer 900w HDD: Samsung 830 256gb SDD, 2st WD 500gb @ RAID0 CHASSI: NZXT tempest evo @ 6 fans LJUDKORT: ASUS Xonar Essence STX HÖRLURAR: QPAD QH-90

Trädvy Permalänk
Medlem
Plats
Eskilstuna
Registrerad
Mar 2011

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

Trädvy Permalänk
Medlem
Plats
Norbotten
Registrerad
Jan 2012

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

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

Trädvy Permalänk
Medlem
Plats
Västerås
Registrerad
Okt 2009
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.

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

Trädvy Permalänk
Medlem
Registrerad
Jan 2012

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?

Trädvy Permalänk
Medlem
Registrerad
Jan 2012
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!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2006
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