[ NooND @ 13.11.2007. 15:47 ] @
Zadatak je kao da iz maticnog broja izracunam datum i mjesec i godinu rodjenja.E sad problem prilikom unosa JMBG bar ja mislim da je to problem
Evo kod pa pomagajte ako znate
Code:

#include<stdio.h>
void main()
{
    int jmbg;
    int c;
    int f;
    int godina;
    int mjesec;
    int dan;
    printf("Unesite jmbg\n");
    scanf("%d", &jmbg);
    c=jmbg/1000000;
    f=c/1000000;
    if (f>>0) 
    {
        dan= c/100000;
        mjesec=c/1000-(dan*100000);
        godina= c-((c/1000)*1000)+1000;
        printf("%d", dan);
        printf("%d", mjesec);
        printf("%d", godina);
    }
    else if ( f==0)
    {
        dan=c/10000;
        mjesec=c/100-(dan*10000);
        godina= c-((c/100)*100)+1000;
        printf("%d", dan);
        printf("%d", mjesec);
        printf("%d", godina);
    }
}
[ mjux @ 13.11.2007. 16:00 ] @
ne mozes da koristis int za jmbg zato sto je int u opsegu od -32000/32000(max petocifren). koristi string pa iz njega izvuci sta ti treba
[ NooND @ 13.11.2007. 16:12 ] @
Hvala na brzom odgovoru. Ali ja sam pocetnik i o string-u ne znam bas nista ako moze malo pojasnjenje.
Unapred hvala.
[ mjux @ 13.11.2007. 16:41 ] @
mislim da je nest ovako... nisam istestirao, pa ako nesto ne rado javi:)

Code:

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
    char jmbg[13], pom[5];
    int i, j;
    int godina;
    int mjesec;
    int dan;

    printf("Unesite jmbg\n");
    gets(jmbg);

    i=0;
    while(i<7)
    {
         if(i>=0 && i<=1)uslov=2;
         if(i>=2 && i<=3)uslov=4;
         if(i>=4)uslov=7;

         j=0;
         while(i<uslov)
         {
                 pom[j]=s[i];
                 i++;
                 j++;
                 pom[j]='\0';
         }

         switch(uslov)
         {
                case 2: dan=atoi(pom);
                 break;
                case 4: mesec=atoi(pom);
                 break;
                case 7: godina=atoi(pom);
                 break;
         }
    }

    printf("%d.%d.%d", dan, mesec, godina);
}


[Ovu poruku je menjao mjux dana 13.11.2007. u 19:06 GMT+1]
[ X Files @ 13.11.2007. 17:22 ] @
Code:

#include <stdio.h>
#include <stdlib.h>

int da_li_jmbg_ima_ispravan_format( char *jmbg )
{
   // ovde treba provera ...
   return ( 1 );     
}

int main(int argc, char *argv[])
{
  char jmbg[13];
  
  int dan, mesec, godina;
  
  printf("Unesi maticni broj: ");
  gets( jmbg );
  
  if ( da_li_jmbg_ima_ispravan_format( jmbg ) )
  {
     dan    = (jmbg[0]-'0')*10  + jmbg[1]-'0';
     mesec  = (jmbg[2]-'0')*10  + jmbg[3]-'0';    
     godina = (jmbg[4]-'0')*100 + (jmbg[5]-'0')*10 + jmbg[6]-'0' + 1000;
     
     if ( godina < 1950 )
        godina+=1000;
        
     printf ("%d.%d.%d\n", dan, mesec, godina );    
  }
  else
  {
     printf( "Unesti JMBG: %s nije ispravan!\n", jmbg );    
  }
  system("PAUSE");    
  return 0;
}

[ mjux @ 13.11.2007. 17:29 ] @
Citat:

Code:

       dan    = (jmbg[0]-'0')*10  + jmbg[1]-'0';
     mesec  = (jmbg[2]-'0')*10  + jmbg[3]-'0';    
      godina = (jmbg[4]-'0')*100 + (jmbg[5]-'0')*10 + jmbg[6]-'0' + 1000;



XFiles, super si ovo odradio... nije mi ni palo na pamet:(
[ mphreak @ 13.11.2007. 20:02 ] @
Mozda je i najednostavnije rijesiti zadatak koristeci funkciju sscanf(). Učitava iz stringa, a sprema u tip varijable kako se specifira pri "izvlacenju" iz stringa.

http://www.cplusplus.com/reference/clibrary/cstdio/sscanf.html
[ NooND @ 14.11.2007. 08:50 ] @
Hvala puno na pomoci