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

poruka: 409
|
čitano: 99.166
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C programiranje- pomoć

#include <stdio.h>
int main()
{
 float broj_predmeta;
 float predmeti;
 float rezultat;
 float prosjek;
 
 printf("Ovo je program s kojim racunas prosjek ocjena!\n");
 /* ovo su mi pravila */
 printf("Molim postujet neka pravila!\n");
 printf("Minimalan broj predmeta je 10!, a maximalan je 15!\n");
 printf("Najmanja ocjena moze biti 1, a najveca moze biti 5!\n");
 printf("Mozete poceti sa racunanjem!\n");
 /*ovo mi treba biti kao ako korisnik ukuca 10 predmeta da mu racuna samo
 10 predmeta*/
 printf("Unesi broj predmeta:\n");
 scanf("%f", broj_predmeta);
 if(broj_predmeta <= 10) {
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10;
  prosjek = rezultat/10;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek);
 }
 if(broj_predmeta <= 11){
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  float ocjena11;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  printf("Unesite jedanaestu ocjenu:\n");
  scanf("%f", ocjena11);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10 + ocjena11;
  prosjek = rezultat/11;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek); 
 }
 if(broj_predmeta <= 12){
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  float ocjena11;
  float ocjena12;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  printf("Unesite jedanaestu ocjenu:\n");
  scanf("%f", ocjena11);
  printf("Unesite dvanaestu ocjenu:\n");
  scanf("%f", ocjena12);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10 + ocjena11 + ocjena12;
  prosjek = rezultat/12;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek); 
 }
 if(broj_predmeta <= 13){
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  float ocjena11;
  float ocjena12;
  float ocjena13;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  printf("Unesite jedanaestu ocjenu:\n");
  scanf("%f", ocjena11);
  printf("Unesite dvanaestu ocjenu:\n");
  scanf("%f", ocjena12);
  printf("Unesite trinaestu ocjenu:\n");
  scanf("%f", ocjena13);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10 + ocjena11 + ocjena12 + ocjena13;
  prosjek = rezultat/13;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek); 
 }
 if(broj_predmeta <= 14){
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  float ocjena11;
  float ocjena12;
  float ocjena13;
  float ocjena14;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  printf("Unesite jedanaestu ocjenu:\n");
  scanf("%f", ocjena11);
  printf("Unesite dvanaestu ocjenu:\n");
  scanf("%f", ocjena12);
  printf("Unesite trinaestu ocjenu:\n");
  scanf("%f", ocjena13);
  printf("Unesite cetrnaestu ocjenu:\n");
  scanf("%f", ocjena14);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10 + ocjena11 + ocjena12 + ocjena13
  + ocjena14;
  prosjek = rezultat/14;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek); 
 }
 if(broj_predmeta <= 15){
  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;
  float ocjena11;
  float ocjena12;
  float ocjena13;
  float ocjena14;
  float ocjena15;
  
  printf("Unesite prvu ocjenu:\n");
  scanf("%f", ocjena);
  printf("Unesite drugu ocjenu:\n");
  scanf("%f", ocjena2);
  printf("Unesite trecu ocjenu:\n");
  scanf("%f", ocjena3);
  printf("Unesite cetvrtu ocjenu:\n");
  scanf("%f", ocjena4);
  printf("Unesite petu ocjenu:\n");
  scanf("%f", ocjena5);
  printf("Unesite sestu ocjenu:\n");
  scanf("%f", ocjena6);
  printf("Unesite sedmu ocjenu:\n");
  scanf("%f", ocjena7);
  printf("Unesite osmu ocjenu:\n");
  scanf("%f", ocjena8);
  printf("Unesite devetu ocjenu:\n");
  scanf("%f", ocjena9);
  printf("Unesite desetu ocjenu\n");
  scanf("%f", ocjena10);
  printf("Unesite jedanaestu ocjenu:\n");
  scanf("%f", ocjena11);
  printf("Unesite dvanaestu ocjenu:\n");
  scanf("%f", ocjena12);
  printf("Unesite trinaestu ocjenu:\n");
  scanf("%f", ocjena13);
  printf("Unesite cetrnaestu ocjenu:\n");
  scanf("%f", ocjena14);
  printf("Unesite petnaestu ocjenu:\n");
  scanf("%f", ocjena15);
  
  rezultat = ocjena + ocjena2 + ocjena3 + ocjena4 + ocjena5 + ocjena6 +
  ocjena7 + ocjena8 + ocjena9 + ocjena10 + ocjena11 + ocjena12 + ocjena13
  + ocjena14 + ocjena15;
  prosjek = rezultat/15;
  
  printf("Prosjek vasih ocjena iznosi %f\n", prosjek); 
 }
 
 return 0;
}

 

