[ xeron @ 28.11.2006. 20:41 ] @
Imam neki zadatak koji treba da okrene uneseni broj npr 1234 4321
e ja sam sve uradio :

Code:
#include <stdio.h>

int Okreni(int n)
{
    int nn=0,ost,bn;
    int i,t=1,bb=0;
    
    bn=n;
    while (bn>0)// ovaj dio broj koliko ima cifara
    {
        bn=bn/10;
        bb++;
    }
    
    for(i=1;i<bb;i++)// postavlja t na odg vrijednost u zavisnosti od broja cifara
    t=t*10;
    
    
    while(n>0)// okrece broj
    {
        ost=n%10;
        n=n/10;
        
        nn=nn+ost*t;
        t=t/10;
    }

    return nn;
}

main()
{
      int br,printbr;
      
      printf("Unesite broj: ");
      scanf("%d",&br);
      
      printbr=Okreni(br);
      
      printf("\nBroj okrenut: %d\n",printbr);
      
      getch();
      return 0;
}


problem se javlja kada stavim 0 na kraju ili na pocetku broja npr: ako unesem 0123 vrati 321 ili ako unesem 1230 vrati 321.
Ima li neko ideju u cemu je problem.
[ del-boy @ 28.11.2006. 22:08 ] @
U bre, zakomplikovao si mnogo... Zašto uopšte brojiš koliko imaš cifara? Recimo nešto ovako iz glave:

Code:

int Okreni(int n) {
   int nn=0;
   while (n != 0) {
      nn *= 10;
      nn += (n%10);
      n /= 10;
   }
   return nn;
}
[ moore @ 28.11.2006. 22:22 ] @
Jel obavezno da bude scanf("%d",&br), ili moze da se ucita niska cifara?

R.
[ xeron @ 29.11.2006. 19:56 ] @
mora biti cijeli prirodan broj ne moze niz.
[ moore @ 29.11.2006. 21:01 ] @
Probaj ovo za 1230 -> 0321

Code:
int Okreni(int n){
            int t[20];
            int j,i =0;
          
    while (n != 0) {
      t[i]= (n%10);
      n /= 10;
      i++;
   }

   for(j = 0;j<i;j++)
      printf("%d\n",t[j]);
   printf("\n");
  
   return 0;
}


Ako hoces da ubacis 0123 i dobijes kao rezultat 3210 trebaces da procitas niz cifara i da ga okrenes.
[ predic @ 18.03.2007. 13:04 ] @
Evo lepseg resenja!

Code:

#include <stdio.h>
void main()
{
long broj;
printf("\nUnesite ceo broj: "); scanf("%ld", &broj);
printf("\nPermutovani broj je: ");
do {printf("%d", broj%10); broj/=10;}  while (broj);
}
[ Milos Stojanovic @ 18.03.2007. 13:38 ] @
ako hoćeš da ti "0123" pretvori u "3210" onda to moraš da učitaš kao niz karaktera iliti string, ne možeš da učitavaš broj sa vodećim nulama jer se one ignorišu. Ukratko:

Code:
#include <stdio.h>
#include <string.h>
void main()
{
    char br[30]; 
    scanf("%s", br);
    printf("%s", strrev(br));
}