Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ile krzeseł zmieści się pod stołem?

Ostatnio zmodyfikowano 2016-08-09 23:49
Autor Wiadomość
krolik5a
Temat założony przez niniejszego użytkownika
Ile krzeseł zmieści się pod stołem?
» 2016-08-09 11:26:43
Witam, mam pytanie, czy mógłby mi ktoś pomóc? Mianowicie, mam takie zadanie (treść poniżej), aby program wyliczył ile krzeseł zmieści się pod stołem, napisałam coś takiego, ale jest to źle i nie wiem co jest źle. Bardzo proszę o pomoc.
C/C++
#include <iostream>
using namespace std;

int main() {
   
    int A, B, K;
    cin >> A >> B >> K;
    if( A > K && B > K )
         cout <<(( A / K + B / K ) * 2 ) - 4 << endl;
    else if( A == K && B > K )
         cout << B / K << endl;
    else if( B == K && A > K )
         cout << A / K << endl;
    else if( B < K || A > K )
         cout << "0" << endl;
    else if( K == A && K == B )
         cout << "1" << endl;
   
}

Bajtazar kupuje meble przez Internet. Znalazł już ładny stół i zestaw krzeseł. Teraz zastanawia się, ile krzeseł może kupić, tak aby wszystkie zmieściły się przy stole. Stół ma prostokątny blat o wymiarach A × B centymetrów. Z kolei siedzisko krzesła, patrząc z góry, to kwadrat o wymiarach K × K centymetrów. Dalej będziemy traktować stół jako prostokąt, a krzesła – jako kwadraty. Nad jednym z brzegów siedziska (kwadratu) znajduje się oparcie. Każde krzesło należy ustawić oparciem przy stole, tzn. brzeg z oparciem powinien pokrywać się z pewnym brzegiem stołu. Ponadto siedzisko powinno w całości znajdować się pod blatem. Oczywiście żadne dwa krzesła nie mogą na siebie nachodzić. W naszych rozważaniach pomijamy nogi od stołu (możemy założyć, że są nieskończenie cienkie i znajdują się w rogach blatu). Ile krzeseł zmieści się pod stołem?

Wejście
W jedynym wierszu wejścia znajdują się trzy liczby całkowite A, B i K (1 ≤ A,B,K ≤ 500000000) oddzielone pojedynczymi odstępami, oznaczające, odpowiednio, wymiary blatu stołu oraz wymiar siedziska krzesła.

Wyjście
Twój program powinien wypisać na wyjście maksymalną liczbę krzeseł, które zmieszczą się przy stole.

Przykłady
Dla danych wejściowych:
15 18 4
poprawnym wynikiem jest:
10
P-150677
michal11
» 2016-08-09 11:58:46
Nie wiem w sumie co ten twój program robi bo jest dość nieczytelny ale wydaje mi się, że tu wystarczy wzór
A / K + B / K - 4
 plus ew. jakieś warunki specjalne.
P-150678
krolik5a
Temat założony przez niniejszego użytkownika
» 2016-08-09 14:01:26
No właśnie sam taki wzór nie wystarcza.
P-150680
The_Wert
» 2016-08-09 14:23:19
Napisałem taki kod. Działa w wypadku wpisania wartości jak w przykładzie. Trochę chaotycznie, ale powinieneś się rozczytać;)

C/C++
#include<iostream>

int main()
{
    using std::cout;
    using std::cin;
   
    int szerokosc, dlugosc, krzeslo;
   
    cout << "Podaj wymiary stolu, a nastepnie dlugosc boku krzesla: ";
    cin >> szerokosc >> dlugosc >> krzeslo;
   
   
    if( szerokosc > dlugosc )
    {
        int temp;
        temp = szerokosc;
        szerokosc = dlugosc;
        dlugosc = temp;
    }
   
    if( krzeslo > szerokosc || dlugosc < krzeslo )
         cout << 0;
    else if( dlugosc >= krzeslo * 2 ) //jesli na dlugosc zmieszcza sie co najmniej dwa rzedy krzesel
    {
        int pod_stolem = 0;
       
        szerokosc /= krzeslo; //zmienia szerokosc stolu na liczbe krzesel, ktore sie mieszcza przy najkrotszych krawedziach
       
       
        dlugosc -= krzeslo * 2; //odejmujemy dlugosc potrzebna na ustawienie krzesel wzdluz krotszych krawedzi stolu
       
        dlugosc /= krzeslo; //uzyskujemy ilosc krzesel, ktora uda sie ustawic po najszerszych bokach stolu
       
        if( szerokosc >= krzeslo * 2 ); //jesli szerokosc stolu jest co najmniej rowna dwom dlugosciom krzesla
       
        dlugosc *= 2; //mnozy ilosc krzesel ustawionych przy dluzszych krawedziach stolu razy dwa
       
       
        szerokosc *= 2; //mnozy krzesla ustawione przy najkrotszych  bokac stolu
       
        pod_stolem = szerokosc + dlugosc; //dodaje do siebie wszystkie krzesla
       
       
       
        /*cout<<"krzesla na szerokosc: "<<szerokosc;                      //mozna sprawdzic liczbe krzesel na szerokosc i na dlugosc
                    cout<<"\nkrzesla na dlugosc: "<<dlugosc<<std::endl;*/
       
       
        cout << pod_stolem;
       
    }
    else if( szerokosc >= krzeslo )
    {
        int pod_stolem = 0;
       
        dlugosc /= krzeslo;
       
        szerokosc = 0;
       
        pod_stolem = dlugosc * 1;
       
        /*cout<<"krzesla na szerokosc: "<<szerokosc;                      //mozna sprawdzic liczbe krzesel na szerokosc i na dlugosc
                cout<<"\nkrzesla na dlugosc: "<<dlugosc<<std::endl;*/
       
        cout << pod_stolem;
    }
   
   
    cin.get();
   
    return 0;
}[ \c pp ]
P-150681
Piastlis
» 2016-08-09 23:49:01
Rozłóż problem na kilka przypadków szczególnych:
1 jeżeli jeden z wymiarów stołu jest mniejszy niż K to nic się nie zmieści.
2 jeżeli mniejszy wymiar stołu >=K i <2K to zmieści się 1 szereg krzeseł.
3 ---------------------------- >=2K i <3K to 2 szeregi.
4 w pozostałych przypadkach krzesła będą po każdej stronie.
P-150696
« 1 »
  Strona 1 z 1