c++ Baza danych Odejmowanie czasu
Ostatnio zmodyfikowano 2014-01-08 14:49
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 |
|
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 #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; 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 , 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 ; }; } 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 ; }; } 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? |
|
pekfos |
» 2014-01-07 17:42:30 wyskakuja mi jakies poboczne cyfry |
Jakie? Podaj wyjście programu. |
|
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 |
|
pekfos |
» 2014-01-07 22:13:57 czas = porownaj < double >( baza[ m ].godzina1, baza[ n ].godzina1, baza[ m ].nick, baza[ n ].nick ); cout << czas;
|
Usuń tego couta. |
|
colorgreen19 Temat założony przez niniejszego użytkownika |
» 2014-01-08 14:49:06 Ok dziala ;) wielkie dzieki za pomoc |
|
1 « 2 » |