C program - greška kad dođe do % u printf

poruka: 409
|
čitano: 99.117
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Problem je što se izmijenjeni string mora spremiti.

 

EDIT:

 

U mainu se učita string, u drugoj funkciji se obrne, pa se opet u mainu ispisuje.

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Poruka je uređivana zadnji put sub 29.1.2011 16:11 (vexx5555).
Moj PC  
0 2 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
vexx5555 kaže...

Problem je što se izmijenjeni string mora spremiti.

 

EDIT:

 

U mainu se učita string, u drugoj funkciji se obrne, pa se opet u mainu ispisuje.

 

Dobro onda ga obrnes pa ispises ali opet mozes preko chara a ne alociranja memorije.

 

btw kad okreces string nemozes mijenjat 99 sa 0 pa 98 sa 1 jer ta polja koja nisu popunjena pri ispisu ce ti davat ko zna sta, moras prvo vidit koja je velicina unesenog string pa onda minjat zadnji znak za prvi i tako redon to sredine, isto vrijedi za ispis nemozes ispisat cijeli string foron od 0 do 100 vec moras ic do velicine string.

 

Tvoj kod san priletia samo nabrzaka ali nigdi nevidin da si isa do velicine string niti da si je igdi proba odredit. odavno nisan radia nista u c-u tako da neznan jeli ima jos koja funkcija osim strlen za koju moras includat string.h

16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Prepravio sam nešto:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int N;
char *rec;
char *rec2;


int main()
{
  int k;
  char pom[100];
  printf("\nUnesi string\n\n");
  gets(pom);
  N=strlen(pom);
 
  rec=((char*)malloc(N*sizeof(char)));
  rec2=((char*)malloc(N*sizeof(char)));
  rec=pom;
 
  int prepravi();
  printf("\n\n");
  for(k=0;k<N;k++){
                   printf("%c",rec2[k]);
                   }
  printf("\n\n");
  system("PAUSE"); 
  return 0;
}

int prepravi()
{
    int i,j=0;
    i=N;
   
    for(i;i>0;i--){
                   rec2[j]=rec[i];
                   j++;
                   }
  
   return 0;  

}

 

 

Program se sada pokreće, ali ispisuje gluposti.

 

 

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 2 hvala 0
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