Dali mi valja ovaj program? Dali je dobro "kodski" napisan?

p.s. ja sam ga probao pokrenuti u konzoli i izbaci mi da win has find a problem....što je problem?

Živi svaki dan kao da ti je zadnji !! Komjuteri su budućnost svijeta...-.-'
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: C programiranje- pomoć
MarinGoldstein_CRO kaže...

 

Dali mi valja ovaj program? Dali je dobro "kodski" napisan?

p.s. ja sam ga probao pokrenuti u konzoli i izbaci mi da win has find a problem....što je problem?

 

Nije :P nisam pogleda cijeli kod niti ga testao. Jesi se zapitao sta da imas 10 000 pretmeta ko bi to ispisao ?!? 

 

Za ovakvo nesto se koristi for ne if :P 

 

Moja preporuka ti je da prvo naucis neke osnovne stvari prije nego sam pocnes smisljat i pist nesto svoje (iako ni u ovome nema nista lose ali ustedjet ces puno vremena)

16 godina
neaktivan
offline
RE: C programiranje- pomoć
MarinGoldstein_CRO kaže...

 

Dali mi valja ovaj program? Dali je dobro "kodski" napisan?

p.s. ja sam ga probao pokrenuti u konzoli i izbaci mi da win has find a problem....što je problem?

 

Moras malo razmisljati na drukciji nacin.

 

Recimo tvoja pravila bi ja postavio nekako ovako:

printf("Unesite ocjene od 1-5, za prestanak unosa ocjena unesite 0");

 

kao sto vidis nema 2, 5, 15 ili n predmeta. To me ne zanima jer cu preko while petlje prestati unositi ocjene kada korisnik kaze da je gotov s tim.

 

onda imas petlju koja izgleda otprilike ovako

do

{

  // kod za unos ocjena

}while (ocjena !=0)  

Dakle bez provjere uvjeta ulazis u petlju (zato je do while, umjesto while) i pitas korisnika za ocjene. Bitno je napomenuti da ti treba brojac unesenih ocjena (recimo n). njega trebas definirati i inicijalizirati (kao sto bi trebao sve varijable) prije do while petlje. Dakle postavis ga na n=0; i na pocetku do while petlje ga povecavas za + 1 (dakle n++;)

 

onda dobijes nesto ovako za unos ocjene

n++;

printf("Unesi %d. ocjenu: ", n);

scanf("%d",&ocjena);

suma+=ocjena;

 

dakle imas tri varijable, brojac, ocjenu, i sumu. Odmah nakon unosa racunas sumu jer ionako te ne zanimaju pojedine ocjene. Onaj printf te uredno pita da uneses ocjenu pod rednim brojem koju brojac pokazuje.

 

Dalje ti preostaje da nakon izlaska iz petlje umanjis brojac za jedan (jer i ocjena nula za prekid petlje se broji kao ocjena, a u biti nije ocjena pa imamo ocjenu viska za prosjek)

i izracunas te ispises prosjek.

prosjek = (double)suma / (double)n;

printf("Vas prosjek je: %1.2f", prosjek);

sve varijable osim prosjeka su integeri, a prosjek je double (ili float). %1.2f je formatiranje ispisa, jedna znamenka prije tocke i dvije poslije.

 

