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

c++ Baza danych Odejmowanie czasu

Ostatnio zmodyfikowano 2014-01-08 14:49
Autor Wiadomość
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-01-05 20:33:05
Aha, nie pomyslalem, ale nie bede tego przepisywac bo to co zrobilem dziala, jednak nadal to nie rozwiazuje mojego problemu "z chyba niezakonczona funkcja", poprostu wyskakujacymi cyframi
P-101295
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-01-07 16:10:52
Przerobilem ten kod i zamiast dziwnych cyfr sa same zera

C/C++
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <vector>
#include <iomanip>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

struct Baza {
    float godzina1;
    float godzina2;
    float godzina3;
    float godzina4;
    float godzina5;
    string nick;
};
int i = 0, g = i;
Baza baza[ 20 ];

void rozruch() {
    ifstream plik( "Baza.txt", ios::app );
    do {
        plik >> baza[ g ].godzina1;
        plik >> baza[ g ].godzina2;
        plik >> baza[ g ].godzina3;
        plik >> baza[ g ].godzina4;
        plik >> baza[ g ].godzina5;
        plik >> baza[ g ].nick;
        g++;
    }
    while( !plik.eof() );
   
}


void otworz() {
    int j;
   
    /*   14.44  |  13.23   |  14.44   |   34.55  |   34.23  |  Kornel */
    cout << "  " << "   Pon.    Wtorek     Sroda    Czwartek   Piatek     Nick" << endl
    << "  " << " --------+---------+---------+---------+---------+---------" << endl;
    do {
        cout << fixed << setprecision( 2 )
        << j + 1 << "   " << baza[ j ].godzina1
        << "  |  " << baza[ j ].godzina2
        << "  |  " << baza[ j ].godzina3
        << "  |  " << baza[ j ].godzina4
        << "  |  " << baza[ j ].godzina5
        << "  |  " << baza[ j ].nick
        << endl;
        j++;
    }
    while( j != g );
   
    getch();
    system( "cls" );
}

void dodaj() {
    string nick;
   
   
    cout << "Podaj nick" << endl;
   
    ofstream plik( "Baza.txt", ios::app );
   
    cin >> baza[ g ].nick;
    cout << "\nGodzine o ktorej konczysz w poniedzialek  (Daty zapisuj gg.mm np. 14.55)" << endl;
    cin >> baza[ g ].godzina1;
    cout << "\nGodzine o ktorej konczysz w wtorek" << endl;
    cin >> baza[ g ].godzina2;
    cout << "\nGodzine o ktorej konczysz w srode" << endl;
    cin >> baza[ g ].godzina3;
    cout << "\nGodzine o ktorej konczysz w czwartek" << endl;
    cin >> baza[ g ].godzina4;
    cout << "\nGodzine o ktorej konczysz w piatek" << endl;
    cin >> baza[ g ].godzina5;
   
    plik <<
    endl << baza[ g ].godzina1 <<
    endl << baza[ g ].godzina2 <<
    endl << baza[ g ].godzina3 <<
    endl << baza[ g ].godzina4 <<
    endl << baza[ g ].godzina5 <<
    endl << baza[ g ].nick;
   
    cout << "Zapisano";
    g++;
    getch();
    system( "cls" );
   
}


