Obliczanie średniej z podanych liczb - program ignoruje scanf

0

Witam serdecznie. Chciałbym żebyście mi pomogli w ćwiczeniu które usiłuję rozwiązać(napisać), mam napisać program który wczytuje nasze liczby i po każdej z nich, pyta czy dalej ma je wczytywać, a po wszystkich liczy średnia ze wszystkich. Napisałem coś takiego:

 #include<stdio.h>

int main()
{
  float liczba;
  char odpowiedz = 'l';
  float aktualna, licznik, srednia;
  int i, j;

  while(odpowiedz != 'n')
    {
      printf("Czy dalej podawac liczby? t/n");
      scanf("%c", &odpowiedz);
      scanf("\n");
      printf("Podaj liczbe: ");
      scanf("%f", &liczba);
      aktualna=aktualna+liczba;
      licznik++;
    }
  printf("\n");
  srednia=aktualna/licznik;
  printf("%f", srednia);
  return 0;
  
}

I gdy odpalam program w terminalu, ignoruje on tak jakby tego 1. scanfa. Proszę o w miarę łopatologiczne wytłumaczenie. Z góry dzięki ;)

0

Nigdy nie używałem scanf ale tutaj:

scanf("\n");

raczej chodziło tobie o printf

0

swój kod popraw tak:

      printf("Czy dalej podawac liczby? t/n");
      scanf(" %c", &odpowiedz); // Dodatkowa spacja by ignorować białe znaki!
      printf("Podaj liczbe: ");
      scanf("%f", &liczba);

Na dodatek masz więcej podstawowych i bardziej oczywistych błędów, ale sam się z nimi pomęcz.

Bez tej spacji zawsze odczytywałeś jakiś biały znak i odpowiedź nigdy nie była taka jaką chciałeś, a na dodatek potem ta odpowiedź wchodzi do wczytywania liczby i następuje błąd wczytywania tej liczby.
Zamiast pytać ciągle pytać czy chcesz kontynuować niech użytkownik wpisze coś co nie jest liczbą

printf("Podawaj liczby lub \"k\" by zakończyć");
while(odpowiedz != 'k' && odpowiedz != 'K') {
    while (scanf("%f", &liczba)==1) { // dopóki da się czytać liczbę
        aktualna=aktualna+liczba;
        licznik++;
    }
    scanf(" %c", &odpowiedz);
}
0

Oczywiście tam miał być printf. Co do zadania, to treść wyraźnie mówiła, że po każdej podanej liczbie program ma nas o to pytać, co mi też się wydaje osobiście dziwne. Ale i tak rozwiązałeś mój problem, jeszcze raz dzięki! ;)

0
#include <stdio.h>
 
int main()
  {
   float sum=0,value;
   int count;
   for(count=0;;++count)
     {
      printf("Podaj liczbe (! - koniec): ");
      if(scanf(" %f",&value)!=1) break;
      sum+=value;
     }
   if(count) printf("%f\n",sum/count); else printf("brak liczb - brak sredniej\n");
   return 0;
  }

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