Używanie funkcji void. Jak zrobić, żeby program wczytywał, wyświetlał i dodawał czas za pomocą funkcji?

0

Witam, a wiec tj. w temacie jak zrobić aby funkcja typu void początkowo wczytywała czas podany przez użytkownika, później ten czas w oddzielnej funkcji ma być dodany do czasu podanego później w programie a następnie ma być on wyświetlony. Dodam tylko, że to jest program który tworzy rozkład jazdy pociągów.

#include <iostream>
#include <cstdlib>
using namespace std;
void wczytaj(int czas a);
{

    int a.minuta;
    int a.godzina;
    cout<<"Podaj liczbe godzin: ";
    cin>>a.godzina;
    cout<<"Podaj liczbe minut: "<<endl;
    cin>>a.minuta;

}
void dodawanie(czas a)
{

}
void wyswietl(czas a)
{

}
int main()
{
    czas rozklad [10][8];
    cout<<"Podaj czas wyjazdu pierwszego pociagu: ";
    wczytaj(rozklad[0][0]);
    czas coile,czasprzejazdu;
    cout<<"Podaj co ile odjezdza pociag: "<<endl;
    wczytaj(coile);
    cout<<"Podaj czas przejazdu miedzy stacjami: "<<endl;
    wczytaj(czasprzejazdu);
    for (int i=1;i<10;i++)
        rozklad[0][i]=dodawanie(rozklad[0][i-1],coile);
    for (int j=0;j<10;j++)
    {
        for (int i=0;i<8;i++)
        {
            wyswietl(rozklad[j][i]);
            cout<<" ";
        }
        cout<<endl;
    }
    system("PAUSE")
    return EXIT_SUCCESS;
}
0

Co to jest czas?
Jeśli funkcje nie mają zwracać danych, to musisz przekazać ten czas przez wskaźnik,
aby zmiany dokonane (obliczone) nie zostały utracone w chwili opuszczenia funkcji.
Przydatna lektura: Przekazywanie parametru przez wartość i referencję

0

Chodzi mi o coś podobnego do tego:

#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

struct czas
{
    int godziny,minuty;

};
czas dodawanie (czas a, czas b)
{
    czas rob;
    rob.minuty=a.minuty+b.minuty;
    rob.godziny=(a.godziny+b.godziny+rob.minuty/60;)%24;
    rob.minuty=rob.minuty%60;
    return rob;
}

Tylko że chcę aby to było zrobione za pomocą funkcji typu void. Właśnie chcę aby funkcja zwracała dane.

0

No to jak...? Void z założenia nic nie zwraca. Możesz co najwyżej modyfikować stan obiektu, który do niej przekazujesz, a czy przekażesz to do środka przez wskaźnik czy referencję, to Twój wybór.

0

Nie chodzi Ci może o przeciązanie operatorów?

0

void aktualizuj_czas(czas &czas_calkowity, const czas &dodawany);
Czas całkowity można teraz modyfikować.
PS: przeczytaj podrzucony artykuł.

0

Dobra już to mam zrobione. Jakby ktoś może kiedyś potrzebował coś podobnego to proszę :) :

#include <iostream>
#include <iomanip>

using namespace std;
struct czas{
int minuty;
int godziny;
};

void wczytaj(czas& c)
{
    do{
    cin>>c.godziny>>c.minuty;
    }while(c.godziny<0||c.godziny>23||c.minuty<0||c.minuty>60);
}
czas dodawanie(czas c1,czas c2)
{
    czas cw;
    cw.minuty=c1.minuty+c2.minuty;
    cw.godziny=(c1.godziny+c2.godziny+(cw.minuty/60))%24;
    cw.minuty=cw.minuty%60;
    return cw;
}
void wyswietl(czas c)
{
    cout<<setw(2)<<c.godziny<<":";
    if(c.minuty<10)
        cout<<"0";
    cout<<c.minuty;
}
int main()
{
    czas coile,pomiedzy;
    int poc, sta;
    do{
    cout<<"Podaj ilosc pociagow: ";
    cin>>poc;
    } while(poc<1||poc>20);
    do{
    cout<<"Podaj ilosc stacji: ";
    cin>>sta;
    } while(sta<1||sta>25);
    czas rozklad[sta][poc];
    cout<<"Podaj czas odjazdu pierwszego pociagu z pierwszej stacji: ";
    wczytaj(rozklad[0][0]);
    cout<<"Podaj czas pomiedzy odjazdami pociagow: ";
    wczytaj(coile);
    cout<<"Podaj czas pomiedzy stacjami: ";
    wczytaj(pomiedzy);
    for(int j=0;j<sta;j++){
    for(int i=0;i<poc;i++){
        rozklad[j][i+1]=dodawanie(rozklad[j][i],coile);
    }
    rozklad[j+1][0]=dodawanie(rozklad[j][0],pomiedzy);
    }
    for(int k=0;k<sta;k++){
        for(int l=0;l<poc;l++){
            wyswietl(rozklad[k][l]);
            cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}

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