• 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
100 wizyt
pytanie zadane 9 października w C i C++ przez ola123 Nowicjusz (160 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 przez garris Użytkownik (610 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 przez ola123 Nowicjusz (160 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 przez garris Użytkownik (610 p.)
edycja 10 października 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
1 odpowiedź 356 wizyt
pytanie zadane 7 stycznia w C i C++ przez blacked Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 252 wizyt
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

56,372 zapytań

101,068 odpowiedzi

208,200 komentarzy

28,042 pasjonatów

Przeglądających: 354
Pasjonatów: 14 Gości: 340

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.

...