• 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

0 głosów
112 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 (630 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 (630 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
4 odpowiedzi 254 wizyt
0 głosów
1 odpowiedź 521 wizyt
pytanie zadane 7 stycznia 2018 w C i C++ przez blacked Nowicjusz (120 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

62,327 zapytań

108,464 odpowiedzi

226,431 komentarzy

35,177 pasjonatów

Przeglądających: 148
Pasjonatów: 5 Gości: 143

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...