ďťż

Ł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
  •