» »

[visual c++] Rabim nasvet, razbijanje števila na števke

[visual c++] Rabim nasvet, razbijanje števila na števke

[Intanium] ::

Kot že rečeno, moram spisati algoritem ki razbije dvomestno število na števki in sešteje vsoto teh. npr 65 = 6 + 5 =11

Mogoče da res ni težko pa mi nikakor ne kapne :/. Help anyone. Hvala!

Kami ::

Število deliš z 10 maš, dobiš 6,5, vzameš samo celo število torej maš 6.

Potem pa še vzameš ostanek (65 % 10) pa dobiš 5.

Zgodovina sprememb…

  • spremenil: Kami ()

Roadkill ::

Spremenis v string in vzames String.CharAt(x)? :)
Ü

Quikee ::

int stevilo = 65;
int vsotaStevk = 0;

do
{
vsotaStevk += stevilo%10;
stevilo /= 10;
} while ( stevilo );

je tak? =)


edit: aja samo za dvomestno število rabiš. =)

Zgodovina sprememb…

  • spremenil: Quikee ()

Roadkill ::

Ja... en noob potrebuje takalo obliko kode.
Ni z njo nic narobe ... ce jo slucajno zna razlozit. :)

edit: al sem jest mal zmeden, al bo tale while precej krogov naredil?
Ü

Zgodovina sprememb…

  • spremenil: Roadkill ()

[Intanium] ::

Oh, hvala vam. Zadevo sm speljal tako da je ok zdaj. Mam še nekaj finih primerov za rešit... za začetek bom sam, mogoče pa se javim še:D.

Quikee ::

al sem jest mal zmeden, al bo tale while precej krogov naredil?

A-a čisto ok dela. =)
Je pa res, da noobu ta koda nič ne koristi. Ok še malo lepše te:

do
{
vsotaStevk = vsotaStevk + (stevilo%10);
stevilo = stevilo/10;
} while ( stevilo != 0);

Zgodovina sprememb…

  • spremenil: Quikee ()

[Intanium] ::

Pozdravljeni ponovno :)

Za nalogo mamo za narisat lik s pomočjo zank.


*
****
*******
**********
**************
****************
edit : trikotnik v postu napačno izriše. Predstavljajte si ga kot enakokrak trikotnik npr. ali enakostraničen, ker takega kot ga zgoraj izriše znam naret.



Lepo bi proso samo za kakšen namig, kak bi postavil pogoje za izris. Vhodni parametri so logično stranica.

Če se komu da malce namigit lepo prosim.



Lp

Zgodovina sprememb…

sherman ::

	
for (int i = 0; i < N; i += 2) {
    for (int j = 0; j < N; j++) {
        if (j < N/2 - i/2 || j > N/2 + i/2) std::cout << " ";
            else std::cout << "*";
    }
    std::cout << "\n";
} 

Nekaj takega. Malo je še potrebno dodelat tu pa tam ampak to je to.

Vesoljc ::

ce znas tega, potem pa na zacetek vrivaj se presledke. koliko njih bos pa ze znal zracunat...
Abnormal behavior of abnormal brain makes me normal...

[Intanium] ::

Hvala sherman, zadeva brezhibno deluje. Nekaj me pa malenkost mede.



for (int i = 0; i < N; i += 2) ;; kaj dela števec i+= 2 ?

Vesoljc ::

spremenljivki i pristeje vrednost 2?
Abnormal behavior of abnormal brain makes me normal...

[Intanium] ::

že spet sm tu :D


sam neki me zanima. Kako se ustvari interval med -20 in 20 za eno polje.

polje[i] = rand()%-20; mi niti ne upošteva negativnih števil


polje[i] = rand()%-20 + 20; mi pa nameče števila med 0 in 40


je mogoče srand (time(NULL) kriv za to ?


Lp

sherman ::

rand()%40 - 20 

roba87 ::

imam problem s podobno nalogo kot je zgoraj in sicer :
//izpisite vsa stevila med 0 in 1000 pri katerih je vsota stevk enaka m

#include <iostream>
using namespace std;

int main ()
{
	int st1, st2, vsota = 0, temp, i;
	int m;
	cout << "vpisi m" << endl;
	cin >> m;
	for (i=0;   i<100; i++) //zaradi problema je zg. meja 100
	{
			st1 = i  / 10; 
			st2 = i  % 10; 
			vsota = st1 + st2;
		        if (vsota == m)
			cout << i << endl;
	}
	return 0;
}

kako bi dopolnil, da bi mi razclenilo tudi 3 mestna stevila (se pravi od 100 do 999) in sestelo stevke? v mislih sem imel tako vendar mi ni ratalo :

st1 = i / 100;
st2 = i % 100;
temp = st2;
temp = temp / 10;
temp = temp % 10;
vsota = st1 + st2 +temp


hvala.

Zgodovina sprememb…

  • spremenil: roba87 ()

Ktj ::

Moja rešitev deluje po drugem principu:
-najprej pretvori število v niz
-vsako števko sešteje(ker je asci vrednost števk: '0' == 48, '1' == '49', ..., moramo od polja[i] odšteti vrednost '0')

int main()
{
	char cSt[LEN];
	int m, temp;
	printf("Vnesi stevilo:\n");
	std::cin>>m;
	for(int i = 0; i <= 10000; i++)
	{
		memset(cSt, 0, LEN);
		itoa(i,cSt,10);
		temp = vsotaSt(cSt);
		if(m == temp)
			printf("vsotaSt(cSt): %d, m = %d, i = %d\n", temp, m, i);
	}
}

int vsotaSt(char* ptr)
{
	int suma = 0;
	for(int i = 0; i< LEN; i++)
	{
		if(ptr[i] == '\0')
			break;
		suma += ptr[i] - '0';
	}
	return suma;
}


Tukaj pa je še rešitev za tvojo metodo:
st1 = i / 100;
st2 = i % 100;// st2 smatraj kot i v prejšnem primeru za dvomestna števila

rešitev:
for (i=0;   i<1000; i++) 
	{
		vsota = i / 100;
		temp = i % 100;
		st1 = temp / 10;
		st2 = temp % 10;
		vsota = st1 + st2;
		if(vsota == m)
			printf("vsota: %d, m: %d, %d\n", vsota, m, i);
	}

hexor ::

lahko ti naredim funkcijo za števke če potrebuješ:

int vsotaStevk(int n)
{
int vsota=0;

while(n>0)
{
vsota=vsota+n%10;
m=n/10;
}
return vsota;
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

(težava) long long v C

Oddelek: Programiranje
5932 (688) technolog
»

C++ naloga

Oddelek: Pomoč in nasveti
11882 (774) Grumf
»

c++ pomoc

Oddelek: Programiranje
111021 (882) davx
»

C# naloga

Oddelek: Programiranje
61711 (1525) gejzo
»

[java] števila

Oddelek: Programiranje
71276 (1146) ta_pravi

Več podobnih tem