Skriv ett enkelt program i C++, behöver hjälp!

Trädvy Permalänk
Medlem
Plats
Årsta
Registrerad
Jun 2009

Skriv ett enkelt program i C++, behöver hjälp!

Har precis börjat med Programmering A men har lite problem med ett program vi ska göra i läxa i C++. Först ska man bli tillfrågad att mata in ett tal mellan 1-999. Om man sedan skriver in t.ex. _153 så ska det komma upp tre rader:
100-talssiffra=1
10-talssiffra=5
Entalssiffra=3

Men det ska ju funka på alla tal. Problemet är att jag inte vet hur jag ska dela upp ett tal och ge varje siffra ett eget värde. Har försökt att köra med talet både som int och char, men får det inte att funka... Så om nån kunde skriva ett sådant program eller sägs hur jag ska göra så skulle jag bli väldigt tacksam

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Nov 2001

Har egentligen inte så mycket med programmering att göra som med diskret mattematik.

Säg att du har talet 153, det går att skriva som T = X*100 + Y*10 + Z*1

Om du dividerar 153 med 100 och kastar bort resten (vilket C++ gör vid integerdivision) får du X. Sedan kan du dra bort X från T och dividera igen, och upprepa för Z.

Då är det bara upp till dig att översätta det i kod

EDIT: ett lite enklare sätt är väl att försöka läsa 3 chars, och avsluta om man får ett enterslag. Då har du ju de tre siffrorna direkt.

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Trädvy Permalänk
Medlem
Plats
Sandviken
Registrerad
Mar 2005

sätt t till talet som matas in sätt n till 1 sålänge t > 0 tmp = t % 10 om n == 1 skriv ut "entalssiffra=" annars skriv ut n skriv ut "-talssiffra=" skriv ut tmp skriv ut nyradstecken slut om sätt n till n*10 sätt t till t/10 slut sålänge

Besök gärna: www.wedlund.eu
Tips på vps:

Trädvy Permalänk
Medlem
Plats
London
Registrerad
Jun 2006

ååh, den kursen var en av de roligaste jag läst på gymnasiet! Minns inte så mycket men ett trick är att läsa upp i huvudet vad det egentligen står i koden

snor från ovanstående kod:

ex: sålänge t är större än 0 så körs loopen
{ här börjar loopen
} här slutar loopen osv.

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Jul 2007

c++ :o, vi läser Matlab :(, mobbat.

Halleluja

Trädvy Permalänk
Medlem
Registrerad
Maj 2004

sådär:

varning, om du vill göra uppgiften själv, titta inte under dena text

#include <iostream>

using namespace std;

int main () {
int tal=0,t1,t2,t3;
cout << "Enter number between 1 and 999: ";
cin>>tal;

if(tal>0 && tal<1000)
{
t1=tal/100;
t2=tal/10;
t3=tal%10;
if(t2>9)
{
t2-=(t2/10)*10;
}

cout<<"\n100-talssiffra = "<<t1
<<"\n10-talssiffra = "<<t2
<<"\nEntalssiffra = "<<t3;

}else
{

cout<<"\nwrong range";
}
return 0;
}

Trädvy Permalänk
Medlem
Plats
Årsta
Registrerad
Jun 2009

Tack för hjälpen alla!

Trädvy Permalänk
Medlem
Plats
Sandviken
Registrerad
Mar 2005

#include <iostream> int main(int argc, char** argv) { int t = 123456789, n = 1; while( t>0 ) { if( n==1) { std::cout << "entalssiffra="; } else { std::cout << n << "-talssiffra="; } std::cout << (t%10) << std::endl; t /= 10; n *= 10; } return 0; }

Besök gärna: www.wedlund.eu
Tips på vps:

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

Elegant mounte

edit: lösning i Python 3 för skojs skull!

def foo(tal): n = 1 while tal > 0: print("Entalssiffra" if n == 1 else "{}-talssiffra".format(n), "==", tal % 10) n *= 10 tal //= 10

Python äger..

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

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2007
Citat:

Ursprungligen inskrivet av MarkoV
Matlab :(, mobbat.

Dissa inte MATLAB, det äger ju.

Trädvy Permalänk
Medlem
Plats
Sandviken
Registrerad
Mar 2005

icke vektoriserad matlab:

t=123321;
s = int2str(t);
for i=1:length(s)
if i==length(s)
fprintf('entalssiffra=')
else
fprintf('%d-talssiffra=',10^(length(s)-i) )
end
fprintf('%d\n',str2num(s(i)))
end

Besök gärna: www.wedlund.eu
Tips på vps: