• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

liczenie średniej do bez podawania liczby ocen

Object Storage Arubacloud
0 głosów
1,732 wizyt
pytanie zadane 4 listopada 2017 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam 

Jestem studentem pierwszego roku informatyki.Ostatnio na zajęciach otrzymałem zadanie o treści:

Napisz program liczacy srednia ocen. Program prosi o podawanie kolejnych ocen, nie pytając o ich liczbę. Wpisywanie ocen kończy się po podaniu oceny 0 (zero). Po zakończeniu 
wpisywania ocen należny wyświetlić średnią z podanych ocen. Za  pomocą pętli while udało mi się  zrobić , żeby program pytał mnie o oceny aż do momentu podania oceny zero.Nie wiem jak teraz zliczyć średnią z podanych ocen.Czy ktoś mógłby mi to wytłumaczyć jak najprościej?.Dodam jeszcze , że program muszę napisać w języku C a nie c++.Proszę o

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

int main(void)
{
   float ocena;
   while(ocena !=0)
   {
       printf("Podaj oceny: ");
       scanf("%f",&ocena);
   }
    return (0);
}

szybką odpowiedz.

Pozdrawiam 

2 odpowiedzi

+1 głos
odpowiedź 5 listopada 2017 przez jankustosz1 Nałogowiec (35,880 p.)
wybrane 5 listopada 2017 przez mn130496
 
Najlepsza
Na starcie nie wiadomo co siedzi w tej zmiennej ocena. Może to być 0 może nie być. Jeżeli byłoby to 0 to zauważ że nawet nie wejdzie do pętli.

Jeżeli chcesz policzyć średnią to musisz zrobić jakąś zmienna licznik i z każdym obiegiem pętli ją inkrementować, oraz zrobić zmienną suma. Potem tylko wypiszesz iloraz.
komentarz 5 listopada 2017 przez mn130496 Gaduła (3,530 p.)
ok a a możesz mi powiedzieć jak to zrobić bonie mogę tego zrozumieć
komentarz 5 listopada 2017 przez jankustosz1 Nałogowiec (35,880 p.)
Powiedz konkretnie czego nie rozumiesz.
komentarz 5 listopada 2017 przez mn130496 Gaduła (3,530 p.)
Nie rozumiem jak zwiększyć tom sumę i ten licznik za każdym przejściem pętli to znaczy wiem że do sumy dodaję ocenę i do licznika dodaje 1 ale nie wiem w którym miejscu to wpisać żeby działało. Możesz mi to wytłumaczyć?
komentarz 5 listopada 2017 przez jankustosz1 Nałogowiec (35,880 p.)
w bloku pętli while, aby po każdym wczytaniu wykonało takie operacje. Na logikę to trzeba brać.

Jeszcze musisz zwrócić uwagę na to, że jak zostanie wpisana wartość zero to wtedy nie zwiększasz licznika.
komentarz 5 listopada 2017 przez mn130496 Gaduła (3,530 p.)

ok wpisałem to w bloku pętli while ale pokazuje złą średnią.Co jest nie tak?

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

int main(void)
{
   float ocena;
   float suma=0;
   int licznik=0;
   float wynik=0;
   while(ocena !=0)
   {
       printf("Podaj oceny: ");
       scanf("%f",&ocena);
       licznik=licznik+1;
        suma=suma+ocena;

   }

   wynik=suma/licznik;
   printf("Srednia wynosi: %f",wynik);

    return (0);
}

 

komentarz 5 listopada 2017 przez jankustosz1 Nałogowiec (35,880 p.)
Nie działa bo gdy zostanie wpisana ocena 0 to mimo to zwiększy licznik, dlatego należy zrobić warunek że gdy nie jest równa zero to zwiększa.

Druga sprawa to na starcie może przypisz zmiennej ocena np. 1 aby przez przypadek wartości 0 nie miała.
komentarz 5 listopada 2017 przez mn130496 Gaduła (3,530 p.)
Acha już wszystko jasne dziękuje ci za pomoc.Faktycznie jest to proste i logiczne jeszcze raz dziękuje.
komentarz 20 listopada 2017 przez rayman22 Użytkownik (710 p.)
proszę wybaczyć odkop, jednakże jeżeli problemu jeszcze nie rozwiązałeś, to problemem był brak warunki if else w pętli. Przed liczeniem sumy, dodaj warunek - jeżeli wprowadzisz 0, to do sumy dodaj sume + 0. :)
0 głosów
odpowiedź 4 listopada 2017 przez jankowa1ski Gaduła (3,560 p.)
musisz miec sume tych ocen czyli stworz taka zmienna i zwiekszaj ja przy kazdy przejsciu petli o ocene. No i utworz tez zmienna licznik ktora zwiekszaj o 1. Ta zmienna to bedzie liczba ocen. Na koncu podaj wynik czyli srednia = suma/licznik
komentarz 4 listopada 2017 przez mn130496 Gaduła (3,530 p.)
Ok a możesz wytłumaczyć mi jeszcze jak w tym przypadku zwiększać licznik o 1 i sumę o tą ocenę chodzi mi jak zapisać to w programie  bo za bardzo nie wiem jak to zrobić
komentarz 4 listopada 2017 przez jankowa1ski Gaduła (3,560 p.)

Nie znam c# ale takie intrukcje sa raczej jak w c++ czylitak:

licznik = licznik + 1;

suma = suma + ocena;

ps nie zapomnij najpierw zadeklarowac tych zmiennych i dac im wartosc 0

jest tez skrocony zapis

np zamiast suma = suma + ocena; mozna napisac suma += ocena;

komentarz 4 listopada 2017 przez mn130496 Gaduła (3,530 p.)

ok już rozumiem a możesz jeszcze sprawdzić mi ten kod co jest w nim nie tak bo pokazuje złą średnią?

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

int main(void)
{
   float ocena;
   float suma=0;
   int licznik=0;
   float wynik=0;
   while(ocena !=0)
   {
       printf("Podaj oceny: ");
       scanf("%f",&ocena);
       licznik=licznik+1;
        suma=suma+ocena;

   }

   wynik=suma/licznik;
   printf("Srednia wynosi: %d",wynik);

    return (0);
}

 

komentarz 4 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
A przypadkiem, %d nie wypisuje liczby w formacie jakby była liczbą całkowitą?
komentarz 4 listopada 2017 przez jankowa1ski Gaduła (3,560 p.)
Wydaje mi sie ze gdy wprowadzisz 0 to suma sie zwieksza o podana ocene (czyli nic sie nie dziej bo zwieksza sie o 0) i licznik sie zwieksza o 1 przez co zaniża to srednia

Podobne pytania

0 głosów
1 odpowiedź 372 wizyt
pytanie zadane 18 lutego 2018 w Matematyka, fizyka, logika przez Wookiee Użytkownik (980 p.)
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 5 grudnia 2018 w C i C++ przez Cevet Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,346 wizyt

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...