Casovi iz C-a (Beograd)

2

Casovi iz C-a (Beograd)

offline
  • Pridružio: 23 Jul 2006
  • Poruke: 118
  • Gde živiš: Beograd

Jel na fakultetu polazete tako sto zadatak pisete na papiru ili imate kompajler ?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

@ Toxi

Ja kada sam polagao, pisali smo na papiru.
Neverujem da je drugacije sada, ali ko zna...



offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

zavisi valjda kod kog si profesora... kod djenicke je cinimi se uvek bilo na kompu.... i usb flash je radio.... pa uzmes i prepises ili tacnije kopiras... sada toga vise nema... nema desnog klika, nema usb-a, nema nista osim kucanje programa

offline
  • Pridružio: 23 Jul 2006
  • Poruke: 118
  • Gde živiš: Beograd

Pa jbt ako imas kompajler onda mozes da uradis sta god oces, mislim sigurno nece biti gresaka mene u sk teraju da "kucam" na papiru( u najboljem slucaju notepad), jos da savladam tehnigu Origamija pa mogu od papira i EXE da napravim Very Happy

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

ma isto je... cak je mozda bolje na papiru jer neke greske tolerisu...
ovako pusti program ako ne radi cao.... ne gleda (kad je nadrndana) kada nije hoce da da bodove....
a to da li je prosto ili ne.... naravno da je prosto sve za onog ko zna... neke ispite koje znam dobro mi je bilo tako sve jedno kako cu ih polagati, ali kada ne znam opet mi sve jedno... ne znam ovako ne znam onako

Dopuna: 06 Sep 2006 2:58

dodjavola... ako nema casova moze li pomoc Razz

Uradio sam ovaj glupavi program na 2 nacina i na oba me maksimalno zbunjuje ??? Program bi trebao kao da izracuna (hahah) za redni broj meseca koliko dana ima isti... problem nastaje kod drugog meseca kada program pita sa standardnom funkcijom printf("Da li je godina prestupna?"); i dobija odgovor preko scanf.... problem je taj sto scanf moram da pisem u 2 reda kako bi on to registrova... kada pisem samo u jednom redu on iskulira napise pitanje ali ne ceka odgovor ?! ne kapiram zasto to.... kada kopiram scanf i pastujem to istu u novi red program radi !? Sta je to.. nije mi jasno... evo kod programa na 2 nacina... preko If-a i prkeo switch-a... problem je identican....

#include<stdio.h> int main() {             int a;       char odg;       while(1)       {          printf("Unesite redni broj meseca:\t");          scanf("%d",&a);          switch(a)          {             case 1:             case 3:             case 5:             case 7:             case 8:             case 10:             case 12:                printf("\nMesec ima 31 dan\n\n");                break;             case 2:                {                   printf("\nDa li je godina prestupna?\t");                   scanf("%c",&odg);                   if(odg=='d' || odg=='D')                   printf("\nMesec ima 29 dana\n\n");                   else if(odg=='n' || odg=='N')                   printf("\nMesec ima 28 dana\n\n");                   else                      printf("\nGreska, dozvoljen unos d/n!\n\n");                   break;                }             case 4:             case 6:             case 9:             case 11:                printf("\nMesec ima 30 dana\n\n");                break;             default:                printf("\nGreska, dozvoljeni unos 1-12!\n\n");                break;          }       }       return 0; }

potrebno kopirati scanf("%c",&odg); deo i pastovati isti u novi red ?!

#include<stdio.h> int main() {    int a;    char odg;    while(1)    {       do          {             printf("Unesite redni broj meseca:\t");             scanf("%d",&a);          }       while(a<1 || a>12);       if(a==1 || a==3 || a==5 || a==7 || a==8 || a==10 || a==12)          printf("\nMesec ima 31 dan\n\n");       else if(a==2)             {                printf("Da li je godina prestupna (d/n)?:\t");                scanf("%c",&odg);                scanf("%c",&odg);                if(odg=='d' || odg=='D')                   printf("Mesec ima 29 dana\n\n");                else if(odg=='n' || odg=='N')                   printf("Mesec ima 28 dana\n\n");                else                   printf("Greska, dozvoljen unos d/n !\n\n");             }          else             printf("\nMesec ima 30 dana\n\n");    }    return 0; }
evo ga i drugi nacin i koji radi, ako se obrise jedan red scanf("%c",&odg); program nece raditi kako treba za unos broja 2 Shocked
Ja ne kapiram.....

