Nie potrafię sobie poradzić z zadaniem – prośba o pomoc

Odpowiedz Nowy wątek
2019-02-08 17:51
0

Witam zaczynam naukę programowania i moje zdolności nie są wybitne dopiero zaczynam. Postanowiłem że zrobię program który będzie dla mnie przydatny ale chyba za wysoko się oceniłem z moimi zdolnościami :D.

Mianowicie chcę stworzyć program który ułatwi mi obliczanie respu chempionów w grze w która aktualnie sobie pogrywam. chodzi o to ze mechanika gry polega na tym ze po zabiciu chempiona jego czas na ponowny resp wynosi określoną jednostkę czasu np mając 2 informacje czyli śmierć tego chempa np 12h,31minut i jego resp który wynosi np 1h,30minut będziemy wiedzieć że następne jego pojawienie będzie o 14h,01minut w dodatku chce zrobić pętle która pokazuje wszystkie możliwe kombinacie dnia np 14,01+1,30 i tak aż do 24h. ja zrobiłem jakis tam program ale nie umie przeskoczyć umiejętnościowo tego że 0,30h + 0,40h równa się 1h,10 a nie 0,70h. Moja wiedza nie umie tego przeskoczyć. mój program działa skopiuje go poniżej ale tylko wtedy kiedy są dokładne godziny np 2+2=4 ,6,8 itd ale jak zrobić to żeby program pokazywał tez minuty i żeby wiedział że 0,30+0,30=1 ? jeżeli ktoś może mi pomóc z góry dziękuje i pozdrawiam :D

#include <iostream>

using namespace std;
int chempion,resp;
int main()
{
    cout << "Wpisz godzine respu chempiona: ";
    cin>> chempion;
    cout<< "wpisz za ile ma sie pojawic: ";
    cin>> resp;

    for(int i=chempion;i<=24;i=i+resp)
    {
        cout<<i<<endl;
    }

    return 0;
}
edytowany 1x, ostatnio: furious programming, 2019-02-08 23:30
Tytułowanie wątków, Tagowanie wątków, Formatowanie treści – zapoznaj się z tymi artykułami, zanim napiszesz kolejny post. - furious programming 2019-02-08 23:30

Pozostało 580 znaków

2019-02-08 17:56
1

mktime

A call to this function automatically adjusts the values of the members of timeptr if they are off-range or -in the case of tm_wday and tm_yday- if they have values that do not match the date described by the other members.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2019-02-08 19:19
2

Możesz też spróbować skorzystać z dobrodziejstw C++11 czyli std::chrono. Przykład:

#include <iostream>
#include <chrono>
#include <ctime>

void print_respawn_time(int hh, int mm)
{
    using ClockT = std::chrono::system_clock;
    auto now = ClockT::now();
    auto timenow = ClockT::to_time_t(now);

    std::cout << "Time now: " << std::ctime(&timenow) << std::endl; 

    std::chrono::hours h{hh};
    std::chrono::minutes m{mm};

    auto respawn = now + h + m;
    auto timerespawn = ClockT::to_time_t(respawn);
    std::cout << "Time respawn: " << std::ctime(&timerespawn) << std::endl; 
}

int main()
{
    print_respawn_time(1, 30);
    return 0;
}

Dziękuje za rade ale niestety korzystam z codeblocka i ten program nie chce mi się wczytać podejrzewam że jest stara wersja c++ - Mistrzm 2019-02-09 11:03

Pozostało 580 znaków

2019-02-08 22:40
1

Przecież tu nie ma nic do czego potrzebowałbyś doświadczenia w programowaniu. Wystarczy matematyka.

Albo pracujesz na godzinach albo na minutach.
Np.
10:15 = 10 + 15/60 = 10,25 godzin
10:15 = 10*60 + 15 = 615 minut

Mistrzm napisał(a):

0,30h + 0,40h równa się 1h,10 a nie 0,70h

a = 0,30h = 0,3 * 60 = 18 minut
b = 0,40h = 0,4 * 60 = 24 minuty
c = 0,70h = 0,7 * 60 = 42 minuty = a + b

