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

Permalänk

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

Permalänk
Medlem

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.

Visa signatur

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

Permalänk
Medlem

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

Visa signatur

weeeee

Permalänk
Medlem

åå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.

Permalänk
Avstängd

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

Visa signatur

Halleluja

Permalänk
Medlem

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;
}

Permalänk

Tack för hjälpen alla!

Permalänk
Medlem

#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; }

Visa signatur

weeeee

Permalänk
Medlem

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..

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MarkoV
Matlab :(, mobbat.

Dissa inte MATLAB, det äger ju.

Permalänk
Medlem

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

Visa signatur

weeeee