Ĺadny brzuch
Cześć to znowu ja :D . Wszystkie problemy mam rozwiązane chodzi teraz o nowy problem. Też dotyczy bazy danych:
#include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> using namespace std; int ile,i, id_temp; // zmienn pomocnicze char szukany_region[64]; int decyzja; int min, max; class schroniska { public: long id_schroniska; // pola klasy char nazwa[34]; char region[64]; char miasto[56]; char szukany_region[64]; int pokoj; double cena; void wpisz_dane_osobowe() // metoda wpisywania danych { cout<<" \n Podaj nazwe schroniska: "; cin>>nazwa; cout<<" Podaj region schroniska: "; cin>>region; cout<<" Podaj miasto: "; cin>>miasto; cout<<" Podaj liczbe pokoi: "; cin>>pokoj; cout<<" Podaj cene za pokoj: "; cin>>cena; } void wyswietl_dane() { cout<<"\n\n ID schroniska: "<<id_schroniska; cout<<"\n Nazwa schroniska: "<<nazwa; cout<<"\n Region: "<<region; cout<<"\n Miasto: "<<miasto; cout<<"\n Liczba pokoi: "<<pokoj; cout<<"\n Cena pokoju: "<<cena; } }; schroniska dane[100]; // tablica z instanacjimi klas main() { do // powtarzaj { system("CLS"); // czysc ekran cout<<"********BAZA DANYCH O SCHRONISKACH********"; // rysuj menu cout<<"\n \n 1. Dodaj schronisko"; cout<<"\n 2. Wyswietl info o schroniskach"; cout<<"\n 3. Wyszukaj wedlug regionu"; cout<<"\n 4. Zapisz do pliku"; cout<<"\n 5. Odczyt z pliku"; cout<<"\n 6. Wyswietlenie wedlug cen pokoi"; cout<<"\n 7. Koniec"; decyzja = getch(); // pobierz decyjze uzytkonika // co robic switch(decyzja) { case '1': // jesli wybrano 1 cout<<"\n Dla ilu schronisk bedziesz wprowadzal dane? (max.100)"; cin>>ile; // pobierz liczbe // schronisk for(i=0;i<ile;i++) // i wypelnij { // danymu dane[i].id_schroniska=i+1; cout<<"\n Wpisz dane "<<i+1<<" schroniska: "; dane[i].wpisz_dane_osobowe(); } cout<<"\n nacisnij dowolny klawisz...."; break; case'2': // jesli wybrano 2 cout<<"\n Wpisz id schroniska ktora chcesz wyswietlic?"; cin>>id_temp; // wyswietl schronisko for(i=0;i<ile;i++) { if (dane[i].id_schroniska==id_temp) // jelsi zgadza sie numer dane[i].wyswietl_dane(); // wyswietl dane schorniska } break; case'3': // szukanie wg regionu cout<<"\n Wpisz nazwe regionu: "; cin >> szukany_region; for(int i = 0; i<100; i++) { if(!strcmp(dane[i].region,szukany_region)) // jesli zgadza sie { // pokaz schronisko dane[i].wyswietl_dane(); } } getch(); // czekaj na klawisz break; case'4': //tutaj zapis do pliku { ofstream plik; plik.open("baza.txt", ios::out); // plik do zapisu plik << ile << endl; // zapisz ilosc danych for (int i=0;i<ile;i++) { plik << dane[i].nazwa << endl; // zapisz wszystko dane plik << dane[i].region << endl; plik << dane[i].miasto << endl; plik << dane[i].pokoj << endl; plik << dane[i].cena << endl; } plik.close(); // zamknij plik } break; case'5': //tutaj odczyt z pliku { ifstream plik; plik.open("baza.txt", ios::in); // plik do zapisu plik >> ile; // odczytaj ilosc danych for (int i=0;i<ile;i++) { dane[i].id_schroniska = i+1; // odczytaj wszystkie dane plik >> dane[i].nazwa; plik >> dane[i].region; plik >> dane[i].miasto; plik >> dane[i].pokoj; plik >> dane[i].cena; } plik.close(); // zamknij plik } break; case'6': cout<<"\n\n Podaj min. ceny:"; cin>>min; break; case'7': cout<<"\n\nDziekuje za wspolprace :)"; getch(); exit(0); // zakoncz break; default:cout<<"\n\n nie wybrales zadnej opcji"; // jelsi nie wyrabo nic z menu break; } cout<<" "; getch(); } while(decyzja!='7'); }
Problem polega na tym, że nie wiem jak zrobić żeby program wyświetlał informacje o schroniskach, gdzie ceny pokoi są od min podanego przez użytkownika do max również podanego przez użytkownika np. jeśli wprowadzę takie 3 dane o schroniskach gdzie ceny są takie:
cena pokoju 1 schroniska: 23 zł
cena pokoju 2 schroniska: 67 zł
cena pokoju 3 schroniska: 34 zł
i jeśli użytkownik wpisze cene min równą 22 zł i cene max równą 45 zł to program wyświetli dane: 1 i 3 schroniska, a 2 nie wyświetli po9nieważ nie znajduje się w zakresie min i max ;) Myślę, że trzeba będzie zrobić algorytm który wyszuka największą i najmniejszą wartość w tablicy a potem coś wykombinować. Więc proszę serdecznie o pomoc :P :unsure: :unsure:
hmm, ja zrobiłbym to tak
//zmienne globalne int nIle = 100; int nMax, nMin; bool bCena[nIle]; schroniska dane[nIle]; (...) void Cena() { for(int i=0;i<nIle;++i) { if((dane[i].cena >= nMin) || (dane[i].cena <= nMax) ) bCena[i] = true; else bCena[i] = false; } (...) case'6': cout<< "\n\n Podaj min. ceny:"; cin>>nMin; cout<< "\n\n Podaj max. ceny:"; cin>>nMax; for(int i=0; i<nIle;++i) if(bCena[i]) dane[i].wyswietl_dane(); break;
Zrobię coś tak ja ty. Jak będzie coś nie tak to dam znać na forum :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
#include<stdio.h> #include<conio.h> #include<iostream> #include<fstream> using namespace std; int ile,i, id_temp; // zmienn pomocnicze char szukany_region[64]; int decyzja; int min, max; class schroniska { public: long id_schroniska; // pola klasy char nazwa[34]; char region[64]; char miasto[56]; char szukany_region[64]; int pokoj; double cena; void wpisz_dane_osobowe() // metoda wpisywania danych { cout<<" \n Podaj nazwe schroniska: "; cin>>nazwa; cout<<" Podaj region schroniska: "; cin>>region; cout<<" Podaj miasto: "; cin>>miasto; cout<<" Podaj liczbe pokoi: "; cin>>pokoj; cout<<" Podaj cene za pokoj: "; cin>>cena; } void wyswietl_dane() { cout<<"\n\n ID schroniska: "<<id_schroniska; cout<<"\n Nazwa schroniska: "<<nazwa; cout<<"\n Region: "<<region; cout<<"\n Miasto: "<<miasto; cout<<"\n Liczba pokoi: "<<pokoj; cout<<"\n Cena pokoju: "<<cena; } }; schroniska dane[100]; // tablica z instanacjimi klas main() { do // powtarzaj { system("CLS"); // czysc ekran cout<<"********BAZA DANYCH O SCHRONISKACH********"; // rysuj menu cout<<"\n \n 1. Dodaj schronisko"; cout<<"\n 2. Wyswietl info o schroniskach"; cout<<"\n 3. Wyszukaj wedlug regionu"; cout<<"\n 4. Zapisz do pliku"; cout<<"\n 5. Odczyt z pliku"; cout<<"\n 6. Wyswietlenie wedlug cen pokoi"; cout<<"\n 7. Koniec"; decyzja = getch(); // pobierz decyjze uzytkonika // co robic switch(decyzja) { case '1': // jesli wybrano 1 cout<<"\n Dla ilu schronisk bedziesz wprowadzal dane? (max.100)"; cin>>ile; // pobierz liczbe // schronisk for(i=0;i<ile;i++) // i wypelnij { // danymu dane[i].id_schroniska=i+1; cout<<"\n Wpisz dane "<<i+1<<" schroniska: "; dane[i].wpisz_dane_osobowe(); } cout<<"\n nacisnij dowolny klawisz...."; break; case'2': // jesli wybrano 2 cout<<"\n Wpisz id schroniska ktora chcesz wyswietlic?"; cin>>id_temp; // wyswietl schronisko for(i=0;i<ile;i++) { if (dane[i].id_schroniska==id_temp) // jelsi zgadza sie numer dane[i].wyswietl_dane(); // wyswietl dane schorniska } break; case'3': // szukanie wg regionu cout<<"\n Wpisz nazwe regionu: "; cin >> szukany_region; for(int i = 0; i<100; i++) { if(!strcmp(dane[i].region,szukany_region)) // jesli zgadza sie { // pokaz schronisko dane[i].wyswietl_dane(); } } getch(); // czekaj na klawisz break; case'4': //tutaj zapis do pliku { ofstream plik; plik.open("baza.txt", ios::out); // plik do zapisu plik << ile << endl; // zapisz ilosc danych for (int i=0;i<ile;i++) { plik << dane[i].nazwa << endl; // zapisz wszystko dane plik << dane[i].region << endl; plik << dane[i].miasto << endl; plik << dane[i].pokoj << endl; plik << dane[i].cena << endl; } plik.close(); // zamknij plik } break; case'5': //tutaj odczyt z pliku { ifstream plik; plik.open("baza.txt", ios::in); // plik do zapisu plik >> ile; // odczytaj ilosc danych for (int i=0;i<ile;i++) { dane[i].id_schroniska = i+1; // odczytaj wszystkie dane plik >> dane[i].nazwa; plik >> dane[i].region; plik >> dane[i].miasto; plik >> dane[i].pokoj; plik >> dane[i].cena; } plik.close(); // zamknij plik } break; case'6': cout<<"\n\n Podaj min. ceny:"; cin>>min; break; case'7': cout<<"\n\nDziekuje za wspolprace :)"; getch(); exit(0); // zakoncz break; default:cout<<"\n\n nie wybrales zadnej opcji"; // jelsi nie wyrabo nic z menu break; } cout<<" "; getch(); } while(decyzja!='7'); }
Problem polega na tym, że nie wiem jak zrobić żeby program wyświetlał informacje o schroniskach, gdzie ceny pokoi są od min podanego przez użytkownika do max również podanego przez użytkownika np. jeśli wprowadzę takie 3 dane o schroniskach gdzie ceny są takie:
cena pokoju 1 schroniska: 23 zł
cena pokoju 2 schroniska: 67 zł
cena pokoju 3 schroniska: 34 zł
i jeśli użytkownik wpisze cene min równą 22 zł i cene max równą 45 zł to program wyświetli dane: 1 i 3 schroniska, a 2 nie wyświetli po9nieważ nie znajduje się w zakresie min i max ;) Myślę, że trzeba będzie zrobić algorytm który wyszuka największą i najmniejszą wartość w tablicy a potem coś wykombinować. Więc proszę serdecznie o pomoc :P :unsure: :unsure:
hmm, ja zrobiłbym to tak
//zmienne globalne int nIle = 100; int nMax, nMin; bool bCena[nIle]; schroniska dane[nIle]; (...) void Cena() { for(int i=0;i<nIle;++i) { if((dane[i].cena >= nMin) || (dane[i].cena <= nMax) ) bCena[i] = true; else bCena[i] = false; } (...) case'6': cout<< "\n\n Podaj min. ceny:"; cin>>nMin; cout<< "\n\n Podaj max. ceny:"; cin>>nMax; for(int i=0; i<nIle;++i) if(bCena[i]) dane[i].wyswietl_dane(); break;
Zrobię coś tak ja ty. Jak będzie coś nie tak to dam znać na forum :)