natomiast

x = 30 minut = 0,50 godz.
y = 40 minut = 0,67 godz.
z = x + y = 70 minut = 1,17 godz.
edytowany 3x, ostatnio: Mc_Hammer, 2019-02-08 22:57

Pozostało 580 znaków

2019-02-09 14:19
1

#include <iostream>

using namespace std;
double chempion,resp;//ważne
int main()
{

    int x,x2,e;
    double y,y2,k2,k;
    cout << "Wpisz godzine respu chempiona: ";
    cin>> chempion;
    x=chempion;//kożystanie z właściwości int i double
    y=chempion;
    y=y-x;
    y=y * 5/3;
    cout<< "wpisz za ile ma sie pojawic: ";
    cin>> resp;
    x2=resp;
    y2=resp;
    y2=y2-x2;
    y2=y2 * 5/3;// matematyka :)
    for(double i=x+y;i<=24;i=i+x2+y2)
    {
        e=i;
        k=i;
        k=k-e;

      cout<<((i-k)+(k*3/5))<<endl;//matematyka na odwrót
    }
//liczby wprowadzaj z kropką nie przecinkiem
    return 0;
}
edytowany 4x, ostatnio: dorn111, 2019-02-09 14:30
O to mi chodziło super !!! pozdrawiam i Dziękuje :D - Mistrzm 2019-02-09 15:15
A jeżeli mogę się zapytać czy te równania matematyczne to jest z jakiegoś gotowego wzoru czy sam to wymyśliłeś ? - Mistrzm 2019-02-09 15:29
Sam wymyśliłem, wystarczy zwykła propocja np. wiemy że 30 minut to 0.5 godziny czyli przy zamianie stosunek wynosi 3 do 5 czyli 3/5. Więc jeśli liczbę minut pomnożymy przez 5/3 otrzymamy ją w formie normalnej liczby dziesiętnej. - dorn111 2019-02-09 15:49

Pozostało 580 znaków

2019-02-09 16:09
#include <iostream>

using namespace std;
double chempion,resp;//ważne
int main()
{
    int x,x2,e;//kilka zmiennych całkowitycz
    double y,y2,k2,k;//kilka zmiennych zmiennoprzecinkowych
    cout << "Wpisz godzine respu chempiona: ";
    cin>> chempion;//wprowadzamy wartość double np 12.50 która jest tak traktowana jako 12 i połowa
    x=chempion;//kożystanie z właściwości int i double czyli tego że int zapisze tylko część całkowitą a double całą liczbe.Czyi tutaj mamy wartość 12 bo 0.5 jest niecałkowita
    y=chempion;//tutaj mamy double czyli całą liczbę 12.50
    y=y-x;//jeżeli odejmiemy 12.50-12 otrzymujemy 0.5;
    y=y*5/3;//tutaj jak wspominałem obliczamy stosunek w zapisie 1/0.6 i mnożymy otrzymujemy wartość ok 0.8(3).
    cout<< "wpisz za ile ma sie pojawic: ";
    cin>> resp;
    x2=resp;// dokładnie tak jak wcześniej
    y2=resp;
    y2=y2-x2;
    y2=y2*5/3;// matematyka :)
    for(double i=x+y;i<=24;i=i+x2+y2)//i dajemy wartość początkową x czyli 12 bo to int + y które teraz to 0.8(3) 
    {
        e=i;//typ int aby wziąść całkowitą część liczby czyi 12
        k=i;//tu przypisanie całej liczby czyli 12.8(3)
        k=k-e;//wyliczenie całkowitej części typu double 12.8(3)-12
        cout<<((i-k)+(k*3/5))<<endl;// obliczenie 12.8(3)-0.8(3)  +  k czyli 0.8(3) * 3/5 czyli odwrócenie wcześniejszego działania i wynik 12.50 wynik nie zmienił się bo nie było żadnego przesunięcia.
    }

    return 0;
}
edytowany 2x, ostatnio: dorn111, 2019-02-09 16:24

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0