Citat:
predator je napisao:
Ziv bio sto nekazes kakvih si problema imao.
Ziv bio reci(napisacu) cu ti. Ovo mi se pre desilo ali sam u medjuvremenu prevazisao problem na drugaciji nacin preko funkcije gets(), ali evo koda koji mi je pre pravio probleme, pa ces videti zasto pitam za alternativu funkciji scanf().
#include <stdio.h>
#include <stdlib.h>
int stepenovanje(int broj, int stepen);
//typedef enum proveravanje{ n, y }provera;
int main( void )
{
int broj, stepen, rezultat, Yes_No = 1;
//provera Yes_No = y;
char izbor;
while (Yes_No)
{
printf("nUnesi broj: ");
scanf("%d", &broj);
printf("nUnesi stepen: ");
scanf("%d", &stepen);
//scanf("%c", &izbor);
rezultat = stepenovanje(broj, stepen);
printf("nnRezultat je: %d", rezultat);
printf("nContinue (y/n): ");
scanf("%c", &izbor);
if (izbor == 'y')
continue;
else if (izbor == 'n')
Yes_No = 0;
else
printf("n(!) Neispravan izbor!");
break;
}
return (EXIT_SUCCESS);
}
int stepenovanje(int broj, int stepen)
{
if (stepen == 1)
return (broj);
else
return ((broj * stepenovanje(broj, stepen - 1)));
}
Ovaj program preskace ulaz podataka funkcijom
scanf("%c", &izbor);
osim ako ne ucinim vidljivim monetar kod u 19 liniji koji je isti
// scanf("%c", &izbor);
tada on ne preskace poziv funkcije scnaf() u 23 liniji iza stampanje poruke "Continue (y/n)". Znam da je verovatno greska do mene ali je ja ne vidim, i ne shvatam koje veze ima duplo postavljanje iste funkcije (scanf()) pri cemu se ova druga izvrsava ako postoji prva, dok prvu ignosrise. A ako ne postoji prva vec samo druga onda potpuno ignorise drugu, kao da nije napisan poziv funkcije??