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

ile liczb dodatnich, ile liczb ujemnych

Object Storage Arubacloud
0 głosów
689 wizyt
pytanie zadane 13 maja 2022 w C i C++ przez Hektor1025 Nowicjusz (210 p.)

Witam, mam problem z zadaniem o tresci: Napisz program wczytujący 20 liczb rzeczywistych i oblicz ile z tych liczb jest dodatnich, ile z tych liczby jest ujemnych, a ile równych zero. Liczby dodatnie mi wylicza,a ujemnych nie. Nie wiem dlaczego. Prosze o wyjasnienie.

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

int main()
{
    int i,dodatni=0,ujemne=0;
    float tab[20];
    for(i=0;i<21;i++){
        printf("Podaj liczbe : ");
        scanf("%f",&tab[i]);
        if(tab[i]<0)
    ujemne++;
     else if (tab[i]>0)
    dodatni++;
     }
    for(i=0;i<21;i++){
            printf("%2.f,",tab[i]);}
    printf("\n liczby ujemne to : %d,",ujemne);
    printf("\n liczby dodatnie to : %d,",dodatni);

    return 0;
}

 

2
komentarz 14 maja 2022 przez Oscar Nałogowiec (29,290 p.)
To 21 to za dużo - wychodzisz poza tablicę. Ona ma indeksy od 0 to 19.
komentarz 15 maja 2022 przez VBService Ekspert (252,740 p.)

@Hektor1025, do tego co napisał powyżej @Oscar

wartość jaką podajesz za długość tablicy

float tab[20];

w tym przypadku 20, jeżeli chcesz iterować po wszystkich elementach tablicy, też wtedy podajesz tą samą wartość

for (i=0; i<20; i++) {
  // ...
}

 

komentarz 15 maja 2022 przez Hektor1025 Nowicjusz (210 p.)

@Hektor1025, 

Dzięki za pomoc. Przy zmianie na 20, wylicza liczby ujemne prawidlowo.Pozdrawiam

komentarz 15 maja 2022 przez Oscar Nałogowiec (29,290 p.)

Oczywiście program spełnia założenia, ale w treści zadania nie ma napisane, że masz pamiętać te liczby, ani że masz je powtórnie wypisać. Tak, jak napisał @Apled w swojej odpowiedzi, tablica jest niepotrzebna, po każdym wczytaniu sprawdzasz wczytaną liczbę i zwiększasz odpowiedni licznik. I tyle. Na końcy wypisujesz 3 liczniki. Koniec zadania.

1 odpowiedź

0 głosów
odpowiedź 13 maja 2022 przez Apled Dyskutant (9,520 p.)
Logicznie niby warunki się zgadzają, po za tym, że zapomniałeś zliczać ile jest równych zero.

A w ogóle musisz to zapisywać w tabeli? Bo jak nie to mógłbyś to pominąć i po prostu wczytywać do zmiennej i porównywać wtedy.

Podobne pytania

0 głosów
0 odpowiedzi 103 wizyt
pytanie zadane 17 marca 2022 w C i C++ przez Sway22 Początkujący (270 p.)
0 głosów
1 odpowiedź 198 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

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

...