Verktyg Visningsval
2012-11-18, 21:34   #1

QviW

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
QviW är inte uppkopplad
2012-11-18, 21:39   #2

Reyintaz

Medlem

Reyintazs avatar

Plats: Linkö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
__________________
Gnometal, den vanilla Minecraftservern i Europa!
Reyintaz är uppkopplad nu
2012-11-18, 21:41   #3

QviW

Medlem

Registrerad: nov 2012

Citat:
Ursprungligen inskrivet av Reyintaz Visa inlägg
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?
QviW är inte uppkopplad
2012-11-18, 21:42   #4

Pannkakspajjas

Medlem

Pannkakspajjass avatar

Plats: Luleå

Registrerad: jan 2010

if(tal%2 == 0){
cout<<counter1<<endl;
}
__________________
Asbra.
Pannkakspajjas är inte uppkopplad
2012-11-18, 21:44   #5

QviW

Medlem

Registrerad: nov 2012

Citat:
Ursprungligen inskrivet av Pannkakspajjas Visa inlägg
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++;
}
QviW är inte uppkopplad
2012-11-18, 21:44   #6

Reyintaz

Medlem

Reyintazs avatar

Plats: Linköping

Registrerad: okt 2011

Citat:
Ursprungligen inskrivet av QviW Visa inlägg
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
__________________
Gnometal, den vanilla Minecraftservern i Europa!
Reyintaz är uppkopplad nu
2012-11-18, 21:53   #7

grovlimpa

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.
grovlimpa är inte uppkopplad
2012-11-18, 21:53   #8

QviW

Medlem

Registrerad: nov 2012

Citat:
Ursprungligen inskrivet av Reyintaz Visa inlägg
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|
QviW är inte uppkopplad
2012-11-18, 21:58   #9

Teknocide

Medlem

Plats: i din garderob

Registrerad: sep 2007

Citat:
Ursprungligen inskrivet av QviW Visa inlägg
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
Teknocide är inte uppkopplad
2012-11-18, 22:00   #10

gaminggirl

Medlem

gaminggirls avatar

Plats: Lund

Registrerad: okt 2011

Citat:
Ursprungligen inskrivet av QviW Visa inlägg
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 Barracuda 7200.12 1 TB (ska bort, nästan död)| 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
gaminggirl är inte uppkopplad Folding
2012-11-18, 22:04   #11

Crippa90

Medlem

Crippa90s avatar

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
Crippa90 är inte uppkopplad Folding
2012-11-18, 22:26   #12

QviW

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|
QviW är inte uppkopplad
2012-11-18, 22:35   #13

RasmusC

Medlem

RasmusCs avatar

Plats: Strängnäs

Registrerad: aug 2011

Citat:
Ursprungligen inskrivet av Crippa90 Visa inlägg
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 (Cooler master hyper 212+@ 2 fans) GPU: Sapphire Ati radeon hd 5870 Vapor-x MINNE:Corsair Vengeance 1600mhz 16gb MODERKORT:Asus P8z77-V PRO NÄTAGG:Antec High Current Gamer 900w CHASSI: NZXT tempest evo @ 6 fans

Vid frågor om min setup skicka iväg ett meddelande :)
RasmusC är inte uppkopplad
2012-11-18, 22:42   #14

RepZi

Medlem

Plats: Stockholm

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..
__________________
Xbox Live: RepLicA 34
PSN: RepLicA_34
RepZi är inte uppkopplad
2012-11-18, 22:45   #15

willehawk

Medlem

willehawks avatar

Plats: Luleå

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
willehawk är inte uppkopplad
2012-11-18, 22:54   #16

mikatataku

Medlem

Plats: Västerås

Registrerad: okt 2009

Citat:
Ursprungligen inskrivet av Teknocide Visa inlägg
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
mikatataku är inte uppkopplad
2012-11-18, 23:02   #17

Eowii

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?
Eowii är inte uppkopplad
2012-11-18, 23:06   #18

Eowii

Medlem

Registrerad: jan 2012

Citat:
Ursprungligen inskrivet av QviW Visa inlägg
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!
Eowii är inte uppkopplad
2012-11-18, 23:55   #19

coopish

Medlem

Plats: Stockholm

Registrerad: aug 2006

Citat:
Ursprungligen inskrivet av Eowii Visa inlägg
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
coopish är inte uppkopplad Folding
Senaste nyheterna

Redaktionens senaste nyhetsrubriker