[ Topnik_15 @ 05.03.2010. 20:54 ] @
Znam da sam dosadio sa ovim pocetnickim pitanjima x] ali imam jedan mali problem, mucim se sa tim vec 2 sata' a to je vama 2 minute :( pa ako je tko voljan da pomogne! .. Ovako, znaci unese se prvo broj cifara pa onda broj al svaki posebno od najveceg do najmanjeg 'e.x(625)
Code:

3
6
2
5

e sad taj broj treba da bude napisan kao trocifreni tj
Code:
( n1 * 100 ) + ( n2 * 10 ) + n3 
e sad taj broj treba da ima cjelobrojni korijen , npr 625 , korijen mu je 25, e pRoblem mi je sad na izlaz, tReba da izgLeda ovako:
Code:
2
2
5

tj. pRvo broj cifara , te onda rezultat ali pojedinacno svaki broj, e mene zanima kako da "raspem" 25 ili bilo koji drugi dvocifreni broj na pojedinacne brojeve ( 2 i 5 ) ??
Hvala svima voljnima pomoci !!
[ Mihajlo Cvetanović @ 05.03.2010. 22:44 ] @
Mogao bi da ispišeš broj u privremenom stringu, sa sprintf, i onda pojedinačne cifre ispisuješ u posebnim linijama.
[ CiribuCiriba @ 05.03.2010. 22:58 ] @
Ako ce broj uvijek imati 2 cifre, to nije problem uraditi.
Najlakse je uraditi pomocu: % , djeljenja i broja 10.

Code:

int main (){
// broj koji je potrebno rastaviti
int broj = 25

// varijabel za cifre
int prva, druga ;

//trazenje druge cifre ( u ovom slucaju 5 )
// nadam se da ti je poznat operator % :)
druga = broj%10;

// trazenje prve ( 2 ) - ovo radi, jer se pri djeljenju dva int-a odbacuje ostatak , odnosno brojevi iza zareza, tako da neces dobiti 2,5
// nego samo 2
prva = broj/10;

cout<<prva;
cout<<druga;
return 0;
}
[ Topnik_15 @ 05.03.2010. 23:25 ] @
hvaLa dRuze, znao sam za prvi broj da je djeljenje sa 10, al taj module me malo zezno :O ... HvaLa na pomoci ;)
Zadatak:
Code:
Mali Z stoji iznad papira i bezuspesno pokusava da nadje koren broja zapisanog na papiru.

Pomozite malom Z-u da nadje broj B koji je koren velikog broja A, A ima najvishe 1000 cifara. A ce uvek imati celobrojni koren

Ulaz:
Sa standardnog ulaza ucitava se u jednoj liniji broj N 0 < N <= 1000, koji predstavalja broj cifara datog broja A. U narednih N linija ucitavaju se cifre broja, i to prvo cifre najvece vrednosti.

Izlaz:
Na standardni izlaz upisati broj M, duzinu broja B, koji predstavlja pozitivni datog broja A, i u narednih M linija ispisati cifre broja B. I to od cifre najvece vrednosti do cifre najmanje.

Primer:

Ulaz:
3
6
2
5

Izlaz:
2
2
5


Moje rjesenje , meni radi perfektno ali to naravno z-traning ne prihvata , ne znam zasto nit me zanima 'nek meni radi x]

Code:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int N,A,A1,A2,A3,A4,B,M,B1,B2;
    cin >> N;
    if ( N == 3 ){
         cin >> A1;
         cin >> A2;
         cin >> A3;
         A = ( A1 * 100 ) + ( A2 * 10 ) + A3;
    B = sqrt(A);
    cin >> M;
    cout <<endl;
    if ( M == 2 && B >= 10 && M < 100 ){
         cout << "2" << endl;
         B1 = B / 10;
         B2 = B % 10;
         cout << B1 << endl;
         cout << B2 << endl;
         }
         }
    else if ( N == 2 ){
         cin >> A1;
         cin >> A2;
         A = ( A1 * 10 ) + A2;
         B = sqrt(A);
         cin >> M;
         cout << endl;
         if ( M == 1 && B > 0 && B < 10 ){
              cout << "1" << endl;
              cout << B << endl;
              }
              }
    else if ( N == 4 ){
         cin >> A1;
         cin >> A2;
         cin >> A3;
         cin >> A4;
         A = (A1 * 1000) + A2 + A3 + A4;
         if ( A == 1000 ){     
         cout << "3" << endl;
         cout << "1\n" << "0\n" << "0\n" << endl;
         }
         else{
              return 0;
              }
         }
    else if ( A == 100 ){
         cout << "2" << endl;
         cout << "1\n" << "0\n" << endl;
         }
    else{
         return 0;
         }
    system ("PAUSE");
    return 0;
}


Imam osjecaj da se sramotim ovdje, jer vi ovakav zadatak vjerovatno "strpate" u 30 redova i manje :)

[Ovu poruku je menjao Topnik_15 dana 06.03.2010. u 01:35 GMT+1]
[ CiribuCiriba @ 06.03.2010. 15:17 ] @
Evo mog rjesenje uz pomoc petlji, ne znam da li ste radili iste.

Code:
#include <iostream>
#include <cmath>
using namespace std;


void main (){
int brojCifri,broj=0,korjen,c_korjena=0;
cout<<"Unesite broj cifri\n";
cin>>brojCifri;

// racunanje broja - umjesto ove for petlje moguce je koristiti while... 
for( int i=0; i<brojCifri;i++){
int temp ;
cout<<"Unesite "<<i+1<<". cifru: ";
cin>>temp;
broj+=temp*pow(float(10),brojCifri-(i+1));
}
korjen=sqrt(float(broj));

// trazenje koliko cifri ima korjen
int temp = korjen;
while(temp>0)
{    c_korjena++;
temp/=10;
}

cout<<"Korjen iznosi: "<<korjen<<endl;
cout<<"broj cifri korjena: "<<c_korjena<<endl;
cout<<"Cifre korjena: ";
cout<<korjen/10<<" , ";
cout<<korjen%10<<endl;
}


[Ovu poruku je menjao CiribuCiriba dana 06.03.2010. u 18:01 GMT+1]