template < class klasa > klasa porownaj( klasa liczba1, klasa liczba2, string user1, string user2 ) {
   
    klasa czyzgodne,
    x /* ilosc "nad"godzin */,
    orgliczba1 = liczba1,
    orgliczba2 = liczba2;
    string user, out;
    double czas1 = liczba1, czas2 = liczba2;
   
    int h1 = floor( czas1 );
    int m1 = static_cast < int >( czas1 * 100 ) % 100;
    int h2 = floor( czas2 );
    int m2 = static_cast < int >( czas2 * 100 ) % 100;
   
    if( h1 > h2 ) {
        x = h1 - h2;
       
        if( m1 > m2 ) {
            czyzgodne = m1 - m2;
            czyzgodne = czyzgodne +( x * 60 );
            user = user1;
        }
        if( m1 < m2 ) {
            czyzgodne = 60 -( m2 - m1 );
            czyzgodne = czyzgodne +( x * 60 );
            user = user1;
        }
        if( m1 == m2 ) {
            czyzgodne = x * 60 /*minut*/;
           
        };
    }
    if( h1 < h2 ) {
        x = h2 - h1;
       
        if( m1 > m2 ) {
            czyzgodne = 60 -( m1 - m2 );
            czyzgodne = czyzgodne +( x * 60 );
            user = user1;
        }
        if( m1 < m2 ) {
            czyzgodne = m2 - m1;
            czyzgodne = czyzgodne +( x * 60 );
            user = user1;
        }
        if( m1 == m2 ) {
            czyzgodne = x * 60 /*minut*/;
           
        };
    }
    if( h1 == h2 ) {
        if( m1 > m2 ) {
           
            czyzgodne = m1 - m2;
            user = user1;
        }
        if( m1 < m2 ) {
            czyzgodne = m2 - m1;
            user = user1;
        }
        if( m1 == m2 ) {
            czyzgodne = 0;
           
        };
    };
    if( czyzgodne == 0 ) {
        out = "Wracasz tym samym autobusem z " + user1;
        cout << out << endl <<
        "-----------------------------------" << endl;
       
    }
    else if( czyzgodne <= 11 ) {
        cout << user1 << " wraca kursem o " << fixed << setprecision( 2 ) << orgliczba1 << endl;
        cout << "Musisz poczekac " << fixed << setprecision( 0 ) << czyzgodne << " minut na " << user << endl;
        cout << "-----------------------------------" << endl;
       
    }
    else { return 0; };
   
};

void wspolna() {
   
    int czas, m =- 1, n = 0;
    string nick;
   
    cout << "Podaj nick dla ktorego chcesz wyszukac wspolne polaczenia" << endl;
    cin >> nick;
   
    while( n < 19 ) {
        if( nick == baza[ n ].nick ) {
            break;
        };
        n++;
    };
   
    do {
        m++;
        if( m == n ) {
            continue;
        }
        czas = porownaj < double >( baza[ m ].godzina1, baza[ n ].godzina1, baza[ m ].nick, baza[ n ].nick );
        cout << czas;
       
    }
    while( m <= g );
   
    getch();
    system( "cls" );
}


int main()
{
    rozruch();
   
    int wybor;
   
    do {
        cout << "1-Dodaj\n2-Otworz\n3=Szukaj polaczen\n0-Exit" << endl;
        cin >> wybor;
       
        switch( wybor ) {
        case 1:
            dodaj();
            break;
        case 2:
            otworz();
            break;
        case 3:
            wspolna();
            break;
        }
    }
    while( wybor != 0 );
   
    return 0;
}

Moglby ktos jeszcze sprobowac rozwiazac ten problem?
P-101509
pekfos
» 2014-01-07 17:42:30
wyskakuja mi jakies poboczne cyfry
Jakie? Podaj wyjście programu.
P-101518
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-01-07 21:21:07
No np jak szukam polaczen dla Natalia to wyskakuje

00Michal wraca kursem o 14:45
Musisz poczekac 6 minut na Michal
--------------------------------
0Mikolajwraca kursem o 14:55
Musisz poczekac 5 minut na Mikolaj
--------------------------------
000Wladek wraca kursem o 14:55
Musisz poczekac 5 minut na Wladek
--------------------------------
000

Te '0' wyskakuja
P-101542
pekfos
» 2014-01-07 22:13:57
C/C++
czas = porownaj < double >( baza[ m ].godzina1, baza[ n ].godzina1, baza[ m ].nick, baza[ n ].nick );
cout << czas;
Usuń tego couta.
P-101552
colorgreen19
Temat założony przez niniejszego użytkownika
» 2014-01-08 14:49:06
Ok dziala ;) wielkie dzieki za pomoc
P-101583
1 « 2 »
Poprzednia strona Strona 2 z 2