MadnessTime Temat założony przez niniejszego użytkownika |
[C++] Program Baza Danych » 2014-04-15 17:32:56 Witam, jestem dopiero początkującym programistą i piszę sobie program, który jest taką bazą danych. Napisałem go, przetestowałem i wszystko działa. Teraz chce go poprawić tak by działał w oparciu o funkcję i tu pojawia się problem. Jak zrobić, by zmienne, które wykorzystuje funkcja były dostępne również w bloku głównym? Jeżeli macie jakieś zastrzeżenia co do programu to komentarze również mile widziane. A to mój program: #include<iostream> #include<conio.h> #include<fstream> #include<cstdlib> #include<windows.h>
using namespace std;
class bazaDanych { public: string typ; string przekatna; string cena; string kolor_obudowy; };
int main() { char znak, znak2; int ile; string klucz; cout << "Najpierw dodaj pozycje do bazy danych" << endl; cout << endl << endl; cout << "Ile pozycji chesz dodac?" << endl; cin >> ile; bazaDanych monitory[ ile ]; for( int i = 0; i < ile; i++ ) { cout << "Podaj typ monitora" << endl; cin >> monitory[ i ].typ; cout << "Podaj przekatna monitora" << endl; cin >> monitory[ i ].przekatna; cout << "Podaj cene monitora" << endl; cin >> monitory[ i ].cena; cout << "Podaj kolor obudowy monitora" << endl; cin >> monitory[ i ].kolor_obudowy; cout << endl << endl; } system( "cls" ); do { cout << " ------------------------------------" << endl; cout << " 1 - Wyswietlanie zawartosci " << endl; cout << " 2 - Wyszukiwanie po parametrach " << endl; cout << " 3 - Czyszczenie ekranu " << endl; cout << " 4 - Zapis do pliku " << endl; cout << " 5 - Odczyt z pliku " << endl; cout << " 0 - Wyjscie z programu " << endl; cout << " ------------------------------------" << endl; cin >> znak; switch( znak ) { case '1': { cout << endl << endl; for( int i = 0; i < ile; i++ ) { cout << "Typ monitora nr. " << i + 1 << ": " << endl; cout << monitory[ i ].typ << endl; cout << "Przekatna monitora nr. " << i + 1 << ": " << endl; cout << monitory[ i ].przekatna << endl; cout << "Cene monitora nr. " << i + 1 << ": " << endl; cout << monitory[ i ].cena << endl; cout << "Kolor obudowy monitora nr. " << i + 1 << ": " << endl; cout << monitory[ i ].kolor_obudowy << endl; cout << endl << endl; } break; } ; case '2': { cout << endl << endl; cout << " ------------------------------------" << endl; cout << " 1 - Typ " << endl; cout << " 2 - Przekatna " << endl; cout << " 3 - Cena " << endl; cout << " 4 - Kolor obudowy " << endl; break; } case '3': { cout << "Czyszczenie ekranu" << endl; Sleep( 500 ); system( "cls" ); break; } case '4': { ofstream plik; plik.open( "BazaDanych.txt" ); for( int i = 0; i < ile; i++ ) { plik << "Typ monitora nr. " << i + 1 << ": " << endl; plik << monitory[ i ].typ << endl; plik << "Przekatna monitora nr. " << i + 1 << ": " << endl; plik << monitory[ i ].przekatna << endl; plik << "Cene monitora nr. " << i + 1 << ": " << endl; plik << monitory[ i ].cena << endl; plik << "Kolor obudowy monitora nr. " << i + 1 << ": " << endl; plik << monitory[ i ].kolor_obudowy << endl; plik << endl << endl; } cout << endl << endl; cout << "Zapisywanie zakonczone powodzeniem!" << endl; cout << endl << endl; plik.close(); cin.get(); break; } case '5': { char pobieracz; ifstream plik; plik.open( "BazaDanych.txt" ); if( !plik.is_open() ) { cout << endl << endl; cout << "Nie ma pliku, najpierw go utworz!" << endl; cout << endl << endl; } plik >> noskipws >> pobieracz; while( plik.good() ) { cout << pobieracz; plik >> pobieracz; }; break; } case '0': { cout << endl << endl; cout << "Zamykanie Programu" << endl; cout << endl << endl; break; } default: { cout << endl << endl; cout << "Podano bledny znak!" << endl; cout << endl << endl; break; } } } while( znak != 0 ); return( 0 ); }
|
|
colorgreen19 |
» 2014-04-15 17:34:40 nie mozesz przeszkoczyc zmienną w jakims bloku do bloku wyzszego. Zadeklaruj te zmienną w bloku głównym i przekazyj do funkcji przez jej argument. |
|
MadnessTime Temat założony przez niniejszego użytkownika |
» 2014-04-15 17:40:32 |
|
colorgreen19 |
» 2014-04-15 18:28:10 zależy co chcesz osiągnąć. Proponuje zebys cos spróbował sam napisac a jak bedziesz miec problem to wtedy załącz tutaj swoj nowy kod i obczaimy co masz źle :P |
|
MadnessTime Temat założony przez niniejszego użytkownika |
» 2014-04-15 18:30:14 Właśnie próbując rozwiązać mój problem zobaczyłem program pisany na lekcji. Myślałem, że mi pomoże, ale niestety mimo moich chęci nie do końca go rozumiem. Mógłby ktoś dodać komentarze do tego programu? #include<iostream> #include<cstdlib> using namespace std;
void zamien1( int * a, int * b ); void zamien2( int & a, int & b );
void zamien1( int * x, int * y ) { int z = * x; * x = * y; * y = z; }
void zamien2( int & a, int & b ) { int x = a; a = b; b = x; }
int main() { int a, b; a = 10; b = 20; cout << "a=" << a << " b=" << b << endl; zamien1( & a, & b ); cout << endl << endl; cout << "a=" << a << " b=" << b << endl; zamien2( a, b ); cout << endl << endl; cout << "a=" << a << " b=" << b << endl; return 0; }
|
|
pekfos |
» 2014-04-15 18:37:23 Mógłbym ktoś dodać komentarze do tego programu? |
Może mógłbyś dodam komentarze. #include<iostream> #include<cstdlib> using namespace std;
void zamien1( int * a, int * b ); void zamien2( int & a, int & b );
void zamien1( int * x, int * y ) { int z = * x; * x = * y; * y = z; }
void zamien2( int & a, int & b ) { int x = a; a = b; b = x; }
int main() { int a, b; a = 10; b = 20; cout << "a=" << a << " b=" << b << endl; zamien1( & a, & b ); cout << endl << endl; cout << "a=" << a << " b=" << b << endl; zamien2( a, b ); cout << endl << endl; cout << "a=" << a << " b=" << b << endl; return 0; } Jeśli nie trafiłem, to napisz może, czego dokładnie nie rozumiesz.. |
|
MadnessTime Temat założony przez niniejszego użytkownika |
» 2014-04-15 18:44:46 Błąd poprawiony.
Chodzi mi dokładnie o to, dlaczego funkcje zamien1 i zamien2 są tak jakby deklarowane 2 razy? |
|
pekfos |
» 2014-04-15 18:48:10 Bez powodu. Bez tych deklaracji program dalej będzie poprawny. |
|
« 1 » 2 |