Netreba ti alociranje memorije, nisi me skuzia sta san mislia :(

 

Evo kod valjda ce bit lakse za skuzit

 

#include <stdio.h>

#include <string.h>

 

void Reverse(char myString[])

{

    char temp;

    for(int i=0; i<strlen(myString)/2; i++)

    {

        temp = myString[i];

        myString[i] = myString[strlen(myString) - i - 1];

        myString[strlen(myString) - i - 1] = temp;       

    }

}

 

void Print(char myString[])

{

    for(int i=0; i<strlen(myString); ++i)

        printf("%c \n", myString[i]);

}

 

 

int main()

{

   char myString[100];

   gets(myString);

 

   Reverse(myString);

   Print(myString);

}

 

 
1 0 hvala 1
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Ovaj tvoj program radi, ali ga ne razumijem da me hebeš.

 

Ja sam napisao ovo bez alokacije, ali sad uopće ne ispisuje ništa:

 

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

 

char pom[50];

char rec[50];

int main()
{
  int k;
 
  printf("\nUnesi string\n\n");
  gets(pom);
 
 
  int prepravi();
  printf("\n\n");
  for(k=0;k<50;k++){
                   printf("%c",rec[k]);
                   }
  printf("\n\n");
  system("PAUSE"); 
  return 0;
}

int prepravi()
{
    int i,j=0;
   
   
    for(i=50;i>0;i--){
                   rec[j]=pom[i];
                   j++;
                   }
  
   return 0;  
}

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 1 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Pa pitaj sta nije jasno 

 

Jel znas kako slat varijable funckciji? Vidim da stalno koristis globalne bez razloga pa pitam

 

U svom kodu imas jednu logicku gresku koju san ti reka par postova prije ali nisi skuzia :(

 

Tebi je polje veliko 50 znakova ali ti nemozes ispisat svih 50 jer ako si unia 10 i sad ides ispisat 11-ti znak on ce ti na ekran ispisat nesto livo bez obzia sta ga ti nisi unia zato moras koristit strlen(pom) ode umisto pom moze ic bilo koje polje chara i onda ti ta funkcija vrati kolikoliko si ti stvarno znakova unia

 

Kad to primjenis onda kod radi i na "tvoj" nacin

 

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

char pom[50];

char rec[50];

 

//ako funkcije pises poslije main onda ispred main moras stavit deklaraciju funckije ili je cilu pisat ispred main

//tvoja funkcija nemoze bit int jer nakon zavrsetka nevraca nikakav broj tocnije nema smisla stavlja return 0 ka sta si ti samo da bi ti bila int radje pisi void

void prepravi();

 

int main()

  int k;

  printf("Unesi string\n\n");

  gets(pom);

 

  prepravi(); // kod poziva funkcije samo pises ime funkcije ne i tip koji vraca npr int., char, void ...

 

  for(k=0; k<strlen(rec); k++)

  {

      printf("%c",rec[k]);

  }

 

  printf("\n\n");

  system("PAUSE"); 

  return 0;

}

 

void prepravi()

{

   int i,j = 0;

 

   //ode moras od strlen jos oduzet jedan jer ako tvoj string ima 12 znakova zadnje polje mu je zapravo 11 jer je pocetno 0 

   for(i= strlen(pom)- 1; i>=0 ;i--)

   {

      rec[j] = pom[i];

      j++;

   }

}

 

 

 

 

 

Poruka je uređivana zadnji put sub 29.1.2011 17:46 (Orinem).
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

E, to je to. Sad sam skužio.

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 3 hvala 0
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Jel mi može netko pomoći sa zadatkom prije?

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 3 hvala 0
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Zna li netko što znači ovo:  scanf("%10[^\n]",ime);

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 2 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
vexx5555 kaže...

Zna li netko što znači ovo:  scanf("%10[^\n]",ime);

Logično bi mi bilo - učitavaj 10 znakova ili dok ne dođeš do novog reda i to spremi u ime.

 

A s kojim zadatkom ti treba pomoć? Još uvijek onaj sa okretanjem stringova?

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
odjavljen
offline
RE: C program - greška kad dođe do % u printf
Luuka kaže...

 THx za tip. Sa onim velikim, koji sprema u binarnu datoteku i čita iz nje. Sve sam probavao, naišao na još nekoliko problem, otklonio ih ali mi se program konstantno ruši kada dođe do točke učitavanja odslužene kazne. Evo zadnje verzije:

 

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

struct struktura{
                   int zatvorski;
                   char imeiprezime[50];
                   int duljina;
                   float odsluzeno;
                   int karakteristika;
                   }zatvorenik;
int N;

int main()
{
  int i;
  struct zatvorenik;
 
                  
  FILE *fh;
 
  do{
     printf("\n Unesite broj od 3 do 15\n\n");
     scanf("%d",&N);
     fflush(stdin);
     if(N<3 || N>15) printf("\n Unijeli ste pogresan broj!\n\n");
     }while(N<3 || N>15);
 
  fh=fopen("cuza.dat","wb");
 
  for(i=0;i<N;i++){
                   do{
                      printf("\n Unesite broj zatvorenika.\n\n");
                      scanf("%d[\n]",&zatvorenik.zatvorski);
                      fflush(stdin);
                      }while(zatvorenik.zatvorski<1000 || zatvorenik.zatvorski>9999);
                   fprintf(fh,"\n%d\n",zatvorenik.zatvorski);                  
                  
                   printf("\n Unesite ime i prezime zatvorenika.\n\n");
                   gets(zatvorenik.imeiprezime);
                   fflush(stdin);
                   fputs(zatvorenik.imeiprezime,fh);                  
                 
                   printf("\n Unesite duljinu kazne zatvorenika.\n\n");
                   scanf("%d[\n]",&zatvorenik.duljina);
                   fflush(stdin);
                   fprintf(fh,"\n%d\n",zatvorenik.duljina);
                   fflush(fh);                
                 
                   printf("\n Unesite odsluzeni dio kazne zatvorenika.\n\n");
                   scanf("%f[\n]",&zatvorenik.odsluzeno);
                   fflush(stdin);
                   fprintf(fh,"\n%f\n",zatvorenik.odsluzeno);                  
                   fflush(fh);
                  
                   printf("\n Unesite karakteristiku ponasanja zatvorenika (1-dobro 0-lose).\n\n");
                   scanf("%d[\n]",&zatvorenik.karakteristika);
                   fflush(stdin);
                   fprintf(fh,"\n%d\n",zatvorenik.karakteristika);
                  }                
                    
  fclose(fh);
  int otvori();
  system("PAUSE"); 
  return 0;
}


int otvori()
{
  FILE *fp;
  int i;
  struct zatvorenik;
 
  fp=fopen("cuza.dat","rb"); 

  for(i=0;i<N;i++){
                   fscanf(fp,"%d",&zatvorenik.zatvorski);
                   fgets(zatvorenik.imeiprezime,50,fp);
                   fscanf(fp,"%d",&zatvorenik.duljina);
                   fscanf(fp,"%f",&zatvorenik.odsluzeno);
                   fscanf(fp,"%d",&zatvorenik.karakteristika);
                   if(zatvorenik.karakteristika==1 && (zatvorenik.duljina/zatvorenik.odsluzeno<2)){printf("\n\n Zatvorenik %s ima pravo na pomilovanje. \n\n",zatvorenik.imeiprezime);}
                  }            
                 
  fclose(fp);
  system("PAUSE");
  return 0;
}   

 

 

EDIT: sad se ne ruši, ali i dalje ne radi.

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Poruka je uređivana zadnji put ned 30.1.2011 17:57 (vexx5555).
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
vexx5555 kaže...

int main()
{

  struct zatvorenik; 

To ne valja. Strukturu zatvorenik već imaš, i sad ono što ti treba je varijabla tipa zatvorenik. Dakle trebalo bi

 

zatvorenik z;

 

i onda kod unosa z.ime, z.odsluženo itd. Onako kako si napravio strukturu, njeno ime je "zatvorenik" i to je sad neki tvoj TIP podatka (ko int, float itd) i sad ti treba jedan od zatvorenika, nazovimo ga z.

 

btw onaj N ti ne treba biti globalna varijabla, a funkcija otvori može biti i void (pa onda bez returna)

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
odjavljen
offline
C program - greška kad dođe do % u printf

Sada skoro pa radi-ne ispisuje sve:

 

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

struct struktura{
                   int zatvorski;
                   char imeiprezime[50];
                   int duljina;
                   float odsluzeno;
                   int karakteristika;
                   }z;
int N;
void otvori();

int main()
{
  int i;
  struct z;
 
                  
  FILE *fh;
 
  do{
     printf("\n Unesite broj od 3 do 15\n\n");
     scanf("%d",&N);
     fflush(stdin);
     if(N<3 || N>15) printf("\n Unijeli ste pogresan broj!\n\n");
     }while(N<3 || N>15);
 
  fh=fopen("cuza.dat","wb");
 
  for(i=0;i<N;i++){
                   do{
                      printf("\n Unesite broj zatvorenika.\n\n");
                      scanf("%d[\n]",&z.zatvorski);
                      fflush(stdin);
                      }while(z.zatvorski<1000 || z.zatvorski>9999);
                   fprintf(fh,"\n%d\n",z.zatvorski);                  
                  
                   printf("\n Unesite ime i prezime zatvorenika.\n\n");
                   gets(z.imeiprezime);
                   fflush(stdin);
                   fputs(z.imeiprezime,fh);                  
                 
                   printf("\n Unesite duljinu kazne zatvorenika.\n\n");
                   scanf("%d[\n]",&z.duljina);
                   fflush(stdin);
                   fprintf(fh,"\n%d\n",z.duljina);
                   fflush(fh);                
                 
                   printf("\n Unesite odsluzeni dio kazne zatvorenika.\n\n");
                   scanf("%f[\n]",&z.odsluzeno);
                   fflush(stdin);
                   fprintf(fh,"\n%f\n",z.odsluzeno);                  
                   fflush(fh);
                  
                   printf("\n Unesite karakteristiku ponasanja zatvorenika (1-dobro 0-lose).\n\n");
                   scanf("%d[\n]",&z.karakteristika);
                   fflush(stdin);
                   fprintf(fh,"\n%d\n",z.karakteristika);
                  }                
                    
  fclose(fh);
  otvori();
  system("PAUSE"); 
  return 0;
}


void otvori()
{
  FILE *fp;
  int i;
  struct z;
 
  fp=fopen("cuza.dat","rb"); 

  for(i=0;i<N;i++){
                   fscanf(fp,"%d",&z.zatvorski);
                   fgets(z.imeiprezime,50,fp);
                   fscanf(fp,"%d",&z.duljina);
                   fscanf(fp,"%f",&z.odsluzeno);
                   fscanf(fp,"%d",&z.karakteristika);
                   if(z.karakteristika==1 && (z.duljina/z.odsluzeno<2)){printf("\n\n Zatvorenik %s ima pravo na pomilovanje. \n\n",z.imeiprezime);}
                  }            
                 
  fclose(fp);
}   

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
Moj PC  
0 2 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
vexx5555 kaže...

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

struct struktura{
                   int zatvorski;
                   char imeiprezime[50];
                   int duljina;
                   float odsluzeno;
                   int karakteristika;
                   }z;
int N;
void otvori();

int main()
{
  int i;
  struct z;
 
                 

 

Ma opet si isto napravil :D Evo taj kod kako bi trebo bit:

 

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

typedef struct {

                   int zatvorski;
                   char imeiprezime[50];
                   int duljina;
                   float odsluzeno;
                   int karakteristika;
                   }zatvorenik;
void otvori();

int main()
{
  int i,N;
  zatvorenik z;

dalje u kodu radiš sa z.zatvorski, z.imeiprezime itd...

 

OVDJE (strana 95) možeš vidjeti različite načine kako napraviti strukturu i kasnije napraviti varijablu te strkture. Ovaj način gore je po meni najjednostavniji.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Sad bi trebalo bit ok. Promijenio sam ti učitavanja u mainu i u funkciji otvori.

 

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

typedef struct {
                   int zatvorski;
                   char imeiprezime[50];
                   int duljina;
                   float odsluzeno;
                   int karakteristika;
                   }zatvorenik;
void otvori(int N);
int main()
{
  int i,N;
  zatvorenik z;
  
  FILE *fh;
 
  do{
     printf("\n Unesite broj od 3 do 15\n\n");
     scanf("%d",&N);
     if(N<3 || N>15) printf("\n Unijeli ste pogresan broj!\n\n");
     }while(N<3 || N>15);
 
  fh=fopen("cuza.dat","w");
 
  for(i=0;i<N;i++){
                   do{
                      printf("\n Unesite broj zatvorenika.\n\n");
                      scanf("%d",&z.zatvorski);
                      }while(z.zatvorski<1000 || z.zatvorski>9999);
                     
                   fprintf(fh,"%d\n",z.zatvorski);                 
                   fflush(stdin);
                   printf("\n Unesite ime i prezime zatvorenika.\n\n");
                   gets(z.imeiprezime);
                   fprintf(fh,"%s\n",z.imeiprezime);   
                                    
                
                   printf("\n Unesite duljinu kazne zatvorenika.\n\n");
                   scanf("%d",&z.duljina);
                   fprintf(fh,"%d\n",z.duljina);             
                
                   printf("\n Unesite odsluzeni dio kazne zatvorenika.\n\n");
                   scanf("%f",&z.odsluzeno);
                   fprintf(fh,"%g\n",z.odsluzeno);                 
                 
                   printf("\n Unesite karakteristiku ponasanja zatvorenika (1-dobro 0-lose).\n\n");
                   scanf("%d",&z.karakteristika);
                   fprintf(fh,"%d\n",z.karakteristika);
                  }                               
  fclose(fh);
  otvori(N);
  system("PAUSE");
  return 0;
}


void otvori(int N)
{
  FILE *fp;
  int i;
  zatvorenik z;
 
  fp=fopen("cuza.dat","r");

  for(i=0;i<N;i++){
                   fscanf(fp,"%d\n",&z.zatvorski);
                   fscanf(fp,"%50[^\n]\n",z.imeiprezime);
                   fscanf(fp,"%d\n",&z.duljina);
                   fscanf(fp,"%f\n",&z.odsluzeno);
                   fscanf(fp,"%d\n",&z.karakteristika);
                   if(z.karakteristika==1 && (z.duljina/z.odsluzeno<2)){printf("\n\n Zatvorenik %s ima pravo na pomilovanje. \n\n",z.imeiprezime);}
                  }           
                
  fclose(fp);
}

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put ned 30.1.2011 19:31 (Luuka).
16 godina
odjavljen
offline
RE: C program - greška kad dođe do % u printf
Luuka kaže...
Ma opet si isto napravil :D  

 Ma ja sam ti blesav ovih dana. Fali mi 4 boda da prođem programiranje jer sam se zeznuo na zadnjem testiranju.

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697 ili posjetite stranicu- http://mobiservis.webs.com/
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

u čemu je problem ovdje? Neodlucan

 

Napisati  program  koji  kreira  matricu  (dvodimenzionalno  polje)  dimenzija  NxN  (dimenzije
matrice  unosi  korisnik  s  tipkovnice).  Matricu  je  zatim  potrebno  popuniti  sa  slučajno
generiranim brojevima iz raspona od 10 do 99 (uključeno). Ispisati matricu na zaslon. Nakon
toga potrebno je uzlazno sortirati elemente glavne dijagonale, a sve ostale elemente zamijeniti
brojem 0. Ispisati novu matricu.

 

ja za početak samo želim stvoriti matricu sa random brojevima i ispisati ju, ali meni N puta ispiše jedan te isti red matrice

 

#include <stdio.h>
#include <time.h>

int main () {

    int i, j, N, a[N][N];

    srand((unsigned)time(NULL));

    printf("Unesite N: ");
    scanf("%d", &N);

    for (i=0; i<N; i++){
       for (j=0; j<N; j++){
          a[i][j]=rand()%89+10;
       }
    }

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

    return 0;
}

Atomska bubamara
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Meni je ok.

 

Samo ne preporučam raditi a[N][N], mislim da to nije ok ni po nekom standardu. U trenutku kad se zauzima memorija za tu matricu, program ne zna koliki je N i to na nekim compilerima izazove grešku. Ili napravi dinamičku alokaciju matrice, ili ju deklariraj sa dovoljno velikim konstantama.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
Luuka kaže...

Meni je ok.

 

Samo ne preporučam raditi a[N][N], mislim da to nije ok ni po nekom standardu. U trenutku kad se zauzima memorija za tu matricu, program ne zna koliki je N i to na nekim compilerima izazove grešku. Ili napravi dinamičku alokaciju matrice, ili ju deklariraj sa dovoljno velikim konstantama.

ok. sad sam umjesto N stavio 20 i sve je onda ok

Atomska bubamara
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

jel moze netko ovo pretvorit u nešto "normalnije". odnosno, da nema one funkcije primFun i bez onog limits.h, naravno ako se moze tako

 

#include <stdio.h>
#include <limits.h>

int primFun(int x){
    int i;
    for (i=2; i<x; i++){
       if (i==x-1 && x % i != 0)
          return 1;
        if (x % i != 0)
          continue;
        if (x % i == 0)
          return 0;
    }
}

int main() {
    int N, unos, max, min, i, primbroj=404;

    printf("unesite N\n");
    scanf("%d",&N);

    min = INT_MAX;
    max = INT_MIN;

    for(i=0; i<N; i++){
       printf("\nunesite cijeli broj\n");
       scanf("%d",&unos);
       printf("\nunijeli ste broj %d ",unos);

       if (unos > max)
          max = unos;
       if (unos < min)
          min = unos;
    }

    for(i=max+1; i<INT_MAX; i++){
       if ( primFun(i) == 1) {
          primbroj = i;
          break;
       }
    }

    printf("\nNajveci od unesenih je: %d\n", max);
    printf("Najmanji od unesenih je: %d\n", min);
    printf("Prim broj koji je sljedeci poslije najveceg jest %d\n", primbroj);

    getch();
    return 0;
}

Atomska bubamara
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Zašto ti ovako ne izgleda fja za prost broj?

 

int primFun(int x)

{

       int i;

       for (i=2;i<=sqrt(x);++i)

         if (x%i==0) return 0;

 

      return 1;

}

 

ili ako želiš fju koja vraća prvi prim nakon x-a

 

int prviPrim(int x)

{

       int i,prim;

       while(1)

       {

           prim=1;

           for (i=2;i<=sqrt(x);++i)

            if (x%i==0) { prim=0; break; }

 

           if (prim) break;

            else ++x;

       }

       return x;

}

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put sri 2.2.2011 18:49 (Luuka).
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

tu nešto nije dobro.

 

jer kad u onom starom načinu upišem 5, pa 1, 2, 3, 4, 5, izbaci mi 7 kao prvi prim, što je i točno, a sa ovom funkcijom izbaci mi 6

 

i da, ovo spada pod zadatke kad još nismo radili funkcije, pa bi sve trebalo biti u glavnoj funkciji

Atomska bubamara
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Editirao sam, treba ići x%i==0, a ne samo x%i :D

 

A možeš i unutar glavnog ubacit ovu fju prviPrim, svejedno je.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

#include <stdio.h>
#include <limits.h>
#include <math.h>

int main() {
    int N, unos, max, min, i, primbroj, prim;

    printf("unesite N\n");
    scanf("%d",&N);

    min = INT_MAX;
    max = INT_MIN;

    for(i=0; i<N; i++){
       printf("\nunesite cijeli broj\n");
       scanf("%d",&unos);
       printf("\nunijeli ste broj %d ",unos);

       if (unos > max)
          max = unos;
       if (unos < min)
          min = unos;
    }

    primbroj=max+1;
    while(1)
    {
       prim=1;
       for (i=2;i<=sqrt(primbroj);++i)
         if (primbroj%i==0) { prim=0; break; }
           
       if (prim) break;
         else ++primbroj;
    }

    printf("\nNajveci od unesenih je: %d\n", max);
    printf("Najmanji od unesenih je: %d\n", min);
    printf("Prim broj koji je sljedeci poslije najveceg jest %d\n", primbroj);

    getch();
    return 0;
}

 


Btw možeš i bez limits.h :D

 

Samo razdvojiš slučaj i=0 i i>0 kod učitavanja. Kad je i=0, onda inicijaliziraš min i max, a inače radiš provjeru.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put sri 2.2.2011 18:57 (Luuka).
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

e to je to, hvala!

a zašto treba u zaglavlju uključiti limits.h? :/

 

edit: a sad vidim da si editirao, samo dok još to pokopčam :D

Atomska bubamara
Poruka je uređivana zadnji put sri 2.2.2011 18:59 (jurluk).
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
jurluk kaže...

e to je to, hvala!

a zašto treba u zaglavlju uključiti limits.h? :/

 

edit: a sad vidim da si editirao, samo dok još to pokopčam :D

limits ti treba jer koristiš INT_MAX i INT_MIN, al ko što rekoh može i bez toga :D

 

Jedno učitavanje obaviš van petlje, pa inicijaliziraš min i max sa tim učitanim brojem, i onda petlja for(i=1;i<N;i++)

 

ili unutar petlje staviš if (i==0) inicijalizacija else usporedba. (što je lošije rješenje jer će N-1 puta radit provjeru dal je i=0 bezveze)

 

btw može i bez math.h (on je tu zbog funkcije sqrt), ali onda će bit sporiji kod provjere dal je broj prost.

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put sri 2.2.2011 19:03 (Luuka).
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

gdje je ovdje greška?

 

tekst zadatka:

Napisati program koji će od korisnika zatražiti unošenje dva dvoznamenkasta broja A i B. Ukoliko
korisnik unese brojeve koji nisu dvoznamenkasti, od njega zatražiti ponovni unos brojeva. Ispisati sve
brojeve između A i B koji su neparni i čiji je zbroj znamenki djeljiv s brojem 5 (na primjer, broj 23 je
neparan, a zbroj njegovih znamenaka 2+3=5 je djeljiv s 5). Odrediti ukupan broj takvih brojeva
između broja A i B, te ga izraziti u postocima (npr. takvih brojeva ima 4,67%).

 

ne izbaci mi dobar postotak Neodlucan

 

edit: skužio Sramim se

stavio sam u varijablu "broj" tipa float i sad je sve dobro

 

#include <stdio.h>

int main (){

    int A, B, des, jed, i;
    float postotak, broj=0.0;

    printf("Unesi A: ");
    scanf("%d", &A);

    while (A<10 || A>99){
       printf("Broj mora biti u intervalu [10, 99]\nUnesi A:");
       scanf("%d", &A);
    }

    printf("Unesi B: ");
    scanf("%d", &B);

    while (B<10 || B>99){
       printf("Broj mora biti u intervalu [10, 99]\nUnesi B:");
       scanf("%d", &B);
    }

    for (i=A; i<=B; i++){

       des=i/10;
       jed=i-(des*10);

       if (i%2!=0 && ((des+jed)%5==0)){
          printf("%d ", i);
          broj++;
       }
    }

    postotak=(broj/(B-A))*100;

    printf("\nTakvih brojeva je %.0f, odnosno %.2f posto", broj, postotak);

    getch();
    return 0;
}

Atomska bubamara
Poruka je uređivana zadnji put sri 2.2.2011 20:28 (jurluk).
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

Da, imao si cjelobrojno dijeljenje. Ako ostaviš da je broj int (što i jest), onda ide ovako:

postotak=((float)broj/(B-A))*100;

ili

postotak=(100.0*broj/(B-A));

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf
Luuka kaže...

Da, imao si cjelobrojno dijeljenje. Ako ostaviš da je broj int (što i jest), onda ide ovako:

postotak=((float)broj/(B-A))*100;

ili

postotak=(100.0*broj/(B-A));

da, na kraju sam i stavio ovo podebljano

Atomska bubamara
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

evo sad se patim sa jednim zadatkom

 

U polje upisati N brojeva (<20,u protivnom ponoviti upis), zatim pronaći 2 susjedna broja u polju koja zajedno daju najveću razliku.

 

i sad mi palo na pamet, jel to možd ide sa funkcijom fabs iz math.h? Neodlucan

 

#include <stdio.h>

int main () {

    int polje[20], i, elem, N, razl;

    do{
       printf("Unesi broj elemenata polja: ");
       scanf("%d", &N);
    } while (N>20);

    for(i=0; i<N; i++){
       printf("Upisi %d. element: ", i+1);
       scanf("%d", &polje[i]);
    }

    razl = polje[1]-polje[0];
    elem = 1;

    for(i=2; i<N; i++){
       if((polje[i]-polje[i-1])>razl){
          razl=polje[i]-polje[i-1];
          elem=i;
       }
    }

    printf("Susjedna broja koja daju najvecu razliku su polje[%d] i polje[%d]\n");
    printf("To su elementi %d i %d, a razlika je %d",
          elem-1, elem, polje[elem-1], polje[elem], razl);

    getch();
    return 0;
}

Atomska bubamara
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice