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

BMI - SPOJ - Błędna Odpowiedź

0 głosów
1,405 wizyt
pytanie zadane 18 lipca 2017 w C i C++ przez Kamil Paradowski Użytkownik (620 p.)

Witam, czy ktoś mógłby przejrzeć świeżym okiem na ten kod i powiedzieć gdzie popełniłem tutaj błąd? 

Zadanie: http://pl.spoj.com/problems/FR_02_06/

Kod: 

#include <iostream>

int main()
{
    short t;
    float masa;
    float wzrost;
    std::cin>>t;
    char imie[t][20];
    float BMI[t];
    for(int i=0;i<t;i++)
    {
        std::cin>>imie[i]>>masa>>wzrost;
        BMI[i]=(masa/(wzrost*wzrost)*10000);
    }
        std::cout<<"niedowaga"<<std::endl;
        for(int i=0;i<t;i++)
        {
            if (BMI[i]<18.5)
                std::cout<<imie[i]<<std::endl;
        }
        std::cout<<"\nwartosc prawidlowa"<<std::endl;
        for(int i=0;i<t;i++)
        {
            if (BMI[i]>18.5 && BMI[i]<25)
                std::cout<<imie[i]<<std::endl;
        }
        std::cout<<"\nnadwaga"<<std::endl;
        for(int i=0;i<t;i++)
        {
            if (BMI[i]>=25)
                std::cout<<imie[i]<<std::endl;
        }
    return 0;
}

 

komentarz 19 lipca 2017 przez Aisekai Nałogowiec (42,190 p.)
Co jeśli BMI będzie równe 18.5?
komentarz 19 lipca 2017 przez Kamil Paradowski Użytkownik (620 p.)
hahah, niemożliwe! We wcześniejszej wersji normalnie to opisałem, tutaj musiałem na szybko pominąć ten znak. Niestety pomimo tej poprawki dalej jest błędna odpowiedź.

1 odpowiedź

0 głosów
odpowiedź 18 lipca 2017 przez Evelek Nałogowiec (28,960 p.)

Tu:

std::cin>>t;
char imie[t][20];
float BMI[t];

Jeśli nie znasz rozmiaru tablicy w trakcie kompilacji, to jej wielkość musisz zaalokować dynamicznie, a nie w ten sposób jak to tutaj zrobiłeś. Ewentualnie ratuj się jakimś kontenerem z STL, np. std::vector<>.

komentarz 18 lipca 2017 przez Kamil Paradowski Użytkownik (620 p.)
A mogę po prostu jakoś inaczej to napisać, nie używając tutaj dynamicznych alokacji?
komentarz 19 lipca 2017 przez Jedras Maniak (54,860 p.)
za pomocą chociażby vectora
komentarz 19 lipca 2017 przez Kamil Paradowski Użytkownik (620 p.)

Zastosowałem się do rady użytkownika  Aisekai oraz większyłem zawartość tablicy char z 20 do 21. SPOJ wtedy przyjął mi rozwiązanie, nie zmieniłem jednak tego o czym wspomniałeś.

Podobne pytania

0 głosów
2 odpowiedzi 993 wizyt
pytanie zadane 29 października 2018 w C i C++ przez Shimeo7 Obywatel (1,910 p.)
0 głosów
1 odpowiedź 481 wizyt
pytanie zadane 7 maja 2023 w C i C++ przez alfutek Początkujący (360 p.)
0 głosów
1 odpowiedź 1,129 wizyt
pytanie zadane 26 sierpnia 2018 w SPOJ przez koziolek8820 Nowicjusz (120 p.)

93,734 zapytań

142,671 odpowiedzi

323,293 komentarzy

63,295 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...