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

Program nie kończy pobierania zmiennych

Object Storage Arubacloud
0 głosów
742 wizyt
pytanie zadane 9 października 2018 w C i C++ przez ola123 Nowicjusz (180 p.)

Witam, mam problem z programem liczącym średnią arytmetyczną. Jestem po pierwszych laboratoriach na studiach z podstaw programowania w języku C. Jest to dla mnie coś całkiem nowego, nigdy wcześniej nie programowałam i napotkałam problem, którego nie umiem rozwiązać. Mam do zrobienia takie zadanie:

Napisz program, pobierający od użytkownika 10 liczb całkowitych, a następnie wyznaczający i
wyświetlający średnią arytmetyczną z pobranych liczb. Nie używaj pętli. Średnią wyświetl z
dokładnością do 4 miejsc po przecinku.

No więc napisałam program, ale on chce podania 11 zmiennych zamiast 10, z czego jedenastej zmiennej nie bierze pod uwagę przy obliczaniu średniej. Gdzie popełniam błąd, że program nie wyświetla średniej po wpisaniu dziesiątej liczby, tylko czeka na jedenastą zmienną? Co zrobić, żeby średnia była wyświetlana od razu po wpisaniu dziesiątej liczby? 

Tu jest mój program:

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

int main ()
{
    int var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9, var_10;

    printf ("Give 10 numbers: \n");
    scanf ("%d", &var_1);
    scanf ("%d", &var_2);
    scanf ("%d", &var_3);
    scanf ("%d", &var_4);
    scanf ("%d", &var_5);
    scanf ("%d", &var_6);
    scanf ("%d", &var_7);
    scanf ("%d", &var_8);
    scanf ("%d", &var_9);
    scanf ("%d\n", &var_10);

    float arithmetic_average = (var_1 + var_2 + var_3 + var_4 + var_5 + var_6 + var_7 + var_8 + var_9 + var_10)/(float)10;
    printf ("arithmetic_average = %.4f", arithmetic_average);

    return 0;
}

Miło by było, gdyby jeszcze ktoś mi wytłumaczył jak mogłabym w jednej linii zapisać polecenie wczytania zmiennych. Zapewne da się to zrobić nie rozpisując tego na 10 komend, ale nie wiem jak to zrobić.

 

Z góry dziękuję za wszystkie odpowiedzi, wiem że są to pewnie błahe problemy, ale nie umiem sobie z nimi poradzić, proszę o wyrozumiałość, bo dopiero zaczynam swoją przygodę z programowaniem :)

1 odpowiedź

+1 głos
odpowiedź 10 października 2018 przez garris Użytkownik (660 p.)

Pobierasz 10 zmiennych, ale:

    scanf ("%d\n", &var_10);

\n - jest znakiem nowej linii, usuń i wszystko powinno być dobrze

(float)10

W tym momencie rzutujesz liczbę całkowitą na zmiennoprzecinkową co nie ma sensu, usuń (float).

 

Co do pobierania zmiennych w jednej linii to spróbuj tak.

    scanf ("%d%d%d%d%d", &var_1, &var_2, &var_3, &var_4, &var_5);

 

komentarz 10 października 2018 przez ola123 Nowicjusz (180 p.)
Bardzo dziękuję za odpowiedź :)

Mam jednak problem, bo po usunięciu "(float)" średnia jest wyświetlana jako liczba całkowita, nie wyświetlają się liczby po przecinku, np. średnią z liczb od 1 do 10 wyświetla jako 5, mimo że wynik powinien wynieść 5,5. Po dodaniu "(float)" wynik wyświetla się poprawnie.
komentarz 10 października 2018 przez garris Użytkownik (660 p.)
edycja 10 października 2018 przez garris
Dobra sprawdziłem, musisz rzutować 10 na float. Wynika to z konstrukcji tego języka, w C pisałem tylko na studiach, wybacz, że Cię zmyliłem.

Podobne pytania

0 głosów
2 odpowiedzi 237 wizyt
0 głosów
4 odpowiedzi 325 wizyt

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 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!

...