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

Obzartuchy spoj- problem z kodem

0 głosów
111 wizyt
pytanie zadane 17 czerwca 2019 w C i C++ przez Tedi Użytkownik (580 p.)

Mam pytanko, a raczej prośbę o jakąś wskazówke. Dlaczego program w 1. części testu ze spoja dokonuje poprawnych obliczeń a w drugiej się wysypuje.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    short ile;
    cout << "Ile testow: " ;
    cin>> ile;
    for (int i=1;i<=ile;i++)
    {
        double suma;
        int obzartuchy, pudelkociastek;
        cout<< "Ile obzartuchow na zlocie: "; cin>>obzartuchy;
        cout<< "Ile ciastek w pudelku: "; cin>>pudelkociastek;
        int czasy[obzartuchy];
        for(int j=1;j<=obzartuchy;j++)
        {
            cout<< "Podaj czas "<<j<<". obzartucha:";
            cin>>czasy[j];
            double x;
            x=floor(86400/czasy[j]);
            cout<< "Tyle ciastek na dobe: "<<x<<endl;

            double y;
            y=x/pudelkociastek;
            cout<< "Tyle pudelek na dobe: "<<y<<endl;


            suma+=y;


        }
        cout<<ceil (suma)<<endl;


    }

    return 0;
}

*wrzucając na spoja wyrzucam te couta i zbędne obliczenia ;)

1 odpowiedź

+1 głos
odpowiedź 17 czerwca 2019 przez RafalS VIP (122,820 p.)
short ile;

czemu short? integer bezpieczniejszy. Nie powiedzieli jak dużo testów może być.

int czasy[obzartuchy];

tak nie wolno. Długość tablicy musi być znana w momencie kompilacji. Działa tylko na niektórych kompilatorach. Napraw używając wektora lub dynamicznej alokacji.

int czasy[obzartuchy];
for(int j=1;j<=obzartuchy;j++)

wchodzisz poza zakres, tablica musi być na obzartuchy+1 jesli pętla startuje od 1.

double suma;
suma+=y;

użycie niezainicjowanej zmiennej, w której jest jakaś losowa wartość. Zainiciuj zerem.

komentarz 18 czerwca 2019 przez Tedi Użytkownik (580 p.)

Dzięki za pomoc, udało mi się to zrobić tak by spoj to zaakceptował. Przesyłam kod, jeśli dalej jest tam coś nie tak, to prosze o wskazówke ;D

 

#include <iostream>
#include <cmath>

using namespace std;



int main()
{
    int ile;
    cin>> ile;
    for (int i=1;i<=ile;i++)
    {
        double suma=0,x,y;
        int obzartuchy, pudelkociastek;
        cin>>obzartuchy;
        cin>>pudelkociastek;
        int*tab;
        tab=new int [obzartuchy];


        for(int j=0;j<obzartuchy;j++)
        {
            cin>>tab[j];

            x=86400/tab[j];
            y=x/pudelkociastek;
            suma+=y;
        }
        cout<<ceil(suma)<<endl;
        delete[]tab;


    }

    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 153 wizyt
pytanie zadane 19 maja 2019 w C i C++ przez hello2077world Początkujący (410 p.)
0 głosów
1 odpowiedź 55 wizyt
pytanie zadane 13 października w C i C++ przez Bubucziks Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 60 wizyt
pytanie zadane 20 lutego w C i C++ przez Parex Nowicjusz (200 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

85,707 zapytań

134,502 odpowiedzi

298,523 komentarzy

56,629 pasjonatów

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.

...