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

Obżartuchy pomoc

VPS Starter Arubacloud
–1 głos
651 wizyt
pytanie zadane 13 lipca 2018 w SPOJ przez Bloom55 Użytkownik (660 p.)
zmienione kategorie 13 lipca 2018 przez Bloom55

https://pl.spoj.com/problems/GLUTTON/

Mam problem z tym zadaniem. Nie wiem czemu mój program jest zły

#include <iostream>

using namespace std;

int main()
{
    int il_t, dobas=24*3600;
    cin>>il_t;

    for(int z=0; z<il_t; z++)
    {
        int ilosc_obzartuchow, il_ciastek_w_pudelku;
        int potrzebneciastka=0, potrzebnepudelka;

        cin>>ilosc_obzartuchow>>il_ciastek_w_pudelku;

        for(int i=0; i<ilosc_obzartuchow; i++)
        {
            int czas[ilosc_obzartuchow];
            cin>>czas[i];
            potrzebneciastka+=dobas/czas[i];
        }


        potrzebnepudelka=(potrzebneciastka/10)%10;

        if(potrzebneciastka<=potrzebnepudelka*10) cout<<potrzebnepudelka<<endl;
        else cout<<potrzebnepudelka+1<<endl;


    }

    return 0;
}

 

komentarz 13 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
Zła kategoria
komentarz 13 lipca 2018 przez Bloom55 Użytkownik (660 p.)
Zmienione, dzięki :P Prosiłbym również o pomoc :/
komentarz 13 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
Po pierwsze dodaj opis swojego problemu. Co nie działa, jakie są błędy. Poza tym nie programuję w C++ więc nie mogę pomóc.

1 odpowiedź

+2 głosów
odpowiedź 13 lipca 2018 przez niezalogowany
wybrane 13 lipca 2018 przez Bloom55
 
Najlepsza

Zamiast 10 powinieneś używać zmiennej il_ciastek_w_pudelku. Rozdziel też operacje dzielenia i modulo. W instrukcji warunkowej powinien być warunek potrzebnepudelka % il_ciastek_w_pudelku <= 0.

PS. W zadaniu nie musisz korzystać z tablicy.

komentarz 17 października 2018 przez marta.kappav Nowicjusz (180 p.)

moglabym prosic tez o ocenienie tego kodu????

#include <iostream>

using namespace std;

int ile, pudelka;

int suma=0;

int main()
{
  cin>>ile;

  for(int i=1; i<=ile; i++)
  {
    int LOZ, LCP, suma=0;

      cin>>LOZ>>LCP;

        int *tablica;
        tablica = new int [LOZ-1];

      for(int j=0; j<LOZ; j++)
      {
          cin>>tablica[j];
          suma += 86400/tablica[j];
      }

        if(suma%LCP==0) pudelka=suma/LCP;
        else pudelka=suma/LCP+1;

        cout<<pudelka<<endl;

         delete[] tablica;
  }

    return 0;
}

Dziekuje!!!

 

1
komentarz 17 października 2018 przez niezalogowany

Jest jeden mały błąd:

tablica = new int [LOZ-1]; // powinno być new int [LOZ] żeby w kolejnej pętli nie wyjść poza zakres tablicy

Z uwag:

  1. Masz dwie zdublowane zmienne suma
  2. Nie używaj zmiennych globalnych
  3. Formatuj odpowiednio kod. Widzę, że starasz się ładnie ustawiać klamry, ale nie rozumiem czemu prawie w każdej linii wszystko jest takie nierówne.
  4. Możesz tworzyć dynamicznie tablicę w jednej linii:
    int *tablica = new int [LOZ];
    
  5. Nazywaj zmienne zgodnie z ich przeznaczeniem np zmienne - pudelka ok, suma ok, tablica no może być, ale LOZ, LCP to nie wiadomo o co chodzi. W przyszłości staraj się nazywać wszystko po angielsku.
  6. Nie używaj przestrzeni nazw std. 

PS. Zadawaj osobne pytania. Tutaj w przeciwieństwie do forum SPOJ nie robimy tematów zbiorczych dla każdego zadania. Po prostu robi się w tym wszystkim bałagan, a Twój problem nie jest aż tak widoczny dla innych użytkowników. Pamiętaj: 

  • jedno pytanie / temat - 1 (no tak mniej więcej :D) problem danego użytkownika. 
  • komentarz do pytania - np. próba uzyskania bardziej szczegółowego opisu problemu, prośba o sformatowanie kodu, dodanie linku do zadania, małe sugestie których nie jesteśmy pewni
  • odpowiedz - dajesz ją wtedy gdy jesteś pewna, że to co piszesz jest słuszne i komuś pomoże
  • komentarz do odpowiedzi - dyskusja nad daną odpowiedzią - wątpliwości, problemy, podziękowania etc.

Pozdrawiam ;)

komentarz 17 października 2018 przez marta.kappav Nowicjusz (180 p.)
Bardzo, bardzo dziekuje za pomoc!!!

Postaram sie dostosowac do regul. :)

Jedno pytanie tylko, przepraszam. Dlaczego mam nie uzywac przestrzeni nazw std? To jest ustawienie domyslne w CodeBlocks nawet w programie Hello World, dlatego sie pytam.

Pozdrawiam serdecznie i jeszcze raz dziekuje!! :))
1
komentarz 17 października 2018 przez niezalogowany

Poczytaj o tym w internecie. To ciężko wytłumaczyć początkującym, a trzeba się trochę namęczyć żeby przekazać wszystko dobrze i zrozumiale. W skrócie im większy projekt, im więcej dodatkowych różnych bibliotek tym więcej to problemów tworzy (kolizja nazw) i w ostateczności wcale nie musi skracać pisania. Jedyne dopuszczalne w profesjonalnym programowaniu jest wczytanie przestrzeni nazw w jakimś lokalnym bloku np funkcji (nigdzie indziej nie będzie przeszkadzać, a skróci i polepszy zrozumienie kodu), lub zmiana nazwy przestrzeni gdy jest zbyt zagnieżdżona np boost::numeric::ublas.

komentarz 19 października 2018 przez marta.kappav Nowicjusz (180 p.)
Dzieki! Jeszcze jedno pytanie, jesli nie sprawie klopotu. Odpowiedzialas uzytkownikowi Bloom55 ze nie trzeba uzywac tablic do tego zadania i ja sie tak zastanawiam jak wypisac czasy zjadania ciastka przez obzartuchow nie znajac ich liczby? Jak mozna to zrobic bez tablicy?
1
komentarz 19 października 2018 przez niezalogowany

Każdy czas zjadania ciastek jest od razu wykorzystywany do liczenia ich ilości, a później nie jest do niczego potrzebny. Wystarczy go wczytywać do zwykłej zmiennej:

int czasNaCiastko = 0;
for(int j=0; j<LOZ; j++)
{
    cin >> czasNaCiastko;
    suma += 86400/czasNaCiastko;
}

Podobne pytania

+1 głos
1 odpowiedź 207 wizyt
pytanie zadane 18 czerwca 2018 w SPOJ przez Fernokip Nowicjusz (180 p.)
0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 5 grudnia 2017 w SPOJ przez Kamil Miętkiewicz Użytkownik (630 p.)
0 głosów
1 odpowiedź 316 wizyt
pytanie zadane 4 listopada 2017 w SPOJ przez PanJaqb Początkujący (360 p.)

93,024 zapytań

141,986 odpowiedzi

321,290 komentarzy

62,371 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...