uz pomoc while petlje unutar prve while petlje mozes napraviti i provjeru dali ti korisnik unosi vrijednosti od 0-5 jer trenutno ide bilo koji broj kao ocjena.

 

ovo nije gotov program (iako je jako blizu tome) i vjerojatno ima gresaka jer vec neko vrijeme nisam prtljao po c-u ali to ti je manje vise to. :P

 

 

15 godina
neaktivan
offline
RE: C programiranje- pomoć
MarinGoldstein_CRO kaže...

 

Dali mi valja ovaj program? Dali je dobro "kodski" napisan?

p.s. ja sam ga probao pokrenuti u konzoli i izbaci mi da win has find a problem....što je problem?

Malo sam secirao tvoj kôd, pa pocnimo...

 

#include <stdio.h>
int main()
{
 float broj_predmeta;
 float predmeti;
 float rezultat;
 float prosjek;

broj_predmeta ne mora biti float, neces upisati 4.5 predmeta ili 8.3 predmeta nego 4 ili 8 predmeta. Cijeli broj (int) je ovdje puno bolji izbor.

 

 printf("Unesi broj predmeta:\n");
 scanf("%f", broj_predmeta);

Ovo nije dobro, scanf ocekuje memorijsku adresu na koju ce pohraniti dobiveni unos, da bi mu dao memorijsku adresu varijable broj_predmeta moras dodati '&' ispred imena varijable, pa to izgleda ovako:   scanf("%f", &broj_predmeta);

Nepravilno koristenje scanf() funkcije ti je ujedno i razlog zasto se program rusi, popravi to.

 

 if(broj_predmeta <= 10) {
 

 

Nije dobro. Uvijet koji si postavio kaze: ako je broj_predmeta manji ili jednak deset. Trebao si samo staviti ako je broj_predmeta jednak deset: if(broj_predmeta == 10) {

 

  float ocjena;
  float ocjena2;
  float ocjena3;
  float ocjena4;
  float ocjena5;
  float ocjena6;
  float ocjena7;
  float ocjena8;
  float ocjena9;
  float ocjena10;

 

Ovo je veoma lose, ako bas zelis ici tim putem nema potrebe da deklariras varijable zasebno za svaki 'if' blok. Ja bih stavio odmah na pocetku: float ocjena, ocjena2, ocjena3, ocjena4, ocjena5, ocjena6, ocjena7, ocjena8, ocjena9, ocjena10, ocjena11, ocjena12, ocjena13, ocjena14, ocjena15;

Pa bih onda koristio samo one varijable koje mi trebaju, umjesto da za svaki if blok deklariram novi set varijabli.

 

  printf("Unesite prvu ocjenu:\n");
 scanf("%f", ocjena);

 

Ovaj dio, osim sto se scanf pogresno koristi (fali ti '&' ispred imena varijable, pogledaj gore), ne provjerava jesam li upisao 0 ili 6 kao ocjenu, znaci tu imas propust. Trebas provjeriti je li unos ispravan. Nikada nemoj imati povjerenja u korisnika, to je izvor hrpe bugova.

 

I za kraj, iako bi ti program radio kada bi popravio sve stvari koje sam naveo, koristenje for ili while petlji za takve stvari je puno bolji nacin.

Pathogenic fundamentals clearly indicate that homogenous populations are most vulnerable.
Poruka je uređivana zadnji put sub 6.11.2010 15:29 (rustweaver).
15 godina
neaktivan
offline
RE: C programiranje- pomoć

Da se nadovezem na doktora zoidberga, evo ti primjer cijelog programa. Prednost u odnosu na tvoj pristup je (osim sto je puno manji, cak i sa komentarima) u tome sto moze racunati prosjek za broj ocjena od 1 do koliko god zelis.

 

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

int main()
{
    //deklariraj varijable
    float zbroj_ocjena=0, broj_ocjena=0;
    int ocjena;
   
    //ispisi uputstvo korisniku
    printf("Upisite broj od 1 do 5, upisite bilo koji drugi broj za prekid unosa.\n");
   
    //ponavljaj beskonacno
    while (1)
    {
          //trazi broj od korisnika
          scanf("%d", &ocjena);

          //ako je ocjena manja od 1 ili veca od 5 prekini petlju
          //viticaste zagrade nisu potrebne ako if blok izvrsava samo jednu liniju koda
          if (ocjena<1 || ocjena>5)
             break;
            
          //uvecaj zbroj ocjena za ocjenu
          //ovo je brzi nacin pisanja "zbroj_ocjena = zbroj_ocjena + ocjena"
          zbroj_ocjena+=ocjena;
          //uvecaj broj ocjena za 1,
          //ovo je brzi nacin pisanja "broj_ocjena = broj_ocjena + 1"
          broj_ocjena++;
    }
   
    //ako je broj ocjena veci od nule ispisi prosjek
    //ovdje sam namjerno ostavio viticaste zagrade iako je u pitanju samo jedna linija koda
    if (broj_ocjena>0)
    {
       printf("\nVas prosjek je: %.2f \n", zbroj_ocjena/broj_ocjena);
    }
    //else naredba se nadovezuje na 'if' gore, i odnosi se na sve
    //druge rezultate koji ne zadovoljavaju uvjete gornjeg 'if' bloka
    else
    {
        //ispisi upozorenje korisniku da nije upisao niti jednu ocjenu
        printf("\nNiste unjeli niti jednu ocjenu!\n");
    }
   
    //pauziraj program da korisnik stigne vidjeti ispis
    system("pause");
   
    //zavrsi program
    return 0;
}

Pathogenic fundamentals clearly indicate that homogenous populations are most vulnerable.
17 godina
offline
C programiranje- pomoć

 

Ako mene pitaš, nisi ništa pogriješio, nego je programiranje takav posao u kojem jednotavno moraš imati određeni nivo teoretskog znanja da bi na osnovu njega iskazao kreativnost

Zašto počinješ sa čistim C? To nije dobar pristup, bolje je kombinirati učenje C i proceduralnog dijela C++, a to ima ova knjiga

Dakle, kad teoretski prođeš učenje C i C++ u kombinaciji završno sa petljama, to će ti dati mogućnost da ovaj zadatak riješiš efikasno

pod efikasnim u programiranju se misli što jednostavnije da brzina izvođenja koda bude veća, a trošenje resursa što manje, korisničko sučelje što jednostavnije

 kad prodješ teoretski dio zaključno sa petljama bit će ti jasno ovo, dakle kreni sa učenjem



 

 

for(i=0; i<broj_predmeta; i++) {
    do {
       provjera = 0;
       printf("Upisi %d. ocjenu: ", i+1);
       scanf("%d", &ocjena);
       if(ocjena<1 || ocjena>5) {
          printf("Ocjena mora biti od jedan do 5\n");
          provjera = 1;
       }
       }while(provjera);
    suma += ocjena;
    }

 

 

Poruka je uređivana zadnji put sub 6.11.2010 16:38 (Floki).
 
1 0 hvala 1
17 godina
offline
C programiranje- pomoć

Ne treba ovdje komplicirati, korisnik unosi broj predmeta, petljom for se unese ocjena za svaki predmet, ako ocjena nije u rasponu 1-5, ispisuje se upozorenje i taj korak petlje se ponavlja, odnosno

za taj predmet se ponovno unosi ocjena

Poruka je uređivana zadnji put sub 6.11.2010 17:07 (Floki).
 
0 0 hvala 0
16 godina
odjavljen
offline
RE: C programiranje- pomoć

Samo jedna napomena još: Efikasnost se uvijek može naknadno doraditi. Ono čemu u startu treba težiti da bi naknadno poboljšanje efikasnosti i debugiranje bili jednostavniji od pisanja iz početka je preglednost koda - kod treba biti čitljiv, imena varijabli i funkcija bi trebala biti u skladu s onim za što se varijabla koristi odnosno što funkcija radi, a komentari bi trebali stajati tamo gdje postoji ikakva nedoumica.

 

 

Floki kaže...

 

for(i=0; i<broj_predmeta; i++) {
      do {
            provjera = 0;
            printf("Upisi %d. ocjenu: ", i+1);
            scanf("%d", &ocjena);
            if(ocjena<1 || ocjena>5) {
                  printf("Ocjena mora biti od jedan do 5\n");
                  provjera = 1;
            }
            }while(provjera);
      suma += ocjena;
      }

 

Ili varijacija na temu:

 

 

for(i=0; i<broj_predmeta; i++)

{

    printf("\nUpisi %d. ocjenu: ", i+1);
    scanf("%d", &ocjena);


    while(ocjena<1 || ocjena>5) //U petlju se ulazi samo ako na prvom unosu nije unesen ispravan broj, a izlazi nakon unosa ispravnog broja.

    {
          printf("\nOcjena mora biti od 1 do 5\nPonovi upis %d. ocjene: ", i+1);

          scanf("%d", &ocjena);
    }


    suma += ocjena; //Tek kada imamo ispravnu ocjenu dodajemo je na sumu.
}

 

Na ovaj način imamo jednu varijablu manje, a u kodu je posebno odvojen scenarij kada nije unesena ispravna ocjena.

Također, iako tvoje nije pogrešno, ovakvo postavljanje vitičastih zagrada daje pregledniji kod, pogotovo ako imaš if-ova nakon kojih slijedi jedna naredba bez vitičastih i if-ova nakon kojih slijedi blok naredbi.

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
Poruka je uređivana zadnji put sub 6.11.2010 17:22 (MrBlc).
17 godina
offline
C programiranje- pomoć

Da, moj sistem je da prvu vitičastu zagradu kod main funkcije, klasa , funkcija i struktura pišem u novom redu, a kod petlji koje su u nekom od tih blokova u istom redu

Inače, while je ovdje bolja, uštedi jedan bool - (naravno u C++)

Poruka je uređivana zadnji put sub 6.11.2010 17:36 (Floki).
 
0 0 hvala 0
16 godina
odjavljen
offline
C programiranje- pomoć

Evo jedan mali programčić:

 

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

int main()
{
  int a;
  a=10+011+0x25;
  printf("%d\n",a);
 
 
  system("PAUSE"); 
  return 0;
}

 

Kao rezultat se ispisuje 56. Mene zanima što je sa ova druga dva broja-011 i 0x25. Prvi je valjda u binarnom zapisu, dok je drugi u heksadekdaskom (9 i 37). Kako da na papiru izračunam dekadski broj iz tih brojeva?

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697
Moj PC  
0 0 hvala 0
17 godina
offline
C programiranje- pomoć

O11 - broj u oktalnom zapisu pošto je 0 ispred znak za oktalni zapis

A dekadski broj iz tog broja se računa na sljedeći način;

011 = 1*8^0 + 1*8^1 = 9 dekadski - dakle pošto je baza oktalnog broja 8 na prvoj poziciji imamo 1 i množimo ga sa 8^0, na drugoj poziciji imamo 1 i množimo ga sa 8^1

 

Potpuno ista stvar je sa heksadekadskim zapisom kojem je baza 16:

0x123 = 3*16^0 + 2*16^1 + 1*16^2 = 291 dekadski

Poruka je uređivana zadnji put ned 7.11.2010 18:28 (Floki).
 
1 0 hvala 1
17 godina
neaktivan
offline
C programiranje- pomoć

imam problema sa c-om, kako god napišem compiler mi zacrveni, na drugom sam kompu pa neman ovde kod.

Treba mi u biti if funkcija koja ako je vrijednost varijable a niz znakova "yes" ispisiva određeni teks (jednostavo ali neće) 

IRebic
Moj PC  
0 0 hvala 0
17 godina
offline
C programiranje- pomoć

Napravi ovako:

 

 

#include<string.h>
#include<stdio.h>


int main()
{
    char  Odgovor[10];
    printf("Unesi naziv casopisa: ");
    scanf("%s", Odgovor);

    if(!strcmp(Odgovor, "Bug")) // funkcija vraća 0 ako su stringovi jednaki
       printf("Bingo\n");
    else
       printf("Krivi odgovor!\n");
}

Poruka je uređivana zadnji put ned 7.11.2010 22:31 (Floki).
 
0 0 hvala 0
16 godina
odjavljen
offline
C programiranje- pomoć

Trebam pomoć sa ovim zadacima. Slika je ispod. Molim da mi objasnite kako se to radi.

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
C programiranje- pomoć

Da i meni bi isto trebala pomoć s tim zadacima pa ako postoji dobra duša...

Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
RE: C programiranje- pomoć
dedaa kaže...

Da i meni bi isto trebala pomoć s tim zadacima pa ako postoji dobra duša...

 Našao sam na netu opisano: http://www.vus.hr/Nastavni%20materijali/OS%20i%20gradja%20racunala/aud1.pdf

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

Pozz, treba mi pomoć oko programa, tj. treba mi ga netko napraviti, stvar je u tome što uopće nemam pojma kako počet, ove petlje koliko god učio nikakao da shvatim,pa eto:

 

 

Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
RE: C program - greška kad dođe do % u printf
dedaa kaže...

Pozz, treba mi pomoć oko programa, tj. treba mi ga netko napraviti, stvar je u tome što uopće nemam pojma kako počet, ove petlje koliko god učio nikakao da shvatim,pa eto:

 

 

 Ja sam to danas imao kao zadatak na vježbi. Budući da sam otišao spavati u 3 ujutro, a budio sam se u 6, nisam sve pročitao i dobio sam samo 1 bod. Grgec je kriv!!! Majstor nije ni odgodio predavanja i vježbe, a imali smo kolokvij. {#}

 

Hint: upotrijebi do...while petlje sa puno if-ova.

 

do{

 

      scanf(" %c",&N);

      if(uvjeti) {

                      naredbe

                     }

   

 

}while (uvjeti)

 

 

 

Ukoliko vam je mobitel u kvaru, ili ga želite prodati, zovite ovaj broj- 091 172 6697
Poruka je uređivana zadnji put čet 11.11.2010 20:20 (vexx5555).
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

Joj Grgec, sva sreća da ga nemam na vježbama, a ni na predavanjima, imam ženu neku Dunju, a ovaj zadatak gledam i pokušavam ga riješit al neide

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

najprije do-while za učitati N.

 

Nakon toga for petlja od 1 do N i učitavanje znaka

unutar nje provjera što je učitani znak (uz pomoć funkcija iz conio.h biblioteke npr isalpha() ili uspoređivanjem 'a'<=c<='z' i sl). Ovisno što je povećati brojač slova, znamenki ili čega već

na kraju ispis

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

Neznam ni kako početi ovaj program, ako bi ga mogao riješiti i objaviti ovdje da ga ja proučim, jer ove petlje mi neidu koliko god ih učio

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

Evo ga:

 

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

int main()
{
    int i,N,br_velikih=0,br_malih=0,br_znamenki=0,br_ostalih=0;
    char c;
   
    do{
         printf("Koliko znakova? ");
         scanf("%d",&N);
      } while(N<5 || N>20);
   
    printf("\n");
    for (i=0;i<N;++i)
    {
        printf("Ucitaj %d. znak: ",i+1);
        scanf(" %c",&c);
       
        if (c>='a' && c<='z') ++br_malih;
        else if ( c>='A' && c<='Z') ++br_velikih;
        else if ( c>='0' && c<='9') ++br_znamenki;
        else ++br_ostalih;
    }
   
    printf("\n\n Ukupno uneseno %d znakova\n",N);
    printf(" Velikih slova: %d\n Malih slova: %d\n", br_velikih,br_malih);
    printf(" Znamenki: %d\n Ostalih: %d\n\n",br_znamenki,br_ostalih);
    system ("pause");
    return 0;
}

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

Hvala ti puno, sutra idem po tu knjigu C programer za 15 dana, a sad idem proučavati zadatak

Moj PC  
0 0 hvala 0
17 godina
offline
RE: C program - greška kad dođe do % u printf
dedaa kaže...

Hvala ti puno, sutra idem po tu knjigu C programer za 15 dana, a sad idem proučavati zadatak

 

Nema tu ništa za 15 dana, moraš vježbati i vježbati, riješiti brdo primjera

Kad ti stoji u zadatku "učitati N brojeva s tipkovnice" - to znači petlja for n puta unosi scanf

for(i=0; i<n; i++)

 scanf("%d", %a);

 

Nema ništa instant ni na brzinu, nije Luuka ovu brzinu dobio na poklon, puno je zadataka riješio

 

Poruka je uređivana zadnji put čet 11.11.2010 21:26 (Floki).
16 godina
neaktivan
offline
C program - greška kad dođe do % u printf

Ma znam da neće biti ništa za 15 dana, al govore da je dobra knjiga, a ova iz srednje i nije baš nešto

Moj PC  
0 0 hvala 0
17 godina
offline
C program - greška kad dođe do % u printf

Pročačkaj malo i ovdje po forumu za literaturu, da bi rješavao ovakve zadatke stvarno moraš provježbati slične primjere

stvarno ne znam po čemu učite, ali skoro da ti i mogu povjerovati da oni više traže nego daju

Ova knjiga ima takvih primjera, nije da je reklamiram, nego ti želim uspjeh, primjeri su riješeni, jedino moraš

u većini zadataka stavljati printf i scanf umjesto cout i cin da bi dobio čisti C umjesto C++ , mada ima i zadataka

u čistom C

uglavnom, pročačkaj po forumu, pa nabavi nešto 

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

danas sam bio na interliber-u i kupio sam knjigu Napredno programiranje i algoritmi u C-u i C++-u. koliko sam vidio do sad, nije loša. to je neka nova knjiga, jer na webu piše da izlazi 2011, a eto već je tiskana. onda je pravo friška :D

 

 

i imam jedno pitanje. jučer sam na labosu dobio zadatak da napravim program koji će skenirati sve troznamenkaste brojeve i ispisati one kojima je umnožak njihovih znamenki jednak zbroju tih znamenki. npr 123, 1+2+3= 6 i 1*2*3=6. evo kod

 

#include <stdio.h>

int main () {

    int i, s, d, j;

    for (i=100; i<1000; i++)
       {
          s = i / 100;
          d = (i - (s * 100)) / 10;
          j = (i - (s * 100) - (d * 10));

          if ( (s + d + j) == ( s * d * j) )
          printf("%d\n", i);
       }
    return 0;
    }

 

to sam danas napisao. a jučer je bilo skoro isto, samo što je ono s=, d= i j= bilo ispred for, i zato je ispisivao sve brojeve od 100-999, a ne ono što zapravo treba. i zbog toga sam dobio 0 bodova od 2.

ovo je sad djelomično gotovo, još treba napraviti da ispisuje koliko je takvih brojeva sveukupno. dobije se 6, ali ne ispisati 6 pomoću printf-a, nego da program sam izbroji te brojeve i onda ispiše taj broj

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

Dali mislis nešto kao ovo:

 

http://pastebin.com/0JPULXrF

 

 

 

 

All religions are the same: religion is basically guilt, with different holidays.
Poruka je uređivana zadnji put pet 12.11.2010 19:11 (drnde).
 
1 0 hvala 1
16 godina
neaktivan
offline
RE: C program - greška kad dođe do % u printf

kakvo jednostavno rješenje :)

hvala!

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

Ovako izgleda bolje za profesorske oči:

 

 

 

#include <stdio.h>

 

 

int main () {

 

   int i, s, d, j;

   int n = 0;

 

   for (i=100; i<1000; i++)

     {

      j = i%10;

      d = (i%100)/10;

      s = i/100;

 

 

      if ( (s + d + j) == ( s * d * j) ){

printf("%d\n", i);

n++;

 }

}

 

   printf("%d",n);

   return 0;

   }

 

Poruka je uređivana zadnji put pet 12.11.2010 21:06 (Floki).
 
1 0 hvala 1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice