Wczytywanie tylko i wyłącznie liczb.

0

Napisać program wczytujący ciąg liczb rzeczywistych z
klawiatury (dowolny ciąg max 100 liczb). Liczby te należy zapisywać do tablicy float tab[100]. Następnie należy wyznaczyć wartość średnią i maksymalną tych liczb. Wczytywanie jest realizowane do momentu kiedy użytkownik wprowadza liczby (wtedy scanf(‘’%f”,&liczba)==1). Po wprowadzeniu litery lub znaku specjalnego program kończy wczytywanie liczb do tablicy i prezentuje wyniki. Wskazówka: zacznij od napisania programu który zawsze wczyta dokładnie 10 liczb

Rozumiem, że te: scanf(‘’%f”,&liczba)==1) to ma być warunek, czy mam własną instrukcję warunkową napisać, bo nie mam pojęcia jak taki argument if miałby działać. Więc do tego muszę dodać jeszcze jakiś warunek?

I o co chodzi z tą wskazówką, dlaczego na początku mam napisać program który wczyta dokładnie 10 liczb?

Mam pomysł żeby zrobić to instrukcją warunkową z wykorzystaniem tablicy ASCII dobrze myślę?

`dodanie znaczników ``` - @furious programming

1

raczej:

while(scanf("%f",&liczba)==1) {
     // przetwarzaj nową liczbę
    ...
}
0

Niezbyt rozumiem ten warunek, musiałbym dopisać jeszcze jedną powiedzmy funkcję z instrukcją warunkową:

bool sprawdz_czy_jest_liczba(int liczba)
{
    return( liczba == // dane numery w tablicy ASCII);
}

tak?

usunięcie cytowania całego poprzedniego posta oraz dodanie znacznia <code class="cpp"> - @furious programming

0

kod od @MarekR22 jest poprawny, jezeli nie rozumiesz co robi wygoogluj sobie dokumentacje i sprawdz co zwraca funkcja scanf z takimi parametrami

0

Źle myslisz. Głównie dlatego że nie czytasz dokumentacji. scanf() zwraca liczbę wczytanych parametrów.
if (scanf(‘’%f”,&liczba)==1){} to warunek który sprawdza czy udało się wczytać tego jednego floata. Jak wejdziesz do tego warunku to się udało, a jak nie ma to musisz usunąć co leży w buforze i powtórzyć operacje.
Zabezpieczenie przed wpisywaniem liter

0

http://www.cplusplus.com/reference/cstdio/scanf/

cplusplus.com napisał(a)

Return Value
On success, the function returns the number of items of the argument list successfully filled. This count can match the expected number of items or be less (even zero) due to a matching failure, a reading error, or the reach of the end-of-file.

Czyli dowolny przypadek, w którym nie można wczytać liczby (koniec pliku, tekst , który nie może być zinterpretowany jako liczba, inny błąd pliku), zakończy pętlę.

0
Shalom napisał(a):

Źle myslisz. Głównie dlatego że nie czytasz dokumentacji. scanf() zwraca liczbę wczytanych parametrów.
if (scanf(‘’%f”,&liczba)==1){} to warunek który sprawdza czy udało się wczytać tego jednego floata. Jak wejdziesz do tego warunku to się udało, a jak nie ma to musisz usunąć co leży w buforze i powtórzyć operacje.
Zabezpieczenie przed wpisywaniem liter

No macie rację, poza tym mam stworzyć tablicę float, więc tamta funkcja nie ma sensu.

0

Więc robisz to w pętle, właśnie dla tego @MarekR22 podał to wewnątrz while a nie if

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