Dlaczego program czeka na kolejna wartość?

0

Cześć, dlaczego w poniższym kodzie, po podaniu liczby program czeka na podanie kolejnej wartości zamiast przejść do kolejnej instrukcji printf oraz podania potęgi?

#include <stdio.h>
#include <math.h>
void potegowanie(float n, int p);

int main(void)
{
    float liczba;
    int potega;

    printf("Podaj mi liczbe oraz jej potege\n");
    printf("Zacznijmy od liczby:\n");
    scanf("%f\n", &liczba);
    printf("Teraz podaj potege do jakiej mam ja podniesc:\n");
    scanf("%d\n", &potega);
    potegowanie(liczba, potega);

    return 0;
}

void potegowanie(float n, int p)
{
    float wynik;
    wynik = pow(n, p);
    printf("%.2f podniesione do %d potegi to %.2f", n, p, wynik);
}
 
2
scanf("%f", &liczba) ;
scanf("%d", &potega) ;
1

Wyrzuc te \n. One są potrzebne jak chcesz czytać znaki %c ;)

0

No są dwie funkcje scanf, ponieważ potęgę też chcę wczytać do programu. Ale problem polega na tym, że po podaniu pierwszej liczby nic się nie dzieje - program czeka na podanie jeszcze jednej wartości. Kiedy ją podam komputer dopiero wtedy wyświetla tekst "Teraz podaj potege do jakiej mam ja podniesc:" i kiedy podaje liczbe on za potęgę podstawia to co ma w buforze czyli liczbe podaną wcześniej jako drugą
Nie wiem czy wystarczająco jasno to objaśniłem :D

EDIT Już działa poprawnie - jak usunąłem znaki /n to zaczęło działać:D ktoś może objaśnić dlaczego tak się stało?

0

Bo jak robisz scanf z %d / %f to kompilator jest sprytny i olewa znak nowej linii. Inaczej dzieje się tylko dla %c ;]

0

Aha, no dobra w takim razie dzięki;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1