offline
  • Pridružio: 21 Feb 2004
  • Poruke: 111
  • Gde živiš: Zrenjanin

scanf() funkcija cita sa standardnog ulaza, stdin, i vrsi konverziju onog sto je procitala. Cita do '\n' (novi red, enter) i ono sto je sad za tebe bitno, ne prazni buffer sa kog cita tj. stdin. , vec samo do prvog '\n'. Prvi poziv scanf():scanf("%d",&a); pokupi broj meseca, izvrsi konverziju, i ostavi '\n' u stdin
Drugi poziv scanf(): scanf("%c",&odg); "pokupi" '\n' a tek treci poziv ceka unos sa tastature, zato sto je stdin prazan.

Znaci da bi prilikom poziva scanf() trebao da nekako ispraznis stdin. To mozes da uradis sa __fpurge() (pocenje sa 2xunderscore)

#include <stdio.h> // ovde ti se nalazi __fpurge()

i pre svakog scanf() (mada pre onog prvog ne moras) pozoves __fpurge(stdin);

Sada ima da radi..
#include<stdio.h> int main() {    int a;    char odg;    while(1)    {       do          {             printf("Unesite redni broj meseca:\t");             scanf("%d",&a);          }       while(a<1 || a>12);       if(a==1 || a==3 || a==5 || a==7 || a==8 || a==10 || a==12)          printf("\nMesec ima 31 dan\n\n");       else if(a==2)             {                printf("Da li je godina prestupna (d/n)?:\t");                __fpurge(stdin); // ovde da izprazni stdin                scanf("%c",&odg);                if(odg=='d' || odg=='D')                   printf("Mesec ima 29 dana\n\n");                else if(odg=='n' || odg=='N')                   printf("Mesec ima 28 dana\n\n");                else                   printf("Greska, dozvoljen unos d/n !\n\n");             }          else             printf("\nMesec ima 30 dana\n\n");    }    return 0; }

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

"__fpurge(stdin);"

ovo prvi put vidim u zivotu.... u celom praktikumu se ne nalazi ova komanda... da li je moguce da njima nije trebala ta komanda ?

U svakom slucaju hvala..... mada radio sam neke zadatke gde svakako ima vise scanf od 1-2 komada i nisam ovo koristio....hajde videcu ako nadjem neki kod sa vise scanf-a da ga okacim pa da mi mozda razjasnis zasto tamo nije trebao "__fpurge(stdin);" Smile

offline
  • Pridružio: 21 Feb 2004
  • Poruke: 111
  • Gde živiš: Zrenjanin

Vazi, a mada cini mi se da kada scanf() vrsi konverziju razlicitu od char i string isprazni buffer.. Da si kojim slucajem ucitavao int ili float (sto u ovom primeru bas nema i mnogo smisla, pogotovo float) __fpurge() ti nebi bio ni potreban.

offline
  • Pridružio: 23 Sep 2005
  • Poruke: 6

Svemirko ::"__fpurge(stdin);"

ovo prvi put vidim u zivotu.... u celom praktikumu se ne nalazi ova komanda... da li je moguce da njima nije trebala ta komanda ?



Ja sam na FPI-ju i vas Banjac mi predaje programiranje.
Ma, kupio sam i "The C Programming Language, Second Edition
by Brian W. Kernighan and Dennis M. Ritchie" i A.Hansena "Programiranje na jeziku C", dobavio od Urosevica i par nasih i hrvatskih autora + gomilica skripti sa neta... i, naravno, Lasla Krausa Smile i nigde ne rade tu kombinaciju, te sam i ja ludeo...
Onda nam je Banjac rekao isto sto i kolega sa foruma tebi, samo sto je on koristio fflush(stdin) za 'ciscenje' bafera...

Ko je trenutno na forumu
 

Ukupno su 1262 korisnika na forumu :: 44 registrovanih, 8 sakrivenih i 1210 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, Andrija357, cavatina, cifra, darkojbn, Denaya, DonRumataEstorski, dragoljub11987, FOX, Georgius, goxin, havoc995, ikan, Istman, ivica976, jackreacher011011, JOntra, Karla, ksyyaj, M1los, mercedesamg, mikrimaus, milenko crazy north, Mixelotti, nemkea71, nenad81, nextyamb, opt1, pein, Petarvu, Raso75, robert1979, rodoljub, royst33, sasa76, solic, stalja, Tvrtko I, vlvl, yrraf, YugoSlav, zziko, 1107