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

zadanie z c++

Object Storage Arubacloud
0 głosów
488 wizyt
pytanie zadane 3 marca 2018 w C i C++ przez gunaterek Bywalec (2,760 p.)

witam zadanie brzmi: rowerzysta pokonuje droge 4 km  w 3 etapach

1 etap stanowi 0.25d z predkoscia 10m/s

2 etap stanowi 0.5d z predkoscia 5m/s

3 etap stanowi 0.25d z predkoscia 10m/s

zamien sekundy na godziny minuty sekundy.

nie rozumiem dlaczego mi to zle liczy jakies wgl liczby mi sie dziwne pokazuja dla proby na poczatku kodu wyswietlam proste dzialania a mi dzikie liczby wychodza. Czy moj komputer nie potrafi liczyc czy co.

KOD


#include <iostream>
#include <conio.h>
using namespace std;

float licz_czas(float,float,float);
void przelicz(float);


int main()
{
    float d;
    float wynik;
    float droga[2];
    float predkosc[2];
    int x;
    cout << "wprowadz dlugosc drogi w kilometrach:";
    cin >>d;
    cout << "wprowadz jaka czesc drogi stanowi I etap:";
    cin >>droga[0];
    cout << "wprowadz z jaka predkoscia poruszal sie w I etap:";
    cin >>predkosc[0];
    cout << "wprowadz jaka czesc drogi stanowi II etap:";
    cin >>droga[1];
    cout << "wprowadz z jaka predkoscia poruszal sie w II etap:";
    cin >>predkosc[1];
    cout << "wprowadz jaka czesc drogi stanowi III etap:";
    cin >>droga[2];
    cout << "wprowadz z jaka predkoscia poruszal sie w III etap:";
    cin >>predkosc[2];

    d=d*1000;
    int g=d*droga[0];
    cout<<endl<<g<<endl<<d;
    cout <<endl;

    for(x=0;x<3;x++){
        float etap[2];

        etap[x]=licz_czas(d,droga[x],predkosc[x]);
        wynik+=etap[x];
        cout<<wynik<<"--"<<etap[x]<<"//////////////";
    }


    cout << "calkowity czas rowerzysty to: "<<wynik<<"s"<<endl<<endl;

    przelicz(wynik);

    return 0;
}


float licz_czas(float d,float czesc_drogi,float p)
{

    float etap;


    etap=(czesc_drogi*d)/p;

return etap;

}

void przelicz(float w)
{

    int sumah,sumam,sumas;

    sumah=w/3600;
    sumam=(w-(sumah*3600))/60;
    sumas=w-((sumah*3600)+(sumam*60));

    cout<<"po przeliczeniu: "<<sumah<<"godzin "<<sumam<<"minut "<<sumas<<"sekund "<<endl;

}

 

2 odpowiedzi

0 głosów
odpowiedź 3 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)
wybrane 4 marca 2018 przez gunaterek
 
Najlepsza

Tak na szybko co wyłapałem:

float droga[2];
    float predkosc[2];

a potem

cin >>droga[2];
    cin >>predkosc[2];

Ostatnim elementem tej tablicy jest 1, nie możesz odwoływać się do 2.

To samo robisz tutaj:

for(x=0;x<3;x++){
        float etap[2];
 
        etap[x]=licz_czas(d,droga[x],predkosc[x]);
        wynik+=etap[x];
        cout<<wynik<<"--"<<etap[x]<<"//////////////";
    }

Pętla wykona się 3 razy, w ostatnim jej obiegu x będzie równe 2, a wew petli znowu odwolujesz sie do elementu numer 2 (x=2). Ponadto tworzysz tablicę etap[2] bez sensu, po pierwsze jest to tylko zmienna pomocnicza, aby przypisać jej wynik więc możesz używać jednej zmiennej etap dla każdego obiegu pętli (bo ta tablica i tak niszczy się i tworzy od nowa przy każdym obiegu pętli więc zapisana tam wartość przepada przy każdym obiegu pętli). Zatem

for(x=0;x<3;x++){
        float etap;
 
        etap=licz_czas(d,droga[x],predkosc[x]);
        wynik+=etap;
        cout<<wynik<<"--"<<etap<<"//////////////";
    }

 

 

Kolejny błąd to:

float licz_czas(float d,float czesc_drogi,float p)
{
 
    float etap;
 
 
    etap=(czesc_drogi*d)/p;
 
return etap;
 
}

No i tu o ile funkcja robi to co założyłeś to nie jest to stricte błąd, ale jest to nielogiczne, żeby tworzyć tutaj zmienną tylko po to aby ją zwrócić. Można zwrócić sam wynik.

float licz_czas(float d,float czesc_drogi,float p)
   return (czesc_drogi*d)/p;

 

komentarz 4 marca 2018 przez gunaterek Bywalec (2,760 p.)
dzieki juz rozumiem, zle tablice zrozumialem.
0 głosów
odpowiedź 3 marca 2018 przez gunaterek Bywalec (2,760 p.)
po kilku probach i wczytywaniu od nowa okazalo sie ze dziala. Nie rozumiem o co chodzilo... zauwazylem tylko ze mi do tablic nie zapisywalo poprawnie
komentarz 3 marca 2018 przez mokrowski Mędrzec (155,460 p.)
Daleko tak nie zajedziesz jak będziesz programował w trybie "100 razy uruchomię i w końcu się uda". Przeczytaj komunikaty ostrzeżeń kompilatora.

https://wandbox.org/permlink/dAxM9BWBJSdBObwi
komentarz 3 marca 2018 przez gunaterek Bywalec (2,760 p.)
nie rozumiem co z tymi tablicami jest nie tak, pobieram je od 0 nie rozumiem dlaczego program sie gubi.
komentarz 3 marca 2018 przez mokrowski Mędrzec (155,460 p.)
Jeśli deklarujesz tablicę z 2 elementami to dostępne indeksy to 0 (zero) i 1 (jeden). Pierwszym elementem jest 0 (zero) a drugim 1 (jeden). Podając 2 jesteś poza tablicą.

Tam jest jeszcze trochę innych błędów.

Dodawaj do kompilatora ostrzeżenia. One zawsze podpowiadają że "jesteś w lesie".
komentarz 3 marca 2018 przez Beginer Pasjonat (22,110 p.)

@gunaterek,

Dlaczego w danych wejściowych pytasz o długość drogi, i trzy współczynniki prędkości, które są znane (np. długośc drogi = 4km)?

Do tego zadania nie trzeba angażować tablic.

Podobne pytania

0 głosów
0 odpowiedzi 361 wizyt
pytanie zadane 3 stycznia 2022 w C i C++ przez olcia Nowicjusz (200 p.)
0 głosów
1 odpowiedź 547 wizyt
pytanie zadane 3 stycznia 2022 w C i C++ przez olcia Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 518 wizyt
pytanie zadane 14 maja 2020 w C i C++ przez InvictusFNC Nowicjusz (130 p.)

92,581 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